1
0
Fork 0
mirror of https://github.com/notwa/rc synced 2024-11-05 07:29:04 -08:00
rc/sh/disf

19 lines
654 B
Text
Raw Normal View History

#!/usr/bin/env sh
# disassembles a function given its symbolic name.
2021-07-29 00:37:35 -07:00
# YES_ZSH
# YES_BASH
# YES_DASH
# TODO: actually test that this works with dash.
2021-07-29 00:37:35 -07:00
disf() { ### @-
2021-07-30 17:57:08 -07:00
### disassemble a single function from an unstripped executable, unreliably.
2021-07-29 00:37:35 -07:00
[ $# -le 2 ] || { printf "%s\n" "$0: too many arguments" >&2; return 1; }
local exe="${1:?first argument should be an unstripped executable}"
local symbol="${2:?second argument should be a function name}"
# note: relies on GNU sed: https://unix.stackexchange.com/a/78485
objdump -d -C --no-show-raw-insn "$exe" | sed '/<'"$symbol"'>:/,/^$/!d;//d'
}
2021-07-29 00:37:35 -07:00
[ -n "${preload+-}" ] || disf "$@"