Commit [8d9032] Maximize Restore History

elf coredump: add extended numbering support

The current ELF dumper implementation can produce broken corefiles if
program headers exceed 65535. This number is determined by the number of
vmas which the process have. In particular, some extreme programs may use
more than 65535 vmas. (If you google max_map_count, you can find some
users facing this problem.) This kind of program never be able to generate
correct coredumps.

This patch implements ``extended numbering'' that uses sh_info field of
the first section header instead of e_phnum field in order to represent
upto 4294967295 vmas.

This is supported by
AMD64-ABI(http://www.x86-64.org/documentation.html) and
Solaris(http://docs.sun.com/app/docs/doc/817-1984/).
Of course, we are preparing patches for gdb and binutils.

Signed-off-by: Daisuke HATAYAMA <d.hatayama@jp.fujitsu.com>
Cc: "Luck, Tony" <tony.luck@intel.com>
Cc: Jeff Dike <jdike@addtoit.com>
Cc: David Howells <dhowells@redhat.com>
Cc: Greg Ungerer <gerg@snapgear.com>
Cc: Roland McGrath <roland@redhat.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: <linux-arch@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Daisuke HATAYAMA Daisuke HATAYAMA 2010-03-05

Linus Torvalds Linus Torvalds 2010-03-06

changed arch
changed arch/ia64
changed arch/ia64/kernel
changed arch/ia64/kernel/elfcore.c
changed arch/um
changed arch/um/sys-i386
changed arch/um/sys-i386/elfcore.c
changed fs
changed fs/binfmt_elf.c
changed fs/binfmt_elf_fdpic.c
changed include
changed include/linux
changed include/linux/elf.h
changed include/linux/elfcore.h
changed kernel
changed kernel/elfcore.c
arch
Directory.
arch/ia64
Directory.
arch/ia64/kernel
Directory.
arch/ia64/kernel/elfcore.c Diff Switch to side-by-side view
Loading...
arch/um
Directory.
arch/um/sys-i386
Directory.
arch/um/sys-i386/elfcore.c Diff Switch to side-by-side view
Loading...
fs
Directory.
fs/binfmt_elf.c Diff Switch to side-by-side view
Loading...
fs/binfmt_elf_fdpic.c Diff Switch to side-by-side view
Loading...
include
Directory.
include/linux
Directory.
include/linux/elf.h Diff Switch to side-by-side view
Loading...
include/linux/elfcore.h Diff Switch to side-by-side view
Loading...
kernel
Directory.
kernel/elfcore.c Diff Switch to side-by-side view
Loading...