From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f171.google.com ([209.85.192.171]:36829 "EHLO mail-pf0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965188AbcAZMLI (ORCPT ); Tue, 26 Jan 2016 07:11:08 -0500 Received: by mail-pf0-f171.google.com with SMTP id n128so98299803pfn.3 for ; Tue, 26 Jan 2016 04:11:08 -0800 (PST) From: Roger Shimizu Subject: [RFC] scripts: make extract-vmlinux support ARM vmlinuz Date: Tue, 26 Jan 2016 21:10:36 +0900 Message-Id: <1453810236-2082-1-git-send-email-rogershimizu@gmail.com> Sender: linux-kbuild-owner@vger.kernel.org List-ID: To: Michal Marek , Russell King Cc: Roger Shimizu , linux-arm-kernel@lists.infradead.org, linux-kbuild@vger.kernel.org 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 --- 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(-) diff --git a/scripts/extract-vmlinux b/scripts/extract-vmlinux index 5061abcc2540..d569eb8c8efe 100755 --- a/scripts/extract-vmlinux +++ b/scripts/extract-vmlinux @@ -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 @@ -31,7 +39,7 @@ try_decompress() do pos=${pos%%:*} tail -c+$pos "$img" | $3 > $tmp 2> /dev/null - check_vmlinux $tmp + test $? -eq 0 && check_vmlinux $tmp 1 done } @@ -53,7 +61,7 @@ check_vmlinux $img # That didn't work, so retry after decompression. try_decompress '\037\213\010' xy gunzip -try_decompress '\3757zXZ\000' abcde unxz +try_decompress '\3757zXZ\000' abcde "unxz --single-stream" try_decompress 'BZh' xy bunzip2 try_decompress '\135\0\0\0' xxx unlzma try_decompress '\211\114\132' xy 'lzop -d' -- 2.1.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: rogershimizu@gmail.com (Roger Shimizu) Date: Tue, 26 Jan 2016 21:10:36 +0900 Subject: [RFC] scripts: make extract-vmlinux support ARM vmlinuz Message-ID: <1453810236-2082-1-git-send-email-rogershimizu@gmail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org 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 --- 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(-) diff --git a/scripts/extract-vmlinux b/scripts/extract-vmlinux index 5061abcc2540..d569eb8c8efe 100755 --- a/scripts/extract-vmlinux +++ b/scripts/extract-vmlinux @@ -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 @@ -31,7 +39,7 @@ try_decompress() do pos=${pos%%:*} tail -c+$pos "$img" | $3 > $tmp 2> /dev/null - check_vmlinux $tmp + test $? -eq 0 && check_vmlinux $tmp 1 done } @@ -53,7 +61,7 @@ check_vmlinux $img # That didn't work, so retry after decompression. try_decompress '\037\213\010' xy gunzip -try_decompress '\3757zXZ\000' abcde unxz +try_decompress '\3757zXZ\000' abcde "unxz --single-stream" try_decompress 'BZh' xy bunzip2 try_decompress '\135\0\0\0' xxx unlzma try_decompress '\211\114\132' xy 'lzop -d' -- 2.1.4