mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-01 08:48:29 +00:00
Get address sanitizer mostly working
This commit is contained in:
parent
1f1f3cd477
commit
7327c345f9
149 changed files with 3777 additions and 3457 deletions
|
@ -47,16 +47,17 @@ TEST(grow, testStackMemory_convertsToDynamic) {
|
|||
int A[] = {1, 2, 3};
|
||||
int *p = A;
|
||||
size_t capacity = ARRAYLEN(A);
|
||||
EXPECT_FALSE(isheap(p));
|
||||
EXPECT_TRUE(grow(&p, &capacity, sizeof(int), 0));
|
||||
EXPECT_TRUE(isheap(p));
|
||||
EXPECT_GT(capacity, ARRAYLEN(A));
|
||||
EXPECT_EQ(1, p[0]);
|
||||
EXPECT_EQ(2, p[1]);
|
||||
EXPECT_EQ(3, p[2]);
|
||||
p[0] = 7;
|
||||
EXPECT_EQ(1, A[0]);
|
||||
free(p);
|
||||
if (!isheap(p)) {
|
||||
EXPECT_TRUE(grow(&p, &capacity, sizeof(int), 0));
|
||||
EXPECT_TRUE(isheap(p));
|
||||
EXPECT_GT(capacity, ARRAYLEN(A));
|
||||
EXPECT_EQ(1, p[0]);
|
||||
EXPECT_EQ(2, p[1]);
|
||||
EXPECT_EQ(3, p[2]);
|
||||
p[0] = 7;
|
||||
EXPECT_EQ(1, A[0]);
|
||||
free(p);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(grow, testGrowth_clearsNewMemory) {
|
||||
|
@ -86,12 +87,13 @@ TEST(grow, testOverflow_returnsFalseAndDoesNotFree) {
|
|||
int A[] = {1, 2, 3};
|
||||
int *p = A;
|
||||
size_t capacity = ARRAYLEN(A);
|
||||
EXPECT_FALSE(isheap(p));
|
||||
EXPECT_FALSE(grow(&p, &capacity, pushpop(SIZE_MAX), 0));
|
||||
EXPECT_FALSE(isheap(p));
|
||||
EXPECT_EQ(capacity, ARRAYLEN(A));
|
||||
EXPECT_EQ(1, p[0]);
|
||||
EXPECT_EQ(2, p[1]);
|
||||
EXPECT_EQ(3, p[2]);
|
||||
free_s(&p);
|
||||
if (!isheap(p)) {
|
||||
EXPECT_FALSE(grow(&p, &capacity, pushpop(SIZE_MAX), 0));
|
||||
EXPECT_FALSE(isheap(p));
|
||||
EXPECT_EQ(capacity, ARRAYLEN(A));
|
||||
EXPECT_EQ(1, p[0]);
|
||||
EXPECT_EQ(2, p[1]);
|
||||
EXPECT_EQ(3, p[2]);
|
||||
free_s(&p);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,32 +72,31 @@ TEST(mmap, testMapFile_fdGetsClosed_makesNoDifference) {
|
|||
|
||||
TEST(mmap, testMapFixed_destroysEverythingInItsPath) {
|
||||
unsigned m1 = _mmi.i;
|
||||
EXPECT_NE(MAP_FAILED, mmap((void *)(kFixedMappingsStart + FRAMESIZE * 0),
|
||||
EXPECT_NE(MAP_FAILED, mmap((void *)(kFixedmapStart + FRAMESIZE * 0),
|
||||
FRAMESIZE, PROT_READ | PROT_WRITE,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0));
|
||||
EXPECT_NE(MAP_FAILED, mmap((void *)(kFixedMappingsStart + FRAMESIZE * 1),
|
||||
EXPECT_NE(MAP_FAILED, mmap((void *)(kFixedmapStart + FRAMESIZE * 1),
|
||||
FRAMESIZE, PROT_READ | PROT_WRITE,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0));
|
||||
EXPECT_NE(MAP_FAILED, mmap((void *)(kFixedMappingsStart + FRAMESIZE * 2),
|
||||
EXPECT_NE(MAP_FAILED, mmap((void *)(kFixedmapStart + FRAMESIZE * 2),
|
||||
FRAMESIZE, PROT_READ | PROT_WRITE,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0));
|
||||
EXPECT_NE(MAP_FAILED, mmap((void *)(kFixedMappingsStart + FRAMESIZE * 0),
|
||||
EXPECT_NE(MAP_FAILED, mmap((void *)(kFixedmapStart + FRAMESIZE * 0),
|
||||
FRAMESIZE * 3, PROT_READ | PROT_WRITE,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0));
|
||||
ASSERT_GT(_mmi.i, m1);
|
||||
EXPECT_NE(-1, munmap((void *)kFixedMappingsStart, FRAMESIZE * 3));
|
||||
EXPECT_NE(-1, munmap((void *)kFixedmapStart, FRAMESIZE * 3));
|
||||
#ifdef __SANITIZE_ADDRESS__
|
||||
ASSERT_EQ(m1 + 1, _mmi.i);
|
||||
#else
|
||||
ASSERT_EQ(m1, _mmi.i);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(isheap, nullPtr) {
|
||||
ASSERT_FALSE(isheap(NULL));
|
||||
}
|
||||
|
||||
TEST(isheap, stackMemory) {
|
||||
int boop;
|
||||
ASSERT_FALSE(isheap(&boop));
|
||||
}
|
||||
|
||||
TEST(isheap, malloc) {
|
||||
ASSERT_TRUE(isheap(gc(malloc(1))));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue