Re: [PATCH 1/2] x86_64: Reflect the relocatability of the kernel in the ELF header.

From: Vivek Goyal
Date: Tue May 01 2007 - 01:07:34 EST


On Mon, Apr 30, 2007 at 10:20:53PM -0600, Eric W. Biederman wrote:
> Vivek Goyal <vgoyal@xxxxxxxxxx> writes:
>
> > On Mon, Apr 30, 2007 at 05:17:07PM +0200, Andi Kleen wrote:
> >> On Monday 30 April 2007 17:12:39 Eric W. Biederman wrote:
> >> >
> >> > Currently because vmlinux does not reflect that the kernel is relocatable
> >> > we still have to support CONFIG_PHYSICAL_START. So this patch adds a small
> >> > c program to do what we cannot do with a linker script set the elf header
> >> > type to ET_DYN.
> >> >
> >> > Since last time I have fixed the type to be in my code ET_DYN (oops),
> >> > and verified this works with kexec. I realized while testing that we
> >> > don't have anyway of identifying a kernel vmlinux as linux so we
> >> > probably want to add an ELF note but that will be another patch.
> >>
> >> The patch is ok for me, but does it pass Vivek's usual testing?
> >
> > I am facing one issue with this patch. gdb can not analyze the
> > resulting kernel core file. Looks like gdb treats vmlinux differently if
> > ELF header type is "ET_DYN". It reads the symbol values incorrectly.
>
> Weird.
>
> > For example, symbol value of "panic_timeout" is 0xffffffff808a1fa8 but
> > gdb somehow things that it is 0xffffffff008aaebf. Looks like it is
> > performing some relocation.
> >
> > I am using GNU gdb Red Hat Linux (6.5-5.fc6rh).
>
> Does it take a kernel core file to reproduce this problem?
> Or can you just open up gdb on a vmlinux and look at the symbol
> address?

It takes a core file to reproduce the problem. Without core file gdb can
get right symbol addresses.

>
> At least without a core file it is working on with gdb 6.4.
>

This seems to be a problem with gdb 6.5. I transferred the dump to a
different machine having GNU gdb 6.4, and it works fine there.

Thanks
Vivek
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/