aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2024-09-23 07:53:20 +0200
committerTom de Vries <tdevries@suse.de>2024-09-23 07:53:20 +0200
commit5cd2a23195293a5006841ab80543f1df04ffd39e (patch)
treeed987a24f92816cccf69fbdd33aa74f58ce57e26 /gdb/testsuite
parent39e1719eef9076c0a8813f8d034c10b04f13ff3f (diff)
downloadgdb-5cd2a23195293a5006841ab80543f1df04ffd39e.zip
gdb-5cd2a23195293a5006841ab80543f1df04ffd39e.tar.gz
gdb-5cd2a23195293a5006841ab80543f1df04ffd39e.tar.bz2
[gdb/testsuite] Fix gdb.base/attach-deleted-exec.exp with NFS
With test-case gdb.base/attach-deleted-exec.exp I ran into: ... (gdb) attach 121552^M Attaching to process 121552^M Reading symbols .../attach-deleted-exec/.nfs00000000044ff2ef00000086...^M Reading symbols from /lib64/libm.so.6...^M (No debugging symbols found in /lib64/libm.so.6)^M Reading symbols from /lib64/libc.so.6...^M (No debugging symbols found in /lib64/libc.so.6)^M Reading symbols from /lib64/ld64.so.2...^M (No debugging symbols found in /lib64/ld64.so.2)^M 0x00007fff947cc838 in clock_nanosleep@@GLIBC_2.17 () from /lib64/libc.so.6^M (gdb) FAIL: $exp: attach to process with deleted executable .... The .nfs file indicates: - that the file has been removed on the NFS server, and - that the file is still open on the NFS client. Fix this by detecting this situation, and declaring the test for filename /proc/PID/exe unsupported. Tested on: - x86_64-linux (setup without NFS) - ppc64le-linux (setup with NFS) PR testsuite/32130 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32130
Diffstat (limited to 'gdb/testsuite')
-rw-r--r--gdb/testsuite/gdb.base/attach-deleted-exec.exp24
1 files changed, 21 insertions, 3 deletions
diff --git a/gdb/testsuite/gdb.base/attach-deleted-exec.exp b/gdb/testsuite/gdb.base/attach-deleted-exec.exp
index 3e31c36..1196115 100644
--- a/gdb/testsuite/gdb.base/attach-deleted-exec.exp
+++ b/gdb/testsuite/gdb.base/attach-deleted-exec.exp
@@ -45,9 +45,27 @@ clean_restart
# Attach. GDB should spot that the executable is gone and fallback to
# use /proc/PID/exe.
-gdb_test "attach $testpid" \
- "Attaching to process $decimal\r\nReading symbols from /proc/${testpid}/exe\\.\\.\\..*" \
- "attach to process with deleted executable"
+set test "attach to process with deleted executable"
+set re \
+ [multi_line \
+ "Attaching to process $decimal" \
+ "Reading symbols from (\[^\r\n\]+)[string_to_regexp ...]" \
+ ".*"]
+set filename ""
+gdb_test_multiple "attach $testpid" $test {
+ -re -wrap $re {
+ set filename $expect_out(1,string)
+ pass $gdb_test_name
+ }
+}
+
+set test "filename /proc/PID/exe"
+set re_nfs \[^\r\n\]+[string_to_regexp /.nfs]\[^\r\n\]+
+if { [regexp $re_nfs $filename] } {
+ unsupported $test
+} else {
+ gdb_assert { [string equal $filename /proc/${testpid}/exe] } $test
+}
# Cleanup.
kill_wait_spawned_process $test_spawn_id