[解決済み] gccやldで位置非依存の実行ファイルを作成するための-fPIEオプションとは何ですか?
質問
関数の呼び出しなど、コードはどのように変わるのでしょうか?
どのように解決するのですか?
PIEは、以下をサポートします。 アドレス空間レイアウトランダム化 (ASLR) を実行ファイルに追加しました。
PIEモードができる前は、プログラムの実行ファイルをメモリ上のランダムなアドレスに配置することはできず、位置独立コード(PIC)のダイナミックライブラリだけがランダムなオフセットに再配置することができました。PICがダイナミックライブラリに対して行うのと非常によく似た動作をしますが、違いはプロシージャリンケージテーブル(PLT)を作成せず、代わりにPC相対リロケーションを使用することです。
gcc/linkersでPIEサポートを有効にした後、プログラム本体は位置非依存なコードとしてコンパイルおよびリンクされます。ダイナミックリンカーは、ダイナミックライブラリーと同様に、プログラムモジュールに対して完全な再配置処理を行います。グローバルデータの使用は、グローバルオフセットテーブル(GOT)経由のアクセスに変換され、GOT再配置が追加されます。
PIEは、以下のサイトで詳しく説明されています。 このOpenBSDのPIEに関するプレゼンテーション .
機能の変更点を表示 このスライドでは (PIEとPICの比較)。
x86 ピックとパイの比較
ローカル・グローバル変数と関数はパイで最適化される
外部グローバル変数と関数はpicと同じ
であり このスライド (PIEと旧来のリンクの比較)
x86 パイとフラグなしを比較(修正済み)
ローカル・グローバル変数と関数はfixedと同様
外部グローバル変数と関数はpicと同じ
ただし、PIE は
-static
関連
-
[解決済み] なぜGCCはa*a*a*a*aを(a*a*a)*(a*a*a)に最適化しないのでしょうか?
-
[解決済み] g++とgccの違いは何ですか?
-
[解決済み] 8192個の要素にループをかけると、プログラムが遅くなるのはなぜですか?
-
[解決済み] .soファイル内のシンボルを一覧表示する方法
-
[解決済み] LLVMとは何ですか?
-
[解決済み] GCC -fPIC オプション
-
[解決済み] なぜGCCは、速度の代わりにサイズに最適化すると、15-20%速いコードを生成するのですか?
-
[解決済み] Linuxカーネルのprocess/unlikelyマクロはどのように動作し、どのような利点があるのでしょうか?
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
-
[解決済み】すべてのgcc警告を無効にする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】valgrindエラーの解釈 サイズ4の無効な書き込み
-
[解決済み】g++ output: file not recognized: ファイル形式が認識されない
-
[解決済み] .ascizと.stringアセンブラディレクティブの違いは何ですか?
-
gccコンパイルオプション -fpermissive
-
[解決済み] LD_LIBRARY_PATH と LIBRARY_PATH の比較
-
[解決済み] コンパイル時に127のエラーが発生する。
-
[解決済み] LLVMとは何ですか?
-
[解決済み] GCC -fPIC オプション
-
[解決済み] C言語で変数はメモリのどこに格納されていますか?
-
[解決済み] リンカーって何する人?