summaryrefslogtreecommitdiff
path: root/scripts/extract-vmlinux
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2025-11-21 13:21:20 +0300
committerPeter Zijlstra <peterz@infradead.org>2025-11-21 13:21:20 +0300
commit2ace52718376fdb56aca863da2eebe70d7e2ddb1 (patch)
tree494517cf79608fa93840a3c84ee5e6118da5f26f /scripts/extract-vmlinux
parenta53d0cf7f1cb3182ad533ff5cacfa5fd29c419ad (diff)
parent11991999a20145b7f8af21202d0cac6b1f90a6e4 (diff)
downloadlinux-2ace52718376fdb56aca863da2eebe70d7e2ddb1.tar.xz
Merge branch 'objtool/core'
Bring in the UDB and objtool data annotations to avoid conflicts while further extending the bug exceptions. Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Diffstat (limited to 'scripts/extract-vmlinux')
-rwxr-xr-xscripts/extract-vmlinux21
1 files changed, 11 insertions, 10 deletions
diff --git a/scripts/extract-vmlinux b/scripts/extract-vmlinux
index 8995cd304e6e..266df9bc7a48 100755
--- a/scripts/extract-vmlinux
+++ b/scripts/extract-vmlinux
@@ -10,15 +10,17 @@
#
# ----------------------------------------------------------------------
+me=${0##*/}
+
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
-
- cat $1
- exit 0
+ 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
}
try_decompress()
@@ -31,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
@@ -58,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