【发布时间】: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