为什么GNU ld会在内存中留下一个漏洞?

时间:2018-02-21 01:23:25

标签: c++ gcc memory linker compiler-optimization

我在ppc 32位平台上使用GNU链接器。 当我看到" rodata"部分并尝试将其与该部分中的符号进行对比,我发现有一些记忆孔,没有分配任何符号,但会影响该部分的大小。

这里可以看到一个这样的洞

ffffc970    00000050 r _ZL10RING_INDEX
ffffcb68    00000020 r _ZZ19p9_pm_check_quiesceE15SPWKUP_SRC_REGS

虽然符号的大小是0x50,但在内存中的下一个符号之前有大约424个字节(0xffffcb68 - 0xffffc970 - 0x50)的间隙。我们可以解释这个差距吗?有没有办法防止这种差距?

1 个答案:

答案 0 :(得分:1)

可以填充无名数据,例如字符串常量。没有重新加工,很难给出更准确的答案。