]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
extract-vmlinux: Output used decompression method
authorMaxime Thiebaut <maxime+kernel@thiebaut.dev>
Fri, 22 Aug 2025 08:40:03 +0000 (10:40 +0200)
committerNathan Chancellor <nathan@kernel.org>
Thu, 28 Aug 2025 22:25:48 +0000 (15:25 -0700)
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>
scripts/extract-vmlinux

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