From: Nathan Binkert Date: Sat, 4 Aug 2007 23:00:36 +0000 (-0700) Subject: main: return an an exit code of 1 when we exit due to a python exception. X-Git-Tag: m5_2.0_beta4~195^2~6 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d8900d8478d86789d1120f11c9918d65a456d96e;p=gem5.git main: return an an exit code of 1 when we exit due to a python exception. This requires us to not use PyRun_SimpleString, but PyRun_String since the latter actually returns a result --HG-- extra : convert_revision : 3e3916ddd7eef9957569d8e72e73ba4c3160ce20 --- diff --git a/src/sim/main.cc b/src/sim/main.cc index 5bf4add4b..62ab9445b 100644 --- a/src/sim/main.cc +++ b/src/sim/main.cc @@ -75,6 +75,39 @@ abortHandler(int sigtype) ccprintf(cerr, "Program aborted at cycle %d\n", curTick); } +int +python_main() +{ + PyObject *module; + PyObject *dict; + PyObject *result; + + module = PyImport_AddModule("__main__"); + if (module == NULL) + fatal("Could not import __main__"); + + dict = PyModule_GetDict(module); + + result = PyRun_String("import m5.main", Py_file_input, dict, dict); + if (!result) { + PyErr_Print(); + return 1; + } + Py_DECREF(result); + + result = PyRun_String("m5.main.main()", Py_file_input, dict, dict); + if (!result) { + PyErr_Print(); + return 1; + } + Py_DECREF(result); + + if (Py_FlushLine()) + PyErr_Clear(); + + return 0; +} + int main(int argc, char **argv) { @@ -114,9 +147,10 @@ main(int argc, char **argv) // initialize SWIG modules init_swig(); - PyRun_SimpleString("import m5.main"); - PyRun_SimpleString("m5.main.main()"); + int ret = python_main(); // clean up Python intepreter. Py_Finalize(); + + return ret; }