186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines//===-- sanitizer_flags.h ---------------------------------------*- C++ -*-===// 286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// 386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// The LLVM Compiler Infrastructure 486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// 586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// This file is distributed under the University of Illinois Open Source 686277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// License. See LICENSE.TXT for details. 786277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// 886277eb844c4983c81de62d7c050e92fe7155788Stephen Hines//===----------------------------------------------------------------------===// 986277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// 1086277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// This file describes common flags available in all sanitizers. 1186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// 1286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines//===----------------------------------------------------------------------===// 1386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines#ifndef COMMON_FLAG 1486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines#error "Define COMMON_FLAG prior to including this file!" 1586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines#endif 1686277eb844c4983c81de62d7c050e92fe7155788Stephen Hines 1786277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// COMMON_FLAG(Type, Name, DefaultValue, Description) 1886277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// Supported types: bool, const char *, int, uptr. 1986277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// Default value must be a compile-time constant. 2086277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// Description must be a string literal. 2186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines 2286277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG( 2386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines bool, symbolize, true, 2486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If set, use the online symbolizer from common sanitizer runtime to turn " 2586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "virtual addresses to file/line locations.") 2686277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG( 2786277eb844c4983c81de62d7c050e92fe7155788Stephen Hines const char *, external_symbolizer_path, 0, 2886277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Path to external symbolizer. If empty, the tool will search $PATH for " 2986277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "the symbolizer.") 3086277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG( 3186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines bool, allow_addr2line, false, 3286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If set, allows online symbolizer to run addr2line binary to symbolize " 3386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "stack traces (addr2line will only be used if llvm-symbolizer binary is " 3486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "unavailable.") 3586277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(const char *, strip_path_prefix, "", 3686277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Strips this prefix from file paths in error reports.") 3786277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, fast_unwind_on_check, false, 3886277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If available, use the fast frame-pointer-based unwinder on " 3986277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "internal CHECK failures.") 4086277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, fast_unwind_on_fatal, false, 4186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If available, use the fast frame-pointer-based unwinder on fatal " 4286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "errors.") 4386277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, fast_unwind_on_malloc, true, 4486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If available, use the fast frame-pointer-based unwinder on " 4586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "malloc/free.") 4686277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, handle_ioctl, false, "Intercept and handle ioctl requests.") 4786277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(int, malloc_context_size, 1, 4886277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Max number of stack frames kept for each allocation/deallocation.") 4986277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG( 5086277eb844c4983c81de62d7c050e92fe7155788Stephen Hines const char *, log_path, "stderr", 5186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Write logs to \"log_path.pid\". The special values are \"stdout\" and " 5286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "\"stderr\". The default is \"stderr\".") 5386277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG( 5486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines int, verbosity, 0, 5586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Verbosity level (0 - silent, 1 - a bit of output, 2+ - more output).") 5686277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, detect_leaks, true, "Enable memory leak detection.") 5786277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG( 5886277eb844c4983c81de62d7c050e92fe7155788Stephen Hines bool, leak_check_at_exit, true, 5986277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Invoke leak checking in an atexit handler. Has no effect if " 6086277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "detect_leaks=false, or if __lsan_do_leak_check() is called before the " 6186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "handler has a chance to run.") 6286277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, allocator_may_return_null, false, 6386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If false, the allocator will crash instead of returning 0 on " 6486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "out-of-memory.") 6586277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, print_summary, true, 6686277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If false, disable printing error summaries in addition to error " 6786277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "reports.") 6886277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, check_printf, true, "Check printf arguments.") 6986277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, handle_segv, SANITIZER_NEEDS_SEGV, 7086277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If set, registers the tool's custom SEGV handler (both SIGBUS and " 7186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "SIGSEGV on OSX).") 7286277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, allow_user_segv_handler, false, 7386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If set, allows user to register a SEGV handler even if the tool " 7486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "registers one.") 7586277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, use_sigaltstack, true, 7686277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If set, uses alternate stack for signal handling.") 7786277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, detect_deadlocks, false, 7886277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If set, deadlock detection is enabled.") 7986277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG( 8086277eb844c4983c81de62d7c050e92fe7155788Stephen Hines uptr, clear_shadow_mmap_threshold, 64 * 1024, 8186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Large shadow regions are zero-filled using mmap(NORESERVE) instead of " 8286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "memset(). This is the threshold size in bytes.") 8386277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(const char *, color, "auto", 8486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Colorize reports: (always|never|auto).") 8586277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG( 8686277eb844c4983c81de62d7c050e92fe7155788Stephen Hines bool, legacy_pthread_cond, false, 8786277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Enables support for dynamic libraries linked with libpthread 2.2.5.") 8886277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, intercept_tls_get_addr, false, "Intercept __tls_get_addr.") 8986277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, help, false, "Print the flag descriptions.") 9086277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(uptr, mmap_limit_mb, 0, 9186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Limit the amount of mmap-ed memory (excluding shadow) in Mb; " 9286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "not a user-facing flag, used mosly for testing the tools") 9386277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(uptr, hard_rss_limit_mb, 0, 9486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Hard RSS limit in Mb." 9586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines " If non-zero, a background thread is spawned at startup" 9686277eb844c4983c81de62d7c050e92fe7155788Stephen Hines " which periodically reads RSS and aborts the process if the" 9786277eb844c4983c81de62d7c050e92fe7155788Stephen Hines " limit is reached") 9886277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(uptr, soft_rss_limit_mb, 0, 9986277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Soft RSS limit in Mb." 10086277eb844c4983c81de62d7c050e92fe7155788Stephen Hines " If non-zero, a background thread is spawned at startup" 10186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines " which periodically reads RSS. If the limit is reached" 10286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines " all subsequent malloc/new calls will fail or return NULL" 10386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines " (depending on the value of allocator_may_return_null)" 10486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines " until the RSS goes below the soft limit." 10586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines " This limit does not affect memory allocations other than" 10686277eb844c4983c81de62d7c050e92fe7155788Stephen Hines " malloc/new.") 10786277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, can_use_proc_maps_statm, true, 10886277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If false, do not attempt to read /proc/maps/statm." 10986277eb844c4983c81de62d7c050e92fe7155788Stephen Hines " Mostly useful for testing sanitizers.") 11086277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG( 11186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines bool, coverage, false, 11286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If set, coverage information will be dumped at program shutdown (if the " 11386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "coverage instrumentation was enabled at compile time).") 11486277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, coverage_pcs, true, 11586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If set (and if 'coverage' is set too), the coverage information " 11686277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "will be dumped as a set of PC offsets for every module.") 1177c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga NainarCOMMON_FLAG(bool, coverage_order_pcs, false, 1187c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar "If true, the PCs will be dumped in the order they've" 1197c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar " appeared during the execution.") 12086277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, coverage_bitset, false, 12186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If set (and if 'coverage' is set too), the coverage information " 12286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "will also be dumped as a bitset to a separate file.") 1237c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga NainarCOMMON_FLAG(bool, coverage_counters, false, 1247c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar "If set (and if 'coverage' is set too), the bitmap that corresponds" 1257c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar " to coverage counters will be dumped.") 12686277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, coverage_direct, SANITIZER_ANDROID, 12786277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If set, coverage information will be dumped directly to a memory " 12886277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "mapped file. This way data is not lost even if the process is " 12986277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "suddenly killed.") 13086277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(const char *, coverage_dir, ".", 13186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Target directory for coverage dumps. Defaults to the current " 13286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "directory.") 13386277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, full_address_space, false, 13486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Sanitize complete address space; " 13586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "by default kernel area on 32-bit platforms will not be sanitized") 13686277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, print_suppressions, true, 13786277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Print matched suppressions at exit.") 13886277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG( 13986277eb844c4983c81de62d7c050e92fe7155788Stephen Hines bool, disable_coredump, (SANITIZER_WORDSIZE == 64), 14086277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Disable core dumping. By default, disable_core=1 on 64-bit to avoid " 14186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "dumping a 16T+ core file. Ignored on OSes that don't dump core by" 14286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "default and for sanitizers that don't reserve lots of virtual memory.") 14386277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, use_madv_dontdump, true, 14486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If set, instructs kernel to not store the (huge) shadow " 14586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "in core file.") 14686277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, symbolize_inline_frames, true, 14786277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Print inlined frames in stacktraces. Defaults to true.") 14886277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(const char *, stack_trace_format, "DEFAULT", 14986277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Format string used to render stack frames. " 15086277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "See sanitizer_stacktrace_printer.h for the format description. " 15186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "Use DEFAULT to get default format.") 15286277eb844c4983c81de62d7c050e92fe7155788Stephen HinesCOMMON_FLAG(bool, no_huge_pages_for_shadow, true, 15386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines "If true, the shadow is not allowed to use huge pages. ") 154909fff81b83df049ecc6e02407394640435d7befPirama Arumuga NainarCOMMON_FLAG(bool, strict_string_checks, false, 155909fff81b83df049ecc6e02407394640435d7befPirama Arumuga Nainar "If set check that string arguments are properly null-terminated") 156