about summary refs log tree commit diff
path: root/Completion/Unix/Command/_elfdump
blob: ee92402d286f4455842307fa2b2db5429155e7fe (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#compdef elfdump

local -a args

_elf_file() {
  [[ -x $REPLY || $REPLY = (core*|*.([ao]|so|elf)) ]]
}

args=(
  '-c[dump section header information]'
  '-d[dump .dynamic section]'
  '-e[dump file header]'
  '-G[dump .got (global offset table) section]'
  '-h[dump .hash section]'
  '-i[dump .interp (interpreter) section]'
  '-n[dump .note sections]'
  '(-w)-p[dump program headers]'
  '-r[dump relocation sections]'
  '-s[dump symbol table sections]'
  '(-p)-w[write contents of matched sections to file]:file:_files'
)

case $OSTYPE in
  solaris*)
    args+=(
      '-g[dump .group section]'
      '-H[dump .SUNW_cap (capabilities) section]'
      '-m[dump .SUNW_move section]'
      '-S[dump symbol table sections sorted according to symbol sort sections]'
      '-u[dump stack unwind/exceptions sections]'
      '-v[dump .SUNW_version (versioning) sections]'
      '-y[dump .SUNW_syminfo (symbol bindings) section]'
      '-I[match sections by index]:index or range'
      "-N[match sections by name]:section"
      '-T[match sections by type]:type'
      '-C[demangle C++ symbol names]'
      '-k[calculate ELF checksum]'
      '-l[show long section names without truncation]'
      '-O[specify osabi to apply]:osabi'
      '-P[use alternative section header]'
      "*:elf file:_files -g '*(-.e:_elf_file:)'"
    )
  ;;
  freebsd*) args+=( '-a[dump all information]' ) ;;
esac

_arguments -s $args