[gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto=auto and gcc 7.5.0
authorTom de Vries <tdevries@suse.de>
Wed, 19 Jul 2023 07:18:29 +0000 (09:18 +0200)
committerTom de Vries <tdevries@suse.de>
Wed, 19 Jul 2023 07:18:29 +0000 (09:18 +0200)
With a gdb build with -O2 -flto=auto using gcc 7.5.0, I run into:
...
(gdb) ptype global_c^M
^M
Thread 1 "xgdb" hit Breakpoint 3, \
  _Z12c_print_typeP4typePKcP7ui_fileii8languagePK18type_print_options () at \
  gdb/c-typeprint.c:175^M
175     {^M
(outer-gdb) FAIL: gdb.gdb/python-helper.exp: hit breakpoint in outer gdb again
...

This is a problem with the debug info, which marks the CU containing the
function declaration as C rather than C++.  This is fixed in gcc 8 and later.

Work around this compiler problem by allowing the mangled name.

Tested on x86_64-linux.

PR testsuite/30648
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30648

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

index 217f123302dd8d2da657adb0528f856d4d2ea863..719c3975f5d34d5313a549b26fb7fcca033e6bae 100644 (file)
@@ -193,8 +193,12 @@ proc test_python_helper {} {
     send_inferior "ptype global_c\n"
     set test "hit breakpoint in outer gdb again"
     set in_outer_gdb 0
+    # With gdb build with -O2 -flto=auto and gcc 7.5.0, we get the mangled
+    # name of c_print_type due to a problem in the debug info, so we work
+    # around this by less strict matching.
+    set fn_name "\[^\r\n\]*c_print_type\[^\r\n\]*"
     gdb_test_multiple "" $test  -prompt $outer_prompt_re {
-       -re -wrap "Breakpoint $bkptno_numopt_re, c_print_type.*" {
+       -re -wrap "Breakpoint $bkptno_numopt_re, $fn_name.*" {
            pass $gdb_test_name
            set in_outer_gdb 1
        }