// RUN: %clangxx_hwasan %s -o %t && not %run %t 2>&1 | FileCheck %s #include #include #include #include #include int main(int argc, char **argv) { const size_t kPS = sysconf(_SC_PAGESIZE); void *r = nullptr; int res = posix_memalign(&r, kPS, 2 * kPS); if (res) { perror("Failed to mmap: "); abort(); } r = __hwasan_tag_pointer(r, 0); __hwasan_tag_memory(r, 1, 2 * kPS); // Disable access to the page just after tag-mismatch report address. res = mprotect((char*)r + kPS, kPS, PROT_NONE); if (res) { perror("Failed to mprotect: "); abort(); } // Trigger tag-mismatch report. return *((char*)r + kPS - 1); } // CHECK: ERROR: HWAddressSanitizer: tag-mismatch on address // CHECK: Memory tags around the buggy address // CHECK: Tags for short granules around // Check that report is complete. // CHECK: SUMMARY: HWAddressSanitizer: tag-mismatch {{.*}} in main