From: Roger Shimizu <hidden> Date: 2016-01-26 12:10:36
vmlinuz on ARM seems is not an ELF, so scripts/extract-vmlinux
need to support such case.
This fix is tested on amd64 and armel platform.
Signed-off-by: Roger Shimizu <redacted>
---
Dear Michal and Russell,
I'm studying ARM booting process, and happened to find scripts/extract-vmlinux
in kernel tree is broken on ARM for long time. [0][1]
[0]: https://bugs.launchpad.net/linaro-ubuntu/+bug/1050453
[1]: https://bugs.linaro.org/show_bug.cgi?id=461
The patch I created looks like dirty hack, and I don't know the status of
whether vmlinuz is ELF or not on other platforms, so I make this as "RFC".
Please comment. Thank you!
Cheers,
Roger
scripts/extract-vmlinux | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
@@ -15,7 +15,15 @@ check_vmlinux() # Use readelf to check if it's a valid ELF # TODO: find a better to way to check that it's really vmlinux # and not just an elf- readelf -h $1 > /dev/null 2>&1 || return 1+ case "$2" in+ 0|"")+ readelf -h $1 > /dev/null 2>&1 || return 1+ ;;+ 1|*)+ # For ARCH like ARM, vmlinux is not ELF, so we only do the check+ # when $2 is 0 or NULL+ ;;+ esac cat $1 exit 0
@@ -15,7 +15,15 @@ check_vmlinux() # Use readelf to check if it's a valid ELF # TODO: find a better to way to check that it's really vmlinux # and not just an elf- readelf -h $1 > /dev/null 2>&1 || return 1+ case "$2" in+ 0|"")+ readelf -h $1 > /dev/null 2>&1 || return 1+ ;;+ 1|*)+ # For ARCH like ARM, vmlinux is not ELF, so we only do the check+ # when $2 is 0 or NULL
This comment seems to be misleading - I think you mean "vmlinuz" there,
or maybe "zImage" as the file is named in the kernel build tree to make
it clear what you're referring to. "vmlinuz" is the name chosen by
distro installers.
--
RMK's Patch system: http://www.arm.linux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
@@ -15,7 +15,15 @@ check_vmlinux() # Use readelf to check if it's a valid ELF # TODO: find a better to way to check that it's really vmlinux # and not just an elf- readelf -h $1 > /dev/null 2>&1 || return 1+ case "$2" in+ 0|"")+ readelf -h $1 > /dev/null 2>&1 || return 1+ ;;+ 1|*)+ # For ARCH like ARM, vmlinux is not ELF, so we only do the check+ # when $2 is 0 or NULL
This comment seems to be misleading - I think you mean "vmlinuz" there,
or maybe "zImage" as the file is named in the kernel build tree to make
it clear what you're referring to. "vmlinuz" is the name chosen by
distro installers.
I just add these comment following original comment above.
And even the script name is "extract-vmlinux".
In the check_vmlinux() routine, the target of the check is
decompressed result of
parsed part zImage file.
I guess the original comment is true, it's called vmlinux in kernel build tree.
I hope you can comment:
- whether my hack work for all ARMs (armel/armhf/arm64 etc). I only
tested armel.
- whether there's better way to check ARM's vmlinux
Thank you!
Cheers,
Roger
--
Roger Shimizu, GMT +9 Tokyo
PGP/GPG: 17B3ACB1