パッチプログラムをダウンロードするには、事前にARM社のコネクトサービスのアカウントを取得し、ログインしておく必要があります。アカウントの取得は以下のURL から無償で行う事ができます:
https://login.arm.com/register.php
ARM Compiler toolchain v5.01 update 4 (build 113) †
このARM Compiler Toolchain v5.01 Build113 は、既存の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 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+, Cortex-M0plus 及び cortex-m0plus でも認識できるようになりました。 [SDCOMP-18499]
アセンブラ( armasm )
- ARMv7-M をターゲットにしたアセンブラでは、If-Then (IT) ブロック内の ISB 命令を正しく UNPREDICTABLE としてエラーになります。 [SDCOMP-18851]
- アセンブラは、VRSHRN 及び VSHRN 命令のゼロ即値の使用を受け入れるようになりました。これらの疑似命令は VMOVN としてアセンブルされます。 [SDCOMP-18651]
- アセンブラは ARM ステートでの MSR spec_reg, PC を正しく UNPREDICTABLE としてレポートするようになりました。 [SDCOMP-18633]
- アセンブラは、VORR, VBIC 及び VMOV と符号無しデータ型の即値命令(例えば、VMOV.U32 d1,#0xffffffff )を不正にエラーとしていました。この不具合は修正され、アセンブラはこれらを容認します。 [SDCOMP-16802]
コンパイラ( armcc )
- 特定の状況下で、__disable_irq 及び __disable_fiq 組み込み関数の戻り値が不正に破棄される場合がありました。この不具合は修正されました。 [SDCOMP-18850]
- 特定の状況下で、不連続な配列または2つの異なるポインタ/リファレンスを通した構造体要素へのアクセスは、これらのアクセスが LDM/STM または LDRD/STRD に統合され、これらの要素のロード・ストアが配列又は構造体への誤ったオフセットとなる場合がありました。この不具合は修正されました。 [SDCOMP-18814]
- ARMv7-M でのコンパイルでは、IT ブロック内に UNPREDICTABLE となる ISB 命令を出力しなくなりました。 [SDCOMP-18792]
- -O2 以上でのコンパイルで、 long long データ型を不正に最適化する事がありました。この不具合は修正されました。 [SDCOMP-18767]
- -O1 以上の最適化で発生する内部エラー 0x87ecef の原因は修正されました。 [SDCOMP-18687]
- 全ての最適化レベルで発生する内部エラー 0x0a106f の原因は修正されました。 [SDCOMP-18661]
- 内部エラー 0x87ecef が発生する原因のひとつが修正されました。 [SDCOMP-18648]
- 内部エラー 0xf1322f が発生する原因は修正されました。これによって、特殊なネームレジスタ変数と共用体または構造体型が使用が制限されていました。 [SDCOMP-18647]
- 多数の変数を持つ大きなアプリケーションを -g または --debug 付きでコンパイルした場合、コンパイラは32ビットのメモリ制限を超えるポインタに過剰な量のメモリを使用していました。この不具合は修正され、コンパイラは適度な容量のメモリを使用するようになりました。 [SDCOMP-18627]
- 巨大な関数をコンパイルする特定の状況下で、コンパイラは、スタックフレームに LR の前の値を保存せずに LR が破壊された分岐命令を生成していました。この問題は修正されました。 [SDCOMP-18616]
- 関数の終了部分近くから他の関数を呼び出し、呼び出し側と呼び出される側の関数のリターンレジスタが一致しない場合であっても、コンパイラは不正にテールコール最適化を行ってしまう事がありました。この不具合は修正されました。 [SDCOMP-18611]
- 内部エラー 0x05ced5 が発生する原因のひとつが修正されました。 エラーは volatile フィールドを含んだ構造体の配列を持つ構造体の代入処理によって発生していました。 [SDCOMP-18609]
- 高い値 ( 0xFFFFFF00) のポインタ比較を行った場合、コンパイラは不正にポインタ変数のアドレスであることを判断した場合、コンパイラは不正に比較命令を削除する場合がありました。この不具合は修正されました。 [SDCOMP-18604]
- -O3 -Otime で、コンパイラは不正に未初期化の変数から読み込みを行い、これにより警告メッセージ C3017W が表示される事がありました。この不具合は修正されました。[SDCOMP-18582]
- volatile が含まれた構造体へのポインタが含まれた引数の関数呼び出しが行われた場合、コンパイラは不正なメモリアクセスコードを生成する場合がありました。この不具合は修正視されました。 [SDCOMP-18581]
- 内部エラー 0x3e0da2 となる原因は修正されました。この不具合は、 --protect_stack の使用とコンパイラがスタックスマッシング攻撃に対して脆弱とみなした関数が構造体を戻り値とした場合にトリガされていました。 [SDCOMP-18563]
- 代入式の右辺に少なくともひとつの volatile メンバが含まれ、最大で4バイトの構造体を返す関数呼び出しがある場合に内部エラー 0x3e0da2 が発生する可能性がありました。この不具合は修正されました。 [SDCOMP-18559]
- MOV と CMP 命令に対して不正に行われたピープホール最適化がトリガとなりデッドコードの生成が行われる仮想的な不具合がありました。このピープホール最適化の問題は修正されました。 [SDCOMP-18554]
- 以前のバージョンでは特定の状況下で、コンパイラは不正に式をループの外に配置してしまうことがありました。この不具合は修正されました。 [SDCOMP-18551]
- 最初の要素に無名の共用体または構造体を含んだ共用体のスタティックイニシャライザを含んだコードをコンパイルした場合、内部エラー 0x1d2865 が発生する場合がありました。この不具合は修正されました。 [SDCOMP-18381]
- -O3 -Otime を使用した特定の状況下で、コンパイラは依存度のある初期化ステートメントの順番を不正に反転したコードを生成する事がありました。この不具合は修正されました。 [SDCOMP-18296]
- 内部エラー 0xee2afe が発生する原因は修正されました。この内部エラーは、コンストラクタ内で char 型配列が短い文字列リテラルで初期化される場合に発生していました。 [SDCOMP-18198]
- 関数からのテンプレート構造体の戻り値の配列フィールドにアクセスした場合に内部エラー 0x44288b が発生する事がありました。この不具合は修正されました。 [SDCOMP-17962]
- 関数呼び出しの結果の構造体を const 参照引数として受け取る関数に渡した場合に過剰なスタック領域を消費する場合がありました。この不具合は修正されました。 [SDCOMP-16800]
- コンパイラは、const 左辺式がインラインアセンブラのオペランドとして使用され、それらに対して書き込みが発生していない場合でも不正に #137: "expression must be a modifiable lvalue" をレポートする事がありました。この不具合は修正されました。 [SDCOMP-15698]
ライブラリ
- C++ 標準ライブラリの std::rotate_copy の不具合は、lastの後(より大きい)の middle との std::rotate_copy の使用が C++ 2003 標準仕様と同じように動作していませんでした。また、ゼロサイズの valarray 上で非ゼロ引数の cshift の使用は、全てのメモリを上書きしていました。この不具合は修正されました。 [SDCOMP-18699]