如何在一个段中放置两个小节(使用ld脚本)

10

我有以下的链接脚本:

SECTIONS {

    .arora_exec_free_space 4399531 : 
    {
        *(.text)
        *(.rodata)
        *(.data.rel.ro.local)
    }
    .arora_data_free_space (ADDR(.arora_exec_free_space) + SIZEOF(.arora_exec_free_space)) : AT (7592352)
    {
        *(.data)
        *(.bss)
        *(.got)
    }
}

编译我的程序时,两个部分(exec和data)位于不同的LOAD段中。我想将这两个节(.arora_data_free_space和.arora_exec_free_space)放入一个LOAD段中。是否有使用链接器脚本进行此操作的方法? 我该如何做?谢谢。

1个回答

5
当然可以 - 您只需要使用PHDRS。该链接中的示例几乎完全符合您的要求。以下是我从您的链接脚本创建的示例(未经测试):
PHDRS
{
   mysegment PT_LOAD;
}

SECTIONS 
{
    .arora_exec_free_space 4399531 : 
    {
        *(.text)
        *(.rodata)
        *(.data.rel.ro.local)
    } :mysegment

    .arora_data_free_space (ADDR(.arora_exec_free_space) + SIZEOF(.arora_exec_free_space)) : AT (7592352)
    {
        *(.data)
        *(.bss)
        *(.got)
    } :mysegment
}

当我使用PHDRS时,其余的ELF段被删除了。我正在寻找一种方法将这些部分放入一个段中,并保持其余的elf不做任何更改。 - Jah
1
你读了链接吗?“链接器默认会创建合理的程序头。但是,在某些情况下,您可能需要更精确地指定程序头。您可以使用PHDRS命令来实现此目的。当链接器在链接脚本中看到PHDRS命令时,它将不会创建除指定的之外的任何程序头。”如果您想保留其他内容不变,只需在PHDRS中包含它们即可。 - Carl Norum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接