linux-yocto/scripts/objdump-func
Josh Poimboeuf 27d000d635 scripts/objdump-func: Support multiple functions
Allow specifying multiple functions on the cmdline.  Note this removes
the secret EXTRA_ARGS feature.

While at it, spread out the awk to make it more readable.

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/0bf5f4f5978660985037b24c6db49b114374eb4d.1681325924.git.jpoimboe@kernel.org
2023-04-14 16:08:28 +02:00

848 B
Executable File

#!/bin/bash

SPDX-License-Identifier: GPL-2.0

Disassemble a single function.

usage: objdump-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 [ ...]" >&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; } }'