04.04.2013 Views

Meet the HP Superdome servers - 日本HP (ヒューレット・パッカード) - HP

Meet the HP Superdome servers - 日本HP (ヒューレット・パッカード) - HP

Meet the HP Superdome servers - 日本HP (ヒューレット・パッカード) - HP

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

シンボル バインディングの制御<br />

以下のオプションを使用して、関数シンボルとデータ シンボルの両方のバインディングを制御できます。バインディング<br />

は、シンボルをどのように呼び出してアクセスするか、どのようにアクセス シーケンスを最適化するかを制御します。<br />

':filename' の形式で、'filename' は、スペース区切りまたは改行区切りのシンボル リストの入ったファイルを<br />

指します。オプションを誤って使用すると、各シンボルの可視定義数を変えることにより、およびロード時バインディング<br />

の実行方法を変えることにより、リンク時または実行時エラーのいずれかを引き起こす可能性があります。<br />

-Bprotected[=symbol[,symbol]*]<br />

-Bprotected:filename<br />

このオプションを使用して、データとコード シンボルの、最も最適化されたアクセス シーケンスを取得できます。名前<br />

の指定されたシンボルが、保護(protected)エクスポート クラス有として指定されます。どのシンボルも指定されない<br />

場合、参照されるが変換ユニット内に定義されていないものを含めて、すべてのシンボルが、保護エクスポート クラス<br />

有として指定されます。これは、該当するシンボルが代替されず、そのようなものとして最適化されることを意味します。<br />

たとえば、コンパイラは、コードとデータ参照の両方について、リンケージ テーブルをバイパスできます。コンパイラは<br />

また、参照を、ローカルに定義されたコードとデータ シンボルにバインドすることもできます。この結果、アクセス シー<br />

ケンスは、一層最適化されることになります。さらに、コンパイラは、保護シンボルの呼び出し前後の、gp の保存と復<br />

元を省略でき、pc 相対呼び出しを生成できます。呼び出しのターゲットがロード モジュールにとってローカルではない<br />

場合、リンカはエラーを生成します。ローカル定義シンボルには、これらの最適化が常に実行されます。ただし、–<br />

Bextern オプション リストにシンボルが指定されている場合は除きます。ローカルに定義されていないシンボルの<br />

最適化には、-Bprotected を使用します。<br />

シンボル リストなしで-Bprotected を指定すると、-Wl,-a,archive_shared も暗黙に指定され、リンカは、利<br />

用可能な場合は、共有ライブラリよりアーカイ ブライブラリを優先します。共有ライブラリへのアクセスよりアーカイブ<br />

ライブラリへのアクセスの方が高速であるため、結果として、パフォーマンス向上されます。<br />

共有ライブラリ呼び出しの実行時にリンカ エラーを回避するには、当該ルーチン用のシステム ヘッダ ファイルを組み<br />

込みます。シンボルは、代替可能として、システム ヘッダ内で適正にマークされています。ヘッダ ファイルを組み込ん<br />

でいない場合、シンボルが適正にマークされていないため、ロード モジュール内で定義されていないシンボルについ<br />

て、リンカは、エラーを生成します。このリンカ エラーは、シンボル呼び出し前後の、gp の保存と復元の省略など、不<br />

適切な最適化により起こる実行時エラーを防止します。適正なプラグマを使用して修飾しない場合、アプリケーション<br />

または、サード パーティの共有ライブラリとのリンク時に、同様の問題が発生する可能性があります。ライブラリ プロ<br />

バイダは、アプリケーションで -Bprotected を有効にする方法について、David Gross 著『Library Providers’ Guide to Symbol Binding』を参照してください。<br />

アプリケーションのビルド時に、このオプションを-exec と併用して、最速のデータ アクセスと呼び出しシーケンスを<br />

得ることができます(-exec と-minshared を参照)。<br />

-Bprotected_data<br />

すべてのデータ シンボルを、保護エクスポート クラス有としてマークします。これは、–Bprotected で説明したデータ<br />

アクセスの最適化を意味します。このオプションは、-Bprotected で利用可能な最適化のサブセットを取得する目<br />

的で、アプリケーションが実行する共有ライブラリ呼び出し用のシステム ヘッダ ファイルが組み込まれていないときに<br />

使用できます。ただし、アプリケーションのアクセスする共有ライブラリ データを定義するヘッダ ファイルを組み込む必<br />

要があります。最速のコードを得るには、該当するヘッダ ファイルを組み込み、-Bprotected を付けてコンパイルし<br />

てください。あるいは、ヘッダ ファイルを組み込むためのソース コード修正ができない場合、最適化アクセス シーケン<br />

スを得るには、-Bprotected_def または-exec のいずれかと -Bprotected_data を使用します。<br />

-Bprotected_def<br />

ローカルに(仮にではなく)定義されたシンボルを、保護エクスポート クラス有としてマークします。これらのシンボルの<br />

みに、–Bprotected で説明した最適化が適用されます。定義されたシンボルへの逆参照はすでに最適化可能ですか<br />

ら、+O3 以上でのみ効果をもつことに注意してください。これは、共有ライブラリ呼び出しまたはデータ アクセスのた<br />

めのシステム ヘッダ ファイルが組み込まれていないときに使用可能です。最速のコードを得るには、該当するヘッダ<br />

ファイルを組み込み、-Bprotected を付けてコンパイルします。<br />

このオプションは、-exec のサブセットです。<br />

-Bhidden[=symbol[,symbol]*]<br />

-Bhidden:filename<br />

名前の指定されたシンボルを、隠し(hidden)エクスポート クラス有として指定します。-Bhidden にシンボルが指定<br />

されていない場合は、参照されるが、変換ユニット内に定義されていないものを含めて、すべてのシンボルが、隠しエ<br />

クスポート クラス有として指定されます。隠しエクスポート クラスは、シンボルがロード モジュール外にエクスポートさ<br />

10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!