diff options
author | Simon Marchi <simon.marchi@polymtl.ca> | 2024-07-17 12:10:57 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2024-07-19 16:30:52 -0400 |
commit | c5c3b90970f899bbc4e19a2401f1bc8d5b01e1d3 (patch) | |
tree | 4a912b495cd538c870efd7b4eba4eb371f4a8083 /gdb/testsuite | |
parent | b39807cc93bb85c9654b39a5c17f9d8de940429e (diff) | |
download | gdb-c5c3b90970f899bbc4e19a2401f1bc8d5b01e1d3.zip gdb-c5c3b90970f899bbc4e19a2401f1bc8d5b01e1d3.tar.gz gdb-c5c3b90970f899bbc4e19a2401f1bc8d5b01e1d3.tar.bz2 |
gdb-gdb.py: strip typedefs in intrusive_list printer assertion
When debugging gdb itself and trying to print a intrusive_list that has
more than one element, I get:
File "/home/simark/build/binutils-gdb-all-targets/gdb/gdb-gdb.py", line 365, in _children_generator
node_ptr = self._as_node_ptr(elem_ptr)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/simark/build/binutils-gdb-all-targets/gdb/gdb-gdb.py", line 345, in _as_node_ptr
assert elem_ptr.type.code == gdb.TYPE_CODE_PTR
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError
This is because node_ptr is a typedef
(intrusive_list_base_iterator::pointer). Add a call to strip_typedefs
to get to the real type.
Enhance gdb.gdb/python-helper.exp with a test that would have caught
this bug.
Change-Id: I3eaca8de5ed06d05756ed979332b6a431e15b700
Approved-By: Andrew Burgess <aburgess@redhat.com>
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/gdb.gdb/python-helper.exp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.gdb/python-helper.exp b/gdb/testsuite/gdb.gdb/python-helper.exp index 8a8afb1..4589edc 100644 --- a/gdb/testsuite/gdb.gdb/python-helper.exp +++ b/gdb/testsuite/gdb.gdb/python-helper.exp @@ -111,6 +111,16 @@ proc test_python_helper {} { } } + # Add a second inferior, useful to the intrusive_list pretty-printer test + # below. + send_inferior "add-inferior\n" + gdb_test_multiple "" "add second inferior in inner GDB" { + -i "$inferior_spawn_id" + -re "Added inferior 2\r\n$gdb_prompt $" { + pass $gdb_test_name + } + } + # Send Ctrl-C to the inner GDB, this should kick us back to the # prompt of the outer GDB. send_inferior "\003" @@ -253,6 +263,11 @@ proc test_python_helper {} { # Test the htab_t pretty-printer. gdb_test -prompt $outer_prompt_re "print all_bfds" "htab_t with ${::decimal} elements = \\{${::hex}.*\\}" + # Test the intrusive_list pretty-printer. A bug occured in the + # pretty-printer for lists with more than one element. Verify that + # we see both elements of the inferior_list list being printed. + gdb_test -prompt $outer_prompt_re "print inferior_list" "intrusive list of inferior = {.*, num = 1,.*, num = 2,.*}" + return 0 } |