带有“-print-memory-usage”的 ld 输出的奇怪行为

问题描述 投票:0回答:0

我正在尝试获取微控制器使用 RAM 和闪存部分的百分比。 这是链接器文件.

(工具链:xPack for RISC-V,GCC-12.2) 当我使用第一个符号时:

    .stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size :
    {
        . = ALIGN(4);
        PROVIDE(_susrstack = . );
        . = . + __stack_size;
        PROVIDE( _eusrstack = .);
    } >RAM 

我有 100% 的 RAM 使用率。

当我使用下一个符号时:

    .stack :
    {
        . = ALIGN(4);
        PROVIDE(_susrstack = . );
        . = . + __stack_size;
        PROVIDE( _eusrstack = .);
    } >RAM 

我有 3% 的 RAM 使用率。

但实际上我只是将堆栈移动到该部分内。


当我使用旧的 GCC 8.3 时——两种情况下一切正常。

我比较了 GCC 12.2 和 8.3 的 ld'-print-memory-usage' 的输出。 行为不同。

在已用内存百分比计算期间,是否有任何方法可以忽略 .stack 和 .heap 部分? –

gcc linker size ld
© www.soinside.com 2019 - 2024. All rights reserved.