[binutils-gdb] [gdb/testsuite] Fix gdb.base/infcall-failure.exp on freebsd

Tom de Vries vries@sourceware.org
Wed Jun 25 07:39:45 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=5d721846dc366dff149b83776a5584a2b7f1243f

commit 5d721846dc366dff149b83776a5584a2b7f1243f
Author: Tom de Vries <tdevries@suse.de>
Date:   Wed Jun 25 09:39:30 2025 +0200

    [gdb/testsuite] Fix gdb.base/infcall-failure.exp on freebsd
    
    On x86_64-freebsd with test-case gdb.base/infcall-failure.exp I get:
    ...
    (gdb) continue
    Continuing.
    
    Program received signal SIGSEGV, Segmentation fault.
    Address not mapped to object.
    0x0000000000400522 in func_segfault () at infcall-failure.c:24
    24        return *p;    /* Segfault here.  */
    Error in testing condition for breakpoint 2:
    The program being debugged was signaled while in a function called from GDB.
    GDB remains in the frame where the signal was received.
    To change this behavior use "set unwind-on-signal on".
    Evaluation of the expression containing the function
    (func_segfault) will be abandoned.
    When the function is done executing, GDB will silently stop.
    (gdb) FAIL: $exp: target_async=on: target_non_stop=on: \
      run_cond_hits_segfault_test: continue
    ...
    
    The problem is that the regexp in the test-case doesn't expect the
    "Address not mapped to object." bit.
    
    Fix this by updating the regexp.
    
    Approved-by: Kevin Buettner <kevinb@redhat.com>
    
    Tested on x86_64-freebsd and x86_64-linux.

Diff:
---
 gdb/testsuite/gdb.base/infcall-failure.exp | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/gdb/testsuite/gdb.base/infcall-failure.exp b/gdb/testsuite/gdb.base/infcall-failure.exp
index 66bccd186ae..e7aeac1ff1c 100644
--- a/gdb/testsuite/gdb.base/infcall-failure.exp
+++ b/gdb/testsuite/gdb.base/infcall-failure.exp
@@ -131,7 +131,13 @@ proc_with_prefix run_cond_hits_segfault_test { async_p non_stop_p } {
 	[multi_line \
 	     "Continuing\\." \
 	     "" \
-	     "Program received signal SIGSEGV, Segmentation fault\\." \
+	     [string cat \
+		  [string_to_regexp \
+		       "Program received signal SIGSEGV, Segmentation fault."] \
+		  "("] \
+	     [string cat \
+		  [string_to_regexp "Address not mapped to object."] \
+		  ")?"] \
 	     "${::hex} in func_segfault \\(\\) at \[^\r\n\]+:${::segv_line}" \
 	     "${::decimal}\\s+\[^\r\n\]+Segfault here\[^\r\n\]+" \
 	     "Error in testing condition for breakpoint ${bp_1_num}:" \
@@ -161,7 +167,13 @@ proc_with_prefix run_call_hits_segfault_test { async_p non_stop_p } {
     gdb_test "call func_segfault ()" \
 	[multi_line \
 	     "" \
-	     "Program received signal SIGSEGV, Segmentation fault\\." \
+	     [string cat \
+		  [string_to_regexp \
+		       "Program received signal SIGSEGV, Segmentation fault."] \
+		  "("] \
+	     [string cat \
+		  [string_to_regexp "Address not mapped to object."] \
+		  ")?"] \
 	     "${::hex} in func_segfault \\(\\) at \[^\r\n\]+:${::segv_line}" \
 	     "${::decimal}\\s+\[^\r\n\]+Segfault here\[^\r\n\]+" \
 	     "The program being debugged was signaled while in a function called from GDB\\." \


More information about the Gdb-cvs mailing list