READELF(1) READELF(1) readelf - ELF readelf [-a|--all] [-h|--file-header] [-l|--program-headers|--segments] [-S|--section-headers|--sections] [-g|--section-groups] [-t|--section-details] [-e|--headers] [-s|--syms|--symbols] [--dyn-syms|--lto-syms] [--sym-base=[0|8|10|16]] [--demangle=|--no-demangle] [--quiet] [--recurse-limit|--no-recurse-limit] [-U |--unicode=] [-X|--extra-sym-info|--no-extra-sym-info] [-n|--notes] [-r|--relocs] [-u|--unwind] [-d|--dynamic] [-V|--version-info] [-A|--arch-specific] [-D|--use-dynamic] [-L|--lint|--enable-checks] [-x < >|--hex-dump=< >] [-p < >|--string-dump=< >] [-R < >|--relocated-dump=< >] [-j < >|--display-section=< >] [-z|--decompress] [-c|--archive-index] [-w[lLiaprmfFsoORtUuTgAck]| --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links]] [-wK|--debug-dump=follow-links] [-wN|--debug-dump=no-follow-links] [-wD|--debug-dump=use-debuginfod] [-wE|--debug-dump=do-not-use-debuginfod] [-P|--process-links] [--dwarf-depth=n] [--dwarf-start=n] [--ctf=] [--ctf-parent=] [--ctf-symbols=] [--ctf-strings=] [--sframe=] [-I|--histogram] [--got-contents] [-v|--version] [-W|--wide] [-T|--silent-truncation] [-H|--help] _elf... readelf ELF. . _elf... . ELF 32 64 ELF. objdump BFD BFD readelf. . -v -H. -a --all --file-header --program-headers --sections --symbols --relocs --dynamic --notes --got-contents --version-info --arch-specific --unwind --section-groups --histogram. - --use-dynamic (relocs) . -h --file-header ELF . -l --program-headers --segments . --quiet " ". -S --sections --section-headers . -g --section-groups . -t --section-details . -S. -s --symbols --syms . . @. foo@VER_1. @@. foo@@VER_2. --dyn-syms . --syms. --lto-syms LTO . --sym-base=[0|8|10|16] . 0. --sym-base=0 . 100000. 100000 0x. --sym-base=8 . --sym-base=10 . --sym-base=16 0x. -C --demangle[=style] (demangle) . ++C . (mangling) . . --no-demangle (demangle) . . --recurse-limit --no-recurse-limit --recursion-limit --no-recursion-limit . . 2048 . (demangle) . . -U [d|i|l|e|x|h] --unicode=[default|invalid|locale|escape|hex|highlight] ASCII . (--unicode=locale --unicode=default) . UTF-8 . --unicode=invalid . --unicode=escape (\uxxxx). --unicode=hex . --unicode=highlight . . -X --extra-sym-info . 's . . --wide . --no-extra-sym-info --extra-sym-info. . -e --headers . -h -l -S. -n --notes / NOTE () . -r --relocs (relocation) 's . -u --unwind unwind 's . unwind IA64 ELF unwind ARM (".ARM.exidx" / ".ARM.extab"). .eh_frames --debug-dump=frames --debug-dump=frames-interp. -d --dynamic 's . -V --version-info . -A --arch-specific . -D --use-dynamic readelf (symbol hash tables) 's . readelf . -L --lint --enable-checks ( ) . ( ). . -x < > --hex-dump=< > . . . -R < > --relocated-dump=< > . . . . -p < > --string-dump=< > . . . -j < > --display-section . --relocations --syms . ( ) . . -z --decompress ( ) x R p . . -c --archive-index . t ar BFD. -w[lLiaprmfFsOoRtUuTgAckK] --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links,=follow-links] DWARF . () . . : "a" "=abbrev" .debug_abbrev. "A" "=addr" .debug_addr. "c" "=cu_index" .debug_cu_index / .debug_tu_index. "f" "=frames" .debug_frame. "F" "=frames-interp" .debug_frame. "g" "=gdb_index" .gdb_index / .debug_names. "i" "=info" .debug_info. : --dwarf-depth --dwarf-start. "k" "=links" .gnu_debuglink .gnu_debugaltlink .debug_sup . dwarf (dwo) DW_AT_GNU_dwo_name DW_AT_dwo_name .debug_info. "K" "=follow-links" . . DWARF . - . N. binutils --enable-follow-debug-links=yes --enable-follow-debug-links=no. . - debuginfod binutils debuginfod DEBUGINFOD_URLS. . =do-not-use-debuginfod. "N" "=no-follow-links" . "D" "=use-debuginfod" debuginfod . . "E" "=do-not-use-debuginfod" debuginfod . "l" "=rawline" .debug_line . "L" "=decodedline" .debug_line. "m" "=macro" .debug_macro / .debug_macinfo. "o" "=loc" .debug_loc / .debug_loclists. "O" "=str-offsets" .debug_str_offsets. "p" "=pubnames" .debug_pubnames / .debug_gnu_pubnames. "r" "=aranges" .debug_aranges. "R" "=Ranges" .debug_ranges / .debug_rnglists. "s" "=str" .debug_str .debug_line_str / .debug_str_offsets. "t" "=pubtype" .debug_pubtypes / .debug_gnu_pubtypes. "T" "=trace_aranges" .trace_aranges. "u" "=trace_abbrev" .trace_abbrev. "U" "=trace_info" .trace_info. : .debug_static_funcs .debug_static_vars debug_weaknames . --dwarf-depth=n ".debug_info" n . --debug-dump=info. DIEs 0 n . n DIE n . n . --dwarf-start=n DIEs DIE n. --debug-dump=info. DIEs DIE n. DIE . --dwarf-depth. -P --process-links (debuginfo) . -wK . --ctf[=] CTF . CTF . .ctf ld. --ctf-parent= CTF CTF . .ctf "ctf_link_set_memb_name_changer" . CTF --ctf-parent . --ctf-parent-section= CTF . ELF . CTF objcopy ELF CTF . --ctf-symbols=section --ctf-strings=section CTF . ".symtab" . --ctf-symbols --ctf-strings . --got-contents (GOT) 's . MIPS --arch-specific GOT --arch-specific. -I --histogram (histogram) (bucket list) . -v --version readelf. -W --wide 80 . readelf ELF 64 80 . readelf 80 . -T --silent-truncation readelf 80 "[...]" . 5 readelf ( 2.35). -H --help readelf. @ file. @file . file . file . . ( ) . file @file (recursively). objdump(1) Info binutils. (c) 1991-2026 . / (GNU Free Documentation License) 1.3 . "GNU Free Documentation License". 3 . . : . binutils-2.46 9 2026 READELF(1)