mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-25 04:51:38 +00:00
[test][hwasan] Implement sanitizer_specific for HWASAN (#75280)
This commit is contained in:
parent
f397bdf5ae
commit
c636b186bc
@ -31,6 +31,30 @@ static void make_mem_good(void *p, size_t s) {
|
||||
static void make_mem_bad(void *p, size_t s) {
|
||||
__asan_poison_memory_region(p, s);
|
||||
}
|
||||
#elif __has_feature(hwaddress_sanitizer)
|
||||
# include <sanitizer/hwasan_interface.h>
|
||||
# include <stdlib.h>
|
||||
static void check_mem_is_good(void *p, size_t s) {
|
||||
if (__hwasan_test_shadow(p, s) != -1)
|
||||
abort();
|
||||
}
|
||||
static void make_mem_good(void *p, size_t s) {
|
||||
__hwasan_tag_memory(p, __hwasan_get_tag_from_pointer(p), s);
|
||||
}
|
||||
static void make_mem_bad(void *p, size_t s) {
|
||||
uint8_t tag = ~__hwasan_get_tag_from_pointer(p);
|
||||
if (!tag) {
|
||||
// Nothing wrong with tag zero, but non-zero tags help to detect never
|
||||
// tagged memory.
|
||||
tag = 1;
|
||||
}
|
||||
__hwasan_tag_memory(p, tag, s);
|
||||
// With misaligned `p` or short granules we can't guarantee tag mismatch.
|
||||
if (__hwasan_test_shadow(p, s) != 0)
|
||||
abort();
|
||||
if (s > 1 && __hwasan_test_shadow(((char *)p) + s - 1, 1) != 0)
|
||||
abort();
|
||||
}
|
||||
#else
|
||||
static void check_mem_is_good(void *p, size_t s) {}
|
||||
static void make_mem_good(void *p, size_t s) {}
|
||||
|
Loading…
x
Reference in New Issue
Block a user