1 /* Generic simulator abort. 2 Copyright (C) 1997-2024 Free Software Foundation, Inc. 3 Contributed by Cygnus Support. 4 5 This file is part of GDB, the GNU debugger. 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19 20 /* This must come before any other includes. */ 21 #include "defs.h" 22 23 #include <stdarg.h> 24 #include <stdio.h> 25 #include <stdlib.h> 26 27 #include "sim-main.h" 28 #include "sim-assert.h" 29 30 /* This is an implementation of sim_engine_abort that does not use 31 longjmp, instead it just calls sim_io_error. sim_io_error will 32 jump right out of the simulator. 33 34 It is intended as a holder for simulators that have started to use 35 sim-core et al. but are not yet in a position to use sim-engine 36 (the setjmp/longjmp code). */ 37 38 39 void 40 sim_engine_abort (SIM_DESC sd, 41 sim_cpu *cpu, 42 sim_cia cia, 43 const char *fmt, 44 ...) 45 { 46 ASSERT (sd == NULL || STATE_MAGIC (sd) == SIM_MAGIC_NUMBER); 47 if (sd != NULL) 48 { 49 va_list ap; 50 va_start (ap, fmt); 51 sim_io_evprintf (sd, fmt, ap); 52 va_end (ap); 53 sim_io_error (sd, "\n"); 54 } 55 else 56 { 57 va_list ap; 58 va_start (ap, fmt); 59 vfprintf (stderr, fmt, ap); 60 va_end (ap); 61 fprintf (stderr, "\n"); 62 abort (); 63 } 64 } 65