xref: /dflybsd-src/contrib/gcc-8.0/gcc/sanitizer.def (revision 38fd149817dfbff97799f62fcb70be98c4e32523)
1*38fd1498Szrj/* This file contains the definitions and documentation for the
2*38fd1498Szrj   Address Sanitizer and Thread Sanitizer builtins used in the GNU compiler.
3*38fd1498Szrj   Copyright (C) 2012-2018 Free Software Foundation, Inc.
4*38fd1498Szrj
5*38fd1498SzrjThis file is part of GCC.
6*38fd1498Szrj
7*38fd1498SzrjGCC is free software; you can redistribute it and/or modify it under
8*38fd1498Szrjthe terms of the GNU General Public License as published by the Free
9*38fd1498SzrjSoftware Foundation; either version 3, or (at your option) any later
10*38fd1498Szrjversion.
11*38fd1498Szrj
12*38fd1498SzrjGCC is distributed in the hope that it will be useful, but WITHOUT ANY
13*38fd1498SzrjWARRANTY; without even the implied warranty of MERCHANTABILITY or
14*38fd1498SzrjFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15*38fd1498Szrjfor more details.
16*38fd1498Szrj
17*38fd1498SzrjYou should have received a copy of the GNU General Public License
18*38fd1498Szrjalong with GCC; see the file COPYING3.  If not see
19*38fd1498Szrj<http://www.gnu.org/licenses/>.  */
20*38fd1498Szrj
21*38fd1498Szrj/* Before including this file, you should define a macro:
22*38fd1498Szrj
23*38fd1498Szrj     DEF_BUILTIN_STUB(ENUM, NAME)
24*38fd1498Szrj     DEF_SANITIZER_BUILTIN (ENUM, NAME, TYPE, ATTRS)
25*38fd1498Szrj
26*38fd1498Szrj   See builtins.def for details.
27*38fd1498Szrj   The builtins are created by the C-family of FEs in c-family/c-common.c,
28*38fd1498Szrj   for other FEs by asan.c.  */
29*38fd1498Szrj
30*38fd1498Szrj/* This has to come before all the sanitizer builtins.  */
31*38fd1498SzrjDEF_BUILTIN_STUB(BEGIN_SANITIZER_BUILTINS, (const char *)0)
32*38fd1498Szrj
33*38fd1498Szrj/* Address Sanitizer */
34*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_INIT, "__asan_init",
35*38fd1498Szrj		      BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
36*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_VERSION_MISMATCH_CHECK,
37*38fd1498Szrj		      "__asan_version_mismatch_check_v8",
38*38fd1498Szrj		      BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
39*38fd1498Szrj/* Do not reorder the BUILT_IN_ASAN_{REPORT,CHECK}* builtins, e.g. cfgcleanup.c
40*38fd1498Szrj   relies on this order.  */
41*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD1, "__asan_report_load1",
42*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
43*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD2, "__asan_report_load2",
44*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
45*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD4, "__asan_report_load4",
46*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
47*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD8, "__asan_report_load8",
48*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
49*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD16, "__asan_report_load16",
50*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
51*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD_N, "__asan_report_load_n",
52*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE,
53*38fd1498Szrj		      ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
54*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE1, "__asan_report_store1",
55*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
56*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE2, "__asan_report_store2",
57*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
58*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE4, "__asan_report_store4",
59*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
60*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE8, "__asan_report_store8",
61*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
62*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE16, "__asan_report_store16",
63*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
64*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE_N, "__asan_report_store_n",
65*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE,
66*38fd1498Szrj		      ATTR_TMPURE_NORETURN_NOTHROW_LEAF_LIST)
67*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD1_NOABORT,
68*38fd1498Szrj		      "__asan_report_load1_noabort",
69*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
70*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD2_NOABORT,
71*38fd1498Szrj		      "__asan_report_load2_noabort",
72*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
73*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD4_NOABORT,
74*38fd1498Szrj		      "__asan_report_load4_noabort",
75*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
76*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD8_NOABORT,
77*38fd1498Szrj		      "__asan_report_load8_noabort",
78*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
79*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD16_NOABORT,
80*38fd1498Szrj		      "__asan_report_load16_noabort",
81*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
82*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_LOAD_N_NOABORT,
83*38fd1498Szrj		      "__asan_report_load_n_noabort",
84*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE,
85*38fd1498Szrj		      ATTR_TMPURE_NOTHROW_LEAF_LIST)
86*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE1_NOABORT,
87*38fd1498Szrj		      "__asan_report_store1_noabort",
88*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
89*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE2_NOABORT,
90*38fd1498Szrj		      "__asan_report_store2_noabort",
91*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
92*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE4_NOABORT,
93*38fd1498Szrj		      "__asan_report_store4_noabort",
94*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
95*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE8_NOABORT,
96*38fd1498Szrj		      "__asan_report_store8_noabort",
97*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
98*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE16_NOABORT,
99*38fd1498Szrj		      "__asan_report_store16_noabort",
100*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
101*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REPORT_STORE_N_NOABORT,
102*38fd1498Szrj		      "__asan_report_store_n_noabort",
103*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE,
104*38fd1498Szrj		      ATTR_TMPURE_NOTHROW_LEAF_LIST)
105*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_LOAD1, "__asan_load1",
106*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
107*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_LOAD2, "__asan_load2",
108*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
109*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_LOAD4, "__asan_load4",
110*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
111*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_LOAD8, "__asan_load8",
112*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
113*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_LOAD16, "__asan_load16",
114*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
115*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_LOADN, "__asan_loadN",
116*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_TMPURE_NOTHROW_LEAF_LIST)
117*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_STORE1, "__asan_store1",
118*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
119*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_STORE2, "__asan_store2",
120*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
121*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_STORE4, "__asan_store4",
122*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
123*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_STORE8, "__asan_store8",
124*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
125*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_STORE16, "__asan_store16",
126*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
127*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_STOREN, "__asan_storeN",
128*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_TMPURE_NOTHROW_LEAF_LIST)
129*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_LOAD1_NOABORT, "__asan_load1_noabort",
130*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
131*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_LOAD2_NOABORT, "__asan_load2_noabort",
132*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
133*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_LOAD4_NOABORT, "__asan_load4_noabort",
134*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
135*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_LOAD8_NOABORT, "__asan_load8_noabort",
136*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
137*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_LOAD16_NOABORT, "__asan_load16_noabort",
138*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
139*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_LOADN_NOABORT, "__asan_loadN_noabort",
140*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_TMPURE_NOTHROW_LEAF_LIST)
141*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_STORE1_NOABORT, "__asan_store1_noabort",
142*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
143*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_STORE2_NOABORT, "__asan_store2_noabort",
144*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
145*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_STORE4_NOABORT, "__asan_store4_noabort",
146*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
147*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_STORE8_NOABORT, "__asan_store8_noabort",
148*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
149*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_STORE16_NOABORT, "__asan_store16_noabort",
150*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LEAF_LIST)
151*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_STOREN_NOABORT, "__asan_storeN_noabort",
152*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_TMPURE_NOTHROW_LEAF_LIST)
153*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_REGISTER_GLOBALS,
154*38fd1498Szrj		      "__asan_register_globals",
155*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_NOTHROW_LEAF_LIST)
156*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_UNREGISTER_GLOBALS,
157*38fd1498Szrj		      "__asan_unregister_globals",
158*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_NOTHROW_LEAF_LIST)
159*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_HANDLE_NO_RETURN,
160*38fd1498Szrj		      "__asan_handle_no_return",
161*38fd1498Szrj		      BT_FN_VOID, ATTR_TMPURE_NOTHROW_LEAF_LIST)
162*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_BEFORE_DYNAMIC_INIT,
163*38fd1498Szrj		      "__asan_before_dynamic_init",
164*38fd1498Szrj		      BT_FN_VOID_CONST_PTR, ATTR_NOTHROW_LEAF_LIST)
165*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_AFTER_DYNAMIC_INIT,
166*38fd1498Szrj		      "__asan_after_dynamic_init",
167*38fd1498Szrj		      BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
168*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_POISON_STACK_MEMORY,
169*38fd1498Szrj		      "__asan_poison_stack_memory",
170*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_NOTHROW_LEAF_LIST)
171*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_UNPOISON_STACK_MEMORY,
172*38fd1498Szrj		      "__asan_unpoison_stack_memory",
173*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_NOTHROW_LEAF_LIST)
174*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_ALLOCA_POISON, "__asan_alloca_poison",
175*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_NOTHROW_LEAF_LIST)
176*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_ALLOCAS_UNPOISON, "__asan_allocas_unpoison",
177*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_NOTHROW_LEAF_LIST)
178*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_POINTER_COMPARE, "__sanitizer_ptr_cmp",
179*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_NOTHROW_LEAF_LIST)
180*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_ASAN_POINTER_SUBTRACT, "__sanitizer_ptr_sub",
181*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_NOTHROW_LEAF_LIST)
182*38fd1498Szrj
183*38fd1498Szrj/* Thread Sanitizer */
184*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_INIT, "__tsan_init",
185*38fd1498Szrj		      BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
186*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_FUNC_ENTRY, "__tsan_func_entry",
187*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
188*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_FUNC_EXIT, "__tsan_func_exit",
189*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
190*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_VPTR_UPDATE, "__tsan_vptr_update",
191*38fd1498Szrj		      BT_FN_VOID_PTR_PTR, ATTR_NOTHROW_LEAF_LIST)
192*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_READ1, "__tsan_read1",
193*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
194*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_READ2, "__tsan_read2",
195*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
196*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_READ4, "__tsan_read4",
197*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
198*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_READ8, "__tsan_read8",
199*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
200*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_READ16, "__tsan_read16",
201*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
202*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_WRITE1, "__tsan_write1",
203*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
204*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_WRITE2, "__tsan_write2",
205*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
206*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_WRITE4, "__tsan_write4",
207*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
208*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_WRITE8, "__tsan_write8",
209*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
210*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_WRITE16, "__tsan_write16",
211*38fd1498Szrj		      BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
212*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_READ_RANGE, "__tsan_read_range",
213*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_NOTHROW_LEAF_LIST)
214*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_WRITE_RANGE, "__tsan_write_range",
215*38fd1498Szrj		      BT_FN_VOID_PTR_PTRMODE, ATTR_NOTHROW_LEAF_LIST)
216*38fd1498Szrj
217*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_LOAD,
218*38fd1498Szrj		      "__tsan_atomic8_load",
219*38fd1498Szrj		      BT_FN_I1_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
220*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_LOAD,
221*38fd1498Szrj		      "__tsan_atomic16_load",
222*38fd1498Szrj		      BT_FN_I2_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
223*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_LOAD,
224*38fd1498Szrj		      "__tsan_atomic32_load",
225*38fd1498Szrj		      BT_FN_I4_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
226*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_LOAD,
227*38fd1498Szrj		      "__tsan_atomic64_load",
228*38fd1498Szrj		      BT_FN_I8_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
229*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_LOAD,
230*38fd1498Szrj		      "__tsan_atomic128_load",
231*38fd1498Szrj		      BT_FN_I16_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
232*38fd1498Szrj
233*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_STORE,
234*38fd1498Szrj		      "__tsan_atomic8_store",
235*38fd1498Szrj		      BT_FN_VOID_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
236*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_STORE,
237*38fd1498Szrj		      "__tsan_atomic16_store",
238*38fd1498Szrj		      BT_FN_VOID_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
239*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_STORE,
240*38fd1498Szrj		      "__tsan_atomic32_store",
241*38fd1498Szrj		      BT_FN_VOID_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
242*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_STORE,
243*38fd1498Szrj		      "__tsan_atomic64_store",
244*38fd1498Szrj		      BT_FN_VOID_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
245*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_STORE,
246*38fd1498Szrj		      "__tsan_atomic128_store",
247*38fd1498Szrj		      BT_FN_VOID_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
248*38fd1498Szrj
249*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_EXCHANGE,
250*38fd1498Szrj		      "__tsan_atomic8_exchange",
251*38fd1498Szrj		      BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
252*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_EXCHANGE,
253*38fd1498Szrj		      "__tsan_atomic16_exchange",
254*38fd1498Szrj		      BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
255*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_EXCHANGE,
256*38fd1498Szrj		      "__tsan_atomic32_exchange",
257*38fd1498Szrj		      BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
258*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_EXCHANGE,
259*38fd1498Szrj		      "__tsan_atomic64_exchange",
260*38fd1498Szrj		      BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
261*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_EXCHANGE,
262*38fd1498Szrj		      "__tsan_atomic128_exchange",
263*38fd1498Szrj		      BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
264*38fd1498Szrj
265*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_FETCH_ADD,
266*38fd1498Szrj		      "__tsan_atomic8_fetch_add",
267*38fd1498Szrj		      BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
268*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_FETCH_ADD,
269*38fd1498Szrj		      "__tsan_atomic16_fetch_add",
270*38fd1498Szrj		      BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
271*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_FETCH_ADD,
272*38fd1498Szrj		      "__tsan_atomic32_fetch_add",
273*38fd1498Szrj		      BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
274*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_FETCH_ADD,
275*38fd1498Szrj		      "__tsan_atomic64_fetch_add",
276*38fd1498Szrj		      BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
277*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_FETCH_ADD,
278*38fd1498Szrj		      "__tsan_atomic128_fetch_add",
279*38fd1498Szrj		      BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
280*38fd1498Szrj
281*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_FETCH_SUB,
282*38fd1498Szrj		      "__tsan_atomic8_fetch_sub",
283*38fd1498Szrj		      BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
284*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_FETCH_SUB,
285*38fd1498Szrj		      "__tsan_atomic16_fetch_sub",
286*38fd1498Szrj		      BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
287*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_FETCH_SUB,
288*38fd1498Szrj		      "__tsan_atomic32_fetch_sub",
289*38fd1498Szrj		      BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
290*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_FETCH_SUB,
291*38fd1498Szrj		      "__tsan_atomic64_fetch_sub",
292*38fd1498Szrj		      BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
293*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_FETCH_SUB,
294*38fd1498Szrj		      "__tsan_atomic128_fetch_sub",
295*38fd1498Szrj		      BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
296*38fd1498Szrj
297*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_FETCH_AND,
298*38fd1498Szrj		      "__tsan_atomic8_fetch_and",
299*38fd1498Szrj		      BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
300*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_FETCH_AND,
301*38fd1498Szrj		      "__tsan_atomic16_fetch_and",
302*38fd1498Szrj		      BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
303*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_FETCH_AND,
304*38fd1498Szrj		      "__tsan_atomic32_fetch_and",
305*38fd1498Szrj		      BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
306*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_FETCH_AND,
307*38fd1498Szrj		      "__tsan_atomic64_fetch_and",
308*38fd1498Szrj		      BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
309*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_FETCH_AND,
310*38fd1498Szrj		      "__tsan_atomic128_fetch_and",
311*38fd1498Szrj		      BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
312*38fd1498Szrj
313*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_FETCH_OR,
314*38fd1498Szrj		      "__tsan_atomic8_fetch_or",
315*38fd1498Szrj		      BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
316*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_FETCH_OR,
317*38fd1498Szrj		      "__tsan_atomic16_fetch_or",
318*38fd1498Szrj		      BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
319*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_FETCH_OR,
320*38fd1498Szrj		      "__tsan_atomic32_fetch_or",
321*38fd1498Szrj		      BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
322*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_FETCH_OR,
323*38fd1498Szrj		      "__tsan_atomic64_fetch_or",
324*38fd1498Szrj		      BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
325*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_FETCH_OR,
326*38fd1498Szrj		      "__tsan_atomic128_fetch_or",
327*38fd1498Szrj		      BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
328*38fd1498Szrj
329*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_FETCH_XOR,
330*38fd1498Szrj		      "__tsan_atomic8_fetch_xor",
331*38fd1498Szrj		      BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
332*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_FETCH_XOR,
333*38fd1498Szrj		      "__tsan_atomic16_fetch_xor",
334*38fd1498Szrj		      BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
335*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_FETCH_XOR,
336*38fd1498Szrj		      "__tsan_atomic32_fetch_xor",
337*38fd1498Szrj		      BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
338*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_FETCH_XOR,
339*38fd1498Szrj		      "__tsan_atomic64_fetch_xor",
340*38fd1498Szrj		      BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
341*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_FETCH_XOR,
342*38fd1498Szrj		      "__tsan_atomic128_fetch_xor",
343*38fd1498Szrj		      BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
344*38fd1498Szrj
345*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_FETCH_NAND,
346*38fd1498Szrj		      "__tsan_atomic8_fetch_nand",
347*38fd1498Szrj		      BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
348*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_FETCH_NAND,
349*38fd1498Szrj		      "__tsan_atomic16_fetch_nand",
350*38fd1498Szrj		      BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
351*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_FETCH_NAND,
352*38fd1498Szrj		      "__tsan_atomic32_fetch_nand",
353*38fd1498Szrj		      BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
354*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_FETCH_NAND,
355*38fd1498Szrj		      "__tsan_atomic64_fetch_nand",
356*38fd1498Szrj		      BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
357*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_FETCH_NAND,
358*38fd1498Szrj		      "__tsan_atomic128_fetch_nand",
359*38fd1498Szrj		      BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
360*38fd1498Szrj
361*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_COMPARE_EXCHANGE_STRONG,
362*38fd1498Szrj		      "__tsan_atomic8_compare_exchange_strong",
363*38fd1498Szrj		      BT_FN_BOOL_VPTR_PTR_I1_INT_INT,
364*38fd1498Szrj		      ATTR_NOTHROW_LEAF_LIST)
365*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_COMPARE_EXCHANGE_STRONG,
366*38fd1498Szrj		      "__tsan_atomic16_compare_exchange_strong",
367*38fd1498Szrj		      BT_FN_BOOL_VPTR_PTR_I2_INT_INT,
368*38fd1498Szrj		      ATTR_NOTHROW_LEAF_LIST)
369*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_COMPARE_EXCHANGE_STRONG,
370*38fd1498Szrj		      "__tsan_atomic32_compare_exchange_strong",
371*38fd1498Szrj		      BT_FN_BOOL_VPTR_PTR_I4_INT_INT,
372*38fd1498Szrj		      ATTR_NOTHROW_LEAF_LIST)
373*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_COMPARE_EXCHANGE_STRONG,
374*38fd1498Szrj		      "__tsan_atomic64_compare_exchange_strong",
375*38fd1498Szrj		      BT_FN_BOOL_VPTR_PTR_I8_INT_INT,
376*38fd1498Szrj		      ATTR_NOTHROW_LEAF_LIST)
377*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_COMPARE_EXCHANGE_STRONG,
378*38fd1498Szrj		      "__tsan_atomic128_compare_exchange_strong",
379*38fd1498Szrj		      BT_FN_BOOL_VPTR_PTR_I16_INT_INT,
380*38fd1498Szrj		      ATTR_NOTHROW_LEAF_LIST)
381*38fd1498Szrj
382*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_COMPARE_EXCHANGE_WEAK,
383*38fd1498Szrj		      "__tsan_atomic8_compare_exchange_weak",
384*38fd1498Szrj		      BT_FN_BOOL_VPTR_PTR_I1_INT_INT,
385*38fd1498Szrj		      ATTR_NOTHROW_LEAF_LIST)
386*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_COMPARE_EXCHANGE_WEAK,
387*38fd1498Szrj		      "__tsan_atomic16_compare_exchange_weak",
388*38fd1498Szrj		      BT_FN_BOOL_VPTR_PTR_I2_INT_INT,
389*38fd1498Szrj		      ATTR_NOTHROW_LEAF_LIST)
390*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_COMPARE_EXCHANGE_WEAK,
391*38fd1498Szrj		      "__tsan_atomic32_compare_exchange_weak",
392*38fd1498Szrj		      BT_FN_BOOL_VPTR_PTR_I4_INT_INT,
393*38fd1498Szrj		      ATTR_NOTHROW_LEAF_LIST)
394*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_COMPARE_EXCHANGE_WEAK,
395*38fd1498Szrj		      "__tsan_atomic64_compare_exchange_weak",
396*38fd1498Szrj		      BT_FN_BOOL_VPTR_PTR_I8_INT_INT,
397*38fd1498Szrj		      ATTR_NOTHROW_LEAF_LIST)
398*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_COMPARE_EXCHANGE_WEAK,
399*38fd1498Szrj		      "__tsan_atomic128_compare_exchange_weak",
400*38fd1498Szrj		      BT_FN_BOOL_VPTR_PTR_I16_INT_INT,
401*38fd1498Szrj		      ATTR_NOTHROW_LEAF_LIST)
402*38fd1498Szrj
403*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC_THREAD_FENCE,
404*38fd1498Szrj		      "__tsan_atomic_thread_fence",
405*38fd1498Szrj		      BT_FN_VOID_INT, ATTR_NOTHROW_LEAF_LIST)
406*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC_SIGNAL_FENCE,
407*38fd1498Szrj		      "__tsan_atomic_signal_fence",
408*38fd1498Szrj		      BT_FN_VOID_INT, ATTR_NOTHROW_LEAF_LIST)
409*38fd1498Szrj
410*38fd1498Szrj/* Undefined Behavior Sanitizer */
411*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW,
412*38fd1498Szrj		      "__ubsan_handle_divrem_overflow",
413*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
414*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
415*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS,
416*38fd1498Szrj		      "__ubsan_handle_shift_out_of_bounds",
417*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
418*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
419*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE,
420*38fd1498Szrj		      "__ubsan_handle_builtin_unreachable",
421*38fd1498Szrj		      BT_FN_VOID_PTR,
422*38fd1498Szrj		      ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST)
423*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_MISSING_RETURN,
424*38fd1498Szrj		      "__ubsan_handle_missing_return",
425*38fd1498Szrj		      BT_FN_VOID_PTR,
426*38fd1498Szrj		      ATTR_NORETURN_NOTHROW_LEAF_LIST)
427*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_VLA_BOUND_NOT_POSITIVE,
428*38fd1498Szrj		      "__ubsan_handle_vla_bound_not_positive",
429*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
430*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
431*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1,
432*38fd1498Szrj		      "__ubsan_handle_type_mismatch_v1",
433*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
434*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
435*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_ADD_OVERFLOW,
436*38fd1498Szrj		      "__ubsan_handle_add_overflow",
437*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
438*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
439*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_SUB_OVERFLOW,
440*38fd1498Szrj		      "__ubsan_handle_sub_overflow",
441*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
442*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
443*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_MUL_OVERFLOW,
444*38fd1498Szrj		      "__ubsan_handle_mul_overflow",
445*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
446*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
447*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_NEGATE_OVERFLOW,
448*38fd1498Szrj		      "__ubsan_handle_negate_overflow",
449*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
450*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
451*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_LOAD_INVALID_VALUE,
452*38fd1498Szrj		      "__ubsan_handle_load_invalid_value",
453*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
454*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
455*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_POINTER_OVERFLOW,
456*38fd1498Szrj		      "__ubsan_handle_pointer_overflow",
457*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
458*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
459*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW_ABORT,
460*38fd1498Szrj		      "__ubsan_handle_divrem_overflow_abort",
461*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
462*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
463*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS_ABORT,
464*38fd1498Szrj		      "__ubsan_handle_shift_out_of_bounds_abort",
465*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
466*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
467*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_VLA_BOUND_NOT_POSITIVE_ABORT,
468*38fd1498Szrj		      "__ubsan_handle_vla_bound_not_positive_abort",
469*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
470*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
471*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1_ABORT,
472*38fd1498Szrj		      "__ubsan_handle_type_mismatch_v1_abort",
473*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
474*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
475*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_ADD_OVERFLOW_ABORT,
476*38fd1498Szrj		      "__ubsan_handle_add_overflow_abort",
477*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
478*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
479*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_SUB_OVERFLOW_ABORT,
480*38fd1498Szrj		      "__ubsan_handle_sub_overflow_abort",
481*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
482*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
483*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_MUL_OVERFLOW_ABORT,
484*38fd1498Szrj		      "__ubsan_handle_mul_overflow_abort",
485*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
486*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
487*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_NEGATE_OVERFLOW_ABORT,
488*38fd1498Szrj		      "__ubsan_handle_negate_overflow_abort",
489*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
490*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
491*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_LOAD_INVALID_VALUE_ABORT,
492*38fd1498Szrj		      "__ubsan_handle_load_invalid_value_abort",
493*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
494*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
495*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_POINTER_OVERFLOW_ABORT,
496*38fd1498Szrj		      "__ubsan_handle_pointer_overflow_abort",
497*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
498*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
499*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_FLOAT_CAST_OVERFLOW,
500*38fd1498Szrj		      "__ubsan_handle_float_cast_overflow",
501*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
502*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
503*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_FLOAT_CAST_OVERFLOW_ABORT,
504*38fd1498Szrj		      "__ubsan_handle_float_cast_overflow_abort",
505*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
506*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
507*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_OUT_OF_BOUNDS,
508*38fd1498Szrj		      "__ubsan_handle_out_of_bounds",
509*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
510*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
511*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_OUT_OF_BOUNDS_ABORT,
512*38fd1498Szrj		      "__ubsan_handle_out_of_bounds_abort",
513*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
514*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
515*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_NONNULL_ARG,
516*38fd1498Szrj		      "__ubsan_handle_nonnull_arg",
517*38fd1498Szrj		      BT_FN_VOID_PTR,
518*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
519*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_NONNULL_ARG_ABORT,
520*38fd1498Szrj		      "__ubsan_handle_nonnull_arg_abort",
521*38fd1498Szrj		      BT_FN_VOID_PTR,
522*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
523*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1,
524*38fd1498Szrj		      "__ubsan_handle_nonnull_return_v1",
525*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
526*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
527*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1_ABORT,
528*38fd1498Szrj		      "__ubsan_handle_nonnull_return_v1_abort",
529*38fd1498Szrj		      BT_FN_VOID_PTR_PTR,
530*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
531*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN,
532*38fd1498Szrj		      "__ubsan_handle_invalid_builtin",
533*38fd1498Szrj		      BT_FN_VOID_PTR,
534*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
535*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN_ABORT,
536*38fd1498Szrj		      "__ubsan_handle_invalid_builtin_abort",
537*38fd1498Szrj		      BT_FN_VOID_PTR,
538*38fd1498Szrj		      ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST)
539*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_DYNAMIC_TYPE_CACHE_MISS,
540*38fd1498Szrj		      "__ubsan_handle_dynamic_type_cache_miss",
541*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
542*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
543*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_DYNAMIC_TYPE_CACHE_MISS_ABORT,
544*38fd1498Szrj		      "__ubsan_handle_dynamic_type_cache_miss_abort",
545*38fd1498Szrj		      BT_FN_VOID_PTR_PTR_PTR,
546*38fd1498Szrj		      ATTR_COLD_NOTHROW_LEAF_LIST)
547*38fd1498Szrj
548*38fd1498Szrj/* Sanitizer coverage */
549*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_SANITIZER_COV_TRACE_PC,
550*38fd1498Szrj		      "__sanitizer_cov_trace_pc",
551*38fd1498Szrj		      BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
552*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_SANITIZER_COV_TRACE_CMP1,
553*38fd1498Szrj		      "__sanitizer_cov_trace_cmp1",
554*38fd1498Szrj		      BT_FN_VOID_UINT8_UINT8, ATTR_NOTHROW_LEAF_LIST)
555*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_SANITIZER_COV_TRACE_CMP2,
556*38fd1498Szrj		      "__sanitizer_cov_trace_cmp2",
557*38fd1498Szrj		      BT_FN_VOID_UINT16_UINT16, ATTR_NOTHROW_LEAF_LIST)
558*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_SANITIZER_COV_TRACE_CMP4,
559*38fd1498Szrj		      "__sanitizer_cov_trace_cmp4",
560*38fd1498Szrj		      BT_FN_VOID_UINT32_UINT32, ATTR_NOTHROW_LEAF_LIST)
561*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_SANITIZER_COV_TRACE_CMP8,
562*38fd1498Szrj		      "__sanitizer_cov_trace_cmp8",
563*38fd1498Szrj		      BT_FN_VOID_UINT64_UINT64, ATTR_NOTHROW_LEAF_LIST)
564*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP1,
565*38fd1498Szrj		      "__sanitizer_cov_trace_const_cmp1",
566*38fd1498Szrj		      BT_FN_VOID_UINT8_UINT8, ATTR_NOTHROW_LEAF_LIST)
567*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP2,
568*38fd1498Szrj		      "__sanitizer_cov_trace_const_cmp2",
569*38fd1498Szrj		      BT_FN_VOID_UINT16_UINT16, ATTR_NOTHROW_LEAF_LIST)
570*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP4,
571*38fd1498Szrj		      "__sanitizer_cov_trace_const_cmp4",
572*38fd1498Szrj		      BT_FN_VOID_UINT32_UINT32, ATTR_NOTHROW_LEAF_LIST)
573*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP8,
574*38fd1498Szrj		      "__sanitizer_cov_trace_const_cmp8",
575*38fd1498Szrj		      BT_FN_VOID_UINT64_UINT64, ATTR_NOTHROW_LEAF_LIST)
576*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_SANITIZER_COV_TRACE_CMPF,
577*38fd1498Szrj		      "__sanitizer_cov_trace_cmpf",
578*38fd1498Szrj		      BT_FN_VOID_FLOAT_FLOAT, ATTR_NOTHROW_LEAF_LIST)
579*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_SANITIZER_COV_TRACE_CMPD,
580*38fd1498Szrj		      "__sanitizer_cov_trace_cmpd",
581*38fd1498Szrj		      BT_FN_VOID_DOUBLE_DOUBLE, ATTR_NOTHROW_LEAF_LIST)
582*38fd1498SzrjDEF_SANITIZER_BUILTIN(BUILT_IN_SANITIZER_COV_TRACE_SWITCH,
583*38fd1498Szrj		      "__sanitizer_cov_trace_switch",
584*38fd1498Szrj		      BT_FN_VOID_UINT64_PTR, ATTR_NOTHROW_LEAF_LIST)
585*38fd1498Szrj
586*38fd1498Szrj/* This has to come after all the sanitizer builtins.  */
587*38fd1498SzrjDEF_BUILTIN_STUB(END_SANITIZER_BUILTINS, (const char *)0)
588