[PATCH] kdump: relocatable kernel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Hi Jan,

On 7/6/06, Jan Kratochvil <lace at jankratochvil.net> wrote:
> On Thu, 06 Jul 2006 08:49:14 +0200, Magnus Damm wrote:
> > On 7/6/06, Eric W. Biederman <ebiederm at xmission.com> wrote:
> > > "Magnus Damm" <magnus.damm at gmail.com> writes:
> ...
> > > > I understand that it is possible to create a symbol that points to a
> > > > fixed address say mapping some hardware resource, but is that a
> > > > strategy currently used by Linux?
> > >
> > > Nope absolute symbols should not be changed in particular you will
> > > mess up the linux-gate.so and the like.
> >
> > I did some more research and it looks like I'm wrong. So absolute
> > symbols should be handled in a different way - I'll modify patches to
> > get that working.
>
> It is true some addresses must not be relocated. In 2.6.9 days it were the
> addresses detected by SAFE_FIXED_ADDRESS() in:
>         http://mkdump.cvs.sourceforge.net/mkdump/linux/scripts/reltab.c?view=markup&pathrev=linux-2_6-minik

Thanks for clarifying. I saw that you used the external utility
pointed out above to postprocess the relocations. I guess there were
several reasons behind that, but by performing the linking in the
kexec binary I was hoping to keep the kernel code as simple as
possible.

> > The absolute symbols we are talking about are the ones that could be
> > extracted from vmlinux with the following line, right?
> >
> > readelf -s vmlinux | grep ABS | grep -v FILE
>
> It would be the right way. Unfortunately in those 2.6.9 days this "flag" was
> broken in "vmlinux.lds.S" so Eric W. Biederman fixed it in the patch noted
> below so that your "grep ABS" would work properly:

Yeah, I've played around with Erics patch a bit and it seems to be the
right way to go. I tried extending it to x86_64 too, but binutils-2.17
seems b0rk somehow and it looks lite it reports relative symbols as
absolute sometimes.

> > > > > Eric had posted a patch in the past which made some the absolute symbols
> > > > > section relative.
> > > > >
> > > > > http://marc.theaimsgroup.com/?l=linux-kernel&m=112266670613361&w=2
>
> I did not fix it and workarounded it instead in my
>         http://mkdump.cvs.sourceforge.net/mkdump/linux/scripts/reltab.c?view=markup&pathrev=linux-2_6-minik
>
> just due to the project management issues - I just checked the referenced
> address range not looking at whether such reference was marked as being
> pointing to fixed or relocatable address.  I agree that technically speaking
> the right way is fixing "vmlinux.lds.S" as Eric W. Biederman did.
>
> (did not check which patches did / did-not get imported into which
> version/maintainer/vendor of Linux kernel)

Erics patch is not in mainline, that's for sure anyhow.

>
> Extracted some old mail explaining the fixed vs. relative addresses and the
> type ("PC-relative?") of relocation (according to the used instruction type):
>
> On Thu, 14 Jul 2005 03:12:10 +0200, lace wrote:
> ...
> > source        destination     PC-relative?    resolving
> > kernel-image  kernel-image    no              ADDITION
> > kernel-image  kernel-image    yes             none
> > kernel-image  fixed           no              none
> > kernel-image  fixed           yes             SUBTRACTION
> > fixed         kernel-image    no              ADDITION
> > fixed         kernel-image    yes             *** ADDITION *** (NOT SUBTRACTION!)
> > fixed         fixed           no              none
> > fixed         fixed           yes             none
> >
> > always: "kernel-image" address < "fixed" address
> >
> > fixed         kernel-image    yes             *** ADDITION *** (NOT SUBTRACTION!)
> > Although the referenced distance decreases, the negative relative address in
> > code is in binary complement and thus the relocation must be ADDITION to
> > decrease the distance (as in absolute value).
> >
> > Fortunately this type of relocation is not being used anywhere now.
> ...

Thanks for the information, it may become handy!

/ magnus


[Netdev]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Photo]     [Yosemite]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Linux Media]     [Linux Resources]

Powered by Linux