8sa1-binutils-gdb/gdb/python
Andrew Burgess ba6a0ef349 gdb: use make_scoped_restore to restore gdbpy_current_objfile
The current mechanism by which the Python gdb.current_objfile is
maintained does not allow for nested auto-load events.  It is assumed
that once an auto-load script has finished loading then the current
objfile should be set back to NULL.  In a nested situation, we should
be restoring the previous value.

We already have an RAII class to handle save/restore type behaviour,
so lets just switch to use that.

The test is a little contrived, but is simple enough, and triggers the
bug.  The real use case might involve the auto-load script calling
functions (either in the just-loaded object file, or in the main
executable), which in turn trigger further auto-loads to occur.

gdb/ChangeLog:

	* python/python.c (gdbpy_source_objfile_script): Use
	make_scoped_restore to restore gdbpy_current_objfile.
	(gdbpy_execute_objfile_script): Likewise.

gdb/testsuite/ChangeLog:

	* gdb.python/py-auto-load-chaining-f1.c: New file.
	* gdb.python/py-auto-load-chaining-f1.o-gdb.py: New file.
	* gdb.python/py-auto-load-chaining-f2.c: New file.
	* gdb.python/py-auto-load-chaining-f2.o-gdb.py: New file.
	* gdb.python/py-auto-load-chaining.c: New file.
	* gdb.python/py-auto-load-chaining.exp: New file.
2021-03-15 09:21:37 +00:00
..
lib/gdb Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-all-events.def Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-arch.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-auto-load.c gdb: bool-ify ext_lang_auto_load_enabled and friends 2021-01-13 11:57:24 -05:00
py-block.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-bpevent.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-breakpoint.c Add Python support for hardware breakpoints 2021-01-21 18:55:45 +01:00
py-cmd.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-continueevent.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-event-types.def Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-event.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-event.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-events.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-evtregistry.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-evts.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-exitedevent.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-finishbreakpoint.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-frame.c Also compare frame_id_is_next in frapy_richcompare 2021-02-07 19:08:23 +01:00
py-framefilter.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-function.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-gdb-readline.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-inferior.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-infevents.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-infthread.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-instruction.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-instruction.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-lazy-string.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-linetable.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-newobjfileevent.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-objfile.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-param.c gdb: make some variables static 2021-01-20 20:55:05 -05:00
py-prettyprint.c gdb: rename get_type_arch to type::arch 2021-01-28 10:12:10 -05:00
py-progspace.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-record-btrace.c gdb: make some variables static 2021-01-20 20:55:05 -05:00
py-record-btrace.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-record-full.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-record-full.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-record.c gdb: make some variables static 2021-01-20 20:55:05 -05:00
py-record.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-ref.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-registers.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-signalevent.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-stopevent.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-stopevent.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-symbol.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-symtab.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-threadevent.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-tui.c gdb: return true in TuiWindow.is_valid only if TUI is enabled 2021-02-08 11:56:16 +00:00
py-type.c gdb: rename type::{arch,objfile} -> type::{arch_owner,objfile_owner} 2021-01-28 10:09:02 -05:00
py-unwind.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-utils.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-value.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-varobj.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
py-xmethods.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
python-config.py configure uses incorrect link order when testing libpython 2018-05-04 10:08:09 -04:00
python-internal.h gdb: bool-ify ext_lang_auto_load_enabled and friends 2021-01-13 11:57:24 -05:00
python.c gdb: use make_scoped_restore to restore gdbpy_current_objfile 2021-03-15 09:21:37 +00:00
python.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00