PDF version - ARM Information Center
PDF version - ARM Information Center
PDF version - ARM Information Center
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
以 前 の リ リ ースについて<br />
A.4.2<br />
RVCT v2.2 における <strong>ARM</strong> コ ンパイ ラの 変 更 点<br />
RVCT v2.2 では、 次 の 点 が 変 更 されま し た。<br />
• <strong>ARM</strong> コ ンパイ ラ には、 動 的 なシンボルのエ ク ス ポー ト 方 法 を よ り 制 御<br />
しやすくするため、 以 下 の 新 しいオプシ ョ ンが 用 意 されています。<br />
— --export_all_vtbl を 使 用 する と、 すべての 仮 想 テーブル 関 数 および<br />
キー 関 数 が 含 まれた ク ラ スの RTTI がエク スポー ト されます。<br />
— --export_defs_implicitly を 使 用 する と、 dllimport が 指 定 されたプロ<br />
トタイプの 定 義 がエクスポートされます。<br />
• <strong>ARM</strong> コンパイラには、 共 有 オブジェク トまたは DLL を 作 成 する と きに<br />
シンボルを 可 視 化 する ための、 次 の 新 し いオプシ ョ ンが 用 意 さ れていま<br />
す。<br />
— --dllexport_all を 使 用 する と 、 他 に 何 も 指 定 し な く て も、 すべての<br />
グ ローバルシンボルを 動 的 に 可 視 化 で き ます。<br />
— --no_hide_all を 使 用 する と 、 すべての extern 定 義 がエ ク ス ポー ト さ<br />
れ、 すべての 未 定 義 参 照 が イ ンポー ト さ れます。<br />
• r12 ではな く r7 を 使 用 する 点 を 除 き、 新 しい __swi_indirect_r7 は<br />
__swi_indirect_r12 と 同 様 に 動 作 します。 <strong>ARM</strong> Linux 上 の Thumb アプ リ<br />
ケーシ ョ ンでは、 __swi_indirect_r7 を 使 用 してカーネルのシステムコー<br />
ルを 作 成 します。<br />
• オーバーロード したグローバルの operator new を throw() として 処 理 でき<br />
るよう、--force_new_nothrow の 動 作 が 拡 張 されま し た。<br />
• 列 挙 値 が 範 囲 外 の 場 合 に 警 告 が 表 示 さ れる よ う にする ため、 <strong>ARM</strong> コン<br />
パイラの C 言 語 実 装 が 変 更 さ れま し た。<br />
厳 密 な C では、 列 挙 値 は -2147483648 ~ +2147483647 ( 境 界 値 を 含 む)<br />
の 範 囲 の int で 表 現 で き る 必 要 があ り ます。 以 前 の リ リ ースの RVCT で<br />
は、--strict オプシ ョ ン を 指 定 し た 場 合 を 除 き、 範 囲 外 の 値 は 警 告 が 表 示<br />
されるこ となく int にキャス ト されました。<br />
RVCT v2.2 ではこのよ う な 値 は C++ でも 同 様 に、unsigned int、long long、<br />
または unsigned long long として 扱 われます。つまり、C を 使 用 している<br />
場 合 、 RVCT の 最 新 の リ リ ース を 使 用 し ている と、 範 囲 外 の 値 が 含 まれ<br />
た enum 型 はサ イ ズが 変 わ る 可 能 性 があ り ます。 以 下 に 例 を 示 し ます。<br />
enum E1 { k1 = 0xffffffff }; /* value == 2147483648u; out-of-range in C */<br />
/* C: before 2.2: sizeof(enum E1) == 1 */<br />
/* C: 2.2: sizeof(enum E1) == 4 */<br />
/* C++: all: sizeof(enum E1) == 4 */<br />
<strong>ARM</strong> DUI 0202IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. A-31<br />
Non-Confidential