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.
This commit is contained in:
parent
2735d4218e
commit
94c265d790
3 changed files with 29 additions and 1 deletions
|
@ -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.
|
* gdb.base/coremaker.c (filler_ro): New global constant.
|
||||||
|
|
||||||
|
|
|
@ -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
|
# test reinit_frame_cache
|
||||||
|
|
||||||
gdb_load ${binfile}
|
gdb_load ${binfile}
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
|
|
||||||
char *buf1;
|
char *buf1;
|
||||||
char *buf2;
|
char *buf2;
|
||||||
|
char *buf3;
|
||||||
|
|
||||||
int coremaker_data = 1; /* In Data section */
|
int coremaker_data = 1; /* In Data section */
|
||||||
int coremaker_bss; /* In BSS section */
|
int coremaker_bss; /* In BSS section */
|
||||||
|
@ -104,6 +105,15 @@ mmapdata ()
|
||||||
}
|
}
|
||||||
/* Touch buf2 so kernel writes it out into 'core'. */
|
/* Touch buf2 so kernel writes it out into 'core'. */
|
||||||
buf2[0] = buf1[0];
|
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
|
void
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue