What is the purpose of parse_elf() in misc.c
Hi All, In looking at booting a raw x86 kernel image, I discovered that the compressed image in bzImage is actually an ELF image created with: objcopy -R .comment -S vmlinux After decompressing the image, the parse_elf() function in misc.c copies the sections from the ELF image (there are 3 sections, only 2 are marked PT_LOAD) into their final resting place in memory. This got me to thinking, why not use: objcopy -O binary -R .comment -S vmlinux I wrote a little stand-alone parse_elf() program, and lo-and-behold, the outputs are identical. So, in theory, if bzImage contained a raw binary, it could be decompressed directly to the target address. Now there is some adjustment in parse_elf() for relocatable kernels, but I can't but think that this could be simply catered for in the decompression target address Surely this would speed up kernel loading by removing the additional copy that parse_elf() introduces Or am I missing something significant? Regards, Graeme
Hi Graeme.... On Fri, Nov 25, 2011 at 12:30, Graeme Russ <graeme.russ@gmail.com> wrote:
I wrote a little stand-alone parse_elf() program, and lo-and-behold, the outputs are identical. So, in theory, if bzImage contained a raw binary, it could be decompressed directly to the target address.
I find your experiment quite interesting. After looking at parse_elf (http://lxr.linux.no/#linux+v3.1.4/arch/x86/boot/compressed/misc.c#L276), I guess it could be codes introduced long time before objcopy support "binary" form. And since then is rarely touched again. But maybe it's left there in case there is a platform that doesn't have objcopy version that supports "binary" form conversion. So I think it's more about portability issue. -- regards, Mulyadi Santosa Freelance Linux trainer and consultant blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
participants (2)
-
Graeme Russ -
Mulyadi Santosa