🔎aflplusplus
AFL+++: an open-source fuzz testing tool that uses advanced mutation algorithms, deep learning, and parallel fuzzing to quickly identify vulnerabilities in software.
AFL+++, the advanced version of American Fuzzy Lop (AFL), is a powerful security tool for identifying vulnerabilities in software. It is an open-source software security testing tool that uses fuzz testing to find potential security flaws in code. AFL+++ was created to address the limitations of its predecessor, AFL, and provides an extensive set of features for better test coverage, faster feedback, and improved exploitability detection.
AFL+++ is a highly effective tool for identifying vulnerabilities in software. It works by inputting random data into an application, using various mutation techniques to modify the input data, and analyzing the results to determine if any vulnerabilities exist. AFL+++ provides advanced mutation algorithms, such as MOpt and QEMU mode, which optimize the input data to improve test coverage and reduce the time required for finding bugs.
One of the key features of AFL+++ is its ability to detect and prioritize exploitable bugs. This is done through a unique technique called "deep learning," which involves training the tool on real-world vulnerabilities to better identify them in new code. This helps developers to quickly identify high-risk vulnerabilities and prioritize their remediation efforts accordingly.
AFL+++ also provides a range of other advanced features, including coverage guidance, parallel fuzzing, and crash triage. Coverage guidance helps to ensure maximum code coverage by identifying areas that have not been tested and guiding the fuzzer to those areas. Parallel fuzzing allows multiple instances of AFL+++ to run simultaneously, reducing the time required for testing. Crash triage is a feature that helps to quickly identify the root cause of a crash and provide detailed information about the vulnerability.
Another key advantage of AFL+++ is its ease of use. It is designed to be user-friendly and easy to install, with comprehensive documentation and tutorials to guide users through the testing process. Additionally, AFL+++ supports a wide range of operating systems and architectures, making it a versatile tool for testing a variety of software applications.
In summary, AFL+++ is a powerful security testing tool that provides a range of advanced features for identifying and prioritizing vulnerabilities in software. With its advanced mutation algorithms, deep learning techniques, and range of other features, AFL+++ is an indispensable tool for software developers looking to improve the security of their applications.
Packages and Binaries:
afl
This is a transitional package. It can safely be removed once afl++ is installed.
Installed size: 73 KB
How to install: sudo apt install afl
afl++
American fuzzy lop is a fuzzer that employs compile-time instrumentation and genetic algorithms to automatically discover clean, interesting test cases that trigger new internal states in the targeted binary. This substantially improves the functional coverage for the fuzzed code. The compact synthesized corpora produced by the tool are also useful for seeding other, more labor- or resource-intensive testing regimes down the road.
afl++-fuzz is designed to be practical: it has modest performance overhead, uses a variety of highly effective fuzzing strategies, requires essentially no configuration, and seamlessly handles complex, real-world use cases - say, common image parsing or file compression libraries.
afl++ is a fork of the unmaintained afl.
Installed size: 2.29 MB
How to install: sudo apt install afl++
afl-analyze
(unknown subject)
:~# afl-analyze -h
afl-analyze++4.04c by Michal Zalewski
afl-analyze [ options ] -- /path/to/target_app [ ... ]
Required parameters:
-i file - input test case to be analyzed by the tool
Execution control settings:
-f file - input file read by the tested program (stdin)
-t msec - timeout for each run (1000 ms)
-m megs - memory limit for child process (0 MB)
-O - use binary-only instrumentation (FRIDA mode)
-Q - use binary-only instrumentation (QEMU mode)
-U - use unicorn-based instrumentation (Unicorn mode)
-W - use qemu-based instrumentation with Wine (Wine mode)
Analysis settings:
-e - look for edge coverage only, ignore hit counts
For additional tips, please consult /usr/share/doc/afl/README.md.
Environment variables used:
TMPDIR: directory to use for temporary input files
ASAN_OPTIONS: custom settings for ASAN
(must contain abort_on_error=1 and symbolize=0)
MSAN_OPTIONS: custom settings for MSAN
(must contain exitcode=86 and symbolize=0)
AFL_ANALYZE_HEX: print file offsets in hexadecimal instead of decimal
AFL_MAP_SIZE: the shared memory size for that target. must be >= the size
the target was compiled for
AFL_PRELOAD: LD_PRELOAD / DYLD_INSERT_LIBRARIES settings for target
AFL_SKIP_BIN_CHECK: skip checking the location of and the target
afl-c++
Afl-c++ (8) - afl-cc++4.04c by Michal Zalewski, Laszlo Szekeres, Marc Heuse afl-cc
:~# afl-c++ --help
OVERVIEW: clang LLVM compiler
USAGE: clang [options] file...
OPTIONS:
-### Print (but do not run) the commands to run for this compilation
--amdgpu-arch-tool=<value>
Tool used for detecting AMD GPU arch in the system.
--analyzer-output <value>
Static analyzer report output format (html|plist|plist-multi-file|plist-html|sarif|sarif-html|text).
--analyze Run the static analyzer
-arcmt-migrate-emit-errors
Emit ARC errors even if the migrator can fix them
-arcmt-migrate-report-output <value>
Output path for the plist report
-B <prefix> Search $prefix$file for executables, libraries, and data files. If $prefix is a directory, search $prefix/$file
-b <arg> Pass -b <arg> to the linker on AIX (only).
-CC Include comments from within macros in preprocessed output
-cl-denorms-are-zero OpenCL only. Allow denormals to be flushed to zero.
-cl-fast-relaxed-math OpenCL only. Sets -cl-finite-math-only and -cl-unsafe-math-optimizations, and defines __FAST_RELAXED_MATH__.
-cl-finite-math-only OpenCL only. Allow floating-point optimizations that assume arguments and results are not NaNs or +-Inf.
-cl-fp32-correctly-rounded-divide-sqrt
OpenCL only. Specify that single precision floating-point divide and sqrt used in the program source are correctly rounded.
-cl-kernel-arg-info OpenCL only. Generate kernel argument metadata.
-cl-mad-enable OpenCL only. Allow use of less precise MAD computations in the generated binary.
-cl-no-signed-zeros OpenCL only. Allow use of less precise no signed zeros computations in the generated binary.
-cl-no-stdinc OpenCL only. Disables all standard includes containing non-native compiler types and functions.
-cl-opt-disable OpenCL only. This option disables all optimizations. By default optimizations are enabled.
-cl-single-precision-constant
OpenCL only. Treat double precision floating-point constant as single precision constant.
-cl-std=<value> OpenCL language standard to compile for.
-cl-strict-aliasing OpenCL only. This option is added for compatibility with OpenCL 1.0.
-cl-uniform-work-group-size
OpenCL only. Defines that the global work-size be a multiple of the work-group size specified to clEnqueueNDRangeKernel
-cl-unsafe-math-optimizations
OpenCL only. Allow unsafe floating-point optimizations. Also implies -cl-no-signed-zeros and -cl-mad-enable.
--config <value> Specifies configuration file
--cuda-compile-host-device
Compile CUDA code for both host and device (default). Has no effect on non-CUDA compilations.
--cuda-device-only Compile CUDA code for device only
--cuda-host-only Compile CUDA code for host only. Has no effect on non-CUDA compilations.
--cuda-include-ptx=<value>
Include PTX for the following GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.
--cuda-noopt-device-debug
Enable device-side debug info generation. Disables ptxas optimizations.
--cuda-path-ignore-env Ignore environment variables to detect CUDA installation
--cuda-path=<value> CUDA installation path
-cuid=<value> An ID for compilation unit, which should be the same for the same compilation unit but different for different compilation units. It is used to externalize device-side static variables for single source offloading languages CUDA and HIP so that they can be accessed by the host code of the same compilation unit.
-cxx-isystem <directory>
Add directory to the C++ SYSTEM include search path
-C Include comments in preprocessed output
-c Only run preprocess, compile, and assemble steps
-dD Print macro definitions in -E mode in addition to normal output
-dependency-dot <value> Filename to write DOT-formatted header dependencies to
-dependency-file <value>
Filename (or -) to write dependency output to
-dI Print include directives in -E mode in addition to normal output
-dM Print macro definitions in -E mode instead of normal output
-dsym-dir <dir> Directory to output dSYM's (if any) to
-D <macro>=<value> Define <macro> to <value> (or 1 if <value> omitted)
-emit-ast Emit Clang AST files for source inputs
-emit-interface-stubs Generate Interface Stub Files.
-emit-llvm Use the LLVM representation for assembler and object files
-emit-merged-ifs Generate Interface Stub Files, emit merged text not binary.
--emit-static-lib Enable linker job to emit a static library.
-enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang
Trivial automatic variable initialization to zero is only here for benchmarks, it'll eventually be removed, and I'm OK with that because I'm only using it to benchmark
--end-no-unused-arguments
Start emitting warnings for unused driver arguments
-extract-api Extract API information
-E Only run the preprocessor
-faapcs-bitfield-load Follows the AAPCS standard that all volatile bit-field write generates at least one load. (ARM only).
-faapcs-bitfield-width Follow the AAPCS standard requirement stating that volatile bit-field width is dictated by the field container type. (ARM only).
-faddrsig Emit an address-significance table
-falign-loops=<N> N must be a power of two. Align loops to the boundary
-faligned-allocation Enable C++17 aligned allocation functions
-fallow-editor-placeholders
Treat editor placeholders as valid source code
-faltivec-src-compat=<value>
Source-level compatibility for Altivec vectors (for PowerPC targets). This includes results of vector comparison (scalar for 'xl', vector for 'gcc') as well as behavior when initializing with a scalar (splatting for 'xl', element zero only for 'gcc'). For 'mixed', the compatibility is as 'gcc' for 'vector bool/vector pixel' and as 'xl' for other types. Current default is 'mixed'.
-fansi-escape-codes Use ANSI escape codes for diagnostics
-fapple-kext Use Apple's kernel extensions ABI
-fapple-link-rtlib Force linking the clang builtins runtime library
-fapple-pragma-pack Enable Apple gcc-compatible #pragma pack handling
-fapplication-extension Restrict code to those available for App Extensions
-fapprox-func Allow certain math function calls to be replaced with an approximately equivalent calculation
-fasync-exceptions Enable EH Asynchronous exceptions
-fbasic-block-sections=<value>
Place each function's basic blocks in unique sections (ELF Only) : all | labels | none | list=<file>
-fbinutils-version=<major.minor>
Produced object files can use all ELF features supported by this binutils version and newer. If -fno-integrated-as is specified, the generated assembly will consider GNU as support. 'none' means that all ELF features can be used, regardless of binutils support. Defaults to 2.26.
-fblocks Enable the 'blocks' language feature
-fborland-extensions Accept non-standard constructs supported by the Borland compiler
-fbuild-session-file=<file>
Use the last modification time of <file> as the build session timestamp
-fbuild-session-timestamp=<time since Epoch in seconds>
Time when the current build session started
-fbuiltin-module-map Load the clang builtins module map file.
-fc++-abi=<value> C++ ABI to use. This will override the target C++ ABI.
-fcall-saved-x10 Make the x10 register call-saved (AArch64 only)
-fcall-saved-x11 Make the x11 register call-saved (AArch64 only)
-fcall-saved-x12 Make the x12 register call-saved (AArch64 only)
-fcall-saved-x13 Make the x13 register call-saved (AArch64 only)
-fcall-saved-x14 Make the x14 register call-saved (AArch64 only)
-fcall-saved-x15 Make the x15 register call-saved (AArch64 only)
-fcall-saved-x18 Make the x18 register call-saved (AArch64 only)
-fcall-saved-x8 Make the x8 register call-saved (AArch64 only)
-fcall-saved-x9 Make the x9 register call-saved (AArch64 only)
-fcf-protection=<value> Instrument control-flow architecture protection. Options: return, branch, full, none.
-fcf-protection Enable cf-protection in 'full' mode
-fchar8_t Enable C++ builtin type char8_t
-fclang-abi-compat=<version>
Attempt to match the ABI of Clang <version>
-fcolor-diagnostics Enable colors in diagnostics
-fcomment-block-commands=<arg>
Treat each comma separated argument in <arg> as a documentation comment block command
-fcommon Place uninitialized global variables in a common block
-fcomplete-member-pointers
Require member pointer base types to be complete if they would be significant under the Microsoft ABI
-fconvergent-functions Assume functions may be convergent
-fcoroutines-ts Enable support for the C++ Coroutines TS
-fcoverage-compilation-dir=<value>
The compilation directory to embed in the coverage mapping.
-fcoverage-mapping Generate coverage mapping to enable code coverage analysis
-fcoverage-prefix-map=<value>
remap file source paths in coverage mapping
-fcrash-diagnostics-dir=<dir>
Put crash-report files in <dir>
-fcs-profile-generate=<directory>
Generate instrumented code to collect context sensitive execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)
-fcs-profile-generate Generate instrumented code to collect context sensitive execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)
-fcuda-approx-transcendentals
Use approximate transcendental functions
-fcuda-short-ptr Use 32-bit pointers for accessing const/local/shared address spaces
-fcxx-exceptions Enable C++ exceptions
-fcxx-modules Enable modules for C++
-fdata-sections Place each data in its own section
-fdebug-compilation-dir=<value>
The compilation directory to embed in the debug info
-fdebug-default-version=<value>
Default DWARF version to use, if a -g option caused DWARF debug info to be produced
-fdebug-info-for-profiling
Emit extra debug info to make sample profile more accurate
-fdebug-macro Emit macro debug information
-fdebug-prefix-map=<value>
remap file source paths in debug info
-fdebug-ranges-base-address
Use DWARF base address selection entries in .debug_ranges
-fdebug-types-section Place debug types in their own section (ELF Only)
-fdeclspec Allow __declspec as a keyword
-fdelayed-template-parsing
Parse templated function definitions at the end of the translation unit
-fdelete-null-pointer-checks
Treat usage of null pointers as undefined behavior (default)
-fdiagnostics-absolute-paths
Print absolute paths in diagnostics
-fdiagnostics-hotness-threshold=<value>
Prevent optimization remarks from being output if they do not have at least this profile count. Use 'auto' to apply the threshold from profile summary
-fdiagnostics-parseable-fixits
Print fix-its in machine parseable form
-fdiagnostics-print-source-range-info
Print source range spans in numeric form
-fdiagnostics-show-hotness
Enable profile hotness information in diagnostic line
-fdiagnostics-show-note-include-stack
Display include stacks for diagnostic notes
-fdiagnostics-show-option
Print option name with mappable diagnostics
-fdiagnostics-show-template-tree
Print a template comparison tree for differing templates
-fdigraphs Enable alternative token representations '<:', ':>', '<%', '%>', '%:', '%:%:' (default)
-fdirect-access-external-data
Don't use GOT indirection to reference external data symbols
-fdiscard-value-names Discard value names in LLVM IR
-fdollars-in-identifiers
Allow '$' in identifiers
-fdouble-square-bracket-attributes
Enable '[[]]' attributes in all C and C++ language modes
-fdwarf-exceptions Use DWARF style exceptions
-feliminate-unused-debug-types
Do not emit debug info for defined but unused types
-fembed-bitcode-marker Embed placeholder LLVM IR data as a marker
-fembed-bitcode=<option>
Embed LLVM bitcode (option: off, all, bitcode, marker)
-fembed-bitcode Embed LLVM IR bitcode as data
-fembed-offload-object=<value>
Embed Offloading device-side binary into host object file as a section.
-femit-all-decls Emit all declarations, even if unused
-femulated-tls Use emutls functions to access thread_local variables
-fenable-matrix Enable matrix data type and related builtin functions
-fexceptions Enable support for exception handling
-fexperimental-new-constant-interpreter
Enable the experimental new constant interpreter
-fexperimental-relative-c++-abi-vtables
Use the experimental C++ class ABI for classes with virtual tables
-fexperimental-strict-floating-point
Enables experimental strict floating point in LLVM.
-fextend-arguments=<value>
Controls how scalar integer arguments are extended in calls to unprototyped and varargs functions
-ffast-math Allow aggressive, lossy floating-point optimizations
-ffile-compilation-dir=<value>
The compilation directory to embed in the debug info and coverage mapping.
-ffile-prefix-map=<value>
remap file source paths in debug info, predefined preprocessor macros and __builtin_FILE()
-ffine-grained-bitfield-accesses
Use separate accesses for consecutive bitfield runs with legal widths and alignments.
-ffinite-loops Assume all loops are finite.
-ffixed-a0 Reserve the a0 register (M68k only)
-ffixed-a1 Reserve the a1 register (M68k only)
-ffixed-a2 Reserve the a2 register (M68k only)
-ffixed-a3 Reserve the a3 register (M68k only)
-ffixed-a4 Reserve the a4 register (M68k only)
-ffixed-a5 Reserve the a5 register (M68k only)
-ffixed-a6 Reserve the a6 register (M68k only)
-ffixed-d0 Reserve the d0 register (M68k only)
-ffixed-d1 Reserve the d1 register (M68k only)
-ffixed-d2 Reserve the d2 register (M68k only)
-ffixed-d3 Reserve the d3 register (M68k only)
-ffixed-d4 Reserve the d4 register (M68k only)
-ffixed-d5 Reserve the d5 register (M68k only)
-ffixed-d6 Reserve the d6 register (M68k only)
-ffixed-d7 Reserve the d7 register (M68k only)
-ffixed-point Enable fixed point types
-ffixed-r19 Reserve register r19 (Hexagon only)
-ffixed-r9 Reserve the r9 register (ARM only)
-ffixed-x10 Reserve the x10 register (AArch64/RISC-V only)
-ffixed-x11 Reserve the x11 register (AArch64/RISC-V only)
-ffixed-x12 Reserve the x12 register (AArch64/RISC-V only)
-ffixed-x13 Reserve the x13 register (AArch64/RISC-V only)
-ffixed-x14 Reserve the x14 register (AArch64/RISC-V only)
-ffixed-x15 Reserve the x15 register (AArch64/RISC-V only)
-ffixed-x16 Reserve the x16 register (AArch64/RISC-V only)
-ffixed-x17 Reserve the x17 register (AArch64/RISC-V only)
-ffixed-x18 Reserve the x18 register (AArch64/RISC-V only)
-ffixed-x19 Reserve the x19 register (AArch64/RISC-V only)
-ffixed-x1 Reserve the x1 register (AArch64/RISC-V only)
-ffixed-x20 Reserve the x20 register (AArch64/RISC-V only)
-ffixed-x21 Reserve the x21 register (AArch64/RISC-V only)
-ffixed-x22 Reserve the x22 register (AArch64/RISC-V only)
-ffixed-x23 Reserve the x23 register (AArch64/RISC-V only)
-ffixed-x24 Reserve the x24 register (AArch64/RISC-V only)
-ffixed-x25 Reserve the x25 register (AArch64/RISC-V only)
-ffixed-x26 Reserve the x26 register (AArch64/RISC-V only)
-ffixed-x27 Reserve the x27 register (AArch64/RISC-V only)
-ffixed-x28 Reserve the x28 register (AArch64/RISC-V only)
-ffixed-x29 Reserve the x29 register (AArch64/RISC-V only)
-ffixed-x2 Reserve the x2 register (AArch64/RISC-V only)
-ffixed-x30 Reserve the x30 register (AArch64/RISC-V only)
-ffixed-x31 Reserve the x31 register (AArch64/RISC-V only)
-ffixed-x3 Reserve the x3 register (AArch64/RISC-V only)
-ffixed-x4 Reserve the x4 register (AArch64/RISC-V only)
-ffixed-x5 Reserve the x5 register (AArch64/RISC-V only)
-ffixed-x6 Reserve the x6 register (AArch64/RISC-V only)
-ffixed-x7 Reserve the x7 register (AArch64/RISC-V only)
-ffixed-x8 Reserve the x8 register (AArch64/RISC-V only)
-ffixed-x9 Reserve the x9 register (AArch64/RISC-V only)
-fforce-dwarf-frame Always emit a debug frame section
-fforce-emit-vtables Emits more virtual tables to improve devirtualization
-fforce-enable-int128 Enable support for int128_t type
-ffp-contract=<value> Form fused FP ops (e.g. FMAs): fast (fuses across statements disregarding pragmas) | on (only fuses in the same statement unless dictated by pragmas) | off (never fuses) | fast-honor-pragmas (fuses across statements unless diectated by pragmas). Default is 'fast' for CUDA, 'fast-honor-pragmas' for HIP, and 'on' otherwise.
-ffp-exception-behavior=<value>
Specifies the exception behavior of floating-point operations.
-ffp-model=<value> Controls the semantics of floating-point calculations.
-ffreestanding Assert that the compilation takes place in a freestanding environment
-ffuchsia-api-level=<value>
Set Fuchsia API level
-ffunction-sections Place each function in its own section
-fglobal-isel Enables the global instruction selector
-fgnu-keywords Allow GNU-extension keywords regardless of language standard
-fgnu-runtime Generate output compatible with the standard GNU Objective-C runtime
-fgnu89-inline Use the gnu89 inline semantics
-fgnuc-version=<value> Sets various macros to claim compatibility with the given GCC version (default is 4.2.1)
-fgpu-allow-device-init Allow device side init function in HIP (experimental)
-fgpu-defer-diag Defer host/device related diagnostic messages for CUDA/HIP
-fgpu-flush-denormals-to-zero
Flush denormal floating point values to zero in CUDA/HIP device mode.
-fgpu-rdc Generate relocatable device code, also known as separate compilation mode
-fgpu-sanitize Enable sanitizer for AMDGPU target
-fhip-fp32-correctly-rounded-divide-sqrt
Specify that single precision floating-point divide and sqrt used in the program source are correctly rounded (HIP device compilation only)
-fhip-new-launch-api Use new kernel launching API for HIP
-fignore-exceptions Enable support for ignoring exception handling constructs
-fimplicit-module-maps Implicitly search the file system for module map files.
-finline-functions Inline suitable functions
-finline-hint-functions Inline functions which are (explicitly or implicitly) marked inline
-finput-charset=<value> Specify the default character set for source files
-finstrument-function-entry-bare
Instrument function entry only, after inlining, without arguments to the instrumentation call
-finstrument-functions-after-inlining
Like -finstrument-functions, but insert the calls after inlining
-finstrument-functions Generate calls to instrument function entry and exit
-fintegrated-as Enable the integrated assembler
-fintegrated-cc1 Run cc1 in-process
-fjump-tables Use jump tables for lowering switches
-fkeep-static-consts Keep static const variables if unused
-flax-vector-conversions=<value>
Enable implicit vector bit-casts
-flegacy-pass-manager Use the legacy pass manager in LLVM (deprecated, to be removed in a future release)
-flto-jobs=<value> Controls the backend parallelism of -flto=thin (default of 0 means the number of threads will be derived from the number of CPUs detected)
-flto=auto Enable LTO in 'full' mode
-flto=jobserver Enable LTO in 'full' mode
-flto=<value> Set LTO mode to either 'full' or 'thin'
-flto Enable LTO in 'full' mode
-fmacro-prefix-map=<value>
remap file source paths in predefined preprocessor macros and __builtin_FILE()
-fmath-errno Require math functions to indicate errors by setting errno
-fmax-tokens=<value> Max total number of preprocessed tokens for -Wmax-tokens.
-fmax-type-align=<value>
Specify the maximum alignment to enforce on pointers lacking an explicit alignment
-fmemory-profile=<directory>
Enable heap memory profiling and dump results into <directory>
-fmemory-profile Enable heap memory profiling
-fmerge-all-constants Allow merging of constants
-fmessage-length=<value>
Format message diagnostics so that they fit within N columns
-fminimize-whitespace Minimize whitespace when emitting preprocessor output
-fmodule-file=[<name>=]<file>
Specify the mapping of module name to precompiled module file, or load a module file if name is omitted.
-fmodule-map-file=<file>
Load this module map file
-fmodule-name=<name> Specify the name of the module to build
-fmodules-cache-path=<directory>
Specify the module cache path
-fmodules-decluse Require declaration of modules used within a module
-fmodules-disable-diagnostic-validation
Disable validation of the diagnostic options when loading the module
-fmodules-ignore-macro=<value>
Ignore the definition of the given macro when building and loading modules
-fmodules-prune-after=<seconds>
Specify the interval (in seconds) after which a module file will be considered unused
-fmodules-prune-interval=<seconds>
Specify the interval (in seconds) between attempts to prune the module cache
-fmodules-search-all Search even non-imported modules to resolve references
-fmodules-strict-decluse
Like -fmodules-decluse but requires all headers to be in modules
-fmodules-ts Enable support for the C++ Modules TS
-fmodules-user-build-path <directory>
Specify the module user build path
-fmodules-validate-input-files-content
Validate PCM input files based on content if mtime differs
-fmodules-validate-once-per-build-session
Don't verify input files for the modules if the module has been successfully validated or loaded during this build session
-fmodules-validate-system-headers
Validate the system headers that a module depends on when loading the module
-fmodules Enable the 'modules' language feature
-fms-compatibility-version=<value>
Dot-separated value representing the Microsoft compiler version number to report in _MSC_VER (0 = don't define it (default))
-fms-compatibility Enable full Microsoft Visual C++ compatibility
-fms-extensions Accept some non-standard constructs supported by the Microsoft compiler
-fms-hotpatch Ensure that all functions can be hotpatched at runtime
-fmsc-version=<value> Microsoft compiler version number to report in _MSC_VER (0 = don't define it (default))
-fnew-alignment=<align> Specifies the largest alignment guaranteed by '::operator new(size_t)'
-fnew-infallible Enable treating throwing global C++ operator new as always returning valid memory (annotates with __attribute__((returns_nonnull)) and throw()). This is detectable in source.
-fno-aapcs-bitfield-width
Do not follow the AAPCS standard requirement stating that volatile bit-field width is dictated by the field container type. (ARM only).
-fno-access-control Disable C++ access control
-fno-addrsig Don't emit an address-significance table
-fno-assume-sane-operator-new
Don't assume that C++'s global operator new can't alias any pointer
-fno-autolink Disable generation of linker directives for automatic library linking
-fno-builtin-<value> Disable implicit builtin knowledge of a specific function
-fno-builtin Disable implicit builtin knowledge of functions
-fno-c++-static-destructors
Disable C++ static destructor registration
-fno-char8_t Disable C++ builtin type char8_t
-fno-color-diagnostics Disable colors in diagnostics
-fno-common Compile common globals like normal definitions
-fno-complete-member-pointers
Do not require member pointer base types to be complete if they would be significant under the Microsoft ABI
-fno-constant-cfstrings Disable creation of CodeFoundation-type constant strings
-fno-coverage-mapping Disable code coverage analysis
-fno-crash-diagnostics Disable auto-generation of preprocessed source files and a script for reproduction during a clang crash
-fno-cuda-approx-transcendentals
Don't use approximate transcendental functions
-fno-cxx-modules Disable modules for C++
-fno-debug-macro Do not emit macro debug information
-fno-declspec Disallow __declspec as a keyword
-fno-delayed-template-parsing
Disable delayed template parsing
-fno-delete-null-pointer-checks
Do not treat usage of null pointers as undefined behavior
-fno-diagnostics-fixit-info
Do not include fixit information in diagnostics
-fno-digraphs Disallow alternative token representations '<:', ':>', '<%', '%>', '%:', '%:%:'
-fno-direct-access-external-data
Use GOT indirection to reference external data symbols
-fno-discard-value-names
Do not discard value names in LLVM IR
-fno-dollars-in-identifiers
Disallow '$' in identifiers
-fno-double-square-bracket-attributes
Disable '[[]]' attributes in all C and C++ language modes
-fno-elide-constructors Disable C++ copy constructor elision
-fno-elide-type Do not elide types when printing diagnostics
-fno-eliminate-unused-debug-types
Emit debug info for defined but unused types
-fno-exceptions Disable support for exception handling
-fno-experimental-relative-c++-abi-vtables
Do not use the experimental C++ class ABI for classes with virtual tables
-fno-fine-grained-bitfield-accesses
Use large-integer access for consecutive bitfield runs.
-fno-finite-loops Do not assume that any loop is finite.
-fno-fixed-point Disable fixed point types
-fno-force-enable-int128
Disable support for int128_t type
-fno-global-isel Disables the global instruction selector
-fno-gnu-inline-asm Disable GNU style inline asm
-fno-gpu-allow-device-init
Don't allow device side init function in HIP (experimental)
-fno-gpu-defer-diag Don't defer host/device related diagnostic messages for CUDA/HIP
-fno-hip-fp32-correctly-rounded-divide-sqrt
Don't specify that single precision floating-point divide and sqrt used in the program source are correctly rounded (HIP device compilation only)
-fno-hip-new-launch-api Don't use new kernel launching API for HIP
-fno-integrated-as Disable the integrated assembler
-fno-integrated-cc1 Spawn a separate process for each cc1
-fno-jump-tables Do not use jump tables for lowering switches
-fno-keep-static-consts Don't keep static const variables if unused
-fno-legacy-pass-manager
Use the new pass manager in LLVM
-fno-lto Disable LTO mode (default)
-fno-memory-profile Disable heap memory profiling
-fno-merge-all-constants
Disallow merging of constants
-fno-new-infallible Disable treating throwing global C++ operator new as always returning valid memory (annotates with __attribute__((returns_nonnull)) and throw()). This is detectable in source.
-fno-objc-infer-related-result-type
do not infer Objective-C related result type based on method family
-fno-offload-lto Disable LTO mode (default) for offload compilation
-fno-openmp-extensions Disable all Clang extensions for OpenMP directives and clauses
-fno-operator-names Do not treat C++ operator name keywords as synonyms for operators
-fno-pch-codegen Do not generate code for uses of this PCH that assumes an explicit object file will be built for the PCH
-fno-pch-debuginfo Do not generate debug info for types in an object file built from this PCH and do not generate them elsewhere
-fno-plt Use GOT indirection instead of PLT to make external function calls (x86 only)
-fno-preserve-as-comments
Do not preserve comments in inline assembly
-fno-profile-generate Disable generation of profile instrumentation.
-fno-profile-instr-generate
Disable generation of profile instrumentation.
-fno-profile-instr-use Disable using instrumentation data for profile-guided optimization
-fno-pseudo-probe-for-profiling
Do not emit pseudo probes for sample profiling
-fno-register-global-dtors-with-atexit
Don't use atexit or __cxa_atexit to register global destructors
-fno-rtlib-add-rpath Do not add -rpath with architecture-specific resource directory to the linker flags
-fno-rtti-data Disable generation of RTTI data
-fno-rtti Disable generation of rtti information
-fno-sanitize-address-outline-instrumentation
Use default code inlining logic for the address sanitizer
-fno-sanitize-address-poison-custom-array-cookie
Disable poisoning array cookies when using custom operator new[] in AddressSanitizer
-fno-sanitize-address-use-after-scope
Disable use-after-scope detection in AddressSanitizer
-fno-sanitize-address-use-odr-indicator
Disable ODR indicator globals
-fno-sanitize-cfi-canonical-jump-tables
Do not make the jump table addresses canonical in the symbol table
-fno-sanitize-cfi-cross-dso
Disable control flow integrity (CFI) checks for cross-DSO calls.
-fno-sanitize-coverage=<value>
Disable features of coverage instrumentation for Sanitizers
-fno-sanitize-hwaddress-experimental-aliasing
Disable aliasing mode in HWAddressSanitizer
-fno-sanitize-ignorelist
Don't use ignorelist file for sanitizers
-fno-sanitize-memory-param-retval
Disable detection of uninitialized parameters and return values
-fno-sanitize-memory-track-origins
Disable origins tracking in MemorySanitizer
-fno-sanitize-memory-use-after-dtor
Disable use-after-destroy detection in MemorySanitizer
-fno-sanitize-recover=<value>
Disable recovery for specified sanitizers
-fno-sanitize-stats Disable sanitizer statistics gathering.
-fno-sanitize-thread-atomics
Disable atomic operations instrumentation in ThreadSanitizer
-fno-sanitize-thread-func-entry-exit
Disable function entry/exit instrumentation in ThreadSanitizer
-fno-sanitize-thread-memory-access
Disable memory access instrumentation in ThreadSanitizer
-fno-sanitize-trap=<value>
Disable trapping for specified sanitizers
-fno-sanitize-trap Disable trapping for all sanitizers
-fno-short-wchar Force wchar_t to be an unsigned int
-fno-show-column Do not include column number on diagnostics
-fno-show-source-location
Do not include source location information with diagnostics
-fno-signed-char char is unsigned
-fno-signed-zeros Allow optimizations that ignore the sign of floating point zeros
-fno-spell-checking Disable spell-checking
-fno-split-machine-functions
Disable late function splitting using profile information (x86 ELF)
-fno-split-stack Wouldn't use segmented stack
-fno-stack-clash-protection
Disable stack clash protection
-fno-stack-protector Disable the use of stack protectors
-fno-standalone-debug Limit debug information produced to reduce size of debug binary
-fno-strict-float-cast-overflow
Relax language rules and try to match the behavior of the target's native float-to-int conversion instructions
-fno-strict-return Don't treat control flow paths that fall off the end of a non-void function as unreachable
-fno-sycl Disables SYCL kernels compilation for device
-fno-temp-file Directly create compilation output files. This may lead to incorrect incremental builds if the compiler crashes
-fno-threadsafe-statics Do not emit code to make initialization of local statics thread safe
-fno-trigraphs Do not process trigraph sequences
-fno-unique-section-names
Don't use unique names for text and data sections
-fno-unroll-loops Turn off loop unroller
-fno-use-cxa-atexit Don't use __cxa_atexit for calling destructors
-fno-use-init-array Use .ctors/.dtors instead of .init_array/.fini_array
-fno-visibility-inlines-hidden-static-local-var
Disables -fvisibility-inlines-hidden-static-local-var (this is the default on non-darwin targets)
-fno-xray-function-index
Omit function index section at the expense of single-function patching performance
-fno-zero-initialized-in-bss
Don't place zero initialized data in BSS
-fobjc-arc-exceptions Use EH-safe code when synthesizing retains and releases in -fobjc-arc
-fobjc-arc Synthesize retain and release calls for Objective-C pointers
-fobjc-disable-direct-methods-for-testing
Ignore attribute objc_direct so that direct methods can be tested
-fobjc-encode-cxx-class-template-spec
Fully encode c++ class template specialization
-fobjc-exceptions Enable Objective-C exceptions
-fobjc-runtime=<value> Specify the target Objective-C runtime kind and version
-fobjc-weak Enable ARC-style weak references in Objective-C
-foffload-lto=<value> Set LTO mode to either 'full' or 'thin' for offload compilation
-foffload-lto Enable LTO in 'full' mode for offload compilation
-fopenmp-extensions Enable all Clang extensions for OpenMP directives and clauses
-fopenmp-implicit-rpath Set rpath on OpenMP executables
-fopenmp-new-driver Use the new driver for OpenMP offloading.
-fopenmp-simd Emit OpenMP code only for SIMD-based constructs.
-fopenmp-target-debug Enable debugging in the OpenMP offloading device RTL
-fopenmp-target-new-runtime
Use the new bitcode library for OpenMP offloading
-fopenmp-targets=<value>
Specify comma-separated list of triples OpenMP offloading targets to be supported
-fopenmp-version=<value>
Set OpenMP version (e.g. 45 for OpenMP 4.5, 50 for OpenMP 5.0). Default value is 50.
-fopenmp Parse OpenMP pragmas and generate parallel code.
-foptimization-record-file=<file>
Specify the output name of the file containing the optimization remarks. Implies -fsave-optimization-record. On Darwin platforms, this cannot be used with multiple -arch <arch> options.
-foptimization-record-passes=<regex>
Only include passes which match a specified regular expression in the generated optimization record (by default, include all passes)
-forder-file-instrumentation
Generate instrumented code to collect order file into default.profraw file (overridden by '=' form of option or LLVM_PROFILE_FILE env var)
-fpack-struct=<value> Specify the default maximum struct packing alignment
-fpascal-strings Recognize and construct Pascal-style string literals
-fpass-plugin=<dsopath> Load pass plugin from a dynamic shared object file (only with new pass manager).
-fpatchable-function-entry=<N,M>
Generate M NOPs before function entry and N-M NOPs after function entry
-fpcc-struct-return Override the default ABI to return all structs on the stack
-fpch-codegen Generate code for uses of this PCH that assumes an explicit object file will be built for the PCH
-fpch-debuginfo Generate debug info for types in an object file built from this PCH and do not generate them elsewhere
-fpch-instantiate-templates
Instantiate templates already while building a PCH
-fpch-validate-input-files-content
Validate PCH input files based on content if mtime differs
-fplugin-arg-<name>-<arg>
Pass <arg> to plugin <name>
-fplugin=<dsopath> Load the named plugin (dynamic shared object)
-fprebuilt-implicit-modules
Look up implicit modules in the prebuilt module path
-fprebuilt-module-path=<directory>
Specify the prebuilt module path
-fproc-stat-report=<value>
Save subprocess statistics to the given file
-fproc-stat-report<value>
Print subprocess statistics
-fprofile-exclude-files=<value>
Instrument only functions from files where names don't match all the regexes separated by a semi-colon
-fprofile-filter-files=<value>
Instrument only functions from files where names match any regex separated by a semi-colon
-fprofile-generate=<directory>
Generate instrumented code to collect execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)
-fprofile-generate Generate instrumented code to collect execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)
-fprofile-instr-generate=<file>
Generate instrumented code to collect execution counts into <file> (overridden by LLVM_PROFILE_FILE env var)
-fprofile-instr-generate
Generate instrumented code to collect execution counts into default.profraw file (overridden by '=' form of option or LLVM_PROFILE_FILE env var)
-fprofile-instr-use=<value>
Use instrumentation data for profile-guided optimization
-fprofile-list=<value> Filename defining the list of functions/files to instrument
-fprofile-remapping-file=<file>
Use the remappings described in <file> to match the profile data against names in the program
-fprofile-sample-accurate
Specifies that the sample profile is accurate
-fprofile-sample-use=<value>
Enable sample-based profile guided optimizations
-fprofile-update=<method>
Set update method of profile counters (atomic,prefer-atomic,single)
-fprofile-use=<pathname>
Use instrumentation data for profile-guided optimization. If pathname is a directory, it reads from <pathname>/default.profdata. Otherwise, it reads from file <pathname>.
-fprotect-parens Determines whether the optimizer honors parentheses when floating-point expressions are evaluated
-fpseudo-probe-for-profiling
Emit pseudo probes for sample profiling
-freciprocal-math Allow division operations to be reassociated
-freg-struct-return Override the default ABI to return small structs in registers
-fregister-global-dtors-with-atexit
Use atexit or __cxa_atexit to register global destructors
-frelaxed-template-template-args
Enable C++17 relaxed template template argument matching
-freroll-loops Turn on loop reroller
-fropi Generate read-only position independent code (ARM only)
-frtlib-add-rpath Add -rpath with architecture-specific resource directory to the linker flags
-frwpi Generate read-write position independent code (ARM only)
-fsanitize-address-destructor=<value>
Set destructor type used in ASan instrumentation
-fsanitize-address-field-padding=<value>
Level of field padding for AddressSanitizer
-fsanitize-address-globals-dead-stripping
Enable linker dead stripping of globals in AddressSanitizer
-fsanitize-address-outline-instrumentation
Always generate function calls for address sanitizer instrumentation
-fsanitize-address-poison-custom-array-cookie
Enable poisoning array cookies when using custom operator new[] in AddressSanitizer
-fsanitize-address-use-after-return=<mode>
Select the mode of detecting stack use-after-return in AddressSanitizer: never | runtime (default) | always
-fsanitize-address-use-after-scope
Enable use-after-scope detection in AddressSanitizer
-fsanitize-address-use-odr-indicator
Enable ODR indicator globals to avoid false ODR violation reports in partially sanitized programs at the cost of an increase in binary size
-fsanitize-blacklist=<value>
Alias for -fsanitize-ignorelist=
-fsanitize-cfi-canonical-jump-tables
Make the jump table addresses canonical in the symbol table
-fsanitize-cfi-cross-dso
Enable control flow integrity (CFI) checks for cross-DSO calls.
-fsanitize-cfi-icall-generalize-pointers
Generalize pointers in CFI indirect call type signature checks
-fsanitize-coverage-allowlist=<value>
Restrict sanitizer coverage instrumentation exclusively to modules and functions that match the provided special case list, except the blocked ones
-fsanitize-coverage-blacklist=<value>
Deprecated, use -fsanitize-coverage-ignorelist= instead
-fsanitize-coverage-ignorelist=<value>
Disable sanitizer coverage instrumentation for modules and functions that match the provided special case list, even the allowed ones
-fsanitize-coverage-whitelist=<value>
Deprecated, use -fsanitize-coverage-allowlist= instead
-fsanitize-coverage=<value>
Specify the type of coverage instrumentation for Sanitizers
-fsanitize-hwaddress-abi=<value>
Select the HWAddressSanitizer ABI to target (interceptor or platform, default interceptor). This option is currently unused.
-fsanitize-hwaddress-experimental-aliasing
Enable aliasing mode in HWAddressSanitizer
-fsanitize-ignorelist=<value>
Path to ignorelist file for sanitizers
-fsanitize-memory-param-retval
Enable detection of uninitialized parameters and return values
-fsanitize-memory-track-origins=<value>
Enable origins tracking in MemorySanitizer
-fsanitize-memory-track-origins
Enable origins tracking in MemorySanitizer
-fsanitize-memory-use-after-dtor
Enable use-after-destroy detection in MemorySanitizer
-fsanitize-recover=<value>
Enable recovery for specified sanitizers
-fsanitize-stats Enable sanitizer statistics gathering.
-fsanitize-system-blacklist=<value>
Alias for -fsanitize-system-ignorelist=
-fsanitize-system-ignorelist=<value>
Path to system ignorelist file for sanitizers
-fsanitize-thread-atomics
Enable atomic operations instrumentation in ThreadSanitizer (default)
-fsanitize-thread-func-entry-exit
Enable function entry/exit instrumentation in ThreadSanitizer (default)
-fsanitize-thread-memory-access
Enable memory access instrumentation in ThreadSanitizer (default)
-fsanitize-trap=<value> Enable trapping for specified sanitizers
-fsanitize-trap Enable trapping for all sanitizers
-fsanitize-undefined-strip-path-components=<number>
Strip (or keep only, if negative) a given number of path components when emitting check metadata.
-fsanitize=<check> Turn on runtime checks for various forms of undefined or suspicious behavior. See user manual for available checks
-fsave-optimization-record=<format>
Generate an optimization record file in a specific format
-fsave-optimization-record
Generate a YAML optimization record file
-fseh-exceptions Use SEH style exceptions
-fshort-enums Allocate to an enum type only as many bytes as it needs for the declared range of possible values
-fshort-wchar Force wchar_t to be a short unsigned int
-fshow-overloads=<value>
Which overload candidates to show when overload resolution fails: best|all; defaults to all
-fshow-skipped-includes Show skipped includes in -H output.
-fsigned-char char is signed
-fsized-deallocation Enable C++14 sized global deallocation functions
-fsjlj-exceptions Use SjLj style exceptions
-fslp-vectorize Enable the superword-level parallelism vectorization passes
-fsplit-dwarf-inlining Provide minimal debug info in the object/executable to facilitate online symbolication/stack traces in the absence of .dwo/.dwp files when using Split DWARF
-fsplit-lto-unit Enables splitting of the LTO unit
-fsplit-machine-functions
Enable late function splitting using profile information (x86 ELF)
-fsplit-stack Use segmented stack
-fstack-clash-protection
Enable stack clash protection
-fstack-protector-all Enable stack protectors for all functions
-fstack-protector-strong
Enable stack protectors for some functions vulnerable to stack smashing. Compared to -fstack-protector, this uses a stronger heuristic that includes functions containing arrays of any size (and any type), as well as any calls to alloca or the taking of an address from a local variable
-fstack-protector Enable stack protectors for some functions vulnerable to stack smashing. This uses a loose heuristic which considers functions vulnerable if they contain a char (or 8bit integer) array or constant sized calls to alloca , which are of greater size than ssp-buffer-size (default: 8 bytes). All variable sized calls to alloca are considered vulnerable. A function with a stack protector has a guard value added to the stack frame that is checked on function exit. The guard value must be positioned in the stack frame such that a buffer overflow from a vulnerable variable will overwrite the guard value before overwriting the function's return address. The reference stack guard value is stored in a global variable.
-fstack-size-section Emit section containing metadata on function stack sizes
-fstack-usage Emit .su file containing information on function stack sizes
-fstandalone-debug Emit full debug info for all types used by the program
-fstrict-enums Enable optimizations based on the strict definition of an enum's value range
-fstrict-float-cast-overflow
Assume that overflowing float-to-int casts are undefined (default)
-fstrict-vtable-pointers
Enable optimizations based on the strict rules for overwriting polymorphic C++ objects
-fswift-async-fp=<option>
Control emission of Swift async extended frame info (option: auto, always, never)
-fsycl Enables SYCL kernels compilation for device
-fsystem-module Build this module as a system module. Only used with -emit-module
-fthin-link-bitcode=<value>
Write minimized bitcode to <file> for the ThinLTO thin link only
-fthinlto-index=<value> Perform ThinLTO importing using provided function summary index
-ftime-report=<value> (For new pass manager) "per-pass": one report for each pass; "per-pass-run": one report for each pass invocation
-ftime-trace-granularity=<value>
Minimum time granularity (in microseconds) traced by time profiler
-ftime-trace Turn on time profiler. Generates JSON file based on output filename.
-ftrap-function=<value> Issue call to specified function rather than a trap instruction
-ftrapv-handler=<function name>
Specify the function to be called on overflow
-ftrapv Trap on integer overflow
-ftrigraphs Process trigraph sequences
-ftrivial-auto-var-init-stop-after=<value>
Stop initializing trivial automatic stack variables after the specified number of instances
-ftrivial-auto-var-init=<value>
Initialize trivial automatic stack variables: uninitialized (default) | pattern
-funique-basic-block-section-names
Use unique names for basic block sections (ELF Only)
-funique-internal-linkage-names
Uniqueify Internal Linkage Symbol Names by appending the MD5 hash of the module path
-funroll-loops Turn on loop unroller
-fuse-cuid=<value> Method to generate ID's for compilation units for single source offloading languages CUDA and HIP: 'hash' (ID's generated by hashing file path and command line options) | 'random' (ID's generated as random numbers) | 'none' (disabled). Default is 'hash'. This option will be overridden by option '-cuid=[ID]' if it is specified.
-fuse-line-directives Use #line in preprocessed output
-fvalidate-ast-input-files-content
Compute and store the hash of input files used to build an AST. Files with mismatching mtime's are considered valid if both contents is identical
-fveclib=<value> Use the given vector functions library
-fvectorize Enable the loop vectorization passes
-fverbose-asm Generate verbose assembly output
-fvirtual-function-elimination
Enables dead virtual function elimination optimization. Requires -flto=full
-fvisibility-dllexport=<value>
The visibility for dllexport definitions [-fvisibility-from-dllstorageclass]
-fvisibility-externs-dllimport=<value>
The visibility for dllimport external declarations [-fvisibility-from-dllstorageclass]
-fvisibility-externs-nodllstorageclass=<value>
The visibility for external declarations without an explicit DLL dllstorageclass [-fvisibility-from-dllstorageclass]
-fvisibility-from-dllstorageclass
Set the visibility of symbols in the generated code from their DLL storage class
-fvisibility-global-new-delete-hidden
Give global C++ operator new and delete declarations hidden visibility
-fvisibility-inlines-hidden-static-local-var
When -fvisibility-inlines-hidden is enabled, static variables in inline C++ member functions will also be given hidden visibility by default
-fvisibility-inlines-hidden
Give inline C++ member functions hidden visibility by default
-fvisibility-ms-compat Give global types 'default' visibility and global functions and variables 'hidden' visibility by default
-fvisibility-nodllstorageclass=<value>
The visibility for defintiions without an explicit DLL export class [-fvisibility-from-dllstorageclass]
-fvisibility=<value> Set the default symbol visibility for all global declarations
-fwasm-exceptions Use WebAssembly style exceptions
-fwhole-program-vtables Enables whole-program vtable optimization. Requires -flto
-fwrapv Treat signed integer overflow as two's complement
-fwritable-strings Store string literals as writable data
-fxl-pragma-pack Enable IBM XL #pragma pack handling
-fxray-always-emit-customevents
Always emit __xray_customevent(...) calls even if the containing function is not always instrumented
-fxray-always-emit-typedevents
Always emit __xray_typedevent(...) calls even if the containing function is not always instrumented
-fxray-always-instrument= <value>
DEPRECATED: Filename defining the whitelist for imbuing the 'always instrument' XRay attribute.
-fxray-attr-list= <value>
Filename defining the list of functions/types for imbuing XRay attributes.
-fxray-function-groups=<value>
Only instrument 1 of N groups
-fxray-ignore-loops Don't instrument functions with loops unless they also meet the minimum function size
-fxray-instruction-threshold= <value>
Sets the minimum function size to instrument with XRay
-fxray-instrumentation-bundle= <value>
Select which XRay instrumentation points to emit. Options: all, none, function-entry, function-exit, function, custom. Default is 'all'. 'function' includes both 'function-entry' and 'function-exit'.
-fxray-instrument Generate XRay instrumentation sleds on function entry and exit
-fxray-link-deps Tells clang to add the link dependencies for XRay.
-fxray-modes= <value> List of modes to link in by default into XRay instrumented binaries.
-fxray-never-instrument= <value>
DEPRECATED: Filename defining the whitelist for imbuing the 'never instrument' XRay attribute.
-fxray-selected-function-group=<value>
When using -fxray-function-groups, select which group of functions to instrument. Valid range is 0 to fxray-function-groups - 1
-fzvector Enable System z vector language extension
-F <value> Add directory to framework include search path
--gcc-toolchain=<value> Search for GCC installation in the specified directory on targets which commonly use GCC. The directory usually contains 'lib{,32,64}/gcc{,-cross}/$triple' and 'include'. If specified, sysroot is skipped for GCC detection. Note: executables (e.g. ld) used by the compiler are not overridden by the selected GCC installation
-gcodeview-ghash Emit type record hashes in a .debug$H section
-gcodeview Generate CodeView debug information
-gdwarf-2 Generate source-level debug information with dwarf version 2
-gdwarf-3 Generate source-level debug information with dwarf version 3
-gdwarf-4 Generate source-level debug information with dwarf version 4
-gdwarf-5 Generate source-level debug information with dwarf version 5
-gdwarf32 Enables DWARF32 format for ELF binaries, if debug information emission is enabled.
-gdwarf64 Enables DWARF64 format for ELF binaries, if debug information emission is enabled.
-gdwarf Generate source-level debug information with the default dwarf version
-gembed-source Embed source text in DWARF debug sections
-gline-directives-only Emit debug line info directives only
-gline-tables-only Emit debug line number tables only
-gmodules Generate debug info with external references to clang modules or precompiled headers