diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-12-04 13:20:20 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-12-04 13:20:20 +0000 |
commit | 83392e87a148b82a43efd9583402b799bb4e8799 (patch) | |
tree | 21044204031b54a990ff0b62ce262c476b707eda /gcc/sanitizer.def | |
parent | b19dc8b3b6c5d936bf54a01a97cd6be8c2790349 (diff) | |
download | gcc-83392e87a148b82a43efd9583402b799bb4e8799.tar.gz |
PR sanitizer/55439
* Makefile.in (tsan.o): Depend on tree-ssa-propagate.h.
* sanitizer.def: Add __tsan_atomic* builtins.
* asan.c (initialize_sanitizer_builtins): Adjust to also
initialize __tsan_atomic* builtins.
* tsan.c: Include tree-ssa-propagate.h.
(enum tsan_atomic_action): New enum.
(tsan_atomic_table): New table.
(instrument_builtin_call): New function.
(instrument_gimple): Take pointer to gimple_stmt_iterator
instead of gimple_stmt_iterator. Call instrument_builtin_call
on builtin call stmts.
(instrument_memory_accesses): Adjust instrument_gimple caller.
* builtin-types.def (BT_FN_BOOL_VPTR_PTR_I1_INT_INT,
BT_FN_BOOL_VPTR_PTR_I2_INT_INT, BT_FN_BOOL_VPTR_PTR_I4_INT_INT,
BT_FN_BOOL_VPTR_PTR_I8_INT_INT, BT_FN_BOOL_VPTR_PTR_I16_INT_INT): New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@194133 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sanitizer.def')
-rw-r--r-- | gcc/sanitizer.def | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/gcc/sanitizer.def b/gcc/sanitizer.def index c2ee9729f12..1739e7aa73c 100644 --- a/gcc/sanitizer.def +++ b/gcc/sanitizer.def @@ -85,3 +85,196 @@ DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_WRITE8, "__tsan_write8", BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST) DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_WRITE16, "__tsan_write16", BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST) + +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_LOAD, + "__tsan_atomic8_load", + BT_FN_I1_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_LOAD, + "__tsan_atomic16_load", + BT_FN_I2_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_LOAD, + "__tsan_atomic32_load", + BT_FN_I4_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_LOAD, + "__tsan_atomic64_load", + BT_FN_I8_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_LOAD, + "__tsan_atomic128_load", + BT_FN_I16_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) + +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_STORE, + "__tsan_atomic8_store", + BT_FN_VOID_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_STORE, + "__tsan_atomic16_store", + BT_FN_VOID_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_STORE, + "__tsan_atomic32_store", + BT_FN_VOID_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_STORE, + "__tsan_atomic64_store", + BT_FN_VOID_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_STORE, + "__tsan_atomic128_store", + BT_FN_VOID_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) + +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_EXCHANGE, + "__tsan_atomic8_exchange", + BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_EXCHANGE, + "__tsan_atomic16_exchange", + BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_EXCHANGE, + "__tsan_atomic32_exchange", + BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_EXCHANGE, + "__tsan_atomic64_exchange", + BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_EXCHANGE, + "__tsan_atomic128_exchange", + BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) + +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_FETCH_ADD, + "__tsan_atomic8_fetch_add", + BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_FETCH_ADD, + "__tsan_atomic16_fetch_add", + BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_FETCH_ADD, + "__tsan_atomic32_fetch_add", + BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_FETCH_ADD, + "__tsan_atomic64_fetch_add", + BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_FETCH_ADD, + "__tsan_atomic128_fetch_add", + BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) + +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_FETCH_SUB, + "__tsan_atomic8_fetch_sub", + BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_FETCH_SUB, + "__tsan_atomic16_fetch_sub", + BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_FETCH_SUB, + "__tsan_atomic32_fetch_sub", + BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_FETCH_SUB, + "__tsan_atomic64_fetch_sub", + BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_FETCH_SUB, + "__tsan_atomic128_fetch_sub", + BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) + +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_FETCH_AND, + "__tsan_atomic8_fetch_and", + BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_FETCH_AND, + "__tsan_atomic16_fetch_and", + BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_FETCH_AND, + "__tsan_atomic32_fetch_and", + BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_FETCH_AND, + "__tsan_atomic64_fetch_and", + BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_FETCH_AND, + "__tsan_atomic128_fetch_and", + BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) + +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_FETCH_OR, + "__tsan_atomic8_fetch_or", + BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_FETCH_OR, + "__tsan_atomic16_fetch_or", + BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_FETCH_OR, + "__tsan_atomic32_fetch_or", + BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_FETCH_OR, + "__tsan_atomic64_fetch_or", + BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_FETCH_OR, + "__tsan_atomic128_fetch_or", + BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) + +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_FETCH_XOR, + "__tsan_atomic8_fetch_xor", + BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_FETCH_XOR, + "__tsan_atomic16_fetch_xor", + BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_FETCH_XOR, + "__tsan_atomic32_fetch_xor", + BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_FETCH_XOR, + "__tsan_atomic64_fetch_xor", + BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_FETCH_XOR, + "__tsan_atomic128_fetch_xor", + BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) + +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_FETCH_NAND, + "__tsan_atomic8_fetch_nand", + BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_FETCH_NAND, + "__tsan_atomic16_fetch_nand", + BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_FETCH_NAND, + "__tsan_atomic32_fetch_nand", + BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_FETCH_NAND, + "__tsan_atomic64_fetch_nand", + BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_FETCH_NAND, + "__tsan_atomic128_fetch_nand", + BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) + +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_COMPARE_EXCHANGE_STRONG, + "__tsan_atomic8_compare_exchange_strong", + BT_FN_BOOL_VPTR_PTR_I1_INT_INT, + ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_COMPARE_EXCHANGE_STRONG, + "__tsan_atomic16_compare_exchange_strong", + BT_FN_BOOL_VPTR_PTR_I2_INT_INT, + ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_COMPARE_EXCHANGE_STRONG, + "__tsan_atomic32_compare_exchange_strong", + BT_FN_BOOL_VPTR_PTR_I4_INT_INT, + ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_COMPARE_EXCHANGE_STRONG, + "__tsan_atomic64_compare_exchange_strong", + BT_FN_BOOL_VPTR_PTR_I8_INT_INT, + ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_COMPARE_EXCHANGE_STRONG, + "__tsan_atomic128_compare_exchange_strong", + BT_FN_BOOL_VPTR_PTR_I16_INT_INT, + ATTR_NOTHROW_LEAF_LIST) + +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC8_COMPARE_EXCHANGE_WEAK, + "__tsan_atomic8_compare_exchange_weak", + BT_FN_BOOL_VPTR_PTR_I1_INT_INT, + ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC16_COMPARE_EXCHANGE_WEAK, + "__tsan_atomic16_compare_exchange_weak", + BT_FN_BOOL_VPTR_PTR_I2_INT_INT, + ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC32_COMPARE_EXCHANGE_WEAK, + "__tsan_atomic32_compare_exchange_weak", + BT_FN_BOOL_VPTR_PTR_I4_INT_INT, + ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC64_COMPARE_EXCHANGE_WEAK, + "__tsan_atomic64_compare_exchange_weak", + BT_FN_BOOL_VPTR_PTR_I8_INT_INT, + ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC128_COMPARE_EXCHANGE_WEAK, + "__tsan_atomic128_compare_exchange_weak", + BT_FN_BOOL_VPTR_PTR_I16_INT_INT, + ATTR_NOTHROW_LEAF_LIST) + +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC_THREAD_FENCE, + "__tsan_atomic_thread_fence", + BT_FN_VOID_INT, ATTR_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_TSAN_ATOMIC_SIGNAL_FENCE, + "__tsan_atomic_signal_fence", + BT_FN_VOID_INT, ATTR_NOTHROW_LEAF_LIST) |