Risc-v 链接器堆栈和堆部分为空 ARM 不是为什么?

问题描述

我有一个很长的链接器脚本,但在它的最后,我执行以下操作:

    .heap (copY): {
        __heap_start = .;
        KEEP(*(.heaP*))
        __heap_end = .;
    } > RAM

    .stack (copY): {
        KEEP(*(.stack*))
    } > RAM

    __stack_start = ORIGIN(RAM) + LENGTH(RAM);
    __stack_end = __stack_start - SIZEOF(.stack);
    PROVIDE(_stack = __stack_start);

    ASSERT(__stack_end >= __heap_end,"Stack overflow in region RAM")

通过这种方式,我可以计算出适合代码所需的最低限度的 RAM。它在 ARM 中运行良好,当我查看链接器映射时,我看到 .stack 和 .heap 不是空的。但是,当我对 RISC-V 执行相同操作时,这些区域是空的。有什么原因吗?

我为两者使用的代码是相似的。我正在使用 arm-none-eabi-gcc 和 riscv32-unkNown-elf-gcc。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)