aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.base/coredump-filter.exp
diff options
context:
space:
mode:
authorKevin Buettner <kevinb@redhat.com>2020-07-03 20:10:22 -0700
committerKevin Buettner <kevinb@redhat.com>2020-07-22 12:49:18 -0700
commit9c5ec5c2dab18154b44a7bbb430cc7d393424116 (patch)
treed2333e87fb35d8788a35b27a13b366071ea9a567 /gdb/testsuite/gdb.base/coredump-filter.exp
parent4ba11f89a259ffa8dc90f4e8d9bca55f2fcb6483 (diff)
downloadfsf-binutils-gdb-9c5ec5c2dab18154b44a7bbb430cc7d393424116.zip
fsf-binutils-gdb-9c5ec5c2dab18154b44a7bbb430cc7d393424116.tar.gz
fsf-binutils-gdb-9c5ec5c2dab18154b44a7bbb430cc7d393424116.tar.bz2
Adjust coredump-filter.exp to account for NT_FILE note handling
This commit makes adjustments to coredump-filter.exp to account for the fact that NT_FILE file-backed mappings are now available when a core file is loaded. Thus, a test which was expected to PASS when a memory region was determined to be unavailable (due to no file-backed mappings being available) will now FAIL due to those mappings being available from having loaded the NT_FILE note. I had originally marked the test as XFAIL, but Mihails Strasuns suggested a much better approach: 1) First test that it still works if file is accessible in the filesystem. 2) Temporarily move / rename the file and test that disassembly doesn't work anymore. That's what this commit implements. gdb/testsuite/ChangeLog: * gdb.base/coredump-filter.exp: Add second non-Private-Shared-Anon-File test. (test_disasm): Rename binfile for test which is expected to fail.
Diffstat (limited to 'gdb/testsuite/gdb.base/coredump-filter.exp')
-rw-r--r--gdb/testsuite/gdb.base/coredump-filter.exp18
1 files changed, 17 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.base/coredump-filter.exp b/gdb/testsuite/gdb.base/coredump-filter.exp
index ff398f2..5407d11 100644
--- a/gdb/testsuite/gdb.base/coredump-filter.exp
+++ b/gdb/testsuite/gdb.base/coredump-filter.exp
@@ -80,15 +80,26 @@ proc do_load_and_test_core { core var working_var working_value dump_excluded }
# disassemble of a function (i.e., the binary's .text section). GDB
# should fail in this case. However, it must succeed if the binary is
# provided along with the corefile. This is what we test here.
+#
+# A further complication is that Linux NT_FILE notes are now read from
+# the corefile. This note allows GDB to find the binary for file
+# backed mappings even though the binary wasn't loaded by GDB in the
+# conventional manner. In order to see the expected failure for this
+# case, we rename the binary in order to perform this test.
proc test_disasm { core address should_fail } {
- global testfile hex
+ global testfile hex binfile
# Restart GDB without loading the binary.
with_test_prefix "no binary" {
gdb_exit
gdb_start
+ set hide_binfile [standard_output_file "${testfile}.hide"]
+ if { $should_fail == 1 } {
+ remote_exec host "mv -f $binfile $hide_binfile"
+ }
+
set core_loaded [gdb_core_cmd "$core" "load core"]
if { $core_loaded == -1 } {
fail "loading $core"
@@ -96,6 +107,7 @@ proc test_disasm { core address should_fail } {
}
if { $should_fail == 1 } {
+ remote_exec host "mv -f $hide_binfile $binfile"
gdb_test "x/i \$pc" "=> $hex:\tCannot access memory at address $hex" \
"disassemble function with corefile and without a binary"
} else {
@@ -225,5 +237,9 @@ foreach item $all_anon_corefiles {
}
with_test_prefix "loading and testing corefile for non-Private-Shared-Anon-File" {
+ test_disasm $non_private_shared_anon_file_core $main_addr 0
+}
+
+with_test_prefix "loading and testing corefile for non-Private-Shared-Anon-File with renamed binary" {
test_disasm $non_private_shared_anon_file_core $main_addr 1
}