 |
≫ |
|
|
 |
パッチ名: PHSS_35976
パッチ摘要: 11.31 HP C/aC++コンパイラ(A.06.14)
作成日: 07/03/07
公開日: 07/04/18
ハードウェアプラットフォームおよびOSリリース:
11.31
現象:
PHSS_35976:
01)JAGag30084:
システムヘッダーで組み込み関数として定義されている関数の完全なプロトタ
イプではなく、K&Rプロトタイプを使用するソースをコンパイルすると、コン
パイラが異常終了します。しかし、コンパイラはそのような宣言を、組み込み
関数ではなく通常の関数の宣言とみなすべきです。
02)JAGag32532:
関数呼び出しのリターン時に、値渡しラージパラメータのアドレス/値が壊れ
ていることがあります。
03)JAGag27428:
06.10のコンパイラはコードをデフォルトモードでクリーンにコンパイルしま
すが、06.12以降では、+dep_name/+strictを指定しないとクリーンにコンパイ
ルされません。
04)JAGag29090:
参照を返す関数にdynamic_cast最適化を適用すると、関数が未初期化変数にア
クセスします。そのため、関数がNULLを返したり、シグナル11を受け取ること
があります。
05)JAGaf99194:
交換、タイリング、アンロールおよびジャム、融合、および分散のようなルー
プ最適化を行うと、浮動小数点(FP)演算の順序が変わり、FP結果の精度が低下
する可能性があります。したがって、コンパイラは、HPのFPモデルに従ってこ
れらの最適化を行うべきです(つまり、ループ最適化によってFP結果が変わる
場合は、ユーザーが+Ofltacc=relaxedを指定した場合にのみその最適化を行う
べきです)。ところが、現在のコンパイラはこのルールを無視します。
06)JAGag10594:
+Ofenvaccessオプションと+Ofltacc=relaxedオプションを組み合わせて使用す
ると、オプティマイザが無限にループすることがあります。
07)JAGag16706:
不正なmemcpy合成が行われます(この問題を回避するために+Uhmemop=disable
を指定せざるを得ません)。
08)JAGag17310:
デバッグモード(-g)の場合、未結合配列引き数の宣言内に不完全なクラス宣言
が含まれていると、コンパイラが異常終了します。
09)JAGag17453:
非常に大きな"値によるstruct"を渡すと、コンパイルに時間がかかり、メモリ
ー使用量が増えます。
10)JAGag19492:
デフォルトのfltaccの場合、ループ交換が不正確なFP結果を生成します。
11)JAGag20382:
ブリッジ内でのアサート。このエラーが起きるのは、+O2の場合だけのようで
す。
12)JAGag23282:
パラメータがオーバーラップしていると、不正なコード移動が行われることが
あります。
13)JAGag20670:
switch文使用時のリカバリコード生成にバグがあります。
14)JAGag24837:
IAシステム用最適化オプション"-O"を使ってfprintf()をコンパイルすると、
fprintf()の実行時に、x25initコマンドが/etc/x25/x25confファイルを壊しま
す。
問題点の説明:
PHSS_35976:
01)JAGag30084:
ある他社製プリプロセスツールが生成するコードは、コンパイラが(memsetの
ような)組み込み関数として認識する一部の関数の(システムヘッダーで定義さ
れている)完全なプロトタイプではなくK&Rプロトタイプを使用しています。
その結果、コンパイラは、それらの関数に渡される不正な引き数を正しく診断
せずに、後で、それらの引き数が違反しているとみなして異常終了していまし
た。
02)JAGag32532:
ラージパラメータに渡すラージパラメータのコードを正しく生成していません
でした。
03)JAGag27428:
STLPortテストケースがデフォルトモードではエラーになっていました。その
ため、+dep_name/+strictを指定せざるを得ませんでした。
04)JAGag29090:
コンパイラは、=、++/--、関数呼び出しおよび?:のような、副作用を伴う式の
動的キャストに対する参照を正しく処理していませんでした。
05)JAGaf99194:
一部のループ最適化で、fltaccオプションが無視されていました。
06)JAGag10594:
"+Ofenvaccess +Ofltacc=relaxed"を指定すると、オプティマイザが無限にル
ープすることがありました。
07)JAGag16706:
PortAThon: +O2のループが不正に__milli_memmoveを呼び出していました。
08)JAGag17310:
DWARF生成に問題があったため、コンパイラが異常終了していました。
09)JAGag17453:
お客様のテストケースで、コンパイルに時間がかかり、メモリー割り当てエラ
ーが起きていました。
10)JAGag19492:
+O3を使って最適化すると、値が変わることがありました。
11)JAGag20382:
仮想呼び出し時のアサート"syz_gen_be.C 8341 +O2"。
12)JAGag23282:
コンパイラは、標準ライブラリ呼び出し(strlen)への変更付きルーチンパラメ
ータ渡しを正しく解析していませんでした。その結果、呼び出しの前に、変更
コードが移動されるため、呼び出しから予期しない出力が返されていました。
13)JAGag20670:
+O2使用時のswitch文での不正なリカバリコード。
14)JAGag24837:
x25initコマンド"-O"は、fprintfのコードを正しく生成していませんでした。
-----------------------------------------------------------------------------
Patch Name: PHSS_35976
Patch Description: 11.31 HP C/aC++ Compiler (A.06.14)
Creation Date: 07/03/07
Post Date: 07/04/18
Hardware Platforms - OS Releases:
11.31
Products:
HP aC++ A.06.12
Filesets:
ACXX.ACXX,fr=C.06.12,fa=HP-UX_B.11.31_IA,v=HP
ACXX.ACXX-HELP,fr=C.06.12,fa=HP-UX_B.11.31_IA,v=HP
ACXX.ACXX-STDLIB,fr=C.06.12,fa=HP-UX_B.11.31_IA,v=HP
Automatic Reboot?: No
Status: General Release
Critical:
Yes
PHSS_35976: ABORT CORRUPTION
See JAGag30084, JAGag17310, JAGag24837 and JAGag32532.
Category Tags:
defect_repair general_release critical halts_system
corruption
Path Name: /hp-ux_patches/11.X/PHSS_35976
Symptoms:
PHSS_35976:
JAGag30084: A source that uses K&R prototypes instead of
the complete prototype for functions declared
as builtins in system headers causes the
compiler to abort. The compiler should treat
such a declaration as the declaration of a
normal function and not a builtin.
JAGag32532: Address/values of large parameters passed by
value may be corrupted upon return of function
call.
JAGag27428: Code compiles cleanly in default mode with
06.10, but needs +dep_name or +strict to
compile cleanly in 06.12 and above.
JAGag29090: dynamic_cast optimization, when applied to a
function that returns a reference, will access
uninitialized variables. It may return NULL or
get a signal 11.
JAGaf99194: Some loop optimizations such as interchange,
tiling, unroll-and-jam, fusion, and
distribution can potentially change the order
of floating- point (FP) operations, which
result less accurate FP result. The compiler
should guarantee that these optimizations
follow the HP's FP model (i.e. if a particular
loop optimization changes FP result value, this
optimization should only be performed when the
user specifies +Ofltacc=relaxed). This is
broken in current compiler.
JAGag10594: +Ofenvaccess, +Ofltacc=relaxed options
combination can cause optimizer to loop
infinitely.
JAGag16706: Wrong memcpy synthesis is happening.
(+Uhmemop=disable to workaround)
JAGag17310: Given an incomplete class declaration involved
in the declaration of an unbounded array
argument the compiler will abort under debug
(-g).
JAGag17453: passing huge struct by value results in long
compile time and memory usage.
JAGag19492: Loop interchange produces inaccurate FP results
in default fltacc.
JAGag20382: Assert in the bridge. It seems to only fail at
+O2.
JAGag23282: overlapping parameters result in wrong code
motion in some case.
JAGag20670: Recovery code generation bug with a switch
statement.
JAGag24837: x25init command corrupts the /etc/x25/x25conf
file during an fprintf(), when it is compiled
with the optimization option "-O" for IA
systems.
Defect Description:
PHSS_35976:
JAGag30084: Code generated by a third party preprocessing
tool uses K&R prototypes instead of the
complete prototype found in system headers for
certain functions that the compiler recognizes
as builtins (such as memset). As a result, the
compiler does not correctly diagnose bad
arguments passed to these functions, and
subsequently aborts due to assumptions about
these arguments being violated.
JAGag32532: Bad code for large parms passed to large parms
JAGag27428: STLPort test case fails in default mode, needs
+dep_name or +strict
JAGag29090: The compiler incorrectly processes references
to dynamic casts of expressions involving side
effects, such as =, ++/--, function calls, and
?:.
JAGaf99194: fltacc option is ignored by some loop
optimizations
JAGag10594: "+Ofenvaccess +Ofltacc=relaxed" can cause
optimizer to loop infinitely
JAGag16706: PortAThon: +O2 loop incorrectly calls
__milli_memmove
JAGag17310: This is caused by a problem in DWARF
generation.
JAGag17453: Long compilation time and memory allocation
failure in customer testcase
JAGag19492: Value-changing optimization with +O3
JAGag20382: Assert syz_gen_be.C 8341 +O2 on virtual call
JAGag23282: The compiler incorrectly analyzed the passing
of a modified routine parameter to a a standard
library call (strlen). As a result, it moved
the modification before the call, resulting in
an unexpected output from the call.
JAGag20670: Recovery code error in switch statement using
+O2
JAGag24837: x25init command -O generated bad code for
fprintf
Enhancement:
No
SR:
8606475763 8606478215 8606472569 8606474570 8606441461
8606453886 8606460672 8606461346 8606461495 8606463736
8606464705 8606467926 8606465040 8606469650
Patch Files:
ACXX.ACXX,fr=C.06.12,fa=HP-UX_B.11.31_IA,v=HP:
/opt/aCC/bin/aCC
/opt/aCC/bin/cc
/opt/aCC/bin/c89
/opt/aCC/bin/c99
/opt/aCC/bin/c++filt
/opt/aCC/lbin/ecom
/opt/aCC/lib/nls/msg/C/ecc.cat
ACXX.ACXX-HELP,fr=C.06.12,fa=HP-UX_B.11.31_IA,v=HP:
/opt/aCC/html/C/guide/options.htm
ACXX.ACXX-STDLIB,fr=C.06.12,fa=HP-UX_B.11.31_IA,v=HP:
/opt/aCC/include_std/fstream
/opt/aCC/include_std/fstream.cc
what(1) Output:
ACXX.ACXX-STDLIB,fr=C.06.12,fa=HP-UX_B.11.31_IA,v=HP:
/opt/aCC/include_std/fstream:
None
/opt/aCC/include_std/fstream.cc:
None
ACXX.ACXX-HELP,fr=C.06.12,fa=HP-UX_B.11.31_IA,v=HP:
/opt/aCC/html/C/guide/options.htm:
None
ACXX.ACXX,fr=C.06.12,fa=HP-UX_B.11.31_IA,v=HP:
/opt/aCC/bin/aCC:
HP C/aC++ for Integrity B3910B A.06.14 [Feb 22 2007]
/opt/aCC/bin/cc:
HP C/aC++ for Integrity B3910B A.06.14 [Feb 22 2007]
/opt/aCC/bin/c89:
HP C/aC++ for Integrity B3910B A.06.14 [Feb 22 2007]
/opt/aCC/bin/c99:
HP C/aC++ for Integrity B3910B A.06.14 [Feb 22 2007]
/opt/aCC/bin/c++filt:
HP aC++ for Integrity B3910B A.06.14 [Feb 22 2007] D
emangler Library
/opt/aCC/lbin/ecom:
HP C/aC++ for Integrity B3910B A.06.14 [Feb 22 2007]
IELF v2.6 (SYZYGY Feb 21 13:48)
HP Low-level optimizer AR.0606.116 (02/21/07)
HP Itanium libflow AR0703.1 (06/19/06) [3006574443 3
94309]
linkstamp Thu Feb 22 14:46:45 2007 PST [Build N/A]
/opt/aCC/lib/nls/msg/C/ecc.cat:
None
cksum(1) Output:
ACXX.ACXX-STDLIB,fr=C.06.12,fa=HP-UX_B.11.31_IA,v=HP:
4038507157 19536 /opt/aCC/include_std/fstream
2129182477 25380 /opt/aCC/include_std/fstream.cc
ACXX.ACXX-HELP,fr=C.06.12,fa=HP-UX_B.11.31_IA,v=HP:
1665390253 270654 /opt/aCC/html/C/guide/options.htm
ACXX.ACXX,fr=C.06.12,fa=HP-UX_B.11.31_IA,v=HP:
3659697472 833700 /opt/aCC/bin/aCC
3659697472 833700 /opt/aCC/bin/cc
3659697472 833700 /opt/aCC/bin/c89
3659697472 833700 /opt/aCC/bin/c99
154163613 559736 /opt/aCC/bin/c++filt
3912211226 53144188 /opt/aCC/lbin/ecom
1200102433 122390 /opt/aCC/lib/nls/msg/C/ecc.cat
Patch Conflicts: None
Patch Dependencies:
11.31: PHSS_35980
Hardware Dependencies: None
Other Dependencies: None
Supersedes: None
Equivalent Patches:
PHSS_35974:
s700: 11.23
s800: 11.23
PHSS_35975:
s700: 11.23
s800: 11.23
Patch Package Size: 20240 KBytes
Installation Instructions:
Please review all instructions and the Hewlett-Packard
SupportLine User Guide or your Hewlett-Packard support terms
and conditions for precautions, scope of license,
restrictions, and, limitation of liability and warranties,
before installing this patch.
------------------------------------------------------------
1. Back up your system before installing a patch.
2. Login as root.
3. Copy the patch to the /tmp directory.
4. Move to the /tmp directory and unshar the patch:
cd /tmp
sh PHSS_35976
5. Run swinstall to install the patch:
swinstall -x autoreboot=true -x patch_match_target=true \
-s /tmp/PHSS_35976.depot
By default swinstall will archive the original software in
/var/adm/sw/save/PHSS_35976. If you do not wish to retain a
copy of the original software, include the patch_save_files
option in the swinstall command above:
-x patch_save_files=false
WARNING: If patch_save_files is false when a patch is installed,
the patch cannot be deinstalled. Please be careful
when using this feature.
For future reference, the contents of the PHSS_35976.text file is
available in the product readme:
swlist -l product -a readme -d @ /tmp/PHSS_35976.depot
To put this patch on a magnetic tape and install from the
tape drive, use the command:
dd if=/tmp/PHSS_35976.depot of=/dev/rmt/0m bs=2k
Special Installation Instructions: None
|