仮想メモリの最後に特別なセクションを持つプログラムを作成したいと思います。だから私は、リンカスクリプトをやってみたかった、このような何か:明示的にリンカースクリプトで開始スタックポインタを設定します
/* ... */
.section_x 0xffff0000 : {
_start_section_x = .;
. = . + 0xffff;
_end_section_x = .;
}
問題は、GCC/LD/glibcのことが知られているが重なった場合でも、32ビットアプリケーションのために、デフォルトでこの場所にスタックをロードするように見えるということですセクション。上記のコードゼロは、例外を引き起こしてスタックから抜け出しています。スタックに別のVMメモリの場所を使用するようにリンカに指示する方法はありますか? (同様に、ヒープが仮想メモリのこのセクションにまたがっていないことを保証したい...)。
ターゲットに関する詳細情報を入力する必要があります。最初のレジスタの内容(スタック位置を決定する)はターゲットに依存します。 –
これはarm-8システム(32ビットモードでコンパイル)です。私はgcc 4.7.0ツールチェーンを持つLinux 3.10カーネルを使用しています。 – HardcoreHenry