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