]> git.ipfire.org Git - thirdparty/kernel/linux.git/blob - scripts/objdump-func
Merge tag 'mips-fixes_6.9_1' of git://git.kernel.org/pub/scm/linux/kernel/git/mips...
[thirdparty/kernel/linux.git] / scripts / objdump-func
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 #
4 # Disassemble a single function.
5 #
6 # usage: objdump-func <file> <func> [<func> ...]
7
8 set -o errexit
9 set -o nounset
10
11 OBJDUMP="${CROSS_COMPILE:-}objdump"
12
13 command -v gawk >/dev/null 2>&1 || die "gawk isn't installed"
14
15 usage() {
16 echo "usage: objdump-func <file> <func> [<func> ...]" >&2
17 exit 1
18 }
19
20 [[ $# -lt 2 ]] && usage
21
22 OBJ=$1; shift
23 FUNCS=("$@")
24
25 ${OBJDUMP} -wdr $OBJ | gawk -M -v _funcs="${FUNCS[*]}" '
26 BEGIN { split(_funcs, funcs); }
27 /^$/ { func_match=0; }
28 /<.*>:/ {
29 f = gensub(/.*<(.*)>:/, "\\1", 1);
30 for (i in funcs) {
31 # match compiler-added suffixes like ".cold", etc
32 if (f ~ "^" funcs[i] "(\\..*)?") {
33 func_match = 1;
34 base = strtonum("0x" $1);
35 break;
36 }
37 }
38 }
39 {
40 if (func_match) {
41 addr = strtonum("0x" $1);
42 printf("%04x ", addr - base);
43 print;
44 }
45 }'