タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

mach-oに関するa_bickyのブックマーク (3)

  • Mach-O入門 実践編 - mteramoto's blog

    準備 というわけで、Mach-Oファイルの構造がわかったところで、実際のファイルで確かめてみることにする。 C言語で簡単な実行ファイルを作成して、otoolで構造を表示させてみよう。プログラムはこんな感じ。test.cというファイル名で保存する。 #include <stdio.h> int main(void) { printf("Hello World\n"); return 0; } gccでコンパイルしよう。 > gcc test.c -o test準備完了。試しに実行してみる。 > ./test Hello Worldうん、いいみたいだね。 共有ライブラリ x86のLinuxだとlibcがダイナミックリンクされるプログラムだから、Mach-Oでも同じはず。otoolの-Lオプションを使って、依存する共有ライブラリを調べてみよう。 > otool -L test test: /us

    Mach-O入門 実践編 - mteramoto's blog
  • Mach-O入門 - mteramoto's blog

    ちょっと間が空いたけど、Mach-O入門の続き。今回はセグメント。 セグメント セグメントは、ダイナミックリンカがアプリケーションをロードしたときに仮想メモリにマップされる、Mach-Oファイル中のデータの範囲と、メモリ保護の属性を定義しています。セグメントはページアラインされていて、ゼロもしくは一つ以上のセクションを含みます。 セグメントは、ディスク上で占有している以上のサイズのメモリを、実行時に使用することができます。たとえば__PAGEZEROセグメントは仮想メモリ上では1ページを占有しますが、ディスク上でのサイズは0です。なお、0で埋められるセクションは、セグメントの最後尾に配置される必要があります。 サイズを小さくするため、中間オブジェクトファイルは1つのセグメントのみを含みます。このセグメントには名前がありません。それぞれのセクションには、そのセクションが配置されるセグメントの

    Mach-O入門 - mteramoto's blog
  • Mach-O入門 - mteramoto's blog

    Mach-O(Mach object) Mach-OとはMach objectの略で、Mac OS Xでプログラムやライブラリをディスクに格納する際に使用されるファイルフォーマットです。Mach-Oのファイルは、先頭にヘッダがあり、load commandおよびsegmentがその後にあります。segmentは複数のsectionを含んでいて、1から連番が振られています。 これらのヘッダの構造は、mach-o/loader.hに記述されています。 Mach-Oヘッダ Mach-Oファイルは1つのアーキテクチャ向けのコードとデータを格納しています。どのアーキテクチャ向けのファイルかは、Mach-Oヘッダに格納されています。複数のアーキテクチャ向けのMach-Oファイルをまとめたものが、いわゆるユニバーサルバイナリと呼ばれるものです。 Mach-OヘッダはすべてのMach-Oファイルの先頭に必

  • 1