From 7d6d4f69fe59b1102cbbd64ffaec33f8d18b642b Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Thu, 14 Aug 2025 22:31:06 +0200 Subject: [PATCH] [gdb/testsuite] Fix gdb.base/dlmopen.exp on native-gdbserver With test-case gdb.base/dlmopen.exp and target board native-gdbserver, I get: ... (gdb) info breakpoints 3^M Num Type Disp Enb Address What^M 3 breakpoint keep y 0x00007ffff7fc8000 ^M stop only if (0) (target evals)^M (gdb) FAIL: $exp: test_solib_unmap_events: check b/p status ... The problem is that the regexp doesn't allow for the "(target evals)" part: ... -re -wrap "$bpnum\\s+breakpoint\\s+keep\\s+y\\s+$::hex\\s*\[^\r\n\]+\r\n\\s+stop o nly if \\(0\\)" { ... Fix this by updating the regexp. While we're at it: - rewrite the regexp using multiline, string_to_regexp, join and string cat to make it more readable, and - remove the redundant failure clause from the same gdb_test_multiple. Tested on x86_64-linux using make-check-all.sh. Approved-By: Tom Tromey --- gdb/testsuite/gdb.base/dlmopen.exp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/gdb/testsuite/gdb.base/dlmopen.exp b/gdb/testsuite/gdb.base/dlmopen.exp index da17002dae7..e7bf6f3f7bc 100644 --- a/gdb/testsuite/gdb.base/dlmopen.exp +++ b/gdb/testsuite/gdb.base/dlmopen.exp @@ -358,15 +358,19 @@ proc_with_prefix test_solib_unmap_events { } { # dynamic linker as pending when some instances of the library were # unloaded, despite there really only being one copy of the dynamic # linker actually loaded into the inferior's address space. - gdb_test_multiple "info breakpoints $bpnum" "check b/p status" { - -re -wrap "$bpnum\\s+breakpoint\\s+keep\\s+y\\s+\\s+\\*$::hex\\s*\r\n\\s+stop only if \\(0\\)" { - fail $gdb_test_name - } - - -re -wrap "$bpnum\\s+breakpoint\\s+keep\\s+y\\s+$::hex\\s*\[^\r\n\]+\r\n\\s+stop only if \\(0\\)" { - pass $gdb_test_name - } - } + set hs {[^\r\n]} + set re_pass \ + [multi_line \ + "" \ + [join \ + [list \ + "$bpnum" "breakpoint" "keep" "y" "$::hex$hs+"] \ + {\s+}] \ + [string cat \ + {\s+} \ + [string_to_regexp "stop only if (0)"] \ + ([string_to_regexp " (target evals)"])?]] + gdb_test "info breakpoints $bpnum" $re_pass "check b/p status" # With all the dlclose calls now complete, we should be back to a # single copy of the dynamic linker. -- 2.47.3