27 HOST_WIDE_INT *,
tree *,
int);
72#define ASAN_SHADOW_SHIFT 3
73#define ASAN_SHADOW_GRANULARITY (1UL << ASAN_SHADOW_SHIFT)
77#define ASAN_RED_ZONE_SIZE 32
82#define ASAN_MIN_RED_ZONE_SIZE 16
90#define ASAN_STACK_MAGIC_LEFT 0xf1
91#define ASAN_STACK_MAGIC_MIDDLE 0xf2
92#define ASAN_STACK_MAGIC_RIGHT 0xf3
93#define ASAN_STACK_MAGIC_USE_AFTER_RET 0xf5
94#define ASAN_STACK_MAGIC_USE_AFTER_SCOPE 0xf8
96#define ASAN_STACK_FRAME_MAGIC 0x41b58ab3
97#define ASAN_STACK_RETIRED_MAGIC 0x45e0360e
99#define ASAN_USE_AFTER_SCOPE_ATTRIBUTE "use after scope memory"
106#define HWASAN_TAG_SIZE targetm.memtag.tag_size ()
114#define HWASAN_TAG_GRANULE_SIZE targetm.memtag.granule_size ()
119#define HWASAN_STACK_BACKGROUND gen_int_mode (0, QImode)
131#define IFN_ASAN_MARK_FLAGS DEF(POISON), DEF(UNPOISON)
135#define DEF(X) ASAN_MARK_##X
156inline unsigned HOST_WIDE_INT
163 else if (size <= 128)
165 else if (size <= 512)
167 else if (size <= 4096)
194 return fcode == BUILT_IN_MEMCMP
195 || fcode == BUILT_IN_MEMCPY
196 || fcode == BUILT_IN_MEMMOVE
197 || fcode == BUILT_IN_MEMSET;
199 return fcode == BUILT_IN_INDEX
200 || fcode == BUILT_IN_MEMCHR
201 || fcode == BUILT_IN_MEMCMP
202 || fcode == BUILT_IN_MEMCPY
203 || fcode == BUILT_IN_MEMMOVE
204 || fcode == BUILT_IN_MEMSET
205 || fcode == BUILT_IN_STRCASECMP
206 || fcode == BUILT_IN_STRCAT
207 || fcode == BUILT_IN_STRCHR
208 || fcode == BUILT_IN_STRCMP
209 || fcode == BUILT_IN_STRCPY
210 || fcode == BUILT_IN_STRDUP
211 || fcode == BUILT_IN_STRLEN
212 || fcode == BUILT_IN_STRNCASECMP
213 || fcode == BUILT_IN_STRNCAT
214 || fcode == BUILT_IN_STRNCMP
215 || fcode == BUILT_IN_STRCSPN
216 || fcode == BUILT_IN_STRPBRK
217 || fcode == BUILT_IN_STRSPN
218 || fcode == BUILT_IN_STRSTR
219 || fcode == BUILT_IN_STRNCPY;
227 return (flag_sanitize_address_use_after_scope
247 unsigned int result_flags = flag_sanitize & flag;
248 if (result_flags == 0)
266 return (flag_sanitize_coverage
hash_set< tree > * asan_used_labels
Definition asan.cc:260
bool hwasan_sanitize_stack_p()
Definition asan.cc:1857
bool hwasan_sanitize_p()
Definition asan.cc:1850
alias_set_type asan_shadow_set
Definition asan.cc:474
bool asan_sanitize_stack_p(void)
Definition asan.cc:364
hash_set< tree > * asan_handled_variables
Definition asan.cc:258
void asan_finish_file(void)
Definition asan.cc:3705
void hwasan_record_frame_init()
Definition asan.cc:4606
rtx_insn * hwasan_emit_untag_frame(rtx, rtx)
Definition asan.cc:4708
rtx_insn * asan_emit_allocas_unpoison(rtx, rtx, rtx_insn *)
Definition asan.cc:2296
void hwasan_maybe_emit_frame_base_init(void)
Definition asan.cc:4504
bool gate_hwasan(void)
Definition asan.cc:4920
bool hwasan_expand_mark_ifn(gimple_stmt_iterator *)
Definition asan.cc:4914
rtx_insn * asan_emit_stack_protection(rtx, rtx, unsigned int, HOST_WIDE_INT *, tree *, int)
Definition asan.cc:1904
bool asan_intercepted_p(enum built_in_function fcode)
Definition asan.h:189
bool asan_protect_stack_decl(tree decl)
Definition asan.h:234
bool asan_expand_check_ifn(gimple_stmt_iterator *, bool)
Definition asan.cc:3962
gimple_stmt_iterator create_cond_insert_point(gimple_stmt_iterator *, bool, bool, bool, basic_block *, basic_block *)
Definition asan.cc:2516
tree asan_dynamic_init_call(bool)
Definition asan.cc:3237
bool sanitize_coverage_p(const_tree fn=current_function_decl)
Definition asan.h:264
rtx asan_memfn_rtl(tree)
Definition asan.cc:398
#define IFN_ASAN_MARK_FLAGS
Definition asan.h:131
bool hwasan_sanitize_p(void)
Definition asan.cc:1850
rtx hwasan_truncate_to_tag_size(rtx, rtx)
Definition asan.cc:4775
bool asan_sanitize_use_after_scope(void)
Definition asan.h:225
#define ASAN_RED_ZONE_SIZE
Definition asan.h:77
bool asan_protect_global(tree, bool ignore_decl_rtl_set_p=false)
Definition asan.cc:2339
bool asan_sanitize_allocas_p(void)
Definition asan.cc:370
void set_sanitized_sections(const char *)
Definition asan.cc:338
asan_mark_flags
Definition asan.h:134
bool stack_vars_base_reg_p(rtx)
Definition asan.cc:4486
unsigned HOST_WIDE_INT asan_var_and_redzone_size(unsigned HOST_WIDE_INT size)
Definition asan.h:157
void hwasan_finish_file(void)
Definition asan.cc:4752
bool asan_expand_mark_ifn(gimple_stmt_iterator *)
Definition asan.cc:3848
bool asan_expand_poison_ifn(gimple_stmt_iterator *, bool *, hash_map< tree, tree > &)
Definition asan.cc:4198
void hwasan_increment_frame_tag()
Definition asan.cc:4558
void asan_function_start(void)
Definition asan.cc:1543
void asan_maybe_insert_dynamic_shadow_at_function_entry(function *)
Definition asan.cc:513
bool set_asan_shadow_offset(const char *)
Definition asan.cc:317
asan_check_flags
Definition asan.h:123
@ ASAN_CHECK_NON_ZERO_LEN
Definition asan.h:126
@ ASAN_CHECK_LAST
Definition asan.h:127
@ ASAN_CHECK_SCALAR_ACCESS
Definition asan.h:125
@ ASAN_CHECK_STORE
Definition asan.h:124
bool asan_mark_p(gimple *stmt, enum asan_mark_flags flag)
Definition asan.cc:357
bool hwasan_expand_check_ifn(gimple_stmt_iterator *, bool)
Definition asan.cc:4828
rtx hwasan_get_frame_extent()
Definition asan.cc:4547
rtx hwasan_frame_base()
Definition asan.cc:4464
bool asan_shadow_offset_set_p()
Definition asan.cc:469
bool asan_sanitize_stack_p(void)
Definition asan.cc:364
void initialize_sanitizer_builtins(void)
Definition asan.cc:3485
bool sanitize_flags_p(unsigned int flag, const_tree fn=current_function_decl)
Definition asan.h:245
bool hwasan_sanitize_allocas_p(void)
Definition asan.cc:1864
void hwasan_record_stack_var(rtx, rtx, poly_int64, poly_int64)
Definition asan.cc:4527
uint8_t hwasan_current_frame_tag()
Definition asan.cc:4452
unsigned int asan_red_zone_size(unsigned int size)
Definition asan.h:147
bool hwasan_sanitize_stack_p(void)
Definition asan.cc:1857
void hwasan_emit_prologue()
Definition asan.cc:4646
tree lookup_attribute(const char *attr_name, tree list)
Definition attribs.h:223
struct basic_block_def * basic_block
Definition coretypes.h:355
struct rtx_def * rtx
Definition coretypes.h:57
const union tree_node * const_tree
Definition coretypes.h:98
union tree_node * tree
Definition coretypes.h:97
int alias_set_type
Definition coretypes.h:349
built_in_function
Definition genmatch.cc:999
poly_int< NUM_POLY_INT_COEFFS, HOST_WIDE_INT > poly_int64
Definition poly-int-types.h:24
Definition genautomata.cc:499
Definition function.h:249
Definition gimple-iterator.h:26
tree current_function_decl
Definition toplev.cc:127
unsigned HOST_WIDE_INT tree_to_uhwi(const_tree t)
Definition tree.cc:6525
#define TREE_VALUE(NODE)
Definition tree.h:1222
#define DECL_ATTRIBUTES(NODE)
Definition tree.h:2826
#define DECL_ARTIFICIAL(NODE)
Definition tree.h:2952
#define TREE_ADDRESSABLE(NODE)
Definition tree.h:744
#define NULL_TREE
Definition tree.h:317
#define DECL_P(NODE)
Definition tree.h:231