FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
linux/scripts/extract-vmlinux at master · flexbed/linux · GitHub
flexbed
/
linux
Public
forked from
torvalds/linux
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
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
·
62 lines (53 loc) · 1.6 KB
Breadcrumbs
linux
/
scripts
/
extract-vmlinux
Copy path
File metadata and controls
executable file
·
62 lines (53 loc) · 1.6 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
#!
/bin/sh
#
----------------------------------------------------------------------
#
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>
#
#
Licensed under the GNU General Public License, version 2 (GPLv2).
#
----------------------------------------------------------------------
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
}
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
done
}
#
Check invocation:
me=
${0
##*/
}
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
#
Initial attempt for uncompressed images or objects:
check_vmlinux
$img
#
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
'
#
Bail out:
echo
"
$me
: Cannot find vmlinux.
"
>&2
Back
|
FazBrowse Home
|
New Git URL