LLVM-PROFGEN(1)

πŸ‘‘ LLVM-PROFGEN(1) β€” the llvm-profgen page, bestie edition

okay so you're reading the llvm-profgen manual page (section 1, the "user commands" girlies πŸ’…) and honestly? you came to the right place. let's get into it. πŸŽ€


✨ NAME ✨

llvm-profgen β€” the LLVM SPGO profile generation tool. that's it. that's the name. she generates. πŸ’–


πŸ¦‹ SYNOPSIS πŸ¦‹

llvm-profgen [commands] [options]

🌸 DESCRIPTION 🌸

so basically the llvm-profgen utility generates a profile data file from given perf script data files, for sample-based profile guided optimization (SPGO). iconic behaviour, no notes. πŸ”₯


🌈 COMMANDS 🌈

you need at least one of these bad boys (well β€” one of the trace-y ones, see the note below, don't come for me):

  • --perfscript=<string[,string,...]> β€” path of the perf-script trace, created by the Linux perf tool with the script command (and psst: the raw perf.data should be profiled with -b). πŸ“
  • --etm=<string> β€” path of the ETM trace file created by the ARM CoreSight trace tools. heads up: this one needs the OpenCSD library version 1.5.4 or higher enabled during the build. no OpenCSD, no ETM, iykyk. 🧚
  • --perfdata=<perfdata>, --pd β€” path of the raw perf data created by the Linux perf tool (it should be profiled with -b). she's the raw one. πŸ’œ
  • --unsymbolized-profile=<unsymbolized profile>, --up β€” path of the unsymbolized profile created by llvm-profgen with --skip-symbolization. yes she can read her own output, self-sufficient queen. ✨
  • --llvm-sample-profile=<llvm sample profile> β€” path of the LLVM sample profile. straightforward. slay. 🌸
note: only one of --perfscript, --perfdata, --unsymbolized-profile, --llvm-sample-profile, or --etm may be specified at a time. one. singular. pick your fighter and commit. πŸ’€
  • --binary=<string[,string,...]> β€” path of the input profiled binary files. 🫢
  • --output=<string> β€” path of the output profile file. the whole point, honestly. πŸ‘‘

πŸ’… OPTIONS πŸ’…

llvm-profgen supports the following options β€” buckle up bestie, there's a whole list:

  • --format=[text|binary|extbinary|compbinary|gcc] β€” specify the format of the generated profile. the supported <format> values are text, binary, extbinary, compbinary, gcc β€” and if you want the full lore on what each of those means, see llvm-profdata, she explains it better. πŸ“š
  • --show-mmap-events β€” print mmap events. that's literally it. πŸ—ΊοΈ
  • --show-disassembly β€” print disassembled code. assembly girlies rise. πŸ”
  • --x86-asm-syntax=[att|intel] β€” specify whether to print assembly code in AT&T syntax (which is the default, fyi 🌟) or Intel syntax. choose your vibe.
  • --debug-binary=<debug-binary> β€” path of the debug info binary. llvm-profgen will load the DWARF info from it instead of the executable binary. so she's reading the debug twin, not the main character. πŸ¦‹
  • --target-triple=<triple> β€” override the target triple for the binary. this is useful for ETM trace decoding, to specify the correct Arm M-profile target. very "let me be clear about who i am" energy. 🎯
  • --pid β€” Process Id for the profiled executable binary. πŸ†”
  • --output=<output> β€” path of the output profile file. yes she shows up twice (once up in commands, once here) and honestly? she's allowed. consistency queen. πŸ‘‘πŸ’–
  • --data-access-perftrace=<data-access-perftrace> β€” file path of a Linux perf raw trace (generated by perf report -D) consisting of memory access events. πŸ“

🌟 Author 🌟

maintained by the LLVM Team (https://llvm.org/). literal legends, we stan. 🫢


2003-2026, LLVM Project. periodt. πŸ’œ


and that's the whole page, bestie β€” this was the LLVM manual, version 23, dated 2026-10-20, page LLVM-PROFGEN(1), brought to you with love and way too many emoji. mwah. πŸ’‹βœ¨πŸŒΈ

πŸ“¦ where this page comes from
  • arch rolling: llvm 23.1.4-1 Β· Apache-2.0 WITH LLVM-exception
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms