2012-06-28 12 views
10

tengo el siguiente guión de enlazado:cómo poner en 2 secciones 1 segmento (El uso de secuencias de comandos ld)

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) 
    } 
} 

Cuando puedo compilar mi programa de la sección dos (ejecutivo y datos) se encuentran en diferentes segmentos de carga. Quiero poner las dos secciones (.arora_data_free_space y .arora_exec_free_space) en un segmento LOAD. ¿Hay alguna forma de hacerlo utilizando scripts de enlazador? ¿Cómo puedo hacerlo? Gracias.

Respuesta

3

Claro, solo necesita usar PHDRS. El ejemplo en ese enlace es más o menos exactamente lo que quiere hacer, creo. Aquí hay un ejemplo (no probado) que hice de su secuencia de comandos del enlazador:

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 
} 
+0

Cuando estoy usando PHDRS, el resto de los segmentos ELF se eliminan. Estoy buscando una forma de poner estas secciones en una secuencia y mantener al resto del elfo sin ningún cambio. – Jah

+0

¿Has leído el enlace? "El enlazador creará encabezados de programa razonables por defecto. Sin embargo, en algunos casos, es posible que deba especificar los encabezados del programa de manera más precisa. Puede utilizar el comando PHDRS para este fin. Cuando el vinculador ve el comando PHDRS en el script del enlazador, no creará ningún encabezado de programa que no sean los especificados ". Si quieres dejar a los demás como están, solo tienes que incluirlos en tu PHDRS. –

Cuestiones relacionadas