diff options
author | Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp> | 2017-06-01 00:08:22 +0900 |
---|---|---|
committer | Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp> | 2017-06-01 00:11:41 +0900 |
commit | 01fb5690095b91fa760df6d451aa0e58c51bee66 (patch) | |
tree | 5ffffbd2c2cd1ae11566d07c8064813ce8487a42 | |
parent | 151a4660e289c66d13b65d68ad2f10d93743d2d4 (diff) | |
download | zsh-01fb5690095b91fa760df6d451aa0e58c51bee66.tar.gz zsh-01fb5690095b91fa760df6d451aa0e58c51bee66.tar.xz zsh-01fb5690095b91fa760df6d451aa0e58c51bee66.zip |
41177: _nm: add support for macOS and OpenBSD
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Completion/Unix/Command/_nm | 110 |
2 files changed, 85 insertions, 30 deletions
diff --git a/ChangeLog b/ChangeLog index 03592c04d..fa807ffd7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-05-30 Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp> + + * 41177: Completion/Unix/Command/_nm: add support for macOS + and OpenBSD + 2017-05-26 Peter Stephenson <p.stephenson@samsung.com> * 41164: Src/hashtable.c, Src/hist.c, Src/zsh.h: Don't free a diff --git a/Completion/Unix/Command/_nm b/Completion/Unix/Command/_nm index 963b43f27..146a69e8a 100644 --- a/Completion/Unix/Command/_nm +++ b/Completion/Unix/Command/_nm @@ -5,55 +5,62 @@ 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]' + '(--demangle --no-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]' + '(- *)'{-V,--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 --no-sort -n -v --numeric-sort -r --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]' + '(-r --reverse-sort -p --no-sort)'{-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]' + "(-C --demangle)--no-demangle[don't decode symbol names]" + '(-p --no-sort -n -v --numeric-sort)--size-sort[sort symbols by size]' + '(-n --numeric-sort -p --no-sort --size-sort)-v[sort symbols numerically by address]' + '(- *)-h[display help 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]' + args=( ${args:#*(-C|-o|--portability)\[*} + '(-C --demangle)'{-C,--demangle=-}'[decode symbol names]::style:(auto gnu-v2 gnu-v3 arm)' + '(-g --extern-only)-e[only display global and static symbols]' + '(--format -P)-F+[specify output format]:format:(bsd sysv posix)' + '-o[with -P, same as -t o; otherwise same as -A]' + '(-t --radix)-x[print values in hexadecimal]' ) ;; elfutils) args+=( '--mark-special[mark special symbols]' '--color=[use color in output]:color:(always auto never)' + '(-C)--demangle[decode symbol names]' + '(--format -P)-f+[specify output format]:format:(bsd sysv posix)' + '(- *)--usage[give a short usage message]' + '(- *)-\\?[display help information]' ) ;; binutils) + compset -P '@' && files='*:options file:_files' args+=( '(-f --format -P)-f+[specify output format]:format:(bsd sysv posix)' + '(-C --no-demangle)--demangle=-[decode symbol names]::style:(auto gnu lucid arm hp edg gnu-v3 java gnat)' '--plugin[load specified plugin]:plugin' '--special-syms[include special symbols in the output]' '--synthetic[display synthetic symbols as well]' @@ -63,22 +70,65 @@ if _pick_variant -r variant binutils=GNU elftoolchain=elftoolchain elfutils=elfu ;; 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]' - ) + case $OSTYPE in + (darwin*|openbsd*) + args=( + '(-A -o)'{-A,-o}'[prepend file name to each output line]' + '(-g)-a[display all symbols including those for debuggers]' + '(-a)-g[display only global symbols]' + '(-U)-u[display only undefined symbols]' + '(-p)-n[sort numerically rather than alphabetically]' + "(-n -r)-p[don't sort; display in symbol-table order]" + '(-p)-r[sort in reverse order]' + '(-j)-P[print information in a portable format]' + '(-j)-t[specify radix for numeric values (used with -P)]:radix:((d\:decimal o\:octal x\:hexadecimal))' + );| + (darwin*) + args+=( + "(-u)-U[don't display undefined symbols]" + '-f[display symbol table of dynamic library flat]' + '(-P -t -m)-j[just display symbol names (no value or type)]' + '-l[display .section_start if no symbol is in the section (used with -s)]' + '(-j)-m[use verbose format for Mach-O symbols]' + '-s[list only symbols in the specified section]:segment name: :section name: ' + "-x[display symbol table entry's fields in hexadecimal]" + '*-arch[select architecture from universal file]:architecture:(all i386 x86_64)' + );; + (openbsd*) + args+=( + '-C[decode low-level symbol names]' + '-D[display dynamic symbol table instead of normal symbol table]' + '-e[output extended information]' + '-s[show archive index]' + '-w[warn about non-object archive members]' + );; + (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]' + );; + (*) + # minimal POSIX + args=( + '-A[print name of input file on each line]' + '(-u)-g[display only global symbols]' + '-P[print information in a portable format]' + '-t[specify radix for numeric values]:radix:((d\:decimal o\:octal x\:hexadecimal))' + '(-g)-u[display only undefined symbols]' + '-v[sort symbols by value instead of by name]' + );; + esac fi -_arguments -s "$args[@]" $files +_arguments -s -S : "$args[@]" $files |