LLVM-EXTRACT(1)

πŸ“¦ version 15.0.7, in opensuse-leap 16.0

πŸŽ€ NAME πŸŽ€

okay bestie, welcome to LLVM-EXTRACT(1) in the LLVM manual β€” this page is all about llvm-extract, aka the tool that will extract a function from an LLVM module. 🫢✨

✨ SYNOPSIS ✨

llvm-extract [options] --func function-name [filename]

that's the whole shape of it: options first, then --func function-name, then the optional [filename]. πŸ’…

πŸ’… DESCRIPTION πŸ’…

okay so picture this: the llvm-extract command takes the name of a function and extracts it from the specified LLVM bitcode file. It's primarily used as a debugging tool to reduce test cases from larger programs that are triggering a bug. πŸ›πŸ”₯

and it's not just a grab-and-go situation β€” in addition to extracting the bitcode of the specified function, llvm-extract will also remove unreachable global variables, prototypes, and unused types. cleanup era fr fr. ✨

input/output vibe check: llvm-extract reads its input from standard input if filename is omitted or if filename is -. The output is always written to standard output, unless the -o option is specified (see below). πŸ‘‘

🌈 OPTIONS 🌈

  • --alias alias-name β€” Extract the alias named function-name from the LLVM bitcode. May be specified multiple times to extract multiple alias at once. (yes, the page says function-name here β€” keeping it exactly as the manpage has it 🫢)
  • --ralias alias-regular-expr β€” Extract the alias matching alias-regular-expr from the LLVM bitcode. All alias matching the regular expression will be extracted. May be specified multiple times.
  • --bb basic-block-specifier β€” Extract basic blocks(s) specified in basic-block-specifier. May be specified multiple times. Each <function:bb[;bb]> specifier pair will create a function. If multiple basic blocks are specified in one pair, the first block in the sequence should dominate the rest. domination rule, periodt.
  • --delete β€” Delete specified Globals from Module.
  • -f β€” Enable binary output on terminals. Normally, llvm-extract will refuse to write raw bitcode output if the output stream is a terminal. With this option, llvm-extract will write raw bitcode regardless of the output device. terminal override unlocked πŸ”₯
  • --func function-name β€” Extract the function named function-name from the LLVM bitcode. May be specified multiple times to extract multiple functions at once.
  • --rfunc function-regular-expr β€” Extract the function(s) matching function-regular-expr from the LLVM bitcode. All functions matching the regular expression will be extracted. May be specified multiple times.
  • --glob global-name β€” Extract the global variable named global-name from the LLVM bitcode. May be specified multiple times to extract multiple global variables at once.
  • --rglob glob-regular-expr β€” Extract the global variable(s) matching global-regular-expr from the LLVM bitcode. All global variables matching the regular expression will be extracted. May be specified multiple times. (the option arg says glob-regular-expr and the description says global-regular-expr β€” both are in the original, bestie πŸ’œ)
  • --keep-const-init β€” Preserve the values of constant globals.
  • --recursive β€” Recursively extract all called functions.
  • -help β€” Print a summary of command line options.
  • -o filename β€” Specify the output filename. If filename is - (the default), then llvm-extract sends its output to standard output.
  • -S β€” Write output in LLVM intermediate language (instead of bitcode).

πŸ’€ EXIT STATUS πŸ’€

If llvm-extract succeeds, it will exit with 0. Otherwise, if an error occurs, it will exit with a non-zero value. no cap, that's the whole status tea. β˜•βœ¨

πŸ¦‹ SEE ALSO πŸ¦‹

go give bugpoint(1) some love too 🫢

πŸ‘‘ AUTHOR πŸ‘‘

Maintained by the LLVM Team (https://llvm.org/). πŸ’–

2003-2023, LLVM Project.


okay that's the whole page, bestie β€” signing off from LLVM-EXTRACT(1) in the LLVM manual, version 15, dated 2023-01-14 πŸ’–βœ¨πŸ«Ά

πŸ“¦ where this page comes from