#include <cassert>
#include <cstddef>
#include <cstring>
#include <stdint.h>
extern char start_test_area[];
extern char start_test_area_1[];
extern char start_data[];
extern char end_data[];
extern char start_fill[];
extern char end_fill[];
extern char end_test_area[];
extern char test_addr[];
extern char test_addr_alias[];
int
main(int, char**)
{
assert(reinterpret_cast<uintptr_t>(start_test_area) == 0x20000001);
assert(reinterpret_cast<uintptr_t>(start_test_area_1) == 0x20000010);
for (int i = 0; i < 16; ++i)
assert(start_test_area_1[i] == 0);
assert(strcmp(start_test_area_1 + 16, "test bb") == 0);
for (int i = 16 + 7; i < 48; ++i)
assert(start_test_area_1[i] == 0);
assert(strcmp(start_test_area_1 + 48, "test aa") == 0);
assert(reinterpret_cast<uintptr_t>(start_test_area_1 + 48 + 8 + 4)
== reinterpret_cast<uintptr_t>(start_data));
assert(memcmp(start_data, "\1\2\0\4\0\0\0\010\0\0\0\0\0\0\0", 15) == 0
|| memcmp(start_data, "\1\0\2\0\0\0\4\0\0\0\0\0\0\0\010", 15) == 0);
assert(end_data == start_data + 15);
assert(start_fill == end_data);
assert(memcmp(start_fill, "\x12\x34\x56\x78\x12\x34\x56\0", 8) == 0);
assert(end_fill == start_fill + 8);
assert(end_test_area == end_fill);
assert(test_addr == start_test_area_1);
assert(test_addr_alias == test_addr);
}