パッチプログラムをダウンロードするには、事前にARM社のコネクトサービスのアカウントを取得し、ログインしておく必要があります。アカウントの取得は以下のURL から無償で行う事ができます:
https://login.arm.com/register.php
ARM Compiler toolchain v5.03u1 (build 69)
このARM Compiler Toolchain v5.03 update 1 Build69 は、既存のDS-5を更新することを目的として使用されます。このパッチは、RVCT/RVDS での使用は適切でありません。
異なったバージョン番号を持つARMコンパイラの複数の機能リリースは、同一のマシンに共存インストール可能です。同一の機能リリースに対する複数のアップデートバージョン(例:5.01u1と5.01u2)を同一マシンにインストールすることはサポートされておりません。
DS-5のパッチは、ARM社のWebサイトよりダウンロード可能です。
https://silver.arm.com/browse/DS500
このアップデートは、最新のコンパイラおよび、リンカ、アセンブラ、 fromelf、およびarmarの実行可能形式と、インクルードファイルおよびC / C++ ライブラリから構成されています。
サポートされるOSプラットフォーム
Windows XP Service Pack 3 (32-bit only)
Windows Server 2003
Windows Server 2008 R2
Windows 7 Enterprise Service Pack 1
Windows 7 Professional Service Pack 1
Red Hat Linux Enterprise 5 for x86, 32-bit & 64-bit
Red Hat Linux Enterprise 6 for x86, 32-bit & 64-bit
Ubuntu Linux 10.04 LTS, 32-bit only
Ubuntu Linux 12.04 LTS, 32-bit & 64-bit
注意:Ubuntu Linux 10.04 LTSは次リリースで削除される予定です。
パッチをインストールするには以下の手順で行います
Linux の場合
1.上記サイトからパッチプログラムをダウンロードしてください。
2.tgz ファイルをテンポラリディレクトリに解凍してください。
3.Installer ディレクトリ内の "setup.sh" を実行し、画面の指示に従って、ARM Compiler v5.03をインストールしてください。
4.これでアップデートツールがインストールされます。
Windows の場合
1.上記サイトからパッチプログラムをダウンロードしてください。
2.ZIP ファイルをテンポラリディレクトリに解凍してください。
3.Installer ディレクトリ内の "setup.exe" をダブルクリックし、インストーラの画面の指示に従って、ARM Compiler v5.03をインストールしてください。
4.これでアップデートツールがインストールされます。
ARM Compiler v5.03u1 ( Build 69 ) 改善と訂正
v5.03での不具合修正
コンパイラ( armcc )
-
コンパイラは、
__stack_shk_guard
がコードとして定義された場合にエラー
#3094
を(正しくはデータ定義)、
__stack_chk_fail
がデータとして定義された場合にエラー
#3095
を(正しくはコード定義)生成するようになりました。 [SDCOMP-22332]
-
SDCOMP-22244 にて、以下の問題が解決されました。
-
インストラクション中にビットフィールドが基になる型よりも大きいサイズでアラインメント属性付きで宣言されていた場合、コンパイラは内部エラーを発生するか、このビットフィールドのアクセスで不正なコードを生成する場合がありました。この不具合は修正されました。
-
パックされた構造体でアラインメント属性付きのビットフィールドを使用した場合、
内部エラー
が発生していました。この不具合は修正され、パックされた構造体内のフィールドのアラインメントは個々のフィールドに指定された属性にかかわらず、
1 バイト
になります。
-
C 及び C++ プログラムが GNU モードでコンパイルされ、指定されたビットフィールドのサイズが宣言されたベースの型よりも大きい場合、コンパイラはサイズを超えたビットフィールドを許容します。これは、C プログラムでのエラーおよび C++ の警告を表示する GCC の動作とは異なります。以前に受け入れられたプログラムを拒絶することなく、GCC の動作をより良くエミュレートするために armcc は、C 及び C++ の GNU モードでサイズを超えたビットフィールドに対して警告メッセージを発生するようになりました。[SDCOMP-22244]
-
--vectorize
が指定された特定のケースで、条件実行される
&&=
または
&=
表記は不正なコードに変形されることがありました。この不具合は修正されました。 [SDCOMP-22111]
-
関数のループ内でシフト演算を通してナローされる(狭められる)値は、コンパイラが全ての最適化レベルでビット毎の
AND, EOR, OR 演算
に不正に最適化される場合がありました。この不具合は修正され、この最適化は、
-O2
以上でのみ適用されるようになりました。 [SDCOMP-22082]
-
構造体型の定義の内部の
union { member list };
形式の宣言は、無名共用体(GNU モードまたは
#pragma anon_unions
が有効である場合)またはコンパイルエラーとして取り扱われることになりました。デフォルトモードでの以前の動作は、警告メッセージを表示し、構造体フィールドが宣言されていないと仮定して処理されていました。
union tag;
形式または
union tag { member list };
でも同様な動作となりますが、GNU C モードでは警告メッセージのみが表示され(gcc の処理と一致します)、C++ モードではそれを含む構造体のスコープ内で型を宣言する通常の C++ 動作になります。上記の例は、
union
を
struct
で置き換えても同じ動作となります。 [SDCOMP-22064]
-
右シフトに続く左シフト(両方とも定数値シフト)で構成されるいくつかの 64 ビット表現は、不正なコードが生成され誤った演算結果になる場合がありました。この不具合は修正されました。 [SDCOMP-22029]
-
-O3 -Otime
でコンパイラは、シンプルな
do-while
デクリメントループで符号付き
INT_MAX
との不正な比較コードを生成することがありました。この不具合は修正されました。 [SDCOMP-22003]
-
ループでインクリメントフィールドを使用した場合、
-O3 -Otime
でコンパイラはポストインクリメントされたポインタをプリインクリメント操作に不正に変形することがありました。この不具合は修正されました。 [SDCOMP-21949]
-
コンパイラは 64 ビットデータ型を初期化するループを不正にベクタライズしていました。この不具合は修正されました。 [SDCOMP-21924]
-
-O3 -Otime
でコンパイラは、定数がループに伝搬され、引数がループ内で定義される C の数学関数ライブラリへの参照が含まれ、ライブラリ関数のプロトタイプと型が一致しない場合、不正なコードが生成される事がありました。この不具合は修正されました。 [SDCOMP-21701]
-
二つの分岐間でリンクレジスタ (LR) が使用され、分岐間のコードが十分に大きい場合に、コンパイラはこれを分岐の外に引き出し、LR の値が破壊されることがありました。この不具合は修正されました。 [SDCOMP-21687]
-
コンパイラは特定の状況下で、不正な
.debug_loc
と
.debug_frame
情報を生成し、デバッガがローカル変数とコールスタックを正常に表示できないことがありました。この不具合は修正されました。 [SDCOMP-20191]
リンカ( armlink )
-
リンカは、シンボルが不足した無効な C++ プログラムをリンクした場合に、仮想関数削除のエラー L6647E を生成しなくなりました。リンカは適切に、シンボルが不足しているエラーを表示します。 [SDCOMP-22163]
-
リンカは、
--no_rtti_data
でコンパイルされたオブジェクトがリンクされた場合に、仮想関数削除のエラー
L6647E
を生成しなくなりました。 [SDCOMP-22162]
-
特定の状況下でリンカは、標準ベニアモデルでショートベニアを生成した後に停止する場合がありました。この不具合は修正されました。 [SDCOMP-18122]
-
--no_remove
オプションが使用された場合、リンカはライブラリからオブジェクトが抽出され、コマンドラインで直接指定されているかのように
libname.a(object)
構文を使用してライブラリ内の指定されたオブジェクトを扱うことが出来るようになりました。以前は、リンカはこれらのオブジェクトを未使用として考慮し、これらのオブジェクトから参照されるセクションを最終イメージから削除しようとしていました。 [SDCOMP-16591]