diff options
| author | Alex Shlyapnikov <alekseys@google.com> | 2018-04-18 22:05:18 +0000 |
|---|---|---|
| committer | Alex Shlyapnikov <alekseys@google.com> | 2018-04-18 22:05:18 +0000 |
| commit | 02f7841e4a8c3a5d1a0b2819c3394a85c279625b (patch) | |
| tree | 99c410a502ac39b694da3980fef4119e52a7e352 /compiler-rt | |
| parent | 0ae8590354b8688e1ec9926abc909b896ea49038 (diff) | |
| download | bcm5719-llvm-02f7841e4a8c3a5d1a0b2819c3394a85c279625b.tar.gz bcm5719-llvm-02f7841e4a8c3a5d1a0b2819c3394a85c279625b.zip | |
[HWASan] Add "N" suffix to generic __hwasan_load/store.
Summary:
"N" suffix is added by the instrumentation and interface functions
are expected to be exported from the library as __hwasan_loadN* and
__hwasan_storeN*.
Reviewers: eugenis
Subscribers: kubamracek, delcypher, #sanitizers, llvm-commits
Differential Revision: https://reviews.llvm.org/D45739
llvm-svn: 330297
Diffstat (limited to 'compiler-rt')
| -rw-r--r-- | compiler-rt/lib/hwasan/hwasan.cc | 8 | ||||
| -rw-r--r-- | compiler-rt/lib/hwasan/hwasan_interface_internal.h | 8 | ||||
| -rw-r--r-- | compiler-rt/test/hwasan/TestCases/check-interface.cc | 22 |
3 files changed, 30 insertions, 8 deletions
diff --git a/compiler-rt/lib/hwasan/hwasan.cc b/compiler-rt/lib/hwasan/hwasan.cc index 225c34ba2a8..5aa69a51039 100644 --- a/compiler-rt/lib/hwasan/hwasan.cc +++ b/compiler-rt/lib/hwasan/hwasan.cc @@ -306,7 +306,7 @@ __attribute__((always_inline, nodebug)) static void CheckAddressSized(uptr p, } } -void __hwasan_load(uptr p, uptr sz) { +void __hwasan_loadN(uptr p, uptr sz) { CheckAddressSized<ErrorAction::Abort, AccessType::Load>(p, sz); } void __hwasan_load1(uptr p) { @@ -325,7 +325,7 @@ void __hwasan_load16(uptr p) { CheckAddress<ErrorAction::Abort, AccessType::Load, 4>(p); } -void __hwasan_load_noabort(uptr p, uptr sz) { +void __hwasan_loadN_noabort(uptr p, uptr sz) { CheckAddressSized<ErrorAction::Recover, AccessType::Load>(p, sz); } void __hwasan_load1_noabort(uptr p) { @@ -344,7 +344,7 @@ void __hwasan_load16_noabort(uptr p) { CheckAddress<ErrorAction::Recover, AccessType::Load, 4>(p); } -void __hwasan_store(uptr p, uptr sz) { +void __hwasan_storeN(uptr p, uptr sz) { CheckAddressSized<ErrorAction::Abort, AccessType::Store>(p, sz); } void __hwasan_store1(uptr p) { @@ -363,7 +363,7 @@ void __hwasan_store16(uptr p) { CheckAddress<ErrorAction::Abort, AccessType::Store, 4>(p); } -void __hwasan_store_noabort(uptr p, uptr sz) { +void __hwasan_storeN_noabort(uptr p, uptr sz) { CheckAddressSized<ErrorAction::Recover, AccessType::Store>(p, sz); } void __hwasan_store1_noabort(uptr p) { diff --git a/compiler-rt/lib/hwasan/hwasan_interface_internal.h b/compiler-rt/lib/hwasan/hwasan_interface_internal.h index b065099fba4..54639f9c171 100644 --- a/compiler-rt/lib/hwasan/hwasan_interface_internal.h +++ b/compiler-rt/lib/hwasan/hwasan_interface_internal.h @@ -32,7 +32,7 @@ using __sanitizer::u16; using __sanitizer::u8; SANITIZER_INTERFACE_ATTRIBUTE -void __hwasan_load(uptr, uptr); +void __hwasan_loadN(uptr, uptr); SANITIZER_INTERFACE_ATTRIBUTE void __hwasan_load1(uptr); SANITIZER_INTERFACE_ATTRIBUTE @@ -45,7 +45,7 @@ SANITIZER_INTERFACE_ATTRIBUTE void __hwasan_load16(uptr); SANITIZER_INTERFACE_ATTRIBUTE -void __hwasan_load_noabort(uptr, uptr); +void __hwasan_loadN_noabort(uptr, uptr); SANITIZER_INTERFACE_ATTRIBUTE void __hwasan_load1_noabort(uptr); SANITIZER_INTERFACE_ATTRIBUTE @@ -58,7 +58,7 @@ SANITIZER_INTERFACE_ATTRIBUTE void __hwasan_load16_noabort(uptr); SANITIZER_INTERFACE_ATTRIBUTE -void __hwasan_store(uptr, uptr); +void __hwasan_storeN(uptr, uptr); SANITIZER_INTERFACE_ATTRIBUTE void __hwasan_store1(uptr); SANITIZER_INTERFACE_ATTRIBUTE @@ -71,7 +71,7 @@ SANITIZER_INTERFACE_ATTRIBUTE void __hwasan_store16(uptr); SANITIZER_INTERFACE_ATTRIBUTE -void __hwasan_store_noabort(uptr, uptr); +void __hwasan_storeN_noabort(uptr, uptr); SANITIZER_INTERFACE_ATTRIBUTE void __hwasan_store1_noabort(uptr); SANITIZER_INTERFACE_ATTRIBUTE diff --git a/compiler-rt/test/hwasan/TestCases/check-interface.cc b/compiler-rt/test/hwasan/TestCases/check-interface.cc new file mode 100644 index 00000000000..7ad91148035 --- /dev/null +++ b/compiler-rt/test/hwasan/TestCases/check-interface.cc @@ -0,0 +1,22 @@ +// RUN: %clangxx_hwasan -mllvm -hwasan-instrument-with-calls=1 -O0 %s -o %t +// RUN: %clangxx_hwasan -mllvm -hwasan-instrument-with-calls=1 -O0 %s -o %t -fsanitize-recover=hwaddress + +// REQUIRES: stable-runtime + +// Utilizes all flavors of __hwasan_load/store interface functions to verify +// that the instrumentation and the interface provided by HWASan do match. +// In case of a discrepancy, this test fails to link. + +#include <sanitizer/hwasan_interface.h> + +#define F(T) void f_##T(T *a, T *b) { *a = *b; } + +F(uint8_t) +F(uint16_t) +F(uint32_t) +F(uint64_t) + +typedef unsigned V32 __attribute__((__vector_size__(32))); +F(V32) + +int main() {} |

