xref: /llvm-project/compiler-rt/test/hwasan/TestCases/check-interface.cpp (revision fdac98a7f3bbe0cb553df60df8cca2e8f407fa51)
1*f9e0df07SNico Weber // RUN: %clangxx_hwasan -mllvm -hwasan-instrument-with-calls=1 -O0 %s -o %t
2*f9e0df07SNico Weber // RUN: %clangxx_hwasan -mllvm -hwasan-instrument-with-calls=1 -O0 %s -o %t -fsanitize-recover=hwaddress
3*f9e0df07SNico Weber 
4*f9e0df07SNico Weber // Utilizes all flavors of __hwasan_load/store interface functions to verify
5*f9e0df07SNico Weber // that the instrumentation and the interface provided by HWASan do match.
6*f9e0df07SNico Weber // In case of a discrepancy, this test fails to link.
7*f9e0df07SNico Weber 
8*f9e0df07SNico Weber #include <sanitizer/hwasan_interface.h>
9*f9e0df07SNico Weber 
10*f9e0df07SNico Weber #define F(T) void f_##T(T *a, T *b) { *a = *b; }
11*f9e0df07SNico Weber 
12*f9e0df07SNico Weber F(uint8_t)
13*f9e0df07SNico Weber F(uint16_t)
14*f9e0df07SNico Weber F(uint32_t)
15*f9e0df07SNico Weber F(uint64_t)
16*f9e0df07SNico Weber 
17*f9e0df07SNico Weber typedef unsigned V32 __attribute__((__vector_size__(32)));
F(V32)18*f9e0df07SNico Weber F(V32)
19*f9e0df07SNico Weber 
20*f9e0df07SNico Weber int main() {}
21