Skip to content

Commit 31a679a

Browse files
committed
[𝘀𝗽𝗿] changes to main this commit is based on
Created using spr 1.3.6-beta.1 [skip ci]
1 parent b712068 commit 31a679a

File tree

4 files changed

+31
-15
lines changed

4 files changed

+31
-15
lines changed

compiler-rt/test/hwasan/TestCases/Linux/release-shadow.c

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <fcntl.h>
88
#include <stdio.h>
99
#include <stdlib.h>
10+
#include <sys/auxv.h>
1011
#include <sys/mman.h>
1112
#include <sys/stat.h>
1213
#include <sys/types.h>
@@ -17,17 +18,17 @@
1718
const unsigned char kTag = 42;
1819
const size_t kNumShadowPages = 1024;
1920
const size_t kNumPages = 16 * kNumShadowPages;
20-
const size_t kPageSize = 4096;
21-
const size_t kMapSize = kNumPages * kPageSize;
21+
22+
size_t page_size, map_size;
2223

2324
void sync_rss() {
24-
char *page = (char *)mmap(0, kPageSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
25+
char *page = (char *)mmap(0, page_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
2526
// Linux kernel updates RSS counters after a set number of page faults.
2627
for (int i = 0; i < 100; ++i) {
2728
page[0] = 42;
28-
madvise(page, kPageSize, MADV_DONTNEED);
29+
madvise(page, page_size, MADV_DONTNEED);
2930
}
30-
munmap(page, kPageSize);
31+
munmap(page, page_size);
3132
}
3233

3334
size_t current_rss() {
@@ -45,9 +46,9 @@ size_t current_rss() {
4546
}
4647

4748
int test_rss_difference(void *p) {
48-
__hwasan_tag_memory(p, kTag, kMapSize);
49+
__hwasan_tag_memory(p, kTag, map_size);
4950
size_t rss_before = current_rss();
50-
__hwasan_tag_memory(p, 0, kMapSize);
51+
__hwasan_tag_memory(p, 0, map_size);
5152
size_t rss_after = current_rss();
5253
fprintf(stderr, "%zu -> %zu\n", rss_before, rss_after);
5354
if (rss_before <= rss_after)
@@ -59,10 +60,13 @@ int test_rss_difference(void *p) {
5960
}
6061

6162
int main() {
63+
page_size = getauxval(AT_PAGESZ);
64+
map_size = kNumPages * page_size;
65+
6266
fprintf(stderr, "starting rss %zu\n", current_rss());
6367
fprintf(stderr, "shadow pages: %zu\n", kNumShadowPages);
6468

65-
void *p = mmap(0, kMapSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
69+
void *p = mmap(0, map_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
6670
fprintf(stderr, "p = %p\n", p);
6771

6872
size_t total_count = 10;

compiler-rt/test/hwasan/TestCases/heap-buffer-overflow.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,11 @@ int main(int argc, char **argv) {
4747
// CHECKm30: Cause: heap-buffer-overflow
4848
// CHECKm30: is located 30 bytes before a 30-byte region
4949
//
50-
// CHECKMm30: is a large allocated heap chunk; size: 1003520 offset: -30
50+
// CHECKMm30: is a large allocated heap chunk; size: {{[0-9]*}} offset: -30
5151
// CHECKMm30: Cause: heap-buffer-overflow
5252
// CHECKMm30: is located 30 bytes before a 1000000-byte region
5353
//
54-
// CHECKM: is a large allocated heap chunk; size: 1003520 offset: 1000000
54+
// CHECKM: is a large allocated heap chunk; size: {{[0-9]*}} offset: 1000000
5555
// CHECKM: Cause: heap-buffer-overflow
5656
// CHECKM: is located 0 bytes after a 1000000-byte region
5757
//

compiler-rt/test/hwasan/TestCases/tag-mismatch-border-address.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@
77
#include <sanitizer/hwasan_interface.h>
88
#include <stdio.h>
99
#include <stdlib.h>
10+
#include <sys/auxv.h>
1011
#include <sys/mman.h>
1112

1213
static volatile char sink;
1314
extern void *__hwasan_shadow_memory_dynamic_address;
1415

1516
int main(int argc, char **argv) {
16-
void *high_addr = (char *)__hwasan_shadow_memory_dynamic_address - 0x1000;
17-
void *r = mmap(high_addr, 4096, PROT_READ, MAP_FIXED | MAP_ANON | MAP_PRIVATE,
17+
size_t page_size = getauxval(AT_PAGESZ);
18+
void *high_addr = (char *)__hwasan_shadow_memory_dynamic_address - page_size;
19+
void *r = mmap(high_addr, page_size, PROT_READ, MAP_FIXED | MAP_ANON | MAP_PRIVATE,
1820
-1, 0);
1921
if (r == MAP_FAILED) {
2022
fprintf(stderr, "Failed to mmap\n");

llvm/utils/gn/secondary/compiler-rt/lib/hwasan/BUILD.gn

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,13 @@ source_set("cxx_sources") {
8888
sources = [ "hwasan_new_delete.cpp" ]
8989
}
9090

91+
source_set("preinit_sources") {
92+
configs -= [ "//llvm/utils/gn/build:llvm_code" ]
93+
configs += [ "//llvm/utils/gn/build:crt_code" ]
94+
defines = [ "HWASAN_WITH_INTERCEPTORS=1" ]
95+
sources = [ "hwasan_preinit.cpp" ]
96+
}
97+
9198
static_library("hwasan_static") {
9299
output_dir = crt_current_out_dir
93100
output_name = "clang_rt.$hwasan_name$crt_current_target_suffix"
@@ -97,7 +104,10 @@ static_library("hwasan_static") {
97104
"//llvm/utils/gn/build:thin_archive",
98105
]
99106
configs += [ "//llvm/utils/gn/build:crt_code" ]
100-
deps = [ ":sources" ]
107+
deps = [
108+
":preinit_sources",
109+
":sources",
110+
]
101111
}
102112

103113
static_library("hwasan_cxx") {
@@ -138,15 +148,15 @@ static_library("hwasan_preinit") {
138148
"//llvm/utils/gn/build:thin_archive",
139149
]
140150
configs += [ "//llvm/utils/gn/build:crt_code" ]
141-
sources = [ "hwasan_preinit.cpp" ]
151+
deps = [ ":preinit_sources" ]
142152
}
143153

144154
group("hwasan") {
145155
deps = [
156+
":hwasan_cxx",
146157
":hwasan_preinit",
147158
":hwasan_shared",
148159
":hwasan_static",
149-
":hwasan_cxx",
150160
":version_script",
151161
]
152162
}

0 commit comments

Comments
 (0)