【发布时间】:2019-01-15 13:02:34
【问题描述】:
我使用的是 Linaro 提供的基于 newlib C 库的 aarch64 bare-metal 工具链,我需要在链接器脚本中指定堆位置才能使用具有动态内存的 C++ STL 数据结构(例如 std::vector)。
按照示例here,我定义了end 符号,如下所示。
.data : {
*(.data)
}
. = ALIGN(8);
/* "end" is used by newlib's syscalls! */
PROVIDE(end = .);
. = ALIGN(16);
stack_bottom = .;
. = ALIGN(4096);
. = . + 0x10000;
stack_top = .;
但是,这种方式无法检查堆是否已达到最大值(之后我们会遇到堆栈损坏)。
因此,我想知道裸机 newlib 库是否有其他符号来指定最大堆大小。
【问题讨论】:
标签: gcc heap-memory bare-metal linker-scripts newlib