Closed4

ELFメモ

nasanasa

ELFのセクションセグメントについて

基本的にセグメントがセクションを含むという構造をとっている。
ELF形式的にこの構造が決まっているわけではなくこれが基本形というだけ。

セグメントに含まれないセクションを作ることも可能だし、セグメント内にセグメントを作ることも可能。
実際にはセグメントとセクションは独立して存在している。

  • セクション: リンクの単位
  • セグメント: ロードの単位
nasanasa

readelfメモ

  • ヘッダーを見る readelf -h <file>
  • セクション一覧を見る readelf -S <file>
  • セクションの詳細を見る readelf -X <section number> <file>
  • シンボルテーブルを見る readelf -s <file>
nasanasa

ELF(リンク時)の一般的な構造。実行時はセクションに変わってセグメントが入っているはず。

ELFの構造 概要
ELFヘッダー ELFファイルがどのような構造になっているのか、どのマシン用なのかを保持
プログラムヘッダーテーブル リンク時はオプショナル。入ってないことが多いらしい
セクション1
...
セクションn
セクションヘッダーテーブル 各セクションのセクション名やセクションサイズが入っている。
nasanasa

セクションにはどのような種類があるのか。よく使われるものをまとめる

セクションの種類 概要
PROGBIT .text, .dataセクションなどのプログラム本体
SYMTAB シンボルテーブル
REL 再配置テーブル
NOBITS ファイル中には実態のないもの。.bssセクションなど
etc 他にもいっぱい種類がある
このスクラップは2023/01/28にクローズされました