JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
プログラミングインタフェースガイド     Oracle Solaris 10 1/13 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  メモリーと CPU の管理

2.  リモート共有メモリー API (Solaris クラスタ用)

3.  セッション記述プロトコル API

4.  プロセススケジューラ

5.  近傍性グループ API

6.  入出力インタフェース

7.  プロセス間通信

8.  ソケットインタフェース

9.  XTI と TLI を使用したプログラミング

10.  パケットフィルタリングフック

11.  トランスポート選択と名前からアドレスへのマッピング

12.  リアルタイムプログラミングと管理

13.  Solaris ABI と ABI ツール

Solaris ABI とは?

Solaris ABI の定義

Solaris ライブラリにおけるシンボルバージョン管理

シンボルバージョン管理による Solaris ABI へのラベル付け

Solaris ABI ツール

appcert ユーティリティー

appcert の確認項目

非公開シンボルの使用

静的なリンク

非結合シンボル

appcert の非確認項目

appcert の使用法

appcert のオプション

appcert によるアプリケーションの選択

appcert の結果

appcert が報告した問題の修正

apptrace によるアプリケーションの確認

アプリケーションの確認

apptrace の実行

apptrace 出力の解釈

A.  UNIX ドメインソケット

索引

Solaris ABI の定義

Solaris ABI は Solaris ライブラリで定義されています。このような定義は、リンクエディタと実行時リンカーで使用されるライブラリバージョンの手法と方針によって行われます。

Solaris ライブラリにおけるシンボルバージョン管理

Solaris リンクエディタと実行時リンカーは、2 種類のライブラリ管理 (ファイルバージョン管理とシンボルバージョン管理) を使用します。ファイルバージョン管理では、ライブラリの名前にバージョン番号が (libc.so.1 のように) 追加されます。このようなライブラリにある 1 つまたは複数の公開インタフェースに互換性のない変更を行うと、バージョン番号は (libc.so.2 のように) インクリメントされます。動的にリンクされるアプリケーションでは、構築時にバインドしたシンボルが実行時にライブラリに存在しないことがあります。シンボルバージョン管理では、Solaris リンカーはシンボルのセットに名前を関連付けます。Solaris リンカーは次に、実行時のリンク中、その名前がライブラリに存在するかどうかを確認して、関連付けたシンボルが存在することを検証します。

ライブラリシンボルバージョン管理では、シンボルのセットにシンボルバージョン名を関連付け、その名前に番号付けスキームがある場合は、マップファイルを使用して番号を関連付けます。次の例は、架空の Sun ライブラリ libfoo.so.1 のマップファイルです。

        SUNW_1.2 {
            global:
                symbolD;
                symbolE
        } SUNW_1.1;

        SUNW_1.1 {
            global:
                symbolA;
                symbolB;
                symbolC;
        };

        SUNWprivate {
            global:
                __fooimpl;
            local: *;
        };

このマップファイルでは、symbolAsymbolB、および symbolC がバージョン SUNW_1.1 に関連付けられ、symbolD および symbolESUNW_1.2 に関連付けられ、SUNW_1.2SUNW_1.1 に関連付けられたすべてのシンボルを継承しています。シンボル __fooimpl は、継承チェーンを持たない異なる名前付きセット SUNWprivate に関連付けられています。

構築時、リンクエディタはアプリケーションが使用しているシンボルを調査します。リンクエディタは次に、これらのシンボルが依存しているアプリケーションにセット名を記録します。(番号付け継承) チェーンを持っているセットの場合、リンクエディタは、アプリケーションが使用するすべてのシンボルが含まれる最小限の名前付きセットを記録します。たとえば、アプリケーションが symbolA および symbolB だけを使用する場合、リンクエディタは SUNW_1.1 への依存関係を記録します。また、アプリケーションが symbolAsymbolB、および symbolD を使用する場合、SUNW_1.2SUNW_1.1 を取り込んでいるため、リンクエディタは SUNW_1.2 への依存関係を記録します。

実行時、リンカーは、依存関係としてアプリケーションに記録されたバージョン名がリンクされるライブラリに存在しているかどうかをチェックします。このプロセスによって、必要なシンボルが存在しているかどうかをすばやく確認できます。詳細は、『リンカーとライブラリ』を参照してください。


注 - マップファイル内の「local:*」指令は、明示的に名前付きセットに関連付けられていないライブラリ内のシンボルは、その有効範囲がライブラリにローカルであることを意味します。つまり、このように有効範囲がローカルに制限されたシンボルはライブラリの外からは見えないことを意味します。この規約は、シンボルが見えるのは、シンボルバージョン管理名に関連付けられているときだけであることを保証します。


シンボルバージョン管理による Solaris ABI へのラベル付け

ライブラリ内のシンボルのうち、表示できるシンボルはなんらかの名前付きセットに属しているので、名前付けスキームを使用すると、シンボルの ABI ステータスにラベルを付けることができます。このラベル付けを行うには、すべての非公開インタフェースを SUNWprivate から始まるセット名に関連付けます。公開インタフェースはほかの名前から始まり、特に、次のような名前があります。

このような公開名前付きセットには major.minor の番号付けスキームによって番号が付けられます。minor 番号は、新しいシンボルが名前付きセットに追加されるたびにインクリメントされます。既存のシンボルに互換性のない変更が行われたときにそのシンボルが含まれるセットの major 番号がインクリメントされます。既存のシンボルに互換性のない変更が行われたときは、ライブラリのファイル名のバージョン番号もインクリメントされます。

したがって、Solaris ライブラリ ABI の定義はライブラリに含まれており、SUNWprivate から始まらないシンボルバージョン名に関連付けられたシンボルセットから構成されます。pvs コマンドは、ライブラリ内にあるシンボルの一覧を表示します。