Fix gdb.base/advance-until-multiple-locations.exp with some compilers
authorPedro Alves <pedro@palves.net>
Fri, 28 Aug 2020 17:44:39 +0000 (18:44 +0100)
committerPedro Alves <pedro@palves.net>
Fri, 28 Aug 2020 17:44:39 +0000 (18:44 +0100)
The tests in gdb.base/advance-until-multiple-locations.exp that expect
the program to stop at a caller fail on some systems, depending on
compiler.  E.g., with Clang 10, I see:

 advance ovld_func
 0x00000000004011a3 in test () at /home/pedro/gdb/binutils-gdb/src/gdb/testsuite/gdb.base/advance-until-multiple-locations.cc:51
 51        ovld_func ();
 (gdb) FAIL: gdb.base/advance-until-multiple-locations.exp: advance_overload: second advance stops at caller

And Tom de Vries saw:

 ...
 (gdb) until ovld_func^M
 main () at advance-until-multiple-locations.cc:61^M
 61      }^M
 (gdb) FAIL: gdb.base/advance-until-multiple-locations.exp:until_overload: until ovld_func
 ...

Which exact line the program stops is not important.  All we care
about here is that the program stopped at the caller function.

So fix it by adjusting the patterns to match the frame header/function
reported by the breakpoint hits instead of the source lines text.

Tested against:

 - gcc {4.8, 4.9, 7.3.1, 9.3.0, trunk-20200828}
 - clang {5.0.2, 10}

gdb/testsuite/ChangeLog:

* gdb.base/advance-until-multiple-locations.exp
(advance_overload, until_overload): Adjust to match the
frame/function header instead of the source line text.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/advance-until-multiple-locations.exp

index 6335ece30d754b340c6d9df320617ed87426eb3d..af4444040b8dc13d112a78b99f49bec8f76cd33d 100644 (file)
@@ -1,3 +1,9 @@
+2020-08-28  Pedro Alves  <pedro@palves.net>
+
+       * gdb.base/advance-until-multiple-locations.exp
+       (advance_overload, until_overload): Adjust to match the
+       frame/function header instead of the source line text.
+
 2020-08-28  Tom de Vries  <tdevries@suse.de>
 
        * gdb.base/label-without-address.c: New test.
index a6a1de6653de2e33f408ee093c2e2d0c84269afc..0f919b46d4bb69008c8b64206139e734e42eaae2 100644 (file)
@@ -104,7 +104,7 @@ proc_with_prefix advance_overload {} {
     # Need to issue the advance twice, because advance also stops upon
     # exit from the current stack frame.
     gdb_test "advance ovld_func" \
-       "ovld_func \\(0\\);.*" \
+       "test \\(\\) at .*" \
        "second advance stops at caller"
 
     gdb_test "advance ovld_func" \
@@ -129,7 +129,7 @@ proc_with_prefix until_overload {} {
     # ovld_func is a different frame, so it shouldn't cause a stop.
     # Instead, the program should stop at the caller frame.
     gdb_test "until ovld_func" \
-       "main .* at .*return test \\(\\);.*"
+       "main \\(\\) at .*"
 }
 
 foreach_with_prefix cmd {"until" "advance"} {