]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/testsuite] Fix gdb.gdb/python-helper.exp with gdb built with -flto
authorTom de Vries <tdevries@suse.de>
Thu, 31 Jul 2025 07:58:47 +0000 (09:58 +0200)
committerTom de Vries <tdevries@suse.de>
Thu, 31 Jul 2025 07:58:47 +0000 (09:58 +0200)
With a gdb build with gcc 7.5.0 and "-O2 -flto=auto -g", I run into:
...
(outer-gdb) PASS: gdb.gdb/python-helper.exp: print varobj_table
print inferior_list
$5 = {m_front = 0x212e830, m_back = 0x2e39aa0}
(outer-gdb) FAIL: gdb.gdb/python-helper.exp: print inferior_list
...

The problem is that the type of inferior_list:
...
(outer-gdb) what inferior_list^M
type = intrusive_list^M
(outer-gdb)
...
is not descriptive enough to trigger the pretty pretter.

Note that with a gdb build with -O0, we'd get instead:
...
(outer-gdb) what inferior_list^M
type = intrusive_list<inferior, intrusive_base_node<inferior> >
(outer-gdb)
...

Fix this by detecting this situation, and declaring the test unsupported.

Tested on x86_64-linux.

gdb/testsuite/gdb.gdb/python-helper.exp

index 4b9adb044e1819aa673654e21cb8d9a6bb5a688c..8126740c30175cb88db19ab70c76fa012b0f9ed2 100644 (file)
@@ -264,10 +264,28 @@ proc test_python_helper {} {
     gdb_test -prompt $outer_prompt_re "print varobj_table" \
        "htab_t with ${::decimal} elements"
 
+    set inferior_list_supported 1
+    set inferior_list_unsupported_re "type = intrusive_list"
+    gdb_test_multiple "what inferior_list" "" -prompt $outer_prompt_re {
+       -re -wrap $inferior_list_unsupported_re {
+           set inferior_list_supported 0
+           pass $gdb_test_name
+       }
+       -re -wrap "" {
+           pass $gdb_test_name
+       }
+    }
+
     # Test the intrusive_list pretty-printer.  A bug occurred 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,.*}"
+    set test "print inferior_list"
+    if { $inferior_list_supported } {
+       gdb_test -prompt $outer_prompt_re $test \
+           "intrusive list of inferior = {.*, num = 1,.*, num = 2,.*}"
+    } else {
+       unsupported $test
+    }
 
     return 0
 }