ELF共有ライブラリ-PLTの動機
自己変更コードを使用して、動的にリンクされたライブラリでの関数呼び出しを高速化できますか? 私が理解している限り、ELF共有ライブラリは、一種の間接ジャンプテーブル(プロシージャリンケージテーブル、またはPLT)を使用して、ライブラリ関数の遅延バインディングを有効にします。目的は、最初の呼び出しで関数位置の遅延解決を有効にしながら、コードセグメントのテーブルを変更する必要を回避することです。 ロード時に、または場合によっては最初の関数呼び出しでさえ、そのテーブルのコードを動的に作成する方が高速ではないでしょうか? プロセス間でコードセグメントをできるだけ共有できるようにしますか(動的テーブルはプロセス専用になります)?セキュリティ上の理由からですか(書き込み可能なコードは実行可能であってはなりません -しかし、JITは常にそうしているので、実際にプログラムを起動する前に、ローダーが書き込み権限を追加および削除できます)。 それともそれらの組み合わせであり、関数呼び出しごとの小さなパフォーマンスの向上は努力の価値がないでしょうか?