[gdb/testsuite] Fix gdb.base/catch-syscall.exp with --with-expat=no
authorTom de Vries <tdevries@suse.de>
Wed, 11 May 2022 13:48:23 +0000 (15:48 +0200)
committerTom de Vries <tdevries@suse.de>
Wed, 11 May 2022 13:48:23 +0000 (15:48 +0200)
When doing a gdb build with --with-expat=no, I run into:
...
(gdb) PASS: gdb.base/catch-syscall.exp: determine pipe syscall: \
  continue to breakpoint: before pipe call
catch syscall pipe^M
Unknown syscall name 'pipe'.^M
(gdb) PASS: gdb.base/catch-syscall.exp: determine pipe syscall: \
  catch syscall pipe
catch syscall pipe2^M
Unknown syscall name 'pipe2'.^M
(gdb) PASS: gdb.base/catch-syscall.exp: determine pipe syscall: \
  catch syscall pipe2
continue^M
Continuing.^M
[Detaching after vfork from child process 18538]^M
[Inferior 1 (process 18537) exited normally]^M
(gdb) FAIL: gdb.base/catch-syscall.exp: determine pipe syscall: continue
...

This is a regression since recent commit 5463a15c18b ("[gdb/testsuite] Handle
pipe2 syscall in gdb.base/catch-syscall.exp").

Fix this by using pipe/pipe2 syscall numbers instead.

Tested on x86_64-linux.

gdb/testsuite/gdb.base/catch-syscall.exp

index 1260a64270f5ccc201e0376eb1a6c6fae25762fd..d8b6898b3e0517fe49b195066f6ab5b2f793a8e7 100644 (file)
@@ -705,10 +705,12 @@ proc setup_all_syscalls {} {
     # SYS_pipe doesn't exist on aarch64 kernel.
     set test "check SYS_pipe"
     set have_SYS_pipe 0
+    set SYS_pipe -1
     gdb_test_multiple "p pipe_syscall" $test {
-       -re -wrap " = $decimal" {
+       -re -wrap " = ($decimal)" {
            pass $test
            set have_SYS_pipe 1
+           set SYS_pipe $expect_out(1,string)
        }
        -re -wrap "No symbol .*" {
            pass $test
@@ -717,10 +719,12 @@ proc setup_all_syscalls {} {
 
     set test "check SYS_pipe2"
     set have_SYS_pipe2 0
+    set SYS_pipe2 -1
     gdb_test_multiple "p pipe2_syscall" $test {
-       -re -wrap " = $decimal" {
+       -re -wrap " = ($decimal)" {
            pass $test
            set have_SYS_pipe2 1
+           set SYS_pipe2 $expect_out(1,string)
        }
        -re -wrap "No symbol .*" {
            pass $test
@@ -736,19 +740,19 @@ proc setup_all_syscalls {} {
        gdb_test "break $line"
        gdb_continue_to_breakpoint "before pipe call"
        if { $have_SYS_pipe } {
-           gdb_test "catch syscall pipe"
+           gdb_test "catch syscall $SYS_pipe"
        }
        if { $have_SYS_pipe2 } {
-           gdb_test "catch syscall pipe2"
+           gdb_test "catch syscall $SYS_pipe2"
        }
        set ok 0
        gdb_test_multiple "continue" "" {
-           -re -wrap "Catchpoint $decimal \\(call to syscall pipe\\).*" {
+           -re -wrap "Catchpoint $decimal \\(call to syscall (pipe|$SYS_pipe)\\).*" {
                lappend all_syscalls pipe
                pass $gdb_test_name
                set ok 1
            }
-           -re -wrap "Catchpoint $decimal \\(call to syscall pipe2\\).*" {
+           -re -wrap "Catchpoint $decimal \\(call to syscall (pipe2|$SYS_pipe)\\).*" {
                lappend all_syscalls pipe2
                pass $gdb_test_name
                set ok 1