Home | History | Annotate | Line # | Download | only in hwasan
      1      1.1  mrg //===-- hwasan_flags.inc ----------------------------------------*- C++ -*-===//
      2      1.1  mrg //
      3      1.1  mrg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
      4      1.1  mrg // See https://llvm.org/LICENSE.txt for license information.
      5      1.1  mrg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
      6      1.1  mrg //
      7      1.1  mrg //===----------------------------------------------------------------------===//
      8      1.1  mrg //
      9      1.1  mrg // Hwasan runtime flags.
     10      1.1  mrg //
     11      1.1  mrg //===----------------------------------------------------------------------===//
     12      1.1  mrg #ifndef HWASAN_FLAG
     13      1.1  mrg # error "Define HWASAN_FLAG prior to including this file!"
     14      1.1  mrg #endif
     15      1.1  mrg 
     16      1.1  mrg // HWASAN_FLAG(Type, Name, DefaultValue, Description)
     17      1.1  mrg // See COMMON_FLAG in sanitizer_flags.inc for more details.
     18      1.1  mrg 
     19      1.1  mrg HWASAN_FLAG(bool, verbose_threads, false,
     20      1.1  mrg             "inform on thread creation/destruction")
     21      1.1  mrg HWASAN_FLAG(bool, tag_in_malloc, true, "")
     22      1.1  mrg HWASAN_FLAG(bool, tag_in_free, true, "")
     23      1.1  mrg HWASAN_FLAG(bool, print_stats, false, "")
     24      1.1  mrg HWASAN_FLAG(bool, halt_on_error, true, "")
     25      1.1  mrg HWASAN_FLAG(bool, atexit, false, "")
     26  1.1.1.2  mrg HWASAN_FLAG(
     27  1.1.1.2  mrg     bool, print_live_threads_info, true,
     28  1.1.1.2  mrg     "If set, prints the remaining threads in report as an extra information.")
     29      1.1  mrg 
     30      1.1  mrg // Test only flag to disable malloc/realloc/free memory tagging on startup.
     31      1.1  mrg // Tagging can be reenabled with __hwasan_enable_allocator_tagging().
     32      1.1  mrg HWASAN_FLAG(bool, disable_allocator_tagging, false, "")
     33      1.1  mrg 
     34      1.1  mrg // If false, use simple increment of a thread local counter to generate new
     35      1.1  mrg // tags.
     36      1.1  mrg HWASAN_FLAG(bool, random_tags, true, "")
     37      1.1  mrg 
     38      1.1  mrg HWASAN_FLAG(
     39      1.1  mrg     int, max_malloc_fill_size, 0,
     40      1.1  mrg     "HWASan allocator flag. max_malloc_fill_size is the maximal amount of "
     41      1.1  mrg     "bytes that will be filled with malloc_fill_byte on malloc.")
     42      1.1  mrg 
     43      1.1  mrg HWASAN_FLAG(bool, free_checks_tail_magic, 1,
     44      1.1  mrg     "If set, free() will check the magic values "
     45  1.1.1.2  mrg     "after the allocated object "
     46      1.1  mrg     "if the allocation size is not a divident of the granule size")
     47      1.1  mrg HWASAN_FLAG(
     48      1.1  mrg     int, max_free_fill_size, 0,
     49      1.1  mrg     "HWASan allocator flag. max_free_fill_size is the maximal amount of "
     50      1.1  mrg     "bytes that will be filled with free_fill_byte during free.")
     51      1.1  mrg HWASAN_FLAG(int, malloc_fill_byte, 0xbe,
     52      1.1  mrg           "Value used to fill the newly allocated memory.")
     53      1.1  mrg HWASAN_FLAG(int, free_fill_byte, 0x55,
     54      1.1  mrg           "Value used to fill deallocated memory.")
     55      1.1  mrg HWASAN_FLAG(int, heap_history_size, 1023,
     56      1.1  mrg           "The number of heap (de)allocations remembered per thread. "
     57      1.1  mrg           "Affects the quality of heap-related reports, but not the ability "
     58      1.1  mrg           "to find bugs.")
     59      1.1  mrg HWASAN_FLAG(bool, export_memory_stats, true,
     60      1.1  mrg             "Export up-to-date memory stats through /proc")
     61      1.1  mrg HWASAN_FLAG(int, stack_history_size, 1024,
     62      1.1  mrg             "The number of stack frames remembered per thread. "
     63      1.1  mrg             "Affects the quality of stack-related reports, but not the ability "
     64      1.1  mrg             "to find bugs.")
     65      1.1  mrg 
     66      1.1  mrg // Malloc / free bisection. Only tag malloc and free calls when a hash of
     67      1.1  mrg // allocation size and stack trace is between malloc_bisect_left and
     68      1.1  mrg // malloc_bisect_right (both inclusive). [0, 0] range is special and disables
     69      1.1  mrg // bisection (i.e. everything is tagged). Once the range is narrowed down
     70      1.1  mrg // enough, use malloc_bisect_dump to see interesting allocations.
     71      1.1  mrg HWASAN_FLAG(uptr, malloc_bisect_left, 0,
     72      1.1  mrg             "Left bound of malloc bisection, inclusive.")
     73      1.1  mrg HWASAN_FLAG(uptr, malloc_bisect_right, 0,
     74      1.1  mrg             "Right bound of malloc bisection, inclusive.")
     75      1.1  mrg HWASAN_FLAG(bool, malloc_bisect_dump, false,
     76      1.1  mrg             "Print all allocations within [malloc_bisect_left, "
     77      1.1  mrg             "malloc_bisect_right] range ")
     78      1.1  mrg 
     79      1.1  mrg 
     80      1.1  mrg // Exit if we fail to enable the AArch64 kernel ABI relaxation which allows
     81      1.1  mrg // tagged pointers in syscalls.  This is the default, but being able to disable
     82      1.1  mrg // that behaviour is useful for running the testsuite on more platforms (the
     83      1.1  mrg // testsuite can run since we manually ensure any pointer arguments to syscalls
     84      1.1  mrg // are untagged before the call.
     85      1.1  mrg HWASAN_FLAG(bool, fail_without_syscall_abi, true,
     86      1.1  mrg             "Exit if fail to request relaxed syscall ABI.")
     87