HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
コンパイラがセクションに割り当てたアラインメントより小さいセクション・アラインメントを PSECT_ATTRIBUTE で指定しないでください。
そのセクションに組み込まれたすべてのコントリビューションを元に,コンパイラが割り当てたアラインメントより小さいアラインメントをプログラム・セクションに指定すると, Linker は警告を出力するようになりました。例を以下に示します。
$ link hi,sys$input/opt
psect_attr=$literal$,byte
%ILINK-W-CONFALGN, PSECT option alignment (1) less than compiler
assigned (16);
alignment ignored
section: $LITERAL$
module: HI
file: DISK$USER:[JOE]HI.OBJ;3
|
VAX システムと Alpha システムでは, Linker は指定された境界 (上記のコード例では "byte") でプログラム・セクションを不適切にアラインし,コンパイラの指定とは異なる境界で,そのプログラム・セクションのすべてのコントリビューションを (上記の例では "hi" とリンクされている,他のモジュールから) 配置します。 Linker はエラー・メッセージは出力しません。
I64 システムでは,Linker は常にコンパイラが指定した境界以上の境界でセクションをアラインします。
PSECT_ATTRIBUTE オプションは,指定された境界が,コンパイラの指定以上のときに,セクションをアラインします。このオプションは,セクションの個々のコントリビューションをアラインするのではなく,セクション全体をアラインします。 PSECT_ATTRIBUTE オプションは,個々のコントリビューションをアラインする際には,コンパイラのアラインメント指定に従います。
7.1.5.4 存在しないファイルがあった場合の Linker の特別な処理
Linker オプションの RMS_RELATED_CONTEXT がオンになっていて (デフォルトは RMS_RELATED_CONTEXT=YES), LINK コマンドに指定したファイル・リストに存在しないファイルを指定していると,Linker が呼び出した LIB$FIND_FILE が完了するのに時間がかかり,Linker がハングしているように見えることがあります。リンクされているファイルの数と,ファイル指定で論理名を使用しているかどうかによりますが,LIB$FIND_FILE は,見つからないファイルを接頭辞のあらゆる組み合わせで探してから "file not found" メッセージを表示するため,Linker の完了に数時間かかることがあります。 Linker が LIB$FIND_FILE を呼び出した後は, Ctrl/Y で Linker プロセスを終了させることはできません。
どれが存在しないファイル指定かを素早く見つけるには, LINK コマンドに /OPTION を指定します。 [Return] を押すと,Linker はオプション・ファイルへの情報の入力待ち状態になります。オプションの指定が終わったら,Ctrl/Z を入力します。 LIB$FIND_FILE に関連する問題を回避するには,次の項目をオプション・ファイルに含めます。
RMS_RELATED_CONTEXT=NO |
RMS_RELATED_CONTEXT オプションに NO を設定しておくと,このオプション・ファイルにリストされたファイルが見つからない場合は,すぐに "file not found" メッセージが出力されます。
次の LINK コマンドを例に説明します。
$ LINK DSK:[TEST]A.OBJ, B.OBJ |
このコマンドに RMS_RELATED_CONTEXT=NO を指定したい場合は,以下のように /OPTION を指定し,さらに,リンクするファイルを完全ファイル指定で入力します。
$ LINK SYS$INPUT:/OPTION RMS_RELATED_CONTEXT=NO DSK:[TEST]A.OBJ, DSK:[TEST]B.OBJ [Ctrl/Z] $ |
次の例は,Linker がハングしたように見える様子を示しています。ファイル DOES_NOT_EXIST.OBJ がリストに含まれているが存在せず, RMS_RELATED_CONTEXT オプションは指定していない (デフォルトで YES となる) ものとします。
$ DEFINE DSKD$ WORK4:[TEST.LINKER.OBJ.] $ DEFINE RESD$ ROOT$, ROOT2$, ROOT3$, ROOT4$, ROOT5$, DISK_READ$:[SYS.] (1) $ DEFINE ROOT$ WORK4:[TEST.PUBLIC.TEST] $ DEFINE ROOT2$ WORK4:[TEST.LINKER.] $ DEFINE ROOT3$ WORK4:[TEST.UTIL32.] $ DEFINE ROOT4$ WORK4:[TEST.PUBLIC.] $ DEFINE ROOT5$ WORK4:[TEST.PUBLIC.TMP] $ LINK/MAP/FULL/CROSS/EXE=ALPHA.EXE RESD$:[TMPOBJ] A.OBJ,- _$ RESD$:[SRC]B.OBJ,C,DSKD$:[OBJ]D.OBJ,E,RESD$:[TMPSRC]F.OBJ,- _$ RESD$:[TEST]G.OBJ,RESD$:[SRC.OBJ]H,RESD$:[COM]DOES_NOT_EXIST.OBJ [Ctrl/T] NODE6::_FTA183: 15:49:46 LINK CPU=00:02:30.04 PF=5154 IO=254510 MEM=134 (2) [Ctrl/T] NODE6::_FTA183: 15:49:46 LINK CPU=00:02:30.05 PF=5154 IO=254513 MEM=134 [Ctrl/T] NODE6::_FTA183: 15:50:02 LINK CPU=00:02:38.27 PF=5154 IO=268246 MEM=134 [Ctrl/T] NODE6::_FTA183: 15:50:02 LINK CPU=00:02:38.28 PF=5154 IO=268253 MEM=134 [Ctrl/T] NODE6::_FTA183: 15:50:14 LINK CPU=00:02:44.70 PF=5154 IO=278883 MEM=134 |
以下に示す例のように,オプション・ファイルを使用して, RMS_RELATED_CONTEXT に NO を設定すると,存在しないファイルに遭遇したときに,直ちにリンク操作を終了させることができます。
$ DEFINE DSKD$ WORK4:[TEST.LINKER.OBJ.] $ DEFINE RESD$ ROOT$, ROOT2$, ROOT3$, ROOT4$, ROOT5$, DISK_READ$:[SYS.] $ DEFINE ROOT$ WORK4:[TEST.PUBLIC.TEST.] $ DEFINE ROOT2$ WORK4:[TEST.LINKER.] $ DEFINE ROOT3$ WORK4:[TEST.UTIL32.] $ DEFINE ROOT4$ WORK4:[TEST.PUBLIC.] $ DEFINE ROOT5$ WORK4:[TEST.PUBLIC.TMP.] $ LINK/MAP/FULL/ CROSS /EXE=ALPHA.EXE SYS$INPUT:/OPTION RMS_RELATED_CONTEXT=NO RESD$:[TMPOBJ]A.OBJ,RESD$:[SRC]B.OBJ,RESD$:[SRC]C,DSKD$:[OBJ]D.OBJ DSKD$:[OBJ]E,RESD$:[TMPSRC]F.OBJ,RESD$:[TEST]G.OBJ RESD$:[SRC.OBJ]H,RESD$:[COM]DOES_NOT_EXIST.OBJ [Ctrl/Z] %LINK-F-OPENIN, error opening DISK_READ$:[SYS.][COM]DOES_NOT_EXIST.OBJ; as input -RMS-E-FNF, file not found $ |
7.1.6 新しい OpenVMS I64 Linker マップ
Linker マップは拡張され,OpenVMS I64 Linker 用の新しい情報が追加されました。 Linker マップには,次の情報が表示されます。サンプル・マップを 図 7-1 , 図 7-2 , 図 7-3 , 図 7-4 , 図 7-5 , 図 7-6 , 図 7-7 , 図 7-8 に示します。
Linker マップに新たに追加された部分と,変更された部分を示す,白抜きの黒丸数字部分についての説明は,Linker マップ例の後にあります。
以下の説明は,上記の Linker マップの例の中の数字のついた項目に対応しています。
Module/Image File Ident Attributes Bytes
------------ ---- ----- ---------------- -----
NONE V1.0 Lkg 568
DISK1:[JOE]NONE.OBJ;1
DNORM_CASE Lkg RFP Dnrm 504
DISK1:[JOE]DENORM_W.OBJ;1
FAST _CASE Lkg RFP Fast 504
DISK1:[JOE]FAST_W.OBJ;1
NEPCT_CASE Lkg RFP Inex 504
DISK1:[JOE]INEXACT_W.OBJ;1
SPCL _CASE Lkg RFP Spcl 504
DISK1:[JOE]SPECIAL_W.OBJ;1
UNDER_CASE Lkg RFP Undr 504
DISK1:[JOE]UNDERFLOW_W.OBJ;1
DG_FL_CASE Lkg RFP VXfl 504
DISK1:[JOE]VAXFLOAT_W.OBJ;1
DECC$SHR V8.2-00 Lkg 0
RESD$:[SYSLIB]DECC$SHR.EXE;1
SYS$PUBLIC_VECTORS X-2 Sel Lkg 0
RESD$:[SYSLIB]SYS$PUBLIC_VECTORS.EXE;1
Key for Attributes
+------------------------------------------+
! Sel - Module was selectively searched !
! Lkg - Contains call linkage information !
! RFP - Conforms to the reduced FP model !
! VXfl - VAX Float FP model !
! Dnrm - Denormal IEEE FP model !
! Fast - Fast IEEE FP model !
! Inex - Inexact IEEE FP model !
! Undr - Underflow-to-zero IEEE FP model !
! Spcl - Special FP model !
+------------------------------------------+
|
00000000 GETJPI (U) 00050098 R-INTERNAL_GETJPI |
Performance of this link operation could be improved by increasing quotas Quota related to status return: %SYSTEM-SECTBLFUL, process or global section table is full 2688 extra file I/O operations performed due to current process quota(s) 36 performed on object files; 2652 performed on library files |
| 前へ | 次へ | 目次 | 索引 |