HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
オブジェクト・モジュール内の ELF common シンボル (Alpha の relaxed ref/def シンボルに相当) を,同じシンボルを含む共有イメージと /SELECTIVE_SEARCH 修飾子とともにリンクする場合, I64 リンカの動作は Alpha と異なります。 Alpha では,リンカは,オブジェクト・モジュール側の relaxed ref/def シンボルから定義を取得します。詳細は『HP OpenVMS Version 8.2 新機能説明書』を参照してください。
5.3.2 拡張されたマップ・ファイル情報
リンカ・マップ・ファイル内の情報は, OpenVMS I64 システム用に拡張されています。
この新しい情報を示すリンカ・マップの例については『HP OpenVMS Version 8.2 新機能説明書』を参照してください。
5.3.3 OpenVMS I64 用の新しいリンカ修飾子とオプション
OpenVMS I64 システムでのリンクをサポートするために,新しいリンカ・オプションと修飾子が追加されました。ここでは,これらの機能について説明します。
5.3.3.1 新しい /BASE_ADDRESS 修飾子
I64 システムで新しい修飾子 /BASE_ADDRESS が提供されています。ベース・アドレスは,リンカが実行イメージに対して割り当てる起点となるアドレスです。この修飾子の目的は,ブート・プロセスなどの, OpenVMS イメージ・アクティベータで起動されないイメージに対して仮想アドレスを割り当てることです。 OpenVMS イメージ・アクティベータは,リンカが割り当てたスタート・アドレスを無視します。この修飾子は,主にシステム開発者によって使用されます。
/BASE_ADDRESS 修飾子は,OpenVMS I64 では不正となる CLUSTER=,[base-address] オプションの置き換えにはなりません。詳細は 第 5.3.1.1 項 を参照してください。
この修飾子についての詳細は『HP OpenVMS Version 8.2 新機能説明書』を参照してください。
5.3.3.2 新しい /SEGMENT_ATTRIBUTE 修飾子
OpenVMS I64 リンカは, 2 つのキーワード SHORT_DATA=WRITE および DYNAMIC_SEGMENT = P0 あるいは P1 を指定できる新しい /SEGMENT_ATTRIBUTE 修飾子を提供します。 DYNAMIC_SEGMENT キーワードは通常は必要ありません。詳細は『HP OpenVMS Version 8.2 新機能説明書』を参照してください。
SHORT_DATA=WRITE キーワードにより,最大 65,535 バイトの未使用読み取り専用スペースを再要求して,読み取り専用と読み書き両用のショート・データ・セクションを統合した単一のセグメントを作ることができます。 SHORT_DATA=WRITE を設定すると,以前は読み取り専用だったデータ・セグメントに書き込みが禁止されないという危険があります。このため,この修飾子はセクションの必要サイズが通常のショート・データ・セクションの上限である 4 MB を超えてしまった場合のみ使用することをお勧めします。
5.3.3.3 新しい /FP_MODE 修飾子
OpenVMS I64 リンカは, main プログラムの転送アドレスを提供するモジュールが提供する浮動小数点モードを使用して,プログラムの初期浮動小数点モードを決定します。メイン転送アドレスを提供するモジュールが初期浮動小数点モードを提供しない場合のみ, /FP_MODE 修飾子を使用して浮動小数点の初期モードを設定してください。 /FP_MODE 修飾子は,メイン転送モジュールが提供する浮動小数点の初期モードを上書きしません。 OpenVMS I64 リンカは,浮動小数点モードの設定に次のキーワードを使用できます。
OpenVMS I64 リンカは,次の ieee_behavior キーワードを使用できます。
OpenVMS I64 リンカは,浮動小数点モード動作リテラルも使用できます。浮動小数点初期モードについての詳細は,『OpenVMS Calling Standard』を参照してください。
5.3.3.4 新しい /EXPORT_SYMBOL_VECTOR および /PUBLISH_GLOBAL_SYMBOLS 修飾子
/EXPORT_SYMBOL_VECTOR および /PUBLISH_GLOBAL_SYMBOLS 修飾子は, SYMBOL_VECTOR オプションでどのシンボルをエクスポートするかを知らないユーザが共有イメージを作成するのを支援するためにリンカに追加されています。 UNIX からアプリケーションをポーティングしているがどのシンボルをエクスポートするか良くわからないような場合,あるいは,C++ でコーディングしていてマングル名が何になるかわからない場合に役に立ちます。
OpenVMS I64 リンカは,オブジェクト・モジュール中のすべてのグローバル・シンボルをシンボル・ベクタ・オプションへエクスポートするようにモジュールにマークを付ける,新しい /PUBLISH_GLOBAL_SYMBOLS 修飾子を提供します。さらに,OpenVMS I64 リンカは,シンボル・ベクタ・オプションをエクスポートすることを指定し,またその出力ファイル名を設定するための新しい /EXPORT_SYMBOL_VECTOR 修飾子も提供します。
どちらの修飾子も /SHAREABLE 修飾子を指定している場合のみ有効です。 /EXPORT_SYMBOL_VECTOR はコマンド行でのみ使用可能です。 /PUBLISH_GLOBAL_SYMBOLS はオプション・ファイルでも使用可能です。 /PUBLISH_GLOBAL_SYMBOLS 修飾子がないのに /EXPORT_SYMBOL_VECTOR がある場合,リンカは警告を出します。
/EXPORT_SYMBOL_VECTOR がある場合,オプション・ファイルが書き込まれますがイメージ・ファイルは生成されません。生成されるオプション・ファイルは,開発者が GSMATCH 情報を書き加えて完成させる必要があります。
/PUBLISH_GLOBAL_SYMBOLS 修飾子は位置修飾子で,オブジェクト・ファイルとライブラリで使用されます。 /INCLUDE および /SELECTIVE 修飾子と互換性があります。次に例を示します。
$ link/SHARE public/PUBLISH,implementation/EXPORT=public $ link/SHARE plib/LIBRARY/PUBLISH/INCLUDE=public/EXPORT=public |
/EXPORT_SYMBOL_VECTOR 修飾子は位置修飾子で,オプションの出力ファイル指定を受け付けます。ファイル名が指定されていない場合リンカは最後の入力ファイル名を使用し,デフォルトのファイル・タイプは .OPT です。
この修飾子についての詳細は『HP OpenVMS Version 8.2 新機能説明書』を参照してください。
5.3.3.5 PSECT_ATTRIBUTE オプションのための新しいアラインメント
PSECT_ATTRIBUTE オプションは,アラインメント属性として整数 5,6,7,8 を受け付けるようになりました。これらの整数は,2 のべき乗として示されるバイト・アラインメントを表します (たとえば,2 ** 6 は 64 バイト・アラインメントを表します)。 2 ** 5 (つまり,32 バイト・アラインメントまたは 16 ワード・アラインメント) を表すために,キーワード HEXA (16 ワードの意味) が追加されました。
5.3.3.6 /FULL 修飾子の新しいキーワード GROUP_SECTIONS および SECTION_DETAILS
OpenVMS I64 リンカは /FULL 修飾子で 2 つの新しいキーワードを使用できます。最初のキーワード GROUP_SECTIONS は,マップで使用されているすべてのグループを出力します。現在,グループを利用できるコンパイラは C++ のみです。他の言語でこのキーワードを使用しても効果はありません。
/FULL=NOSECTION_DETAILS が指定されている場合, OpenVMS I64 リンカは,長さゼロの Program Section Synopsis データをマップにリストしません。 /FULL 修飾子が使用されている場合,デフォルトは /FULL=SECTION_DETAILS となり, VAX,Alpha,および I64 のリンカ・マップは Program Section Synopsis にすべてのモジュールをリストします。
5.3.4 リンカ・オプションの引数における大文字小文字の区別
OpenVMS I64 システムでは,コンパイラが発行する名前は大文字と小文字が混在する場合があります。オプション・ファイルで大文字と小文字か混在する名前を操作する必要がある場合のため (たとえばライブラリに /INCLUDE を指定していて,大文字と小文字か混在するモジュール名がある場合など),リンカは,デフォルトの動作 (名前はすべて大文字) ではなく,大文字/小文字を区別して名前を処理するオプションをすでに持っています。次に示す CASE_SENSITIVE オプションを使います。
CASE_SENSITIVE=YES |
CASE_SENSITIVE オプションが YES に設定されている場合,等号の右側のすべての文字 (オプション引数など) の大文字/小文字の違いは維持されます。つまり,これらの文字は変更なくそのまま使用されます。ファイル名,モジュール名,シンボル名,およびキーワードがこれに含まれます。オプション行全体を大文字にするというリンカのデフォルトの動作に戻すには,次のように CASE_SENSITIVE オプションに NO キーワードを指定します。
CASE_SENSITIVE=NO |
NO キーワードは大文字で指定しなければなりません。大文字でないとリンカが認識しません。
VAX および Alpha との互換性のため,このオプションは必要な場合のみ使用することをお勧めします。
詳細については『HP OpenVMS Version 8.2 新機能説明書』を参照してください。
5.4 OpenVMS I64 システムでのデバッグ機能
OpenVMS では,広範囲にわたるデバッグ機能を実行できる複数のデバッガが提供されます。
OpenVMS 8.2 では, OpenVMS デバッガと XDelta デバッガが提供されます。以下の表は,これらのデバッガの機能を示しています。
| カテゴリ | OpenVMS デバッガ | XDelta |
|---|---|---|
| オペレーティング・システムのデバッグ | 不可 | 可能 |
| アプリケーションのデバッグ | 可能 | 不可 |
| シンボリック | 可能 | 不可 |
| 0 より大きな IPL | 不可 | 可能 |
| プロセス・コンテンツ | 可能 | 不可 |
| ユーザ・モード | 可能 | 不可+ |
| スーパバイザ・モード | 不可 | 不可+ |
| エグゼクティブ・モード | 不可 | 可能 |
| カーネル・モード | 不可 | 可能 |
以降の各項では,OpenVMS I64 システムで動作する OpenVMS デバッガおよび XDelta デバッガの機能について説明します。 OpenVMS デバッガで解決された問題点,制限事項,および報告されている問題点の詳細については,『HP OpenVMS Version 8.2 リリース・ノート [翻訳版]』を参照してください。
5.4.1 OpenVMS デバッガ
OpenVMS I64 で提供されるデバッガは, OpenVMS VAX および Alpha のデバッガと異なります。 OpenVMS I64 デバッガのコマンド・インタフェースやデバッグ機能は OpenVMS VAX/Alpha デバッガに類似していますが,いくつかの相違点があります。ここでは,OpenVMS VAX および Alpha システムのデバッガについて十分理解しているものとして, OpenVMS I64 デバッガの機能について説明します。
5.4.1.1 アーキテクチャのサポート
OpenVMS I64 デバッガは以下のハードウェア・レジスタをサポートします。
OpenVMS I64 デバッガは,以下の言語で書かれたプログラムをサポートします。
サポートされる言語を OpenVMS I64 でデバッグする場合,いくつかの問題点があります。これらの問題点およびその対処法については,『HP OpenVMS Version 8.2 リリース・ノート [翻訳版]』を参照してください。
本リリースでは,C++ と COBOL のサポートには制限があります。参照,クラス,クラス・メンバなどの基本的な C++ の機能はサポートされますが,一般に,C++ に対するデバッガのサポートは,C と共通のプログラミング構造に制限されています。
C++ のデータ宣言に対して, SHOW SYMBOL/ADDRESS コマンドと SHOW SYMBOL/TYPE コマンドは使用しないでください。これらの問題やその他の問題の具体例については,『HP OpenVMS Version 8.2 リリース・ノート [翻訳版]』を参照してください。
Macro-32 は OpenVMS I64 でのコンパイル言語です。 Itanium アーキテクチャでのハードウェア・レジスタの使い方は,Alpha や VAX の場合と異なるため, IMACRO コンパイラは Alpha および VAX のレジスタへのソース・コードの参照を, Itanium で互換性のあるレジスタ参照に変換しなければなりません。 Macro-32 で使用されるレジスタ・マッピングの詳細については,『HP OpenVMS Version 8.2 リリース・ノート [翻訳版]』を参照してください。
5.4.1.3 機能とコマンド
提供されている機能とコマンドは以下のとおりです。
以下の機能は OpenVMS I64 へのポーティングがまだ完了していません。
OpenVMS I64 システムの XDelta デバッガは,基本的には OpenVMS Alpha システムの XDelta と同じ動作をしますが,いくつかの制限事項があります。ここでは,OpenVMS 用に追加された新機能と, OpenVMS I64 システムと OpenVMS Alpha システムの XDelta の相違点について説明します。
5.4.2.1 OpenVMS I64 での XDelta の機能
OpenVMS I64 システム用に以下の新機能が追加されました。
本リリースでのこれらレジスタおよび機能の詳細については,『HP OpenVMS Version 8.2 新機能説明書』を参照してください。このドキュメントでは,;D および ;T コマンドについてと,一部の制限事項についても説明しています。
5.4.2.2 OpenVMS I64 システムと OpenVMS Alpha システムの XDelta の相違点
ここでは,I64 システムと Alpha システムでの XDelta の動作の違いについて説明します。
I64 で実行中のシステムに割り込みをかけるには,システム・コンソールで Ctrl/P を押します。その場合,あらかじめ XDelta をロードしておく必要があります。 Ctrl/P を押すと,システムは現在の PC および現在の IPL で停止します。 Alpha システムの場合と異なり,IPL が 14 より低くなるのを待つための遅延は発生しません。
X レジスタは,イメージやモジュールのベース・アドレスなど,頻繁に使用される値を保持するためにプログラマが使用します。ブレークポイントやその他のアドレス値を表示する場合, XDelta はこれらの値を,最も近い X レジスタ値を基準にした相対値として出力するようになりました。以前は,特定の値だけが X レジスタ値との相対値を出していました。
| 前へ | 次へ | 目次 | 索引 |