8sa1-binutils-gdb/gdb/testsuite/gdb.python
Andrew Burgess 43d5901ded gdb/python: make more use of RegisterDescriptors
This commit unifies all of the Python register lookup code (used by
Frame.read_register, PendingFrame.read_register, and
gdb.UnwindInfo.add_saved_register), and adds support for using a
gdb.RegisterDescriptor for register lookup.

Currently the register unwind code (PendingFrame and UnwindInfo) allow
registers to be looked up either by name, or by GDB's internal
number.  I suspect the number was added for performance reasons, when
unwinding we don't want to repeatedly map from name to number for
every unwind.  However, this kind-of sucks, it means Python scripts
could include GDB's internal register numbers, and if we ever change
this numbering in the future users scripts will break in unexpected
ways.

Meanwhile, the Frame.read_register method only supports accessing
registers using a string, the register name.

This commit unifies all of the register to register-number lookup code
in our Python bindings, and adds a third choice into the mix, the use
of gdb.RegisterDescriptor.

The register descriptors can be looked up by name, but once looked up,
they contain GDB's register number, and so provide all of the
performance benefits of using a register number directly.  However, as
they are looked up by name we are no longer tightly binding the Python
API to GDB's internal numbering scheme.

As we may already have scripts in the wild that are using the register
numbers directly I have kept support for this in the API, but I have
listed this method last in the manual, and I have tried to stress that
this is NOT a good method to use and that users should use either a
string or register descriptor approach.

After this commit all existing Python code should function as before,
but users now have new options for how to identify registers.

gdb/ChangeLog:

	* python/py-frame.c: Remove 'user-regs.h' include.
	(frapy_read_register): Rewrite to make use of
	gdbpy_parse_register_id.
	* python/py-registers.c (gdbpy_parse_register_id): New function,
	moved here from python/py-unwind.c.  Updated the return type, and
	also accepts register descriptor objects.
	* python/py-unwind.c: Remove 'user-regs.h' include.
	(pyuw_parse_register_id): Moved to python/py-registers.c.
	(unwind_infopy_add_saved_register): Update to use
	gdbpy_parse_register_id.
	(pending_framepy_read_register): Likewise.
	* python/python-internal.h (gdbpy_parse_register_id): Declare.

gdb/testsuite/ChangeLog:

	* gdb.python/py-unwind.py: Update to make use of a register
	descriptor.

gdb/doc/ChangeLog:

	* python.texi (Unwinding Frames in Python): Update descriptions
	for PendingFrame.read_register and
	gdb.UnwindInfo.add_saved_register.
	(Frames In Python): Update description of Frame.read_register.
2020-07-28 10:27:54 +01:00
..
amd64-py-framefilter-invalidarg.S Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
lib-types.cc Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
lib-types.exp [gdb/testsuite] Fix xpass in gdb.python/lib-types.exp 2020-02-19 22:57:19 +01:00
py-arch-reg-groups.exp gdb/python: Reuse gdb.RegisterGroup objects where possible 2020-07-21 21:57:08 +01:00
py-arch-reg-names.exp gdb: Add a find method for RegisterDescriptorIterator 2020-07-28 10:27:53 +01:00
py-arch.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-arch.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-as-string.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-as-string.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-bad-printers.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-bad-printers.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-bad-printers.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-block.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-block.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-breakpoint-create-fail.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-breakpoint-create-fail.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-breakpoint-create-fail.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-breakpoint.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-breakpoint.exp Fix test breakages caused by removal of gdb_py_test_multiple. 2020-06-30 18:40:21 +02:00
py-caller-is.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-caller-is.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-cmd.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-cmd.exp Fix test breakages caused by removal of gdb_py_test_multiple. 2020-06-30 18:40:21 +02:00
py-completion.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-completion.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-error.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-error.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-events-shlib.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-events.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-events.exp Fix test breakages caused by removal of gdb_py_test_multiple. 2020-06-30 18:40:21 +02:00
py-events.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-evsignal.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-evthreads.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-evthreads.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-explore-cc.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-explore.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-explore.cc Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-explore.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-finish-breakpoint2.cc Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-finish-breakpoint2.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-finish-breakpoint2.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-finish-breakpoint.c Fix "control reaches end of non-void function" errors in testsuite 2020-05-15 15:03:42 +01:00
py-finish-breakpoint.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-finish-breakpoint.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-format-string.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-format-string.exp Fix TCL error in gdb.python/py-format-string.exp. 2020-06-17 13:43:32 -07:00
py-format-string.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-frame-args.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-frame-args.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-frame-args.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-frame-inline.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-frame-inline.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-frame.c
py-frame.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-framefilter-gdb.py.in Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-framefilter-invalidarg-gdb.py.in Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-framefilter-invalidarg.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-framefilter-invalidarg.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-framefilter-mi.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-framefilter-mi.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-framefilter.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-framefilter.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-framefilter.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-function.exp Fix test breakages caused by removal of gdb_py_test_multiple. 2020-06-30 18:40:21 +02:00
py-inferior.c
py-inferior.exp Fix test breakages caused by removal of gdb_py_test_multiple. 2020-06-30 18:40:21 +02:00
py-infthread.c
py-infthread.exp Fix test breakages caused by removal of gdb_py_test_multiple. 2020-06-30 18:40:21 +02:00
py-lazy-string.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-lazy-string.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-linetable.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-linetable.exp Fix test breakages caused by removal of gdb_py_test_multiple. 2020-06-30 18:40:21 +02:00
py-linetable.S Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-lookup-type.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-mi-events-gdb.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-mi-events.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-mi-events.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-mi-objfile-gdb.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-mi-objfile.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-mi-objfile.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-mi-var-info-path-expression.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-mi-var-info-path-expression.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-mi-var-info-path-expression.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-mi.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-nested-maps.c Add two missing return values in gdb.python/py-nested-maps.c 2020-06-16 12:41:28 +01:00
py-nested-maps.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-nested-maps.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-objfile-script-gdb.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-objfile-script.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-objfile-script.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-objfile.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-objfile.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-parameter.exp Fix test breakages caused by removal of gdb_py_test_multiple. 2020-06-30 18:40:21 +02:00
py-pp-integral.c Improve -Wunused-value testcase build failures fix 2020-06-23 15:11:27 +01:00
py-pp-integral.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-pp-integral.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-pp-maint.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-pp-maint.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-pp-maint.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-pp-re-notag.c Improve -Wunused-value testcase build failures fix 2020-06-23 15:11:27 +01:00
py-pp-re-notag.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-pp-re-notag.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-pp-registration.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-pp-registration.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-pp-registration.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-prettyprint.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-prettyprint.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-prettyprint.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-progspace.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-progspace.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-prompt.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-prompt.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-rbreak-func2.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-rbreak.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-rbreak.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-record-btrace-threads.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-record-btrace-threads.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-record-btrace.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-record-btrace.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-record-full.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-record-full.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-recurse-unwind.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-recurse-unwind.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-recurse-unwind.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-rvalue-ref-value-cc.cc Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-rvalue-ref-value-cc.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-section-script.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-section-script.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-section-script.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-shared-sl.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-shared.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-shared.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-strfns.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-strfns.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-symbol-2.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-symbol.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-symbol.exp Use the linkage name if it exists 2020-04-24 15:35:03 -06:00
py-symtab.exp [gdb/testsuite] Add xfails for PR gcc/90232 2020-04-29 13:22:21 +02:00
py-sync-interp.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-sync-interp.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-template.cc Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-template.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-thrhandle.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-thrhandle.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-type.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-type.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-typeprint.cc Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-typeprint.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-typeprint.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-unwind-inline.c gdb: Python unwinders, inline frames, and tail-call frames 2020-07-06 15:06:07 +01:00
py-unwind-inline.exp gdb: Python unwinders, inline frames, and tail-call frames 2020-07-06 15:06:07 +01:00
py-unwind-inline.py gdb: Python unwinders, inline frames, and tail-call frames 2020-07-06 15:06:07 +01:00
py-unwind-maint.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-unwind-maint.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-unwind-maint.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-unwind.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-unwind.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-unwind.py gdb/python: make more use of RegisterDescriptors 2020-07-28 10:27:54 +01:00
py-value-cc.cc Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-value-cc.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-value.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-value.exp Fix test breakages caused by removal of gdb_py_test_multiple. 2020-06-30 18:40:21 +02:00
py-xmethods.cc Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-xmethods.exp Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
py-xmethods.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
python-1.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
python.c Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
python.exp Make test names unique in python.exp and guile.exp 2020-06-26 22:04:46 +02:00
source1 Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
source2.py Update copyright year range in all GDB files. 2020-01-01 10:20:53 +04:00
tui-window.exp Fix crash when TUI window creation fails 2020-06-16 17:48:38 -06:00
tui-window.py Fix crash when TUI window creation fails 2020-06-16 17:48:38 -06:00