链接器节的位置

时间:2018-08-16 15:28:03

标签: c++ gcc linker sections

我已经在我的C ++代码中声明了一些extern const数据,并添加了section属性__attribute__((section("my_ro_data")))。 我的链接描述文件看起来像这样:

SECTIONS
{
    /* other stuff */

    .rodata :
    {
        *(.rodata .rodata.*)
        *(.gnu.linkonce.r.*)
    } >CODE
    . = ALIGN(4);

    /* other stuff */
}

我注意到在地图文件中,my_ro_data节位于*(.gnu.linkonce.r.*)之后,在其他内容之前。为什么会这样,以及链接程序如何知道,因为ld脚本未提及my_ro_data? 我也尝试过删除const限定词,然后链接器似乎将其放置到.data输出节中,谁的描述也没有提及将其放在此处,也不与通配符匹配。 因此,我假设该链接器正在寻找部分属性,并由他们决定放置它,但这只是我的推测,我需要确切地知道它是如何工作以及为什么如此工作。预先谢谢你。

此外,获得一些参考手册也很棒。试图找到一些东西,但是什么都没有。

0 个答案:

没有答案