パッチプログラムをダウンロードするには、事前にARM社のコネクトサービスのアカウントを取得し、ログインしておく必要があります。アカウントの取得は以下のURL から無償で行う事ができます:
https://login.arm.com/register.php
ARM Compiler toolchain v5.01 update 3 (build 94) †
このARM Compiler Toolchain v5.01 Build94 は、既存のDS-5を更新することを目的として使用されます。このパッチは、RVCT/RVDS での使用は適切でありません。
異なったバージョン番号を持つARMコンパイラの複数の機能リリースは、同一のマシンに共存インストール可能です。同一の機能リリースに対する複数のアップデートバージョン(例:5.01u1と5.01u2)を同一マシンにインストールすることはサポートされておりません。
DS-5のパッチは、ARM社のWebサイトよりダウンロード可能です。
http://www.arm.com/products/tools/software-tools/ds-5/updates-and-patches.php
このアップデートは、最新のコンパイラおよび、リンカ、アセンブラ、 fromelf、およびarmarの実行可能形式と、インクルードファイルおよびC / C++ ライブラリから構成されています。
サポートされるOSプラットフォーム
Windows XP Service Pack 3 (32-bit only) Windows Server 2003 Windows Server 2008 R2 Windows 7 Enterprise Windows 7 Professional Red Hat Linux Enterprise 4 for x86, 32-bit & 64-bit Red Hat Linux Enterprise 5 for x86, 32-bit & 64-bit Ubuntu Linux 10.04LTS (32-bit only)
パッチをインストールするには以下の手順で行います
Linux の場合
1.上記サイトからパッチプログラムをダウンロードしてください。
2.tgz ファイルをテンポラリディレクトリに解凍してください。
3.Installer ディレクトリ内の "setup.sh" を実行し、画面の指示に従って、ARM Compiler v5.01をインストールしてください。
4.これでアップデートツールがインストールされます。
Windows の場合
1.上記サイトからパッチプログラムをダウンロードしてください。
2.ZIP ファイルをテンポラリディレクトリに解凍してください。
3.Installer ディレクトリ内の "setup.exe" をダブルクリックし、インストーラの画面の指示に従って、ARM Compiler v5.01をインストールしてください。
4.これでアップデートツールがインストールされます。
一般
- Cortex-M0+ コアのターゲットサポートが追加されました。これは、 --cpu=Cortex-M0+ で有効になります。[SDCOMP-15444]
アセンブラ( armasm )
- MSR / MRS 命令にバンクレジスタが使われるとき、 fromelf とアセンブラは正しく未定義のエンコードを識別できませんでした。 この問題は修正されました。[SDCOMP-18246]
コンパイラ( armcc )
- コンパイラは構造体のリード/ライトを行う際に、構造体内の volatile フィールドと volatile 構造体中のフィールドを異なった volatile オブジェクトとして扱うようになり、それらが直接アクセスされるかのように個々のフィールドに対するロード、ストアを生成するようになりました。[SDCOMP-18442]
- コンパイラは非整列アクセスをサポートしないCPU上で、非整列の8-byte ロード/ ストアを実行するために、-Ospace 指定時には __aeabi_uread8 および、__aeabi_uwrite8 を使用するようになりました。[SDCOMP-18375]
- -O3 -Otime を指定時、巨大な定数ストライドを伴うwhileループにおいて、コンパイラが算術オーバーフローを生成するような演算式を吐き出す可能性がありました。[SDCOMP-18368]
- ある特定状況の下、潜在的にメモリを変更するオペレーションが介在する場合でも、コンパイラは代数恒等式を最適化する可能性がありました。この問題は修正されました。[SDCOMP-18352]
- ある特定状況の下、アンローリングとループローテーションの両方が適用されるとき、定数の繰り返しカウントが小さいループは、間違って無限ループへ変換される可能性がありました。[SDCOMP-18323]
- -O2 以上の最適化において、不連続な配列や構造体メンバへのアクセスシーケンスが配列や構造体内のメモリオフセットの計算を間違う可能性がありました。この問題は修正されました。[SDCOMP-18168]
- コンパイラ最適化関連の問題によって、ポインタにインデックスが付けられ、ループ内で不正にインクリメントされていました。この問題は修正されました。[SDCOMP-17924]
- コンパイラは、未初期化メモリからの読み出しを引き起こす、配列可変や可変引数へのアウトオブバウンド スタックアクセスを生成する可能性がありました。この問題は修正されました。[SDCOMP-17753]
- 非参照の関数ポインタが代入の左辺で使われるとき、 armcc は internal fault 0x05ced5 を引き起こしません。代わりに、 エラー #137 を発生させます。[SDCOMP-17734]
- Thumb-2 をサポートしていないターゲットのため、Thumbコードへのコンパイルするとき、多くの 64-bit 整数オペレーションを含んだ大きな関数は、internal fault 0x995e1d を引き起こすことがありました。この問題は修正されました。[SDCOMP-17628]
- switchステートメントが -O1 以上の場合、コンパイラの internal fault の引き金となることがありました。この問題は修正されました。[SDCOMP-17588]
- Thumb でコンパイルする場合、 CMP 命令は間接的、あるいは仮想関数コール後に省略される可能性がありました。この問題は修正されました。[SDCOMP-17438]
- --gnu が指定されたときを除いて、あらかじめ packed された構造体の配列型を持つフィールドのアラインメントは、フィールドアクセス処理中に受け付けられていませんでした。 これは誤っているアンアラインド メモリアクセスをもたらす可能性がありました。 コンパイラは、すべてのケースで、適切にフィールドアラインメントを受け付け、不正なアンアラインド メモリアクセスを生成しないよう修正されました。[SDCOMP-17029]
- コンパイラの internal fault 0x87ecef の原因は、修正されました。[SDCOMP-16775]
- 最適化レベル -O0 以上で GNU の gnu_inline 属性を使用するようなコードをコンパイルする状況では、再帰が存在すべきではない箇所で再帰関数を誤って生成する場合がありましたが。gnu_inline 属性は正しい実装となりました。ただし、例外がイネーブルであるとき、 gnu_inline 属性が例外仕様の関数で現在サポートされないことに注意してください。[SDCOMP-16351]
- --debugにおける --remove_unneeded_entities を使用すると、コンパイラの internal fault が発生する場合がありました。この機能は改善されました。[SDCOMP-15817]
- --remove_unneeded_entities オプションを使用したコンパイル時の、 internal fault 0x05ced5 の原因が修正されました。[SDCOMP-15808]
- -O3 -Otimeでコンパイルするときの、 internal fault 0x6bca8b の原因が修正されました。[SDCOMP-15725]
- オプション --asm と -Mあるいは --MM を合わせて使用するとき、コンパイラは internal fault を生成することがありました。この問題は修正されました。[SDCOMP-15487]
ライブラリ
- --wchar32 オプションを使用してビルドを行った際に、scanf ライブラリ関数中の誤ったポインタ演算が、ランタイムに間違った振る舞いをを引き起こしていました。この問題は修正されました。[SDCOMP-17985]
- 標準IO wide character サポート(例えば、 fgetwc, ungetwc, fwscanf )に関連する 4-byte wchar_t 型 の使用は、マルチスレッドのアプリケーションのスレッドセーフを保つため使われている mutex を含む、その他の標準IOで使われるデータを破壊する可能性があり、もし、fseek のような ファイル位置表示関数 と共に unfgetwc や、scanf を使用した場合、誤った振る舞いを引き起こす可能性がありました。この問題は修正されました。[SDCOMP-17901]