Skip to content
Snippets Groups Projects
Commit 306c98f8 authored by Thibaut Benjamin's avatar Thibaut Benjamin
Browse files

[eacsl] increase tls size to always include standard streams

parent 43714dd5
No related branches found
No related tags found
No related merge requests found
...@@ -42,14 +42,44 @@ static __thread int safe_location_counter = 0; ...@@ -42,14 +42,44 @@ static __thread int safe_location_counter = 0;
safe_location_counter++; \ safe_location_counter++; \
} while (0) } while (0)
struct segment_boundaries safe_locations_boundaries = {
.start = 0,
.end = 0,
};
uintptr_t get_safe_locations_start() {
uintptr_t min = get_safe_location(0)->address;
for (int i = 1; i < get_safe_locations_count(); i++) {
memory_location *location = get_safe_location(i);
if (min >= location->address)
min = location->address;
}
return min;
}
uintptr_t get_safe_locations_end() {
memory_location *first_location = get_safe_location(0);
uintptr_t max = first_location->address;
for (int i = 1; i < get_safe_locations_count(); i++) {
memory_location *location = get_safe_location(i);
if (max <= location->address)
max = location->address;
}
return max;
}
void collect_safe_locations() { void collect_safe_locations() {
/* Tracking of errno and standard streams */ /* Tracking of errno and standard streams */
add_safe_location((uintptr_t)&errno, sizeof(int), 1, E_ACSL_OS_IS_LINUX); add_safe_location((uintptr_t)&errno, sizeof(int), 1, E_ACSL_OS_IS_LINUX);
add_safe_location((uintptr_t)stdout, sizeof(FILE), 1, E_ACSL_OS_IS_LINUX); add_safe_location((uintptr_t)stdout, sizeof(FILE), 1, E_ACSL_OS_IS_LINUX);
add_safe_location((uintptr_t)stderr, sizeof(FILE), 1, E_ACSL_OS_IS_LINUX); add_safe_location((uintptr_t)stderr, sizeof(FILE), 1, E_ACSL_OS_IS_LINUX);
add_safe_location((uintptr_t)stdin, sizeof(FILE), 1, E_ACSL_OS_IS_LINUX); add_safe_location((uintptr_t)stdin, sizeof(FILE), 1, E_ACSL_OS_IS_LINUX);
safe_locations_boundaries.start = get_safe_locations_start();
safe_locations_boundaries.end = get_safe_locations_end();
} }
/* collect_safe_locations(); */
size_t get_safe_locations_count() { size_t get_safe_locations_count() {
return safe_location_counter; return safe_location_counter;
} }
......
...@@ -50,6 +50,14 @@ struct memory_location { ...@@ -50,6 +50,14 @@ struct memory_location {
}; };
typedef struct memory_location memory_location; typedef struct memory_location memory_location;
struct segment_boundaries {
uintptr_t start;
uintptr_t end;
};
typedef struct segment_boundaries segment_boundaries;
struct segment_boundaries safe_locations_boundaries;
/*! Initialize the array of safe locations */ /*! Initialize the array of safe locations */
void collect_safe_locations(); void collect_safe_locations();
......
...@@ -183,7 +183,8 @@ static void fill_thread_layout_stack(memory_partition *pstack, ...@@ -183,7 +183,8 @@ static void fill_thread_layout_stack(memory_partition *pstack,
static void fill_thread_layout_tls(memory_partition *ptls) { static void fill_thread_layout_tls(memory_partition *ptls) {
// Since the TLS is by design specific to each thread, we can reuse the // Since the TLS is by design specific to each thread, we can reuse the
// method used to identify the TLS segment in the main thread // method used to identify the TLS segment in the main thread
set_application_segment(&ptls->application, get_tls_start(), get_tls_size(), collect_safe_locations();
set_application_segment(&ptls->application, get_tls_start(0), get_tls_size(),
"thread_tls", NULL); "thread_tls", NULL);
set_shadow_segment(&ptls->primary, &ptls->application, 1, set_shadow_segment(&ptls->primary, &ptls->application, 1,
"thread_tls_primary"); "thread_tls_primary");
......
...@@ -53,6 +53,9 @@ extern char end; ...@@ -53,6 +53,9 @@ extern char end;
/*!\brief The first address of a program. */ /*!\brief The first address of a program. */
extern char __executable_start; extern char __executable_start;
uintptr_t actual_tls_size = 0;
uintptr_t registered_tls_start = 0;
size_t increase_stack_limit(const size_t size) { size_t increase_stack_limit(const size_t size) {
rlim_t stacksz = (rlim_t)size; rlim_t stacksz = (rlim_t)size;
struct rlimit rl; struct rlimit rl;
...@@ -166,7 +169,7 @@ static size_t get_global_size() { ...@@ -166,7 +169,7 @@ static size_t get_global_size() {
/*! \brief Return byte-size of the TLS segment */ /*! \brief Return byte-size of the TLS segment */
inline size_t get_tls_size() { inline size_t get_tls_size() {
return PGM_TLS_SIZE; return (actual_tls_size == 0 ? PGM_TLS_SIZE : actual_tls_size);
} }
static __thread int id_tdata = 1; static __thread int id_tdata = 1;
...@@ -220,12 +223,30 @@ static void grow_bounds_for_size(uintptr_t *min_bound, uintptr_t *max_bound, ...@@ -220,12 +223,30 @@ static void grow_bounds_for_size(uintptr_t *min_bound, uintptr_t *max_bound,
} }
} }
static void init_tls_size() {
uintptr_t data = (uintptr_t)&id_tdata, bss = (uintptr_t)&id_tbss;
uintptr_t min_safe_loc = safe_locations_boundaries.start;
uintptr_t max_safe_loc = safe_locations_boundaries.end;
uintptr_t min_addr = data < bss ? data : bss;
uintptr_t max_addr = data > bss ? data : bss;
min_addr = min_addr < min_safe_loc ? min_addr : min_safe_loc;
max_addr = max_addr > max_safe_loc ? max_addr : max_safe_loc;
uintptr_t size = (max_addr - min_addr + 1) * 2;
actual_tls_size = size > PGM_TLS_SIZE ? size : PGM_TLS_SIZE;
}
/*! \brief Return start address of a program's TLS */ /*! \brief Return start address of a program's TLS */
uintptr_t get_tls_start() { uintptr_t get_tls_start(int main_thread) {
size_t tls_size = get_tls_size(); size_t tls_size = get_tls_size();
uintptr_t data = (uintptr_t)&id_tdata, bss = (uintptr_t)&id_tbss; uintptr_t data = (uintptr_t)&id_tdata, bss = (uintptr_t)&id_tbss;
uintptr_t min_safe_loc = safe_locations_boundaries.start;
uintptr_t max_safe_loc = safe_locations_boundaries.end;
uintptr_t min_addr = data < bss ? data : bss; uintptr_t min_addr = data < bss ? data : bss;
uintptr_t max_addr = data > bss ? data : bss; uintptr_t max_addr = data > bss ? data : bss;
if (main_thread) {
min_addr = min_addr < min_safe_loc ? min_addr : min_safe_loc;
max_addr = max_addr > max_safe_loc ? max_addr : max_safe_loc;
}
// We do not exactly know the bounds of the TLS, we can only guess an // We do not exactly know the bounds of the TLS, we can only guess an
// approximation. To do that, we take TLS's known addresses and add a buffer // approximation. To do that, we take TLS's known addresses and add a buffer
...@@ -287,15 +308,19 @@ uintptr_t get_tls_start() { ...@@ -287,15 +308,19 @@ uintptr_t get_tls_start() {
private_abort("Unsupported TLS area in the middle of heap area.\n" private_abort("Unsupported TLS area in the middle of heap area.\n"
"Example bss TLS address: %a\n" "Example bss TLS address: %a\n"
"Example data TLS address: %a\n" "Example data TLS address: %a\n"
"Estimated bounds of heap area: [%a, %a]\n", "Range of safe locations data: [%a, %a]\n"
bss, data, min_bound, max_bound); "Estimated bounds of heap area: [%a, %a]\n"
"Minimal TLS address: %a\n",
bss, data, min_safe_loc, max_safe_loc, min_bound, max_bound,
min_addr);
} }
private_assert(tls_start <= min_addr && max_addr <= tls_end, private_assert(tls_start <= min_addr && max_addr <= tls_end,
"Configured TLS size smaller than actual TLS size\n" "Configured TLS size smaller than actual TLS size\n"
"Configured TLS size: %" PRIxPTR " MB\n" "Configured TLS size: %" PRIxPTR " MB\n"
"Minimum supported TLS size for this execution: %" PRIxPTR "Minimum supported TLS size for this execution: %" PRIxPTR
" MB (%" PRIxPTR " B)\n", " MB (%" PRIxPTR " B)\n"
"Please ensure that the TLS size has been initialize with "
"[init_tls_size()]",
MB_SZ(tls_size), MB_SZ(tls_size),
// The minimum actual size is found by substracting the lesser // The minimum actual size is found by substracting the lesser
// known TLS address to the greater one. Since we estimate the // known TLS address to the greater one. Since we estimate the
...@@ -328,7 +353,9 @@ static void init_shadow_layout_global() { ...@@ -328,7 +353,9 @@ static void init_shadow_layout_global() {
static void init_shadow_layout_tls() { static void init_shadow_layout_tls() {
memory_partition *ptls = &mem_layout.tls; memory_partition *ptls = &mem_layout.tls;
set_application_segment(&ptls->application, get_tls_start(), get_tls_size(), collect_safe_locations();
init_tls_size();
set_application_segment(&ptls->application, get_tls_start(1), get_tls_size(),
"tls", NULL); "tls", NULL);
/* Changes of the ratio in the following would require changes in get_tls_start */ /* Changes of the ratio in the following would require changes in get_tls_start */
set_shadow_segment(&ptls->primary, &ptls->application, 1, "tls_primary"); set_shadow_segment(&ptls->primary, &ptls->application, 1, "tls_primary");
...@@ -709,7 +736,6 @@ void init_shadow_layout_main(int *argc_ref, char ***argv_ref) { ...@@ -709,7 +736,6 @@ void init_shadow_layout_main(int *argc_ref, char ***argv_ref) {
} }
void register_safe_locations(int thread_only) { void register_safe_locations(int thread_only) {
collect_safe_locations();
int count = get_safe_locations_count(); int count = get_safe_locations_count();
for (int i = 0; i < count; ++i) { for (int i = 0; i < count; ++i) {
memory_location *loc = get_safe_location(i); memory_location *loc = get_safe_location(i);
......
...@@ -11,172 +11,172 @@ ...@@ -11,172 +11,172 @@
Primary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> TLS ---------------------- >>> TLS ----------------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> VDSO --------------------- >>> VDSO ---------------------
Application: xxxkB [0x0000-0000-0000, 0x0000-0000-0000] Application: xxxkB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> -------------------------- >>> --------------------------
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread stack ------------- >>> Thread stack -------------
Application: 16 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 19 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 16 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 19 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> Thread TLS --------------- >>> Thread TLS ---------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
*** WARNING: Leakedxxxbytes of heap memory in 2 blocks *** WARNING: Leakedxxxbytes of heap memory in 2 blocks
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
MACRO: ROOT_EACSL_GCC_OPTS_EXT --rt-debug --rt-verbose --concurrency MACRO: ROOT_EACSL_GCC_OPTS_EXT --rt-debug --rt-verbose --concurrency
COMMENT: Filter the addresses of the output so that the test is deterministic. COMMENT: Filter the addresses of the output so that the test is deterministic.
MACRO: ROOT_EACSL_EXEC_FILTER sed -e s_0x[0-9a-f-]*_0x0000-0000-0000_g | sed -e s_Offset:\s[0-9-]*_Offset:xxxxx_g | sed -e s/[0-9]*\skB/xxxkB/g | sed -e s/Leaked.*bytes/Leakedxxxbytes/g MACRO: ROOT_EACSL_EXEC_FILTER sed -e s_0x[0-9a-f-]*_0x0000-0000-0000_g | sed -e s_Offset:\s[0-9-]*_Offset:xxxxx_g | sed -e s/[0-9]*\skB/xxxkB/g | sed -e s/Leaked.*bytes/Leakedxxxbytes/g | sed -e s/[0-9]*\sMB/xxMB/g
*/ */
// Include existing test // Include existing test
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
/* run.config_dev /* run.config_dev
MACRO: ROOT_EACSL_GCC_OPTS_EXT --rt-debug --rt-verbose --full-mtracking MACRO: ROOT_EACSL_GCC_OPTS_EXT --rt-debug --rt-verbose --full-mtracking
COMMENT: Filter the addresses of the output so that the test is deterministic. COMMENT: Filter the addresses of the output so that the test is deterministic.
MACRO: ROOT_EACSL_EXEC_FILTER sed -e s_0x[0-9a-f-]*_0x0000-0000-0000_g | sed -e s_Offset:\s[0-9-]*_Offset:xxxxx_g | sed -e s/[0-9]*\skB/xxxkB/g MACRO: ROOT_EACSL_EXEC_FILTER sed -e s_0x[0-9a-f-]*_0x0000-0000-0000_g | sed -e s_Offset:\s[0-9-]*_Offset:xxxxx_g | sed -e s/[0-9]*\skB/xxxkB/g | sed -e s/[0-9]*\sMB/xxMB/g
*/ */
int main() { int main() {
return 0; return 0;
......
...@@ -11,9 +11,9 @@ ...@@ -11,9 +11,9 @@
Primary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> TLS ---------------------- >>> TLS ----------------------
Application: 2 MB [0x0000-0000-0000, 0x0000-0000-0000] Application: 3 MB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
Secondary : 2 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Secondary : 3 MB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
>>> VDSO --------------------- >>> VDSO ---------------------
Application: xxxkB [0x0000-0000-0000, 0x0000-0000-0000] Application: xxxkB [0x0000-0000-0000, 0x0000-0000-0000]
Primary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx } Primary : xxxkB [0x0000-0000-0000, 0x0000-0000-0000]{ Offset:xxxxx }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment