Link: https://lore.kernel.org/r/20260121181411.452263583@linuxfoundation.org Tested-by: Salvatore Bonaccorso <carnil@debian.org> Tested-by: Shuah Khan <skhan@linuxfoundation.org> Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Tested-by: Brett A C Sheffield <bacs@librecast.net> Tested-by: Shung-Hsi Yu <shung-hsi.yu@suse.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Ron Economos <re@w6rz.net> Tested-by: Francesco Dolcini <francesco.dolcini@toradex.com> Tested-by: Mark Brown <broonie@kernel.org> Tested-by: Brett Mastbergen <bmastbergen@ciq.com> Tested-by: Peter Schneider <pschneider1968@googlemail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
46 lines
848 B
Bash
Executable File
46 lines
848 B
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Disassemble a single function.
|
|
#
|
|
# usage: objdump-func <file> <func> [<func> ...]
|
|
|
|
set -o errexit
|
|
set -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; shift
|
|
FUNCS=("$@")
|
|
|
|
${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;
|
|
}
|
|
}'
|