Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546#!/bin/bash# SPDX-License-Identifier: GPL-2.0## Disassemble a single function.## usage: objdump-func <file> <func> [<func> ...]
set -o errexitset -o nounset
OBJDUMP="${CROSS_COMPILE:-}objdump"
command -v gawk >/dev/null 2>&1 || die "gawk isn't installed"
usage() { echo "usage: objdump-func <file> <func> [<func> ...]" >&2 exit 1}
[[ $# -lt 2 ]] && usage
OBJ=$1; shiftFUNCS=("$@")
${OBJDUMP} -wdr $OBJ | gawk -M -v _funcs="${FUNCS[*]}" ' BEGIN { split(_funcs, funcs); } /^$/ { func_match=0; } /<.*>:/ { f = gensub(/.*<(.*)>:/, "\\1", 1); for (i in funcs) { # match compiler-added suffixes like ".cold", etc if (f ~ "^" funcs[i] "(\\..*)?") { func_match = 1; base = strtonum("0x" $1); break; } } } { if (func_match) { addr = strtonum("0x" $1); printf("%04x ", addr - base); print; } }'