ELF 入門
Windows
オブジェクトフォーマットはコンパイラ依存で、
- COFF (VC)
- OMF (BCC, DMC)
- ELF (GCC)
など (TODO: 他コンパイラ追加) 。 OMF2COFF など、各種変換などもあるけど うまくいったりいかなかったり、 あと .lib も無数に種類があって実にややこしい。
実行ファイルフォーマットは PE/COFF だけのはず。
PE については MZ ヘッダがあって COFF ヘッダがあって… とか適当にぐぐればわかると思う。 (TODO: あとで書く)
OMF はかなり異色つーか古いオブジェクトフォーマットらしく、 レコードがひたすら並んでて、 DWARF2 とかに近いかもなぁという印象。
MacOSX
Mach-O が使われている。 色々とツールが違うので他の項目参照。
Mach-O は mach header があって、 そのあと load command というヤツで、 メモリの構成などを指示するようになっている。 mach header が ELF header に対応してて load command が program header みたいなもんだと 思えばまぁ良さげな。
Universal Binary は lipo で操作可能。
(TODO: mach header でバイトオーダーを指定できるとか)
すばらしー: Mach-O入門実践編
Keyword(s):
References:[PortableBinaryHacks]