linux-user: Support MADV_DONTDUMP, MADV_DODUMP
Set and clear PAGE_DONTDUMP, and honor that in vma_dump_size. Signed-off-by: Jon Wilson <jonwilson030981@gmail.com> [rth: Use new page_set_flags semantics; also handle DODUMP] Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
f55fc1c092
commit
a79fbb6988
3 changed files with 13 additions and 3 deletions
|
|
@ -30,7 +30,11 @@
|
|||
#define PAGE_PASSTHROUGH 0x40
|
||||
/* For linux-user, indicates that the page is MAP_ANON. */
|
||||
#define PAGE_ANON 0x0080
|
||||
|
||||
/*
|
||||
* For linux-user, indicates that the page should not be
|
||||
* included in a core dump.
|
||||
*/
|
||||
#define PAGE_DONTDUMP 0x0100
|
||||
/* Target-specific bits that will be used via page_get_flags(). */
|
||||
#define PAGE_TARGET_1 0x0200
|
||||
#define PAGE_TARGET_2 0x0400
|
||||
|
|
|
|||
|
|
@ -2127,8 +2127,8 @@ static void bswap_note(struct elf_note *en)
|
|||
*/
|
||||
static size_t vma_dump_size(vaddr start, vaddr end, int flags)
|
||||
{
|
||||
/* The area must be readable. */
|
||||
if (!(flags & PAGE_READ)) {
|
||||
/* The area must be readable and dumpable. */
|
||||
if (!(flags & PAGE_READ) || (flags & PAGE_DONTDUMP)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1248,6 +1248,12 @@ abi_long target_madvise(abi_ulong start, abi_ulong len_in, int advice)
|
|||
*/
|
||||
mmap_lock();
|
||||
switch (advice) {
|
||||
case MADV_DONTDUMP:
|
||||
page_set_flags(start, start + len - 1, PAGE_DONTDUMP, 0);
|
||||
break;
|
||||
case MADV_DODUMP:
|
||||
page_set_flags(start, start + len - 1, 0, PAGE_DONTDUMP);
|
||||
break;
|
||||
case MADV_WIPEONFORK:
|
||||
case MADV_KEEPONFORK:
|
||||
ret = -EINVAL;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue