45 lines · 848 B · Text
RawDownload
#!/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;		}	}'