diff options
-rw-r--r-- | .SRCINFO | 7 | ||||
-rw-r--r-- | PKGBUILD | 2 | ||||
-rw-r--r-- | gdb.patch | 120 |
3 files changed, 119 insertions, 10 deletions
@@ -1,7 +1,7 @@ pkgbase = mips-harvard-os161-gdb pkgdesc = The GNU Debugger modified for mips-harvard-os161 arquitecture. This is part of toolset for the course os161 from Harvard. pkgver = 7.8+os161_2.1 - pkgrel = 2 + pkgrel = 4 url = http://os161.eecs.harvard.edu/ arch = i686 arch = x86_64 @@ -14,7 +14,7 @@ pkgbase = mips-harvard-os161-gdb depends = gmp depends = mpfr depends = libmpc - depends = guile2.0 + depends = guile2.0 options = staticlibs options = !libtool options = !emptydirs @@ -22,7 +22,8 @@ pkgbase = mips-harvard-os161-gdb options = zipman options = docs source = http://os161.eecs.harvard.edu/download/gdb-7.8+os161-2.1.tar.gz + source = gdb.patch md5sums = 26295f3f67090e534e3d488a3edce5ae + md5sums = SKIP pkgname = mips-harvard-os161-gdb - @@ -4,7 +4,7 @@ _target="mips-harvard-os161" pkgname=${_target}-gdb _pkgver=7.8+os161-2.1 pkgver=${_pkgver/os161-/os161_} -pkgrel=2 +pkgrel=4 pkgdesc="The GNU Debugger modified for ${_target} arquitecture. This is part of toolset for the course os161 from Harvard." arch=(i686 x86_64) url="http://os161.eecs.harvard.edu/" diff --git a/gdb.patch b/gdb.patch index 10ac97d9f571..6b2583f84571 100644 --- a/gdb.patch +++ b/gdb.patch @@ -1,6 +1,114 @@ -diff -rup gdb-7.8+os161-2.1/sim/common/sim-arange.c gdb-7.8+os161-2.1-new/sim/common/sim-arange.c ---- gdb-7.8+os161-2.1/sim/common/sim-arange.c 2017-07-29 07:10:29.906548572 +0000 -+++ gdb-7.8+os161-2.1-new/sim/common/sim-arange.c 2017-07-29 07:11:59.793216829 +0000 +diff --color -rup gdb-7.8+os161-2.1/gdb/python/python.c gdb-7.8+os161-2.1-new/gdb/python/python.c +--- gdb-7.8+os161-2.1/gdb/python/python.c 2014-09-30 23:00:34.000000000 -0300 ++++ gdb-7.8+os161-2.1-new/gdb/python/python.c 2023-03-19 02:50:07.564662354 -0300 +@@ -108,7 +108,7 @@ int gdb_python_initialized; + static PyMethodDef GdbMethods[]; + + #ifdef IS_PY3K +-static struct PyModuleDef GdbModuleDef; ++extern struct PyModuleDef GdbModuleDef; + #endif + + PyObject *gdb_module; +@@ -272,8 +272,16 @@ ensure_python_env (struct gdbarch *gdbar + static void + gdbpy_clear_quit_flag (const struct extension_language_defn *extlang) + { ++ if(!gdb_python_initialized) ++ return; ++ ++ PyGILState_STATE m_state; ++ m_state = PyGILState_Ensure(); ++ + /* This clears the flag as a side effect. */ + PyOS_InterruptOccurred (); ++ PyGILState_Release(m_state); ++ return; + } + + /* Set the quit flag. */ +@@ -289,7 +297,14 @@ gdbpy_set_quit_flag (const struct extens + static int + gdbpy_check_quit_flag (const struct extension_language_defn *extlang) + { +- return PyOS_InterruptOccurred (); ++ if (!gdb_python_initialized) ++ return 0; ++ ++ PyGILState_STATE m_state; ++ m_state = PyGILState_Ensure(); ++ int res = PyOS_InterruptOccurred (); ++ PyGILState_Release(m_state); ++ return res; + } + + /* Evaluate a Python command like PyRun_SimpleString, but uses +@@ -1552,10 +1567,22 @@ finalize_python (void *ignore) + + Py_Finalize (); + ++ gdb_python_initialized = 0; + restore_active_ext_lang (previous_active); + } + #endif + ++#ifdef IS_PY3K ++/* This is called via the PyImport_AppendInittab mechanism called ++ during initialization, to make the built-in _gdb module known to ++ Python. */ ++PyMODINIT_FUNC ++init__gdb_module (void) ++{ ++ return PyModule_Create (&GdbModuleDef); ++} ++#endif ++ + /* Provide a prototype to silence -Wmissing-prototypes. */ + extern initialize_file_ftype _initialize_python; + +@@ -1677,6 +1704,9 @@ message == an error message without a st + remain alive for the duration of the program's execution, so + it is not freed after this call. */ + Py_SetProgramName (progname_copy); ++ ++ /* Define _gdb as a built-in module. */ ++ PyImport_AppendInittab ("_gdb", init__gdb_module); + #else + Py_SetProgramName (progname); + #endif +@@ -1686,9 +1716,7 @@ message == an error message without a st + PyEval_InitThreads (); + + #ifdef IS_PY3K +- gdb_module = PyModule_Create (&GdbModuleDef); +- /* Add _gdb module to the list of known built-in modules. */ +- _PyImport_FixupBuiltin (gdb_module, "_gdb"); ++ gdb_module = PyImport_ImportModule ("_gdb"); + #else + gdb_module = Py_InitModule ("_gdb", GdbMethods); + #endif +@@ -1782,8 +1810,7 @@ message == an error message without a st + goto fail; + + /* Release the GIL while gdb runs. */ +- PyThreadState_Swap (NULL); +- PyEval_ReleaseLock (); ++ PyEval_SaveThread(); + + make_final_cleanup (finalize_python, NULL); + +@@ -2005,7 +2032,7 @@ Return a tuple containing all inferiors. + }; + + #ifdef IS_PY3K +-static struct PyModuleDef GdbModuleDef = ++extern struct PyModuleDef GdbModuleDef = + { + PyModuleDef_HEAD_INIT, + "_gdb", +diff --color -rup gdb-7.8+os161-2.1/sim/common/sim-arange.c gdb-7.8+os161-2.1-new/sim/common/sim-arange.c +--- gdb-7.8+os161-2.1/sim/common/sim-arange.c 2014-09-30 23:01:49.000000000 -0300 ++++ gdb-7.8+os161-2.1-new/sim/common/sim-arange.c 2023-03-19 02:50:07.841329026 -0300 @@ -280,11 +280,7 @@ sim_addr_range_delete (ADDR_RANGE *ar, a build_search_tree (ar); } @@ -20,9 +128,9 @@ diff -rup gdb-7.8+os161-2.1/sim/common/sim-arange.c gdb-7.8+os161-2.1-new/sim/co -#endif /* DEFINE_INLINE_P */ +#endif /* DEFINE_NON_INLINE_P */ -diff -rup gdb-7.8+os161-2.1/sim/common/sim-arange.h gdb-7.8+os161-2.1-new/sim/common/sim-arange.h ---- gdb-7.8+os161-2.1/sim/common/sim-arange.h 2017-07-29 06:53:05.909863433 +0000 -+++ gdb-7.8+os161-2.1-new/sim/common/sim-arange.h 2017-07-29 06:56:21.329866890 +0000 +diff --color -rup gdb-7.8+os161-2.1/sim/common/sim-arange.h gdb-7.8+os161-2.1-new/sim/common/sim-arange.h +--- gdb-7.8+os161-2.1/sim/common/sim-arange.h 2014-09-30 23:01:49.000000000 -0300 ++++ gdb-7.8+os161-2.1-new/sim/common/sim-arange.h 2023-03-19 02:50:07.841329026 -0300 @@ -62,7 +62,7 @@ extern void sim_addr_range_delete (ADDR_ /* Return non-zero if ADDR is in range AR, traversing the entire tree. |