2012-06-28 5 views
10

私は、以下のリンカスクリプトを持っている:私は私のプログラムをコンパイルするときどのように1セグメント内の2つのセクションを配置する(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) 
    } 
} 

2節(幹部およびデータ)が異なるLOADセグメントです。 2つのセクション(.arora_data_free_spaceと.arora_exec_free_space)を1つの LOADセグメントに入れたいと思います。 リンカースクリプトを使用してそれを行う方法はありますか? どうすればいいですか?おかげさまで

答えて

3

確かに - 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 
} 
+0

私がPHDRSを使用しているとき、残りのELFセグメントは削除されます。私はこのセクションを1つのセグメントに入れ、残りのエルフをそのまま維持する方法を探しています。 – Jah

+0

あなたはリンクを読んでいますか?リンカがデフォルトで合理的なプログラムヘッダを作成しますが、場合によってはプログラムヘッダをより正確に指定する必要があるかもしれませんが、リンカがリンカスクリプトでPHDRSコマンドを見ると、指定されたプログラムヘッダー以外のプログラムヘッダーは作成されません。あなたが他の人たちのままにしておきたいのであれば、それらをあなたのPHDRSに入れるだけです。 –

関連する問題