base: calls abort() from fatal
authorNilay Vaish <nilay@cs.wisc.edu>
Thu, 6 Feb 2014 22:30:13 +0000 (16:30 -0600)
committerNilay Vaish <nilay@cs.wisc.edu>
Thu, 6 Feb 2014 22:30:13 +0000 (16:30 -0600)
Currently fatal() ends the simulation in a normal fashion.  This results in
the call stack getting lost when using a debugger and it is not always
possible to debug the simulation just from the information provided by the
printed error message.  Even though the error is likely due to a user's fault,
the information available should not be thrown away.  Hence, this patch to
call abort() from fatal().

src/base/misc.hh

index 25dcbaa6268280df65ab8e794fc43216e5afcd83..e09f2d0c2db0bcbc514e34e8eb58b19348fcbc12 100644 (file)
@@ -77,11 +77,10 @@ M5_PRAGMA_NORETURN(__exit_message)
 // This implements a cprintf based fatal() function.  fatal() should
 // be called when the simulation cannot continue due to some condition
 // that is the user's fault (bad configuration, invalid arguments,
-// etc.) and not a simulator bug.  fatal() calls exit(1), i.e., a
-// "normal" exit with an error code, as opposed to abort() like
+// etc.) and not a simulator bug.  fatal() calls  abort() like
 // panic() does.
 //
-#define fatal(...) exit_message("fatal", 1, __VA_ARGS__)
+#define fatal(...) exit_message("fatal", -1, __VA_ARGS__)
 
 void
 __base_message(std::ostream &stream, const char *prefix, bool verbose,