Claudio Scordino
2018-08-08 10:05:22 UTC
Hi all,
Using the Linaro aarch64 bare-metal toolchain (based on newlib), I need to specify the heap location in the linker script in order to be able of using C++ STL data structures with dynamic-memory (e.g. std::vector).
I've therefore defined the "end" symbol as shown below.
.data : {
*(.data)
}
. = ALIGN(8);
/* "end" is used by newlib's syscalls */
PROVIDE(end = .);
. = ALIGN(16);
stack_bottom = .;
. = ALIGN(4096);
. = . + 0x10000;
stack_top = .;
However, this way there is no way of checking if the heap has reached the maximum value (after which we get stack corruption).
I'd therefore like to know if newlib has some further symbol for specifying the maximum heap size in addition to the heap location.
Alternatively, is there any symbol for specifying the heap boundaries (i.e. beginning and end) ?
Many thanks,
Claudio
Using the Linaro aarch64 bare-metal toolchain (based on newlib), I need to specify the heap location in the linker script in order to be able of using C++ STL data structures with dynamic-memory (e.g. std::vector).
I've therefore defined the "end" symbol as shown below.
.data : {
*(.data)
}
. = ALIGN(8);
/* "end" is used by newlib's syscalls */
PROVIDE(end = .);
. = ALIGN(16);
stack_bottom = .;
. = ALIGN(4096);
. = . + 0x10000;
stack_top = .;
However, this way there is no way of checking if the heap has reached the maximum value (after which we get stack corruption).
I'd therefore like to know if newlib has some further symbol for specifying the maximum heap size in addition to the heap location.
Alternatively, is there any symbol for specifying the heap boundaries (i.e. beginning and end) ?
Many thanks,
Claudio