diff options
| author | Peter Zijlstra <peterz@infradead.org> | 2025-11-21 13:21:20 +0300 |
|---|---|---|
| committer | Peter Zijlstra <peterz@infradead.org> | 2025-11-21 13:21:20 +0300 |
| commit | 2ace52718376fdb56aca863da2eebe70d7e2ddb1 (patch) | |
| tree | 494517cf79608fa93840a3c84ee5e6118da5f26f /scripts/extract-vmlinux | |
| parent | a53d0cf7f1cb3182ad533ff5cacfa5fd29c419ad (diff) | |
| parent | 11991999a20145b7f8af21202d0cac6b1f90a6e4 (diff) | |
| download | linux-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-x | scripts/extract-vmlinux | 21 |
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 |
