Как разместить 2 раздела в 1 сегменте (с использованием ld-скриптов)

У меня есть следующий компоновщик script:

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

Конечно - вам просто нужно использовать PHDRS. Я думаю, что пример этой ссылки в значительной степени похож на то, что вы хотите сделать. Вот пример (непроверенный), который я сделал из вашего компоновщика script:

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
}