extract-vmlinux: Output used decompression method

When extract-vmlinux succeeds, it doesn't output which decompression method
was found at which offset. Adding this additional output in check_vmlinux()
helps troubleshooting and reverse-engineering images.

The last check_vmlinux() call was also quoted to accept spaces.

Signed-off-by: Maxime Thiebaut <maxime+kernel@thiebaut.dev>
Reviewed-by: Nicolas Schier <nsc@kernel.org>
Link: https://lore.kernel.org/r/X6OQ4pHdpreJtlTnf0tFEb4Uxz8T8gFv_7Yw6tpBK4ZBgHYjJr_URwUwCVynpkb-H8Yjk7DdBF01zY-sfqu_7N5trZQfcd6s_4PtdGlHtlA=@thiebaut.dev
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
This commit is contained in:
Maxime Thiebaut
2025-08-22 10:40:03 +02:00
committed by Nathan Chancellor
parent 0354e81b7b
commit 1e150869ca

View File

@@ -10,12 +10,15 @@
# #
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
me=${0##*/}
check_vmlinux() check_vmlinux()
{ {
if file "$1" | grep -q 'Linux kernel.*boot executable' || if file "$1" | grep -q 'Linux kernel.*boot executable' ||
readelf -h "$1" > /dev/null 2>&1 readelf -h "$1" > /dev/null 2>&1
then then
cat "$1" cat "$1"
echo "$me: Extracted vmlinux using '$2' from offset $3" >&2
exit 0 exit 0
fi fi
} }
@@ -30,12 +33,11 @@ try_decompress()
do do
pos=${pos%%:*} pos=${pos%%:*}
tail -c+$pos "$img" | $3 > $tmp 2> /dev/null tail -c+$pos "$img" | $3 > $tmp 2> /dev/null
check_vmlinux $tmp check_vmlinux $tmp "$3" $pos
done done
} }
# Check invocation: # Check invocation:
me=${0##*/}
img=$1 img=$1
if [ $# -ne 1 -o ! -s "$img" ] if [ $# -ne 1 -o ! -s "$img" ]
then then
@@ -57,7 +59,7 @@ try_decompress '\002!L\030' xxx 'lz4 -d'
try_decompress '(\265/\375' xxx unzstd try_decompress '(\265/\375' xxx unzstd
# Finally check for uncompressed images or objects: # Finally check for uncompressed images or objects:
check_vmlinux $img check_vmlinux "$img" cat 0
# Bail out: # Bail out:
echo "$me: Cannot find vmlinux." >&2 echo "$me: Cannot find vmlinux." >&2