Re: [RFC] x86 ELF bootable kernels/Linux booting Linux/LinuxBIOS

Keith Owens
2002-02-04T04:29:37Z

On 03 Feb 2002 11:43:08 -0700,
ebiederm@xmission.com (Eric W. Biederman) wrote:
>O.k. I have been thinking about this some more, and I have come up with a couple
>alternate of solutions....
>My final and favorite is to take an ELF image, define a couple of ELF
>note types, and add a bunch those notes saying which pieces are
>hardware dependent. So a smart ELF loader can prune the image as it
>is loaded, and a stupid one will just attempt to load everything. And
>with the setup for this not being bootloader specific it will probably
>encourage device pruning loaders.

That is not an ELF loader, it is an ELF *linker*. The vmlinux image
has had all the relocations fixed up, you no longer have the data
required to discard sections. To prune hardware dependent pieces means
moving data around and adjusting relocation entries. you have to go
back one stage, to the individual objects, and that means linking.

Dynamically linking the kernel is hard. You just reinvented insmod,
look at all the arch dependent linking code that has to cope with.

I suppose that you could put each hardware dependent piece in its own
section and ensure that the rest of the kernel did not refer to those
sections directly. The rest of the kernel would have to access the
hardware dependent code via a table that was fixed up by the loader.
In addition the optional sections would have to be position independent
code because it would not be known at kbuild time where the code would
finally be loaded and run. Seems like an awful lot of work.