Go to main content
Oracle® Solaris 11.3 リンカーとライブラリガイド

印刷ビューの終了

更新: 2015 年 10 月
 
 

mapfile オプションのデフォルト

リンカーは、デフォルトの segment_attribute_values を持つ 4 つの組み込みセグメント (textdatabssnote)、および対応するデフォルトの対応付け指令を定義します。リンカーはデフォルトを提供するのに実際の mapfile は使いませんが、ここではデフォルトの内容を mapfile に書かれているものとして、リンカーがユーザーの mapfile を処理する際にどのようなことが起こるかを説明します。

次に示す例は、リンカーのデフォルトを mapfile として表現したものです。リンカーは、mapfile をすでに読み取ったかのように実行を開始します。その後でリンカーは、mapfile を読み取ったり、あるいはデフォルトへの追加や変更を行なったりします。

        text = LOAD ?RX;
        text : ?A!W;
        data = LOAD ?RWX;
        data : ?AW;
        note = NOTE;
        note : $NOTE;

mapfile の各セグメント宣言は読み取られる際、次のようにセグメント宣言の既存リストと比較されます。

  1. セグメントが mapfile に存在しておらず、同じ segment-type 値の別のセグメントが存在する場合、そのセグメントは、すべての同じ segment_type の既存セグメントの前に追加されます。

  2. セグメントが読み取られたとき、既存の mapfile に同じ segment_type のセグメントがない場合、セグメントは、segment_type 値が次の順序になるように追加されます。

    INTERP

    LOAD

    DYNAMIC

    NOTE

  3. セグメントの segment_typeLOAD で、この LOAD 可能なセグメントに virtual_address 値を定義していた場合、セグメントは、virtual_address 値が定義されていない、あるいはより高い virtual_address 値の LOAD が指定されたセグメントの前、そしてそれよりも低い virtual_address 値のセグメントの後に置かれます。

mapfile の各対応付け指令が読み取られる際、同じセグメントに対してすでに指定されたその他の対応付け指令の後 (かつ、そのセグメントのデフォルトの対応付け指令の前) に、指令が追加されます。