From 94c265d790b88e691b9ea0173b7000a54a3eb0a0 Mon Sep 17 00:00:00 2001 From: Kevin Buettner Date: Wed, 4 Mar 2020 17:42:43 -0700 Subject: [PATCH] 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. --- gdb/testsuite/ChangeLog | 11 ++++++++++- gdb/testsuite/gdb.base/corefile.exp | 9 +++++++++ gdb/testsuite/gdb.base/coremaker.c | 10 ++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) 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 +2020-07-22 Kevin Buettner + + 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 * 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 -- 2.30.2