|
|
0efd7d |
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
|
|
0efd7d |
From: Keith Seitz <keiths@redhat.com>
|
|
|
0efd7d |
Date: Tue, 28 Jul 2020 09:26:44 -0400
|
|
|
0efd7d |
Subject: gdb-rhbz1842691-corefile-mem-access-11of15.patch
|
|
|
0efd7d |
|
|
|
0efd7d |
;; Adjust coredump-filter.exp to account for NT_FILE note handling
|
|
|
0efd7d |
;; Kevin Buettner, RH BZ 1842961
|
|
|
0efd7d |
|
|
|
0efd7d |
Author: Kevin Buettner <kevinb@redhat.com>
|
|
|
0efd7d |
Date: Fri Jul 3 20:10:22 2020 -0700
|
|
|
0efd7d |
|
|
|
0efd7d |
Adjust coredump-filter.exp to account for NT_FILE note handling
|
|
|
0efd7d |
|
|
|
0efd7d |
This commit makes adjustments to coredump-filter.exp to account
|
|
|
0efd7d |
for the fact that NT_FILE file-backed mappings are now available
|
|
|
0efd7d |
when a core file is loaded. Thus, a test which was expected
|
|
|
0efd7d |
to PASS when a memory region was determined to be unavailable
|
|
|
0efd7d |
(due to no file-backed mappings being available) will now FAIL
|
|
|
0efd7d |
due to those mappings being available from having loaded the
|
|
|
0efd7d |
NT_FILE note.
|
|
|
0efd7d |
|
|
|
0efd7d |
I had originally marked the test as XFAIL, but Mihails Strasuns
|
|
|
0efd7d |
suggested a much better approach:
|
|
|
0efd7d |
|
|
|
0efd7d |
1) First test that it still works if file is accessible in the
|
|
|
0efd7d |
filesystem.
|
|
|
0efd7d |
2) Temporarily move / rename the file and test that disassembly
|
|
|
0efd7d |
doesn't work anymore.
|
|
|
0efd7d |
|
|
|
0efd7d |
That's what this commit implements.
|
|
|
0efd7d |
|
|
|
0efd7d |
gdb/testsuite/ChangeLog:
|
|
|
0efd7d |
|
|
|
0efd7d |
* gdb.base/coredump-filter.exp: Add second
|
|
|
0efd7d |
non-Private-Shared-Anon-File test.
|
|
|
0efd7d |
(test_disasm): Rename binfile for test which is expected
|
|
|
0efd7d |
to fail.
|
|
|
0efd7d |
|
|
|
0efd7d |
diff --git a/gdb/testsuite/gdb.base/coredump-filter.exp b/gdb/testsuite/gdb.base/coredump-filter.exp
|
|
|
0efd7d |
--- a/gdb/testsuite/gdb.base/coredump-filter.exp
|
|
|
0efd7d |
+++ b/gdb/testsuite/gdb.base/coredump-filter.exp
|
|
|
0efd7d |
@@ -80,15 +80,26 @@ proc do_load_and_test_core { core var working_var working_value dump_excluded }
|
|
|
0efd7d |
# disassemble of a function (i.e., the binary's .text section). GDB
|
|
|
0efd7d |
# should fail in this case. However, it must succeed if the binary is
|
|
|
0efd7d |
# provided along with the corefile. This is what we test here.
|
|
|
0efd7d |
+#
|
|
|
0efd7d |
+# A further complication is that Linux NT_FILE notes are now read from
|
|
|
0efd7d |
+# the corefile. This note allows GDB to find the binary for file
|
|
|
0efd7d |
+# backed mappings even though the binary wasn't loaded by GDB in the
|
|
|
0efd7d |
+# conventional manner. In order to see the expected failure for this
|
|
|
0efd7d |
+# case, we rename the binary in order to perform this test.
|
|
|
0efd7d |
|
|
|
0efd7d |
proc test_disasm { core address should_fail } {
|
|
|
0efd7d |
- global testfile hex
|
|
|
0efd7d |
+ global testfile hex binfile
|
|
|
0efd7d |
|
|
|
0efd7d |
# Restart GDB without loading the binary.
|
|
|
0efd7d |
with_test_prefix "no binary" {
|
|
|
0efd7d |
gdb_exit
|
|
|
0efd7d |
gdb_start
|
|
|
0efd7d |
|
|
|
0efd7d |
+ set hide_binfile [standard_output_file "${testfile}.hide"]
|
|
|
0efd7d |
+ if { $should_fail == 1 } {
|
|
|
0efd7d |
+ remote_exec host "mv -f $binfile $hide_binfile"
|
|
|
0efd7d |
+ }
|
|
|
0efd7d |
+
|
|
|
0efd7d |
set core_loaded [gdb_core_cmd "$core" "load core"]
|
|
|
0efd7d |
if { $core_loaded == -1 } {
|
|
|
0efd7d |
fail "loading $core"
|
|
|
0efd7d |
@@ -96,6 +107,7 @@ proc test_disasm { core address should_fail } {
|
|
|
0efd7d |
}
|
|
|
0efd7d |
|
|
|
0efd7d |
if { $should_fail == 1 } {
|
|
|
0efd7d |
+ remote_exec host "mv -f $hide_binfile $binfile"
|
|
|
0efd7d |
gdb_test "x/i \$pc" "=> $hex:\tCannot access memory at address $hex" \
|
|
|
0efd7d |
"disassemble function with corefile and without a binary"
|
|
|
0efd7d |
} else {
|
|
|
0efd7d |
@@ -225,5 +237,9 @@ foreach item $all_anon_corefiles {
|
|
|
0efd7d |
}
|
|
|
0efd7d |
|
|
|
0efd7d |
with_test_prefix "loading and testing corefile for non-Private-Shared-Anon-File" {
|
|
|
0efd7d |
+ test_disasm $non_private_shared_anon_file_core $main_addr 0
|
|
|
0efd7d |
+}
|
|
|
0efd7d |
+
|
|
|
0efd7d |
+with_test_prefix "loading and testing corefile for non-Private-Shared-Anon-File with renamed binary" {
|
|
|
0efd7d |
test_disasm $non_private_shared_anon_file_core $main_addr 1
|
|
|
0efd7d |
}
|