Closed4
ELFメモ
ELFのセクションセグメントについて
基本的にセグメントがセクションを含むという構造をとっている。
ELF形式的にこの構造が決まっているわけではなくこれが基本形というだけ。
セグメントに含まれないセクションを作ることも可能だし、セグメント内にセグメントを作ることも可能。
実際にはセグメントとセクションは独立して存在している。
- セクション: リンクの単位
- セグメント: ロードの単位
readelfメモ
- ヘッダーを見る
readelf -h <file>
- セクション一覧を見る
readelf -S <file>
- セクションの詳細を見る
readelf -X <section number> <file>
- シンボルテーブルを見る
readelf -s <file>
ELF(リンク時)の一般的な構造。実行時はセクションに変わってセグメントが入っているはず。
ELFの構造 | 概要 |
---|---|
ELFヘッダー | ELFファイルがどのような構造になっているのか、どのマシン用なのかを保持 |
プログラムヘッダーテーブル | リンク時はオプショナル。入ってないことが多いらしい |
セクション1 | |
... | |
セクションn | |
セクションヘッダーテーブル | 各セクションのセクション名やセクションサイズが入っている。 |
セクションにはどのような種類があるのか。よく使われるものをまとめる
セクションの種類 | 概要 |
---|---|
PROGBIT | .text, .dataセクションなどのプログラム本体 |
SYMTAB | シンボルテーブル |
REL | 再配置テーブル |
NOBITS | ファイル中には実態のないもの。.bssセクションなど |
etc | 他にもいっぱい種類がある |
このスクラップは2023/01/28にクローズされました