aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64/ia32/syscall32.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2007-01-26 00:56:50 -0800
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-01-26 13:50:58 -0800
commite03f0ca11645ce69a4defcd4f60a5cb2d5e30507 (patch)
treefb44091bc16e724a5fef613101594dc7879e0532 /arch/x86_64/ia32/syscall32.c
parent[PATCH] i386 vDSO: use VM_ALWAYSDUMP (diff)
downloadlinux-dev-e03f0ca11645ce69a4defcd4f60a5cb2d5e30507.tar.xz
linux-dev-e03f0ca11645ce69a4defcd4f60a5cb2d5e30507.zip
[PATCH] x86_64 ia32 vDSO: use VM_ALWAYSDUMP
This patch fixes ia32 core dumps on x86_64 to include just one phdr for the vDSO vma. Currently it writes a confused format with two phdrs for the address, one without contents and one with. This patch removes the special-case core writing macros for the ia32 vDSO. Instead, it uses VM_ALWAYSDUMP in the vma. This changes core dumps so they no longer include the non-PT_LOAD phdrs from the vDSO, consistent with fixed native i386 core dumps. Signed-off-by: Roland McGrath <roland@redhat.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Paul Mackerras <paulus@samba.org> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to '')
-rw-r--r--arch/x86_64/ia32/syscall32.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86_64/ia32/syscall32.c b/arch/x86_64/ia32/syscall32.c
index 3e5ed20cba45..3ac935535e20 100644
--- a/arch/x86_64/ia32/syscall32.c
+++ b/arch/x86_64/ia32/syscall32.c
@@ -59,6 +59,13 @@ int syscall32_setup_pages(struct linux_binprm *bprm, int exstack)
vma->vm_end = VSYSCALL32_END;
/* MAYWRITE to allow gdb to COW and set breakpoints */
vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYEXEC|VM_MAYWRITE;
+ /*
+ * Make sure the vDSO gets into every core dump.
+ * Dumping its contents makes post-mortem fully interpretable later
+ * without matching up the same kernel and hardware config to see
+ * what PC values meant.
+ */
+ vma->vm_flags |= VM_ALWAYSDUMP;
vma->vm_flags |= mm->def_flags;
vma->vm_page_prot = protection_map[vma->vm_flags & 7];
vma->vm_ops = &syscall32_vm_ops;