]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/testsuite] fix gdb.multi/checkpoint-multi.exp without symbols
authorSébastien Darche <sdarche@efficios.com>
Wed, 24 Sep 2025 21:01:13 +0000 (17:01 -0400)
committerSébastien Darche <sdarche@efficios.com>
Wed, 8 Oct 2025 19:37:50 +0000 (15:37 -0400)
The checkpoint-multi.exp test stops a program while it is sleeping
using a call to the usleep() function from libc. The test checks whether
the inferior is running by matching for "<running>" (if the inferior
is running) or a hex address followed by a function name, ideally, if
the inferior is stopped.

On most systems this works fine :

(gdb) info checkpoints
   Id Active Target Id       Frame
* 1.0 y      process 1546841 at 0x00007ffff7ceca7a, <clock_nanosleep>
  1.1 n      process 1547177 at 0x00005555555551f0, file /home/sdarche/binutils-gdb/build-x86/gdb/testsuite/../../../gdb/testsuite/gdb.multi/hello.c, line 51
  2.0 y      process 1547076 at 0x0000555555555243, file /home/sdarche/binutils-gdb/build-x86/gdb/testsuite/../../../gdb/testsuite/gdb.multi/goodbye.c, line 46
  2.1 n      process 1547120 at 0x0000555555555285, file /home/sdarche/binutils-gdb/build-x86/gdb/testsuite/../../../gdb/testsuite/gdb.multi/goodbye.c, line 61

I have found however that the output from `info checkpoints` is
different on some systems with (stripped) versions of the libc without
debug infos :

(gdb) info checkpoints
   Id Active Target Id      Frame
* 1.0 y      process 979642 at 0x00007ffff7e49687
  1.1 n      process 979647 at 0x00005555555551ac, file /home/sdarche/binutils-gdb/build/gdb/testsuite/../../../gdb/testsuite/gdb.multi/hello.c, line 51
  2.0 y      process 979645 at 0x000055555555523b, file /home/sdarche/binutils-gdb/build/gdb/testsuite/../../../gdb/testsuite/gdb.multi/goodbye.c, line 46
  2.1 n      process 979646 at 0x0000555555555271, file /home/sdarche/binutils-gdb/build/gdb/testsuite/../../../gdb/testsuite/gdb.multi/goodbye.c, line 61

Where the frame can be found, but GDB cannot find the function. This
fails the last two tests in checkpoint-multi.exp on those system, even
though the behaviour is as expected.

This patch removes the comma from the regex that matches with the frame
number. The test now passes fine on the system.

Change-Id: Iced4931d77f647046c87889455264cb169f480ff
Approved-by: Kevin Buettner <kevinb@redhat.com>
gdb/testsuite/gdb.multi/checkpoint-multi.exp

index 8439b8dfbb4e76ac77e0527e96fa86d8c932bf6d..54fd3ca978772fff57755e8b881e0efa47f7901c 100644 (file)
@@ -781,7 +781,7 @@ with_test_prefix "background execution" {
        gdb_test "info checkpoints" \
            [multi_line \
                "$checkpoints_header_re" \
-               "\\* 1\\.0 y +$proc_re +at $::hex,.*" \
+               "\\* 1\\.0 y +$proc_re +at $::hex.*" \
                "  1\\.1 n +$proc_re +at $::hex, file.*?$hello_c.*?" \
                "  2\\.0 y +$proc_re +at $::hex, file.*?$goodbye_c.*?" \
                "  2\\.1 n +$proc_re +at $::hex, file.*?$goodbye_c.*?"]
@@ -792,7 +792,7 @@ with_test_prefix "background execution" {
        gdb_test "info checkpoints" \
            [multi_line \
                "$checkpoints_header_re" \
-               "  1\\.0 y +$proc_re +at $::hex,.*" \
+               "  1\\.0 y +$proc_re +at $::hex.*" \
                "  1\\.1 n +$proc_re +at $::hex, file.*?$hello_c.*?" \
                "  2\\.0 n +$proc_re +at $::hex, file.*?$goodbye_c.*?" \
                "\\* 2\\.1 y +$proc_re +at $::hex, file.*?$goodbye_c.*?"]