【问题标题】:How to map LTO sections to output sections in GCC (Arm) linker?如何将 LTO 部分映射到 GCC(Arm)链接器中的输出部分?
【发布时间】:2022-01-03 02:39:15
【问题描述】:

我有一个链接器文件,用作 Gnu Arm Embedded Toolchain 的输入。

除其他外,它包含这样的输出部分:

.text :
{
  . = ALIGN(4);
  *(.text*)
  *(.rodata*)
} > FLASH

,其中 FLASH 是一个 MEMORY 块。

我的问题是,当我使用 LTO(链接时优化)编译 C++ 文件时,我的一些代码被放在生成的目标文件中的非“.text”部分中。这些部分的名称似乎一致:

.gnu.lto<SOMETHING>

因此,它们没有放在我的 .text 输出部分中。

如何将 LTO 输入部分映射到我的 .text 输出部分?

【问题讨论】:

  • some of my code is put in non-".text" sections in the resulting object files 还有?看起来他们属于那里。你为什么不想把它们放在那里的原因是什么?这是XY问题吗?听起来您的代码中存在错误,该错误仅在 LTO 中表现出来,并且您正在尝试修复一些不相关的东西。很可能,像往常一样,您的中断向量得到优化。
  • 代码存在于非“.text”部分中不是问题,但我不知道如何将其包含在链接产生的输出 .text 部分中。我控制着中断向量。

标签: gcc linker arm object-files lto


【解决方案1】:

事实证明,我的问题与对 VMA 和 LMA 语句在 GNU 链接器文件中的工作方式的误解有关。因此,从本质上讲,LTO 部分已正确映射。感谢所有花时间在这方面的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 2014-11-27
    相关资源
    最近更新 更多