LLVM-DWARFUTIL(1)

πŸ’– LLVM-DWARFUTIL(1) πŸ’–

okay bestie, sit down, hydrate, and let me tell you about llvm-dwarfutil β€” it's the LLVM girlie that copies and messes with debug info ✨


🌸 NAME 🌸

llvm-dwarfutil β€” a tool to copy and manipulate debug info 🫢


πŸŽ€ SYNOPSIS πŸŽ€

llvm-dwarfutil [options] input output

πŸ¦‹ DESCRIPTION πŸ¦‹

so llvm-dwarfutil is literally a tool to copy and manipulate debug info. that's the whole job, no cap.

in its basic usage era, it makes a semantic copy of the input to the output. like, a faithful little copy, vibe intact. but the second you start throwing options at it, the output may be modified along the way β€” for example by removing unused debug info. it's giving glow-up, but for your debug sections πŸ’…

if - is specified for the input file, the input is read from the program's standard input stream. and if - is specified for the output file, the output is written to the standard output stream of the program. classic - behavior, we love a pipe-friendly icon πŸ”₯

the tool is still in active development. it's growing, it's evolving, main character energy, be patient with it 😭

✨ COMMAND-LINE OPTIONS ✨

  • --garbage-collection β€” removes pieces of debug information related to discarded sections. the tea here: when the linker does section garbage collection, the abandoned debug info just gets left behind like a forgotten situationship. such abandoned debug info references address ranges using tombstone values. so when this option is specified, the tool removes debug info which is marked with the tombstone value. bye girl πŸ‘‹
that option is enabled by default. yes, it's on before you even ask 🫢
  • --odr-deduplication β€” remove duplicated types (if "One Definition Rule" is supported by the source language). it keeps the first type definition and removes the other definitions, potentially significantly reducing the size of the output debug info. one type, one crown πŸ‘‘
that option is enabled by default too. slay.
  • --help, -h β€” print a summary of command line options. when you're lost, she's got you πŸ’–
  • --no-garbage-collection β€” disable --garbage-collection.
  • --no-odr-deduplication β€” disable --odr-deduplication.
  • --no-separate-debug-file β€” disable --separate-debug-file.
  • --num-threads=<n>, -j β€” specifies the maximum number (n) of simultaneous threads to use for processing. multi-threading era, periodt 🧚
  • --separate-debug-file β€” generate a separate file containing the output debug info. using llvm-dwarfutil with that option equals to the following set of commands:
llvm-objcopy --only-keep-debug in-file out-file.debug
llvm-objcopy --strip-debug in-file out-file
llvm-objcopy --add-gnu-debuglink=out-file.debug out-file
  • --tombstone=<value> β€” value can be one of the following values:
    • bfd: zero for all addresses and [1,1] for DWARF v4 (or less) address ranges and exec.
    • maxpc: -1 for all addresses and -2 for DWARF v4 (or less) address ranges.
    • universal: both bfd and maxpc.
    • exec: match with address ranges of executable sections.
the value universal is used by default. iconic default behavior honestly ⭐
  • --verbose β€” enable verbose logging. she'll tell you everything.
this option disables multi-thread mode. trade-off, bestie πŸ’€
  • --verify β€” run the DWARF verifier on the output DWARF debug info. quality check, we love accountability 🌈
  • --version β€” print the version of this program.

🧚 SUPPORTED FORMATS 🧚

the following formats are currently supported by llvm-dwarfutil:

  • ELF

that's it. that's the list. short but mighty πŸ’œ


πŸ’… EXIT STATUS πŸ’…

llvm-dwarfutil exits with a non-zero exit code if there is an error. otherwise, it exits with code 0. so like, if she's mad, she'll let you know 😀


πŸ™ˆ BUGS πŸ™ˆ

to report bugs, please visit <https://github.com/llvm/llvm-project/labels/tools:llvm-dwarfutil/>.


πŸ‘‘ AUTHOR πŸ‘‘

maintained by the LLVM Team (<https://llvm.org/>).


2003-2025, LLVM Project


and that's the whole page, bestie 🫢 this manual page is LLVM-DWARFUTIL(1), dated 2025-09-03, brought to you by the LLVM source β€” go forth, copy debug info, and slay βœ¨πŸ’–πŸŽ€

πŸ“¦ where this page comes from