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