forked from OSchip/llvm-project
[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
This commit is contained in:
parent
0ae8590354
commit
02f7841e4a
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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() {}
|
Loading…
Reference in New Issue