diff options
Diffstat (limited to 'gdb/python')
-rw-r--r-- | gdb/python/lib/gdb/command/unwinders.py | 2 | ||||
-rw-r--r-- | gdb/python/lib/gdb/unwinder.py | 1 | ||||
-rw-r--r-- | gdb/python/python.c | 15 |
3 files changed, 18 insertions, 0 deletions
diff --git a/gdb/python/lib/gdb/command/unwinders.py b/gdb/python/lib/gdb/command/unwinders.py index a9b9d8a..8fd0136 100644 --- a/gdb/python/lib/gdb/command/unwinders.py +++ b/gdb/python/lib/gdb/command/unwinders.py @@ -136,6 +136,8 @@ def do_enable_unwinder(arg, flag): if locus_re.match(objfile.filename): total += do_enable_unwinder1(objfile.frame_unwinders, name_re, flag) + if total > 0: + gdb.invalidate_cached_frames() print("%d unwinder%s %s" % (total, "" if total == 1 else "s", "enabled" if flag else "disabled")) diff --git a/gdb/python/lib/gdb/unwinder.py b/gdb/python/lib/gdb/unwinder.py index 14b2758..67a37cb 100644 --- a/gdb/python/lib/gdb/unwinder.py +++ b/gdb/python/lib/gdb/unwinder.py @@ -92,3 +92,4 @@ def register_unwinder(locus, unwinder, replace=False): unwinder.name) i += 1 locus.frame_unwinders.insert(0, unwinder) + gdb.invalidate_cached_frames() diff --git a/gdb/python/python.c b/gdb/python/python.c index 3a272a9..621e201 100644 --- a/gdb/python/python.c +++ b/gdb/python/python.c @@ -885,6 +885,15 @@ gdbpy_find_pc_line (PyObject *self, PyObject *args) return result; } +/* Implementation of gdb.invalidate_cached_frames. */ + +static PyObject * +gdbpy_invalidate_cached_frames (PyObject *self, PyObject *args) +{ + reinit_frame_cache (); + Py_RETURN_NONE; +} + /* Read a file as Python code. This is the extension_language_script_ops.script_sourcer "method". FILE is the file to load. FILENAME is name of the file FILE. @@ -2071,6 +2080,12 @@ Return the selected inferior object." }, { "inferiors", gdbpy_inferiors, METH_NOARGS, "inferiors () -> (gdb.Inferior, ...).\n\ Return a tuple containing all inferiors." }, + + { "invalidate_cached_frames", gdbpy_invalidate_cached_frames, METH_NOARGS, + "invalidate_cached_frames () -> None.\n\ +Invalidate any cached frame objects in gdb.\n\ +Intended for internal use only." }, + {NULL, NULL, 0, NULL} }; |