diff --git a/compiler-rt/test/hwasan/TestCases/Linux/release-shadow.c b/compiler-rt/test/hwasan/TestCases/Linux/release-shadow.c index 705f5e6f433c..c17dc8453f82 100644 --- a/compiler-rt/test/hwasan/TestCases/Linux/release-shadow.c +++ b/compiler-rt/test/hwasan/TestCases/Linux/release-shadow.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -17,17 +18,18 @@ const unsigned char kTag = 42; const size_t kNumShadowPages = 1024; const size_t kNumPages = 16 * kNumShadowPages; -const size_t kPageSize = 4096; -const size_t kMapSize = kNumPages * kPageSize; + +size_t page_size, map_size; void sync_rss() { - char *page = (char *)mmap(0, kPageSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); + char *page = (char *)mmap(0, page_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); // Linux kernel updates RSS counters after a set number of page faults. for (int i = 0; i < 100; ++i) { page[0] = 42; - madvise(page, kPageSize, MADV_DONTNEED); + madvise(page, page_size, MADV_DONTNEED); } - munmap(page, kPageSize); + munmap(page, page_size); } size_t current_rss() { @@ -45,9 +47,9 @@ size_t current_rss() { } int test_rss_difference(void *p) { - __hwasan_tag_memory(p, kTag, kMapSize); + __hwasan_tag_memory(p, kTag, map_size); size_t rss_before = current_rss(); - __hwasan_tag_memory(p, 0, kMapSize); + __hwasan_tag_memory(p, 0, map_size); size_t rss_after = current_rss(); fprintf(stderr, "%zu -> %zu\n", rss_before, rss_after); if (rss_before <= rss_after) @@ -59,10 +61,14 @@ int test_rss_difference(void *p) { } int main() { + page_size = getauxval(AT_PAGESZ); + map_size = kNumPages * page_size; + fprintf(stderr, "starting rss %zu\n", current_rss()); fprintf(stderr, "shadow pages: %zu\n", kNumShadowPages); - void *p = mmap(0, kMapSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); + void *p = mmap(0, map_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); fprintf(stderr, "p = %p\n", p); size_t total_count = 10; diff --git a/compiler-rt/test/hwasan/TestCases/heap-buffer-overflow.c b/compiler-rt/test/hwasan/TestCases/heap-buffer-overflow.c index d390017dd755..a4923fa4071c 100644 --- a/compiler-rt/test/hwasan/TestCases/heap-buffer-overflow.c +++ b/compiler-rt/test/hwasan/TestCases/heap-buffer-overflow.c @@ -47,11 +47,11 @@ int main(int argc, char **argv) { // CHECKm30: Cause: heap-buffer-overflow // CHECKm30: is located 30 bytes before a 30-byte region // - // CHECKMm30: is a large allocated heap chunk; size: 1003520 offset: -30 + // CHECKMm30: is a large allocated heap chunk; size: {{[0-9]*}} offset: -30 // CHECKMm30: Cause: heap-buffer-overflow // CHECKMm30: is located 30 bytes before a 1000000-byte region // - // CHECKM: is a large allocated heap chunk; size: 1003520 offset: 1000000 + // CHECKM: is a large allocated heap chunk; size: {{[0-9]*}} offset: 1000000 // CHECKM: Cause: heap-buffer-overflow // CHECKM: is located 0 bytes after a 1000000-byte region // diff --git a/compiler-rt/test/hwasan/TestCases/tag-mismatch-border-address.c b/compiler-rt/test/hwasan/TestCases/tag-mismatch-border-address.c index bffb8a0dfb04..ff3e3fc85e37 100644 --- a/compiler-rt/test/hwasan/TestCases/tag-mismatch-border-address.c +++ b/compiler-rt/test/hwasan/TestCases/tag-mismatch-border-address.c @@ -7,15 +7,17 @@ #include #include #include +#include #include static volatile char sink; extern void *__hwasan_shadow_memory_dynamic_address; int main(int argc, char **argv) { - void *high_addr = (char *)__hwasan_shadow_memory_dynamic_address - 0x1000; - void *r = mmap(high_addr, 4096, PROT_READ, MAP_FIXED | MAP_ANON | MAP_PRIVATE, - -1, 0); + size_t page_size = getauxval(AT_PAGESZ); + void *high_addr = (char *)__hwasan_shadow_memory_dynamic_address - page_size; + void *r = mmap(high_addr, page_size, PROT_READ, + MAP_FIXED | MAP_ANON | MAP_PRIVATE, -1, 0); if (r == MAP_FAILED) { fprintf(stderr, "Failed to mmap\n"); abort();