Category USE flags

cross-x86_64-unknown-linux-musl

Flag Description Packages
cet Enable Intel Control-flow Enforcement Technology. 3
debuginfod Enable debuginfod support via <pkg>dev-libs/elfutils</pkg> libdebuginfod 2
multitarget Adds support to binutils for cross compiling (does not work with gas) 2
nls 2
pgo Build binutils with Profile Guided Optimization (PGO) and LTO 2
test 2
vanilla 2
xxhash Use <pkg>dev-libs/xxhash</pkg> for --build-id=xx support 2
zstd 2

Local USE flags

cross-x86_64-unknown-linux-musl

binutils

Flag Description
default-gold Set ld to point to ld.gold instead of ld.bfd
doc
gold Build ld.gold linker
gprofng Enable the next-generation gprofng profiler
hardened
plugins Enable plugin support in tools
static-libs

gcc

Flag Description
ada Build the Ada language (GNAT) frontend
algol68 Build the Algol 68 frontend
cobol Enable support for the COBOL programming language
d Enable support for the D programming language
debug Enables GCC's 'checking' (assertions) facility. For released GCCs: * USE=debug sets --enable-checking=yes,extra,rtl * USE=-debug sets --enable-checking=release For unreleased GCCs: * USE=debug sets --enable-checking=yes,extra,rtl * USE=-debug sets --enable-checking=yes,extra This adds checks to various compiler passes for integrity and input validation. This can help catch possible miscompilations early as well as latent bugs which could become real problems in future, but at the cost of slower compile times when using GCC. Unrelated to backtraces.
default-stack-clash-protection Build packages with stack clash protection on by default as a hardening measure. This enables -fstack-clash-protection by default which protects against large memory allocations allowing stack smashing. May cause slightly increased codesize, but modern compilers have been adapted to optimize well for this case, as this mitigation is now quite common. See https://developers.redhat.com/blog/2020/05/22/stack-clash-mitigation-in-gcc-part-3 and https://www.qualys.com/2017/06/19/stack-clash/stack-clash.txt.
default-znow Request full relocation on start from ld.so by default. This sets the -z,now (BIND_NOW) flag by default on all linker invocations. By resolving all dynamic symbols at application startup, parts of the program can be made read-only as a hardening measure. This is closely related to RELRO which is also separately enabled by default. In some applications with many unresolved symbols (heavily plugin based, for example), startup time may be impacted.
fixed-point Enable fixed-point arithmetic support for MIPS targets in gcc (Warning: significantly increases compile time!)
go Build the GCC Go language frontend.
graphite Add support for the framework for loop optimizations based on a polyhedral intermediate representation
ieee-long-double Use accelerated 128-bit IEEE long double ABI (ppc64le only)
jit Enable libgccjit so other applications can embed gcc for Just-In-Time compilation.
libgdiagnostics Provide libgdiagnostics (https://gcc.gnu.org/wiki/libgdiagnostics). This also installs the 'sarif-replay' tool.
libssp Build SSP support into a dedicated library rather than use the code in the C library (DO NOT ENABLE THIS IF YOU DON'T KNOW WHAT IT DOES)
lto Build using Link Time Optimizations (LTO). Note that GCC is always built with support for building other programs with LTO. This USE flag is for whether GCC itself is built and optimized with LTO.
modula2 Build the GCC Modula-2 language frontend.
objc Build support for the Objective C code language
objc++ Build support for the Objective C++ language
objc-gc Build support for the Objective C code language Garbage Collector
rust Build support for the Rust language, installs gccrs.
sanitize Build support for various sanitizer functions (ASAN/TSAN/etc...) to find runtime problems in applications.
ssp Build packages with stack smashing protection on by default
systemtap Enable enhanced debugging hooks/interface via SystemTap static probe points in libgcc and libstdc++. Note that this isn't exclusive to SystemTap, despite the name. This provides an interface which <pkg>dev-debug/gdb</pkg> optionally uses, see https://sourceware.org/gdb/wiki/LinkerInterface and https://sourceware.org/gdb/wiki/DistroAdvice#sys.2Fsdt.h_probes.
vtv Build support for virtual table verification (a C++ hardening feature). This does not control whether GCC defaults to using VTV> Note that actually using VTV breaks ABI and hence the whole system must be built with -fvtable-verify.

gdb

Flag Description
babeltrace Enable <pkg>dev-util/babeltrace</pkg> support
guile
lzma Support lzma compression in ELF debug info
python Enable support for the new internal scripting language, as well as extended pretty printers
rocm Enable support for AMD GPU debugging via <pkg>dev-libs/rocdbgapi</pkg>
server Install the "gdbserver" program (useful for embedded/remote targets)
sim Build gdb's simulators for various hardware platforms. See https://sourceware.org/gdb/wiki/Sim.
source-highlight Enable listing highlighting via <pkg>dev-util/source-highlight</pkg>
xml Support parsing XML data files needed (at least) for cpu features, memory maps, and syscall tracing

musl

Flag Description
${IUSE/+crypt/+crypt}