mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-02 22:11:54 +02:00
83 lines
3.5 KiB
Text
83 lines
3.5 KiB
Text
#compdef nm eu-nm
|
|
|
|
local args files variant
|
|
|
|
files="*:object file:_object_files"
|
|
args=(
|
|
'(-A -o --print-file-name)'{-A,-o,--print-file-name}'[print name of input file on each line]'
|
|
'(--demangle)-C[decode symbol names]'
|
|
'(-D --dynamic)'{-D,--dynamic}'[display dynamic symbols instead of normal ones]'
|
|
'(-g --extern-only)'{-g,--extern-only}'[display only global symbols]'
|
|
'(-t --radix -o -x)'{-t,--radix}'[specify radix for numeric values]:radix:((d\:decimal o\:octal x\:hexadecimal))'
|
|
)
|
|
|
|
if _pick_variant -r variant binutils=GNU elftoolchain=elftoolchain elfutils=elfutils unix -V; then
|
|
compset -P '@' && files='*:options file:_files'
|
|
args+=(
|
|
'(- *)--help[display help information]'
|
|
'(- *)--version[display version information]'
|
|
'(-f --format -P --portability)-B[same as --format=bsd]'
|
|
'(-C --no-demangle)--demangle=-[decode symbol names]::style:(auto gnu lucid arm hp edg gnu-v3 java gnat)'
|
|
"(-C --demangle)--no-demangle[don't decode symbol names]"
|
|
'(-u --undefined-only)--defined-only[display only defined symbols]'
|
|
'(-f --format -P)--format=[specify output format]:format:(bsd sysv posix)'
|
|
'(-n --numeric-sort -p --no-sort --size-sort -v)'{-n,--numeric-sort}'[sort symbols numerically by address]'
|
|
'(-p --no-sort -n --numeric-sort -r -P --reverse-sort --size-sort)'{-p,--no-sort}'[do not sort symbols]'
|
|
'(-P --portability -B -f --format)'{-P,--portability}'[same as --format=posix]'
|
|
'(-r --reverse-sort -p --no-sort --size-sort -v)'{-r,--reverse-sort}'[reverse sort order]'
|
|
'(-u --undefined-only --defined-only)'{-u,--undefined-only}'[display only undefined symbols]'
|
|
'(-a --debug-syms)'{-a,--debug-syms}'[display debugger-only symbols]'
|
|
'(-S --print-size)'{-S,--print-size}'[print size of defined symbols]'
|
|
'(-s --print-armap)'{-s,--print-armap}'[include index for symbols from archive members]'
|
|
'(-p --no-sort -n --numeric-sort -r -v)--size-sort[sort symbols by size]'
|
|
)
|
|
case $variant in
|
|
elftoolchain|binutils)
|
|
args+=(
|
|
'(-l --line-numbers)'{-l,--line-numbers}'[display source file and line numbers from debug information]'
|
|
)
|
|
;|
|
|
elftoolchain)
|
|
args=( ${args:#*--(portability|extern-only)\[*}
|
|
'(- *)-h[display help information]'
|
|
'(-t -x)-o[print values in octal]'
|
|
'(-t -o)-x[print values in hexadecimal]'
|
|
'(--size-sort)-v[sort output by value]'
|
|
)
|
|
;;
|
|
elfutils)
|
|
args+=(
|
|
'--mark-special[mark special symbols]'
|
|
'--color=[use color in output]:color:(always auto never)'
|
|
)
|
|
;;
|
|
binutils)
|
|
args+=(
|
|
'(-f --format -P)-f+[specify output format]:format:(bsd sysv posix)'
|
|
'--plugin[load specified plugin]:plugin'
|
|
'--special-syms[include special symbols in the output]'
|
|
'--synthetic[display synthetic symbols as well]'
|
|
"--target=[target object format]:targets:(${${(@M)${(f)$(_call_program targets nm --help)}:#*supported targets:*}##*: })"
|
|
)
|
|
;;
|
|
esac
|
|
else
|
|
# following flags are accurate for Solaris
|
|
args=( ${args:#(|*\)(\*|))-[o-]*}
|
|
"-h[don't display column headers]"
|
|
'-l[distinguish WEAK symbols with * character]'
|
|
'(-t -x)-o[print values in octal]'
|
|
'(-v)-n[sort symbols by name]'
|
|
'(-P)-p[produce parsable output]'
|
|
'(-p)-P[portable output format]'
|
|
'(-r)-R[print archive name, object file and symbol name]'
|
|
'-r[prepend name of input file to each symbol name]'
|
|
'-s[print section name instead of index]'
|
|
'-u[print undefined symbols only]'
|
|
'(-n)-v[sort external symbols by value]'
|
|
'-V[display version of the nm command]'
|
|
'(-o -t)-x[print values in hexadecimal]'
|
|
)
|
|
fi
|
|
|
|
_arguments -s "$args[@]" $files
|