blob: 058a0457b9e7f65d3a39103a18eab6e948a28644 [file] [log] [blame]
Vitaly Bukaa3cd67c2019-09-12 01:35:091//===-- hwasan_flags.inc ----------------------------------------*- C++ -*-===//
Evgeniy Stepanov9595d162017-12-09 01:31:512//
Chandler Carruth2946cd72019-01-19 08:50:563// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Evgeniy Stepanov9595d162017-12-09 01:31:516//
7//===----------------------------------------------------------------------===//
8//
9// Hwasan runtime flags.
10//
11//===----------------------------------------------------------------------===//
12#ifndef HWASAN_FLAG
13# error "Define HWASAN_FLAG prior to including this file!"
14#endif
15
16// HWASAN_FLAG(Type, Name, DefaultValue, Description)
17// See COMMON_FLAG in sanitizer_flags.inc for more details.
18
Kostya Serebryany3d8f49a2018-09-04 23:26:0819HWASAN_FLAG(bool, verbose_threads, false,
20 "inform on thread creation/destruction")
Evgeniy Stepanov9595d162017-12-09 01:31:5121HWASAN_FLAG(bool, tag_in_malloc, true, "")
22HWASAN_FLAG(bool, tag_in_free, true, "")
Evgeniy Stepanov9595d162017-12-09 01:31:5123HWASAN_FLAG(bool, print_stats, false, "")
24HWASAN_FLAG(bool, halt_on_error, true, "")
25HWASAN_FLAG(bool, atexit, false, "")
Enna1b720a592023-04-19 11:27:2626HWASAN_FLAG(
27 bool, print_live_threads_info, true,
28 "If set, prints the remaining threads in report as an extra information.")
Evgeniy Stepanov9595d162017-12-09 01:31:5129
30// Test only flag to disable malloc/realloc/free memory tagging on startup.
31// Tagging can be reenabled with __hwasan_enable_allocator_tagging().
32HWASAN_FLAG(bool, disable_allocator_tagging, false, "")
Evgeniy Stepanov29e3f5b2018-01-10 19:36:1033
34// If false, use simple increment of a thread local counter to generate new
35// tags.
36HWASAN_FLAG(bool, random_tags, true, "")
Evgeniy Stepanovfa9f7852018-08-16 20:13:0937
38HWASAN_FLAG(
Evgenii Stepanovd1a6e4d2020-06-05 17:57:4439 int, max_malloc_fill_size, 0,
Evgeniy Stepanovfa9f7852018-08-16 20:13:0940 "HWASan allocator flag. max_malloc_fill_size is the maximal amount of "
41 "bytes that will be filled with malloc_fill_byte on malloc.")
Kostya Serebryanyba5c7162018-11-16 19:38:4842
Kostya Serebryanyc265e762018-11-17 00:25:1743HWASAN_FLAG(bool, free_checks_tail_magic, 1,
44 "If set, free() will check the magic values "
Florian Mayer9006b082022-08-24 23:40:2645 "after the allocated object "
Kostya Serebryanyc265e762018-11-17 00:25:1746 "if the allocation size is not a divident of the granule size")
Evgeniy Stepanovfa9f7852018-08-16 20:13:0947HWASAN_FLAG(
48 int, max_free_fill_size, 0,
49 "HWASan allocator flag. max_free_fill_size is the maximal amount of "
50 "bytes that will be filled with free_fill_byte during free.")
51HWASAN_FLAG(int, malloc_fill_byte, 0xbe,
52 "Value used to fill the newly allocated memory.")
53HWASAN_FLAG(int, free_fill_byte, 0x55,
54 "Value used to fill deallocated memory.")
Kostya Serebryany51e1a832018-08-29 21:07:0755HWASAN_FLAG(int, heap_history_size, 1023,
56 "The number of heap (de)allocations remembered per thread. "
57 "Affects the quality of heap-related reports, but not the ability "
58 "to find bugs.")
Evgeniy Stepanovd263cb82018-09-08 00:11:1259HWASAN_FLAG(bool, export_memory_stats, true,
60 "Export up-to-date memory stats through /proc")
Evgeniy Stepanov090f0f92018-09-24 23:03:3461HWASAN_FLAG(int, stack_history_size, 1024,
62 "The number of stack frames remembered per thread. "
63 "Affects the quality of stack-related reports, but not the ability "
64 "to find bugs.")
Evgeniy Stepanova70d88c2019-02-15 18:38:1465
66// Malloc / free bisection. Only tag malloc and free calls when a hash of
67// allocation size and stack trace is between malloc_bisect_left and
68// malloc_bisect_right (both inclusive). [0, 0] range is special and disables
69// bisection (i.e. everything is tagged). Once the range is narrowed down
70// enough, use malloc_bisect_dump to see interesting allocations.
71HWASAN_FLAG(uptr, malloc_bisect_left, 0,
72 "Left bound of malloc bisection, inclusive.")
73HWASAN_FLAG(uptr, malloc_bisect_right, 0,
74 "Right bound of malloc bisection, inclusive.")
75HWASAN_FLAG(bool, malloc_bisect_dump, false,
76 "Print all allocations within [malloc_bisect_left, "
77 "malloc_bisect_right] range ")
Matthew Malcomsonc1653b82021-02-19 16:19:3778
79
80// Exit if we fail to enable the AArch64 kernel ABI relaxation which allows
81// tagged pointers in syscalls. This is the default, but being able to disable
82// that behaviour is useful for running the testsuite on more platforms (the
83// testsuite can run since we manually ensure any pointer arguments to syscalls
84// are untagged before the call.
85HWASAN_FLAG(bool, fail_without_syscall_abi, true,
Vitaly Bukac88c4602021-02-27 03:40:1086 "Exit if fail to request relaxed syscall ABI.")
Thurston Dang0ca05e82024-06-14 00:47:0487
88HWASAN_FLAG(
89 uptr, fixed_shadow_base, -1,
90 "If not -1, HWASan will attempt to allocate the shadow at this address, "
91 "instead of choosing one dynamically."
92 "Tip: this can be combined with the compiler option, "
93 "-hwasan-mapping-offset, to optimize the instrumentation.")