LLVM-READELF(1)

✨ NAME ✨

okay bestie, so this is llvm-readelf β€” the GNU-style LLVM Object Reader πŸ’… she's from the LLVM manual pages and she's here to spill all the tea about your object files.


🌸 SYNOPSIS 🌸

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

πŸ¦‹ DESCRIPTION πŸ¦‹

So like, llvm-readelf shows you the low-level, format-specific info about one or more object files. It's giving microscope energy πŸ”¬ she does not do surface-level, she goes deep.

If an input is literally -, then llvm-readelf reads from standard input instead. Otherwise it reads from the filenames you gave it, bestie. Simple as.


πŸ’– OPTIONS πŸ’–

  • --all, -a β€” the "give me everything" button ✨ same as turning on all the main display options that actually apply to the file format.
  • --addrsig β€” shows the address-significance table 🫢
  • --arch-specific, -A β€” shows architecture-specific info, like the ARM attributes section on ARM πŸŽ€
  • --bb-addr-map β€” dumps the contents of the basic block address map section(s). These hold the address of every function plus the relative offset of each basic block πŸ”₯
  • --decompress, -z β€” when you pair it with -x or -p, it dumps the 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 ✨
  • --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 picked. Valid options are LLVM, GNU, and JSON. LLVM is the expanded, structured format. GNU β€” which is the default β€” mimics the equivalent GNU readelf output. JSON is JSON-formatted output meant for machines to consume πŸ€–
  • --extra-sym-info β€” shows extra info (the section name) when it's showing symbols 🏷️
  • --section-groups, -g β€” shows section groups πŸ—‚οΈ
  • --expand-relocs β€” when you use it with --relocations, it shows each relocation in an expanded multi-line format πŸ“–
  • --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 πŸ’₯
  • --help β€” shows a summary of the 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. This includes the various memtag-specific dynamic entries, decoded global descriptor sections, and decoded Android-specific ELF notes 🧠
  • --needed-libs β€” shows the needed libraries πŸ“š
  • --no-demangle β€” does not show demangled symbol names in the output. This one is on by default, bestie πŸ™ˆ
  • --notes, -n β€” shows all notes πŸ“
  • --pretty-print β€” when used with --elf-output-style, the JSON output gets formatted in a more readable way πŸ’…
  • --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 every section displayed. Heads up: this option has no effect for GNU style output ⚠️
  • --section-details, -t β€” shows all section details. Use it as an alternative to --sections πŸ”Ž
  • --section-mapping β€” shows the section to segment mapping πŸ—ΊοΈ
  • --section-relocations β€” when used with --sections, shows relocations for every section displayed. This option has no effect for GNU style output ⚠️
  • --section-symbols β€” when used with --sections, shows symbols for every section displayed. This option has 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 this is 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. It also shows the dynamic symbol table when 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 what you'd get using -W with GNU readelf 😌
  • @<FILE> β€” reads command-line options from the response file <FILE> πŸ“‚

🌈 EXIT STATUS 🌈

llvm-readelf returns 0 under normal operation. If there were any errors, she returns a non-zero exit code. periodt πŸ’…


🫢 SEE ALSO 🫢

llvm-nm(1), llvm-objdump(1), llvm-readobj(1) β€” go read those next, bestie, iykyk πŸ’œ


πŸ‘‘ AUTHOR πŸ‘‘

Maintained by the LLVM Team (https://llvm.org/). iconic behavior fr fr.


2003-2025, LLVM Project


okay that's the whole page!! 🌟 brought to you by the LLVM Project, version dated 2025-09-03, page 20 of the manual β€” mwah, take care of her, she's a legend πŸ’–βœ¨

πŸ“¦ where this page comes from