FYI: x86_64 bug when using gdb with vmcore

Dave Anderson anderson at
Fri Feb 5 11:53:18 EST 2010

The kexec/arch/x86_64/crashdump-x86_64.h file contains a
stale PAGE_OFFSET value.  In 2.6.27 it was changed from
0xffff810000000000UL to 0xffff880000000000UL.  This is
only a problem when using gdb with the vmlinux/vmcore
pair, because gdb relies upon the PT_LOAD segment's p_vaddr
values in the ELF header to be correct.

Anyway, in the RHEL6 kexec-tools, this simple patch 
was made:

-#define PAGE_OFFSET            0xffff810000000000UL
+#define PAGE_OFFSET            0xffff880000000000UL

which is OK since the RHEL6 version of kexec-tools
will only be used with RHEL6 kernels.  

But for backwards compatibility, the better way to do 
it would be to check the utsname of the running kernel, 
and use the right value.

But again, this is only required for gdb usage.  The 
crash utility (and makedumpfile) make kernel version checks 
to determine which x86_64 PAGE_OFFSET value is applicable,
and don't rely on the ELF header p_vaddr values for
the unity-mapped regions.  

Dave Anderson

More information about the kexec mailing list