SANCOV(1)
๐ NAME ๐
sancov โ manual page for sancov 11
๐ฆ DESCRIPTION ๐ฆ
OVERVIEW: Sanitizer Coverage Processing Tool (sancov)
okay so bestie, this tool is literally the main character for extracting coverage-related info from: coverage-instrumented binary files, raw .sancov files and their symbolized .symcov version. Depending on chosen action the tool expects different input files:
-print-coverage-pcsโ coverage-instrumented binary files-print-coverageโ.sancovfiles<other actions>โ.sancovfiles & corresponding binary files,.symcovfiles
USAGE:
sancov [options] <action> <binary files...> <.sancov files...> <.symcov files...>
๐ OPTIONS ๐
๐จ Color Options ๐จ
--colorโ Use colors in output (default=autodetect). yes bestie, make it pop ๐
๐ General options ๐
--aarch64-neon-syntax=<value>โ Choose style of NEON code to emit from AArch64 backend:=genericโ Emit generic NEON assembly=appleโ Emit Apple-style NEON assembly
--amdgpu-bypass-slow-divโ skip the 64-bit divide for dynamic 32-bit values, bestie, it's giving speed ๐--amdgpu-disable-loop-alignmentโ do not align and prefetch loops, periodt--amdgpu-disable-power-schedโ disable scheduling to minimize mAI power bursts, no cap--amdgpu-dpp-combineโ enable DPP combiner, slay โจ--amdgpu-dump-hsa-metadataโ dump AMDGPU HSA Metadata, iconic--amdgpu-enable-global-sgpr-addrโ enable use of SGPR regs for GLOBAL LOAD/STORE instructions, fr fr--amdgpu-enable-merge-m0โ merge and hoist M0 initializations, lowkey useful--amdgpu-promote-alloca-to-vector-limit=<uint>โ maximum byte size to consider promote alloca to vector, iykyk--amdgpu-reserve-vgpr-for-sgpr-spillโ allocates one VGPR for future SGPR Spill, bestie--amdgpu-sdwa-peepholeโ enable SDWA peepholer, periodt--amdgpu-verify-hsa-metadataโ verify AMDGPU HSA Metadata, no cap--amdgpu-vgpr-index-modeโ use GPR indexing mode instead of movrel for vector indexing, it's giving efficiency--arm-add-build-attributesโ (no description, just vibes ๐ )--arm-implicit-it=<value>โ allow conditional instructions outdside of an IT block, bestie=alwaysโ accept in both ISAs, emit implicit ITs in Thumb=neverโ warn in ARM, reject in Thumb=armโ accept in ARM, reject in Thumb=thumbโ warn in ARM, emit implicit ITs in Thumb
--atomic-counter-update-promotedโ do counter update using atomic fetch add for promoted counters only, fr fr--atomic-first-counterโ use atomic fetch add for first counter in a function (usually the entry counter), slay--blacklist=<string>โ blacklist file (sanitizer blacklist format). periodt--bounds-checking-single-trapโ use one trap block per function, no cap--cfg-hide-deoptimize-pathsโ (no description, bestie, it's giving mystery โจ)--cfg-hide-unreachable-pathsโ (no description, just vibes ๐ )--cost-kind=<value>โ target cost kind, iykyk=throughputโ reciprocal throughput=latencyโ instruction latency=code-sizeโ code size
๐ฌ Action (required) ๐ฌ
bestie, you literally have to pick one action, no cap.
--printโ print coverage addresses, bestie--print-coverage-pcsโ print coverage instrumentation points addresses. periodt--covered-functionsโ print all covered funcions. (yes, funcions, we said what we said) ๐ญ--not-covered-functionsโ print all not covered funcions. same energy ๐--print-coverage-statsโ print coverage statistics. iconic--html-reportโ REMOVED. Use-symbolize&coverage-report-server.py. it's gone, bestie ๐ซถ--symbolizeโ produces a symbolized JSON report from binary report. slay--mergeโ merges reports. no cap--cvp-dont-add-nowrap-flagsโ (no description, it's giving enigma ๐ซถ)--debugify-level=<value>โ kind of debug info to add, bestie=locationsโ locations only=location+variablesโ locations and Variables
--debugify-quietโ suppress verbose debugify output, periodt--demangleโ print demangled function name. fr fr--disable-promote-alloca-to-ldsโ disable promote alloca to LDS, no cap--disable-promote-alloca-to-vectorโ disable promote alloca to vector, slay--do-counter-promotionโ do counter register promotion, iconic--emscripten-cxx-exceptions-allowed=<string>โ the list of function names in which Emscripten-style exception handling is enabled (see emscripten EMSCRIPTEN_CATCHING_ALLOWED options), iykyk--enable-cse-in-irtranslatorโ should enable CSE in irtranslator, bestie--enable-cse-in-legalizerโ should enable CSE in Legalizer, periodt--enable-emscripten-cxx-exceptionsโ WebAssembly Emscripten-style exception handling, no cap--enable-emscripten-sjljโ WebAssembly Emscripten-style setjmp/longjmp handling, slay--enable-gvn-hoistโ enable the GVN hoisting pass (default = off), iconic--enable-gvn-memdepโ (no description, just vibes ๐ )--enable-gvn-sinkโ enable the GVN sinking pass (default = off), fr fr--enable-load-in-loop-preโ (no description, bestie, it's giving mystery โจ)--enable-load-preโ (no description, just vibes ๐ )--enable-loop-simplifycfg-term-foldingโ (no description, it's giving enigma ๐ซถ)--enable-name-compressionโ enable name/filename string compression, periodt--gpsize=<uint>โ Global Pointer Addressing Size. The default size is 8. no cap--hash-based-counter-splitโ rename counter variable of a comdat function based on cfg hash, bestie--hot-cold-splitโ enable hot-cold splitting pass, slay--import-all-indexโ import all external functions in index. iconic--instcombine-code-sinkingโ enable code sinking, fr fr--instcombine-guard-widening-window=<uint>โ how wide an instruction window to bypass looking for another guard, iykyk--instcombine-max-iterations=<uint>โ limit the maximum number of instruction combining iterations, no cap--instcombine-max-num-phis=<uint>โ maximum number phis to handle in intptr/ptrint folding, periodt--instcombine-maxarray-size=<uint>โ maximum array size considered when doing a combine, bestie--instcombine-negator-enabledโ should we attempt to sink negations? slay--instcombine-negator-max-depth=<uint>โ what is the maximal lookup depth when trying to check for viability of negation sinking. iconic--instrprof-atomic-counter-update-allโ make all profile counter updates atomic (for testing only), fr fr--internalize-public-api-file=<filename>โ a file containing list of symbol names to preserve, no cap--internalize-public-api-list=<list>โ a list of symbol names to preserve, periodt--iterative-counter-promotionโ allow counter promotion across the whole loop nest. bestie--lto-embed-bitcodeโ embed LLVM bitcode in object files produced by LTO, slay--lto-pass-remarks-filter=<regex>โ only record optimization remarks from passes whose names match the given regular expression, iconic--lto-pass-remarks-format=<format>โ the format used for serializing remarks (default: YAML), fr fr--lto-pass-remarks-output=<filename>โ output filename for pass remarks, no cap--matrix-default-layout=<value>โ sets the default matrix layout, periodt=column-majorโ use column-major layout=row-majorโ use row-major layout
--max-counter-promotions=<int>โ max number of allowed counter promotions, bestie--max-counter-promotions-per-loop=<uint>โ max number counter promotions per loop to avoid increasing register pressure too much, slay--memop-size-large=<uint>โ set large value thresthold in memory intrinsic size profiling. Value of 0 disables the large value profiling. iconic--memop-size-range=<string>โ set the range of size in memory intrinsic calls to be profiled precisely, in a format of<start_val>:<end_val>, fr fr--merror-missing-parenthesisโ error for missing parenthesis around predicate registers, no cap--merror-noncontigious-registerโ error for register names that aren't contigious, periodt--mhvxโ enable Hexagon Vector eXtensions, bestie--mhvx=<value>โ enable Hexagon Vector eXtensions, slay=v60โ build for HVX v60=v62โ build for HVX v62=v65โ build for HVX v65=v66โ build for HVX v66=v67โ build for HVX v67
--mips-compact-branches=<value>โ MIPS Specific: Compact branch policy. iconic=neverโ do not use compact branches if possible.=optimalโ use compact branches where appropriate (default).=alwaysโ always use compact branches if possible.
--mips16-constant-islandsโ enable mips16 constant islands. fr fr--mips16-hard-floatโ enable mips16 hard float. no cap--mir-strip-debugify-onlyโ should mir-strip-debug only strip debug info from debugified modules by default, periodt--mno-compoundโ disable looking for compound instructions for Hexagon, bestie--mno-fixupโ disable fixing up resolved relocations for Hexagon, slay--mno-ldc1-sdc1โ bestie it EXPANDS those double precision loads and stores into their single precision counterparts ๐ no more double, we go small--mno-pairingโ turns OFF the search for duplex instructions, Hexagon edition ๐ฆ--mwarn-missing-parenthesisโ yells at you when parenthesis is missing around predicate registers ๐ญ--mwarn-noncontigious-registerโ warns when register names aren't contigious (yes, spelled exactly like that, iconic behavior, we keep it) โจ--mwarn-sign-mismatchโ warns when a signed and unsigned value are mismatched, lowkey a vibe check for your types ๐--no-discriminatorsโ disables generation of discriminator information, periodt ๐--nvptx-sched4regโ NVPTX Specific: schedules for register pressue (again, the typo is the original, we do not fix, we respect) ๐--poison-checking-function-localโ checks that returns are non-poison, and it's literally for testing ๐งช--r600-ir-structurizeโ uses theStructurizeCFGIR pass ๐--rdf-dumpโ no description given, she's mysterious, she's giving main character with no lore ๐--rdf-limit=<uint>โ also no description, equally cryptic, we love an enigma ๐--runtime-counter-relocationโ enables relocating counters at runtime ๐ฅ--safepoint-ir-verifier-print-onlyโ no description, just vibes ๐ธ--sample-profile-check-record-coverage=<N>โ emits a warning if less than N% of records in the input profile are matched to the IR ๐--sample-profile-check-sample-coverage=<N>โ emits a warning if less than N% of samples in the input profile are matched to the IR ๐--sample-profile-max-propagate-iterations=<uint>โ the maximum number of iterations to go through when propagating sample block/edge weights through the CFG ๐--skip-dead-filesโ do NOT list dead source files in reports, she's ghosting them fr fr ๐ป--speculative-counter-promotion-max-exiting=<uint>โ the max number of exiting blocks of a loop to allow speculative counter promotion ๐ช--speculative-counter-promotion-to-loopโ when this option is false, if the target block is in a loop, the promotion will be disallowed unless the promoted counter update can be further/iteratively promoted into an acyclic region ๐--strip_path_prefix=<string>โ strips this prefix from file paths in reports โ๏ธ--summary-file=<string>โ the summary file to use for function importing ๐--tail-predication=<value>โ MVE tail-predication options, and she has LAYERS bestie:=disabledโ Don't tail-predicate loops=enabled-no-reductionsโ Enable tail-predication, but not for reduction loops=enabledโ Enable tail-predication, including reduction loops=force-enabled-no-reductionsโ Enable tail-predication, but not for reduction loops, and force this which might be unsafe=force-enabledโ Enable tail-predication, including reduction loops, and force this which might be unsafe
the force-enabled ones say might be unsafe right in the name, so likeโฆ she's telling you. read the label bestie ๐จ
--threads=<int>โ no description, another mystery girl ๐--verify-region-infoโ verifies region info, and it is time consuming, so budget accordingly โณ--vp-counters-per-site=<number>โ the average number of profile counters allocated per value profiling site ๐ข--vp-static-allocโ does static counter allocation for value profiler ๐งฎ--x86-align-branch=<string>โ specifies types of branches to align (plus separated list of types) โจ:jccโ indicates conditional jumpsfusedโ indicates fused conditional jumpsjmpโ indicates direct unconditional jumpscallโ indicates direct and indirect callsretโ indicates retsindirectโ indicates indirect unconditional jumps
--x86-align-branch-boundary=<uint>โ controls how the assembler should align branches with NOP. If the boundary's size is not 0, it should be a power of 2 and no less than 32. Branches will be aligned to prevent from being across or against the boundary of specified size. The default value 0 does not align branches ๐--x86-branches-within-32B-boundariesโ aligns selected instructions to mitigate negative performance impact of Intel's micro code update for errataskx102๐
May break assumptions about labels corresponding to particular instructions, and should be used with caution. so like, respectfully, be careful ๐ซถ
--x86-pad-max-prefix-size=<uint>โ maximum number of prefixes to use for padding ๐งท
๐ซถ Generic Options: ๐ซถ
the universal girlies, every program has them, and honestly? we're obsessed
--helpโ display available options (--help-hiddenfor more) ๐--help-listโ display list of available options (--help-list-hiddenfor more) ๐--versionโ display the version of this program ๐ท๏ธ
๐ Polly Options: Configure the polly loop optimizer ๐
she's the loop optimizer and she is SO iconic for it
--pollyโ enable the polly optimizer (only at-O3) ๐ฅ--polly-2nd-level-tilingโ enable a 2nd level loop of loop tiling ๐งฑ--polly-ast-print-accessesโ print memory access functions ๐--polly-context=<isl parameter set>โ provide additional constraints on the context parameters ๐ฏ--polly-dce-precise-steps=<int>โ the number of precise steps between two approximating iterations. (A value of-1schedules another approximation stage before the actual dead code elimination. ๐--polly-delicm-max-ops=<int>โ maximum number of isl operations to invest for lifetime analysis;0=no limit โพ๏ธ--polly-detect-full-functionsโ allow the detection of full functions ๐ต๏ธ--polly-dump-afterโ dump module after Polly transformations into a file suffixed with"-after"๐ค--polly-dump-after-file=<string>โ dump module after Polly transformations to the given file ๐--polly-dump-beforeโ dump module before Polly transformations into a file suffixed with"-before"๐ฅ--polly-dump-before-file=<string>โ dump module before Polly transformations to the given file ๐--polly-enable-simplifyโ simplify SCoP after optimizations โจ--polly-ignore-func=<string>โ ignore functions that match a regex. Multiple regexes can be comma separated. Scop detection will ignore all functions that match ANY of the regexes provided. ๐ซ--polly-isl-arg=<argument>โ option passed to ISL ๐--polly-on-isl-error-abortโ abort if an isl error is encountered ๐--polly-only-func=<string>โ only run on functions that match a regex. Multiple regexes can be comma separated. Scop detection will run on all functions that match ANY of the regexes provided. ๐ฏ--polly-only-region=<identifier>โ only run on certain regions (The provided identifier must appear in the name of the region's entry block ๐--polly-only-scop-detectionโ only run scop detection, but no other optimizations ๐--polly-optimized-scopsโ Polly - Dump polyhedral description of Scops optimized with the isl scheduling optimizer and the set of post-scheduling transformations is applied on the schedule tree ๐ณ--polly-parallelโ generate thread parallel code (isl codegen only) ๐งต--polly-parallel-forceโ force generation of thread parallel code ignoring any cost model ๐ช--polly-pattern-matching-based-optsโ perform optimizations based on pattern matching ๐งฉ--polly-process-unprofitableโ process scops that are unlikely to benefit from Polly optimizations. ๐คท--polly-register-tilingโ enable register tiling ๐งฑ--polly-reportโ print information about the activities of Polly ๐--polly-showโ highlight the code regions that will be optimized in a (CFG BBs and LLVM-IR instructions) ๐--polly-show-onlyโ highlight the code regions that will be optimized in a (CFG only BBs) ๐จ--polly-stmt-granularity=<value>โ algorithm to use for splitting basic blocks into multiple statements โ๏ธ=bbโ One statement per basic block=scalar-indepโ Scalar independence heuristic=storeโ Store-level granularity
--polly-target=<value>โ the hardware to target ๐ฅ๏ธ=cpuโ generate CPU code
--polly-tilingโ enable loop tiling ๐งฑ--polly-vectorizer=<value>โ select the vectorization strategy ๐๏ธ=noneโ No Vectorization=pollyโ Polly internal vectorizer=stripmineโ Strip-mine outer loops for the loop-vectorizer to trigger
okay bestie that's the whole page ๐ you read the entire thing, that's genuinely so impressive, i'm proud of you fr. this was sancov version 11, dated January 2022 โ and if you ever need her again she's right there in the SANCOV(1) manual. go forth and slay ๐ซถโจ
๐ฆ where this page comes from
- ubuntu jammy: clang-tools-11 1:11.1.0-6 ยท APACHE-2-LLVM-EXCEPTIONS
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms