オブジェクト ファイルをリンクすると、生成される ELF 実行可能ファイルには次の LOAD セグメント (のみ) が含まれます。
LOAD off 0x00000000 vaddr 0x00008000 paddr 0x00008000 align 2**15 filesz 0x000010f0 memsz 0x000010f0 flags rwx
リンカーは、書き込み可能な部分と実行可能な部分を分離するのではなく、ld
すべてのセクションを 1 つのセグメントに結合しました。rwx
これを防ぎたい。リロケータブル オブジェクトには、書き込み可能または実行可能として適切にマークされたセクションがあるため、この問題はリンク時に発生します。
ld
では、がセグメントにアクセス許可を割り当てる方法を決定するものは何ですか? リンカー スクリプトには、それに関連するものはないようです。ツールチェーンのビルド時に指定されたものですか?
ARM をターゲットにしており、ツールチェーンはarm-linux-gnueabi
バージョンbinutils
2.22 です。
編集:リンカースクリプトはこちらです。その他のリンカー オプションは、、、-Bdynamic
およびです。--gc-sections
-z nocopyreloc
--no-undefined