英語版
このページの英語版を見る

core.sys.darwin.mach.nlist

の記号と定義に対するバインディングは、次のとおりである。 mach-o/nlist.h
このファイルはMacOSX 10.15 SDKに基づいて作成された。
Authors:
Mathias 'Geod24' Lang
struct nlist_64;
64ビットアーキテクチャ用シンボルリストのエントリ
このシンボルは、さまざまなタイプのデータを記述するために使用できる、 STABSデバッグ情報を含む。MacOSX 10.8 SDKで導入された。
alias n_un = n_strx;
n_strx 、Cコードでは "共用体"であるため、互換性のあるエイリアス。
uint n_strx;
文字列テーブルへのこのシンボルの名前のインデックス
すべての名前は、NUL終端の文字列として文字列テーブルに格納される。 歴史的な理由から、文字列テーブルの最初のエントリーは0 である、 したがって、NULLでない名前はすべてインデックス > 0を持つ。
ubyte n_type;
このシンボルの型を表すビットフィールドは、以下のとおりである。
実際には、これは4つのフィールドを記述する:
  • N_STAB (上位3ビット)
  • N_PEXT(次の1ビット)
  • N_TYPE(次の3ビット)
  • N_EXT(最後の1ビット)
列挙型値N_STABN_PEXTN_TYPEN_EXT をマスクとして使用する。 は、このnlist_64 が実際にどの型であるかをチェックするためのマスクとして使用されるべきである。
ubyte n_sect;
セクション番号(0NO_SECT を意味することに注意)。
N_STAB
これらのビットのいずれかがセットされている場合、シンボリック・デバッグ・エントリー
シンボリックデバッグエントリだけがN_STABビットのいくつかが設定されている。 これらのビットのどれかがセットされていれば、それはシンボリックデバッグエントリ(スタブ)である。 この場合 この場合、n_typeフィールドの値(フィールド全体)は<mach-o/stab>で与えられる。 <mach-o/stab.h>で与えられる。
N_PEXT
プライベート外部シンボルビット
N_TYPE
型ビットのマスク。
N_EXT
外部シンボルビット、外部シンボルに対して設定される
N_UNDF
未定義 (n_sect == NO_SECT)
N_ABS
絶対値 (n_sect == NO_SECT)
N_SECT
セクション番号で定義されているnlist_64.n_sect
N_PBUD
プリバウンド未定義(dylibで定義されている)
N_INDR
間接記号
もし型が N_INDRである場合、そのシンボルは 別のシンボルと同じであると定義されている。この場合、n_value フィールドは、他のシンボルの名前の文字列テーブルへのインデックスとなる。 へのインデックスである。他のシンボル が定義されると、両者は定義された型と値を取る。
enum int NO_SECT;
シンボルがどのセクションにもない
型がN_SECTの場合、n_sectフィールドにはシンボルが定義されているセクションの序数が格納される。 セクションの序数が入る。 セクションは1から順に番号付けされる。 セクションは1から順に番号付けされ、そのセクションが含まれるファイルのロードコマンドに現れる順にセクションを参照する。 セクションを指す。 つまり、同じ序数が異なるファイルの異なるセクションを参照する可能性がある。 セクションを指す。
すべてのシンボルテーブル・エントリ(N_STABを含む)のn_valueフィールドは、そのn_sectフィールドの値に基づいてリンクエディターによって更新される。 (N_STABを含む)すべてのシンボルテーブルエントリーのn_valueフィールドは、そのn_sectフィールドの値に基づいてリンクエディターによって更新される。 を参照するセクションが再配置される。 n_sectフィールドの値がNO_SECTの場合、リンクエディターによって更新される。 フィールドの値がNO_SECTの場合、n_valueフィールドはリンクエディターによって変更されない。
enum int MAX_SECT;
セクションの最大数:1から255まで
pure nothrow @nogc @safe ubyte GET_COMM_ALIGN(uint n_desc);

pure nothrow @nogc ref @safe ushort SET_COMM_ALIGN(return ref ushort n_desc, size_t wanted_align);
共通シンボルは未定義(N_UNDF)外部型(N_EXT)で表される。 値(n_value)が0でない。 この場合、n_valueフィールドの値は(バイト単位の)サイズとなる。 フィールドの値は、共通シンボルのサイズ(バイト数)である。 n_sectフィールドは には NO_SECT が設定される。 共通シンボルのアラインメントは2のべき乗で設定できる。 以下のマクロを使用して、n_desc フィールドの一部として 2^1 から 2^15 の間で 2 のべき乗として設定することができる。もし アライメントが設定されていない場合(値0)、サイズに基づく自然なアライメントが使用される。 に基づくナチュラルアライメントが使用される。
REFERENCE_TYPE
未定義シンボルのn_descフィールドの参照型ビット
REFERENCE_FLAG_UNDEFINED_NON_LAZY

REFERENCE_FLAG_UNDEFINED_LAZY

REFERENCE_FLAG_DEFINED

REFERENCE_FLAG_PRIVATE_DEFINED

REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY

REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY
参照の型
REFERENCED_DYNAMICALLY
ダイナミック・リンク・エディターで使用されるオブジェクトのストリッピングを簡単にするため 静的リンクエディターは、動的リンクエディターで使用されるオブジェクトの削除を簡単にするために、動的リンクエディターで参照されるオブジェクトを定義したシンボルをマークする。 動的バインド・オブジェクト(動的共有ライブラリ、バンドル)によって参照されるオブジェクトを定義したシンボルをマークする。 このマークによって、ストリップはこれらのシンボルをストリップしないことがわかる。
pure nothrow @nogc @safe ubyte GET_LIBRARY_ORDINAL(uint n_desc);

pure nothrow @nogc ref @safe ushort SET_LIBRARY_ORDINAL(return ref ushort n_desc, uint ordinal);
twolevel_namespaceオプションが有効なスタティックリンクエディターで作成されたイメージでは、-twolevel_namespaceオプションが有効である。 オプションを有効にしてスタティックリンクエディタで作成されたイメージでは、 machヘッダのflagsフィールドに MH_TWOLEVELでマークされる。 そして、イメージの未定義参照のバインディングは、スタティックリンクエディターによって決定される。 スタティックリンクエディターによって決定される。 未定義シンボルがどのライブラリにバインドされているかは フィールドの上位8ビットに記録される。 フィールドの上位8ビットに記録される。 記録される序数 は、Mach-O の LC_LOAD_DYLIB にリストされたライブラリを参照する、 LC_LOAD_WEAK_DYLIB、LC_REXPORT_DYLIB、LC_LOAD_UPWARD_DYLIB、そして LC_LAZY_LOAD_DYLIBなどである。 ヘッダーに現れる順序でコマンドをロードする。 ライブラリの序数は1から始まる。 2レベルの名前空間イメージとして構築されたダイナミック・ライブラリの場合 別のモジュールで定義された未定義参照は、同じnlist構造体を使用する。 を使用する。この場合、SELF_LIBRARY_ORDINALがライブラリ序数として使用される。 すべてのイメージで すべてのイメージで定義されたシンボルについても、ライブラリ序数を self_library_ordinalに設定されなければならない。 EXECUTABLE_ORDINALは、実行イメージを参照する。 イメージを参照する。 を参照する。
DYNAMIC_LOOKUP_ORDINALは、2レベル名前空間の未定義シンボル用である。 ダイナミック・リンカがフラットな名前空間セマンティクスでルックアップする。 この序数は、Mac OS X 10.3の機能として追加された。 MAX_LIBRARY_ORDINALの値を1減らすことによって追加された。 そのため、既存のバイナリ または古いツールでビルドされたバイナリが0xfe (254)のダイナミック・ライブラリを持つことは合法である。 この場合 この場合、序列値0xfe (254)は互換性のためにライブラリ序列として扱われなければならない。 として扱わなければならない。
N_NO_DEAD_STRIP
シンボルはデッドストリップされない
n_descフィールドのN_NO_DEAD_STRIPビットは、リロケータブルな.oファイル(MH_OBJECTファイルタイプ)にのみ現れる。 リロケータブル.oファイル(MH_OBJECTファイルタイプ)にのみ現れる。そして スタティックリンクエディターがシンボルをデッドストリップしないことを示すために使用される。
N_DESC_DISCARDED
シンボルは破棄される
n_descフィールドのN_DESC_DISCARDEDビットはリンクされたイメージには現れない。 しかし、ダイナミック・リンク・エディターがごくまれに使用する。 を破棄されたシンボルとしてマークし、リンクに使用されなくなる。
N_WEAK_REF
シンボルは弱い参照である
n_descフィールドのN_WEAK_REFビットは、ダイナミックリンカーに次のことを示す。 未定義シンボルは欠落してもよく、欠落時のアドレスはゼロである。 のアドレスを持つ。
N_WEAK_DEF
合体シンボルは弱い定義である
n_descフィールドのN_WEAK_DEFビットは、静的リンカーと動的リンカーに、シンボルの定義が弱いことを示す。 リンカに対して、シンボル定義が弱いことを示す。 を使用することができる。 現在のところ、これは がサポートされているのは、合体セクションのシンボルのみである。
N_REF_TO_WEAK
弱いシンボルへの参照
n_descフィールドのN_REF_TO_WEAKビットは、ダイナミック・リンカーに、未定義シンボルがフラット名前空間検索を使って解決されるべきであることを示す。 に対して、未定義のシンボルはフラット名前空間検索を使って解決すべきであることを示す。
N_ARM_THUMB_DEF
シンボルが Thumb 関数である(ARM)。
n_descフィールドのN_ARM_THUMB_DEFビットは、シンボルが親指関数の定義であることを示す。 であることを示す。
N_SYMBOL_RESOLVER
n_descフィールドのN_SYMBOL_RESOLVERビットは、そのシンボルが実際にはリゾルバであることを示す。 n_descフィールドのN_SYMBOL_RESOLVERビットは、その関数が実際にはリゾルバ関数であり、 Thumb関数のアドレスを取得するために呼び出されるべきであることを示す。 を呼び出す必要があることを示す。 このビットは.oファイル(MH_OBJECTファイルタイプ)でのみ使用可能である。
N_ALT_ENTRY
n_descフィールドのN_ALT_ENTRYビットは、シンボルが前のコンテンツに固定されていることを示す。 シンボルが前のコンテンツに固定されていることを示す。
N_COLD_FUNC
n_descフィールドのN_COLD_FUNCビットは、そのシンボルの使用頻度が低いことを示す。 リンカはそのシンボルをセクションの末尾に置くべきである。