共有オブジェクトのメモリ使用量を分析するために objdump を使用しています。.data セクションと .rodata セクションに加えて、.data.rel.roセクションがあります。
これが何に使われたか知っている人はいますか?
ここで答えを見つけました:
gcc、GNU リンカー、および glibc 動的リンカーが協力して、読み取り専用再配置 (relro) と呼ばれるアイデアを実装します。これにより、リンカーは、動的再配置が適用された後、実行可能ファイルまたは (より一般的には) 共有ライブラリの一部を読み取り専用として指定できます。
これは、関数のアドレスや別のグローバル変数など、再配置が必要なものに初期化される読み取り専用のグローバル変数に使用できます。グローバル変数は動的再配置の形式でランタイム初期化を必要とするため、読み取り専用セグメントに配置することはできません。ただし、これは定数であると宣言されているため、プログラムによって変更されることはないため、動的再配置が適用された後、動的リンカはそれを読み取り専用としてマークできます。