FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
linux/scripts/extract-vmlinux at multikernel-riscv · multikernel/linux · GitHub
multikernel
/
linux
Public
forked from
torvalds/linux
Notifications
You must be signed in to change notification settings
Fork
15
Star
180
Code
Issues
27
Pull requests
5
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
linux
/
scripts
/
extract-vmlinux
Copy path
More file actions
More file actions
Latest commit
History
History
History
executable file
·
65 lines (56 loc) · 1.66 KB
Breadcrumbs
linux
/
scripts
/
extract-vmlinux
Copy path
File metadata and controls
executable file
·
65 lines (56 loc) · 1.66 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!
/bin/sh
#
SPDX-License-Identifier: GPL-2.0-only
#
----------------------------------------------------------------------
#
extract-vmlinux - Extract uncompressed vmlinux from a kernel image
#
#
Inspired from extract-ikconfig
#
(c) 2009,2010 Dick Streefland <dick@streefland.net>
#
#
(c) 2011 Corentin Chary <corentin.chary@gmail.com>
#
#
----------------------------------------------------------------------
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
}
try_decompress
()
{
#
The obscure use of the "tr" filter is to work around older versions of
#
"grep" that report the byte offset of the line instead of the pattern.
#
Try to find the header ($1) and decompress from here
for
pos
in
`
tr
"
$1
\n
$2
"
"
\n
$2
=
"
<
"
$img
"
|
grep -abo
"
^
$2
"
`
do
pos=
${pos
%%:*
}
tail -c+
$pos
"
$img
"
|
$3
>
$tmp
2>
/dev/null
check_vmlinux
$tmp
"
$3
"
$pos
done
}
#
Check invocation:
img=
$1
if
[
$#
-ne
1
-o
!
-s
"
$img
"
]
then
echo
"
Usage:
$me
<kernel-image>
"
>&2
exit
2
fi
#
Prepare temp files:
tmp=
$(
mktemp /tmp/vmlinux-XXX
)
trap
"
rm -f
$tmp
"
0
#
That didn't work, so retry after decompression.
try_decompress
'
\037\213\010
'
xy gunzip
try_decompress
'
\3757zXZ\000
'
abcde unxz
try_decompress
'
BZh
'
xy bunzip2
try_decompress
'
\135\0\0\0
'
xxx unlzma
try_decompress
'
\211\114\132
'
xy
'
lzop -d
'
try_decompress
'
\002!L\030
'
xxx
'
lz4 -d
'
try_decompress
'
(\265/\375
'
xxx unzstd
#
Finally check for uncompressed images or objects:
check_vmlinux
"
$img
"
cat 0
#
Bail out:
echo
"
$me
: Cannot find vmlinux.
"
>&2
Back
|
FazBrowse Home
|
New Git URL