LLVM-READELF(1)

πŸ’… llvm-readelf β€” the GNU-style LLVM Object Reader ✨

okay so bestie, welcome to llvm-readelf, straight out of the LLVM manual (that's the manual name btw, it lives in section 1 of the LLVM docs πŸŽ€). Think of it as the group chat where your object files come spill the tea about themselves β€” low-level, format-specific, extremely detailed tea. πŸ’–


🌸 SYNOPSIS 🌸

llvm-readelf [options] [input...]

✨ DESCRIPTION ✨

llvm-readelf shows you low-level, format-specific info about one or more object files. It's giving "tell me everything about yourself" energy, and honestly? It ate. πŸ‘‘

If input is -, llvm-readelf reads from standard input. Otherwise it reads from the filenames you gave it. no cap, that's the whole vibe check.


πŸ’… OPTIONS πŸ’…

  • --all, -a β€” literally the "give me everything" button. Same as specifying all the main display options that are relevant to the file format. main character energy fr fr.
  • --addrsig β€” shows the address-significance table. iconic.
  • --arch-specific, -A β€” shows architecture-specific info, like the ARM attributes section on ARM. iykyk.
  • --bb-addr-map β€” dumps the contents of the basic block address map section(s) β€” those contain the address of each function plus the relative offset of each basic block. πŸ—ΊοΈ
  • --decompress, -z β€” when used with -x or -p, dumps decompressed section content. if the section(s) aren't compressed, they just get displayed as-is. no drama.
  • --demangle, -C β€” shows demangled symbol names in the output. the way that _ZN3foo3barEv turns into something readable… obsessed.
  • --dependent-libraries β€” shows the dependent libraries section.
  • --dyn-relocations β€” shows the dynamic relocation entries.
  • --dyn-symbols, --dyn-syms β€” shows the dynamic symbol table.
  • --dynamic-table, --dynamic, -d β€” shows the dynamic table.
  • --cg-profile β€” shows the callgraph profile section.
  • --histogram, -I β€” shows a bucket list histogram for dynamic symbol hash tables. πŸ“Š
  • --elf-linker-options β€” shows the linker options section.
  • --elf-output-style=<value> β€” formats ELF info in the style you pick. valid values are LLVM, GNU, and JSON. LLVM output is an expanded and structured format. GNU (that's the default, btw) mimics the equivalent GNU readelf output. JSON is JSON formatted output intended for machine consumption. robot bestie food πŸ€–
  • --extra-sym-info β€” shows extra info (the section name) when showing symbols.
  • --section-groups, -g β€” shows section groups.
  • --expand-relocs β€” when used with --relocations, shows each relocation in an expanded multi-line format. room to breathe ✨
  • --file-header, -h β€” shows file headers.
  • --gnu-hash-table β€” shows the GNU hash table for dynamic symbols.
  • --hash-symbols β€” shows the expanded hash table with dynamic symbol data.
  • --hash-table β€” shows the hash table for dynamic symbols.
  • --headers, -e β€” same as setting --file-header, --program-headers, and --sections all at once. combo move 🫢
  • --help β€” shows a summary of command line options.
  • --hex-dump=<section[,section,...]>, -x β€” shows the specified section(s) as hexadecimal bytes. section can be a section index or a section name.
  • --memtag β€” shows info about memory tagging present in the binary. that includes various memtag-specific dynamic entries, decoded global descriptor sections, and decoded Android-specific ELF notes. 🏷️
  • --needed-libs β€” shows the needed libraries.
  • --no-demangle β€” don't show demangled symbol names in the output. this one's on by default.
  • --notes, -n β€” shows all notes. πŸ“
  • --pretty-print β€” when used with --elf-output-style, JSON output gets formatted in a more readable way. self-care for your eyeballs.
  • --program-headers, --segments, -l β€” shows the program headers.
  • --relocations, --relocs, -r β€” shows the relocation entries in the file.
  • --sections, --section-headers, -S β€” shows all sections.
  • --section-data β€” when used with --sections, shows section data for each section shown. heads up: this option has no effect for GNU style output. πŸ™ˆ
  • --section-details, -t β€” shows all section details. used as an alternative to --sections.
  • --section-mapping β€” shows the section to segment mapping.
  • --section-relocations β€” when used with --sections, shows relocations for each section shown. again: no effect for GNU style output.
  • --section-symbols β€” when used with --sections, shows symbols for each section shown. same deal: no effect for GNU style output.
  • --stackmap β€” shows contents of the stackmap section.
  • --stack-sizes β€” shows the contents of the stack sizes section(s), i.e. pairs of function names and the size of their stack frames. currently only implemented for GNU style output. πŸ₯ž
  • --string-dump=<section[,section,...]>, -p β€” shows the specified section(s) as a list of strings. section can be a section index or a section name.
  • --symbols, --syms, -s β€” shows the symbol table. also shows the dynamic symbol table when you're using GNU output style for ELF.
  • --unwind, -u β€” shows unwind information.
  • --version β€” shows the version of the llvm-readelf executable.
  • --version-info, -V β€” shows version sections.
  • --wide, -W β€” ignored, for GNU readelf compatibility. the output is already similar to when you use -W with GNU readelf. so yeah, it's just there to be polite πŸ’€
  • @<FILE> β€” reads command-line options from the response file <FILE>.

πŸ”₯ EXIT STATUS πŸ”₯

llvm-readelf returns 0 under normal operation. if there were any errors, it returns a non-zero exit code. so if you see a zero, you're slaying; anything else, go check your vibes. πŸ’€


πŸ¦‹ SEE ALSO πŸ¦‹


πŸ‘‘ Author

Maintained by the LLVM Team (https://llvm.org/). absolute icons.

2003-2026, LLVM Project


and that's the whole page, bestie β€” brought to you by the LLVM Project, 2003-2026, dated 2026-05-15, page 21 of the LLVM manual set. mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from