diff options
author | Kevin Buettner <kevinb@redhat.com> | 2020-03-04 17:42:43 -0700 |
---|---|---|
committer | Kevin Buettner <kevinb@redhat.com> | 2020-07-22 12:40:42 -0700 |
commit | 94c265d790b88e691b9ea0173b7000a54a3eb0a0 (patch) | |
tree | 7b2f89ac2df9e5b3550e0d9720a2080876b2ea86 /gdb | |
parent | 2735d4218ea81ea83458007a80e4132fa6e73668 (diff) | |
download | binutils-gdb-94c265d790b88e691b9ea0173b7000a54a3eb0a0.tar.gz |
Test ability to access unwritten-to mmap data in core file
gdb/testsuite/ChangeLog:
PR corefiles/25631
* gdb.base/corefile.exp (accessing anonymous, unwritten-to mmap data):
New test.
* gdb.base/coremaker.c (buf3): New global.
(mmapdata): Add mmap call which uses MAP_ANONYMOUS and MAP_PRIVATE
flags.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/testsuite/ChangeLog | 11 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/corefile.exp | 9 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/coremaker.c | 10 |
3 files changed, 29 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 6c3bb5ec9d5..57e63f5216c 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,4 +1,13 @@ -2020-07-20 Kevin Buettner <kevinb@redhat.com> +2020-07-22 Kevin Buettner <kevinb@redhat.com> + + PR corefiles/25631 + * gdb.base/corefile.exp (accessing anonymous, unwritten-to mmap data): + New test. + * gdb.base/coremaker.c (buf3): New global. + (mmapdata): Add mmap call which uses MAP_ANONYMOUS and MAP_PRIVATE + flags. + +2020-07-22 Kevin Buettner <kevinb@redhat.com> * gdb.base/coremaker.c (filler_ro): New global constant. diff --git a/gdb/testsuite/gdb.base/corefile.exp b/gdb/testsuite/gdb.base/corefile.exp index 34b903b350d..eaabe6c0f8c 100644 --- a/gdb/testsuite/gdb.base/corefile.exp +++ b/gdb/testsuite/gdb.base/corefile.exp @@ -175,6 +175,15 @@ gdb_test_multiple "x/8bd buf2" "$test" { } } +# Test ability to read anonymous and, more importantly, unwritten-to +# mmap'd data. + +if { ![istarget *-linux*] } { + setup_xfail "*-*-*" +} +gdb_test "x/wx buf3" "$hex:\[ \t\]+0x00000000" \ + "accessing anonymous, unwritten-to mmap data" + # test reinit_frame_cache gdb_load ${binfile} diff --git a/gdb/testsuite/gdb.base/coremaker.c b/gdb/testsuite/gdb.base/coremaker.c index a39b3ba8a4b..0981b21738f 100644 --- a/gdb/testsuite/gdb.base/coremaker.c +++ b/gdb/testsuite/gdb.base/coremaker.c @@ -38,6 +38,7 @@ char *buf1; char *buf2; +char *buf3; int coremaker_data = 1; /* In Data section */ int coremaker_bss; /* In BSS section */ @@ -104,6 +105,15 @@ mmapdata () } /* Touch buf2 so kernel writes it out into 'core'. */ buf2[0] = buf1[0]; + + /* Create yet another region which is allocated, but not written to. */ + buf3 = mmap (NULL, MAPSIZE, PROT_READ | PROT_WRITE, + MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); + if (buf3 == (char *) -1) + { + perror ("mmap failed"); + return; + } } void |