MESC TOOL NEWS:
MESCT-CC16-980516D
CC16 V.3.10 Release 4
バージョンアップのお知らせ
W95J版/W95E版リリースのお知らせ
|
この度、M16ファミリ用クロスツールキットCC16を、V.3.10 Release 4にバージョンアップいたしました。また、Windows 95日本語版とWindows 95英語版をリリースいたしましたので合わせてご案内申し上げます。
バージョンアップに伴う変更点
バージョンアップに伴い以下の変更および問題点の改修を行いました。
- Cコンパイラ(cc16)
- ビットフィールドメンバを正しく参照できない場合がある問題の改修
以下に示す[条件](1)~(7)をすべて満たす場合、ビットフィールドメンバを正しく参照できない場合がある問題を改修しました。
[条 件]
- コンパイル時に最適化レベル2を含むオプション(-O2, -O3, -O6, -O7, -O, -Otimeのみ, -Ospaceのみ)を指定している。
- ビットフィールドメンバに、定数、変数、ビットフィールドメンバ、または、それらの演算を代入している。定数、変数、ビットフィールドメンバ、または、それらの演算(1の補数を除く)の場合、それは代入先のビットフィールドメンバで表現可能な範囲外の値である。1の補数の場合、それは以下の何れかである。
- 代入先のビットフィールドメンバで表現可能な範囲外の値である。
- 代入先のビットフィールドメンバで表現可能な範囲内の値であるが、右辺の項が符号無し(unsigned)であり、条件(6)において、ビットフィールドメンバの表現可能な範囲外も、参照に含まれるような参照を行っている。
- 代入先のビットフィールドメンバで表現可能な範囲内の値であるが、右辺の項が符号無し(unsigned)であり、ビットフィールドメンバの値が0になる場合に、条件(6)において、真偽を問う参照を行っている。
- 上記(2)のビットフィールドメンバの型が、char型 、unsigned char型、short型、unsigned short型である。
- 上記(2)のビットフィー ルドメンバ、または、その構造体に、型修飾子volatile が宣言されていない。
- 上記(2)のビットフィールドメンバのビット幅が、1 ~ 15 である(ただし8~15 は、ビットフィールドメンバの型が、short型またはunsigned short型の場合である)。
- 上記(2)のビットフィールドメンバを参照している。
- 上記(2)の代入と(6)の参照の間に、関数呼び出し、分岐する文、または、他のビットフィールドメンバへの代入がない。
[記述例]-------------------------------------------------------------
struct st {
unsigned short a: 10; /* ←条件(3), (4), (5) */
} S;
unsigned short x;
void foo ( void )
{
S.a = 0xff80; /* ←条件(2) */
/* ←条件(7) */
x = S.a /* ←条件(6):xは正しく0x380となります。*/
}
---------------------------------------------------------------------
- 負の数を定義したenum値のデバッグ情報が正の数になってしまう問題の改修
負の数を定義したenum値のデバッグ情報が、正の数になってしまう問題を改修しました。
- 初期値のあるビットフィールド構造体を-packオプションでコンパイルするとインターナルエラーになってしまう問題の改修
以下に示す[条件](1)~(4)をすべて満たす場合、インターナルエラーが発生する問題点を改修しました。
[条 件]
- コンパイル時に-packオプション(構造体パック機能)を指定している。
- 構造体のメンバに、ビットフィールドを含んでいる。
- 連続するビットフィールドメンバの指定しているビット長の合計を32で除算した余りが、17~24である。
- この構造体を静的に初期化している。
[記述例]-------------------------------------------------------------
struct st {
unsigned int a:8; /* a,b,c は連続している。ビット長の合計は、*/
unsigned int b:8; /* 8+8+8=24であり、32で除算した余りは、 */
unsigned int c:8; /* 24%32=24となる。 */
} A = { 1,1,1 };
---------------------------------------------------------------------
- 関数の引数のアドレスを使ってデータを参照する場合の問題の改修
以下に示す[条件](1)~(4)をすべて満たす場合、関数の引数のアドレスを使ったデータの参照が、正しくできない場合がある問題を改修しました。
[条 件]
- コンパイル時に-RBPPオプション(関数への引数渡しにレジスタを使用する)を指定している。
- 関数の引数の型が、char, short, unsigned char, unsigned shortである。
- 上記(2)の引数を更新する前に、そのアドレスを参照している。
- 上記(3)のアドレスを使ってデータを参照している。
[記述例]-------------------------------------------------------------
#include "stdio.h"
void test(short *d)
{
printf("%x", *d); /* 条件(4):正しく参照できます。 */
}
void foo(short data) /* 条件(2) */
{
test(&data); /* 条件(3) */
}
---------------------------------------------------------------------
- リンカ(lnk16)
- リロケーションサイズ・オーバーフローチェックの仕様変更
アセンブリ言語プログラムをアセンブルおよびリンクする処理において、リンカによるリロケーションサイズ・オーバーフローチェックの仕様を変更しました。
- [リンカの機能説明]
- アセンブリ言語ソースにおいて、リンク時まで解決されないディスプレースメントの外部参照シンボル、または、相対シンボルを含むオペランドが指定された場合、アセンブラは、これら未解決の領域が存在する状態のオブジェクトファイルを生成します。リンカは、これら領域に解決したアドレス値を埋め込むことにより、アドレスを解決したロードモジュールを生成します。
- [リロケーションサイズ・オーバーフローチェックの仕様]
- リンカは、未解決の領域に解決したアドレス値を埋め込む際、領域に納まるか否かをチェックします。埋め込むことができない場合、エラーメッセージを出力します。旧仕様ではワーニングの出力でしたが、新仕様ではエラーにし、さらにエラーとする範囲を広げました(表1, 表2参照)。
表1 埋め込む領域が8ビットの場合の扱い
| アドレス範囲 | 新仕様 | 旧仕様 |
| unsigned | signed |
| ~0xffffff7f | エラー | エラー | ワーニング |
| 0xffffff80~0xffffffff | エラー | 正常終了 | 正常終了 |
| 0x00000000~0x0000007f | 正常終了 | 正常終了 | 正常終了 |
| 0x00000080~0x000000ff | 正常終了 | エラー | 正常終了 |
| 0x00000100~ | エラー | エラー | ワーニング |
表2 埋め込む領域が16ビットの場合の扱い
| アドレス範囲 | 新仕様 | 旧仕様 |
| unsigned | signed |
| ~0xffff7fff | エラー | エラー | ワーニング |
| 0xffff8000~0xffffffff | エラー | 正常終了 | 正常終了 |
| 0x00000000~0x00007fff | 正常終了 | 正常終了 | 正常終了 |
| 0x00008000~0x0000ffff | 正常終了 | エラー | 正常終了 |
| 0x00010000~ | エラー | エラー | ワーニング |
- C標準ライブラリ(m16libc.lib,m16libcR.lib)
- mktime関数の引数に整数極限値近くを指定すると処理が遅くなる問題の改修
mktime関数の引数に指定されるtm構造体のメンバーのtm_monおよびtm_mdayに、整数極限値に近い値を設定した場合、処理に時間がかかる問題を改修しました。
- mktime関数の引数に負の値を指定すると正しく変換されない場合がある問題の改修
mktime関数の引数に指定されるtm構造体のメンバーに、それぞれ以下に示す値を指定した場合、正しく変換されない問題点を改修しました。
tm_hour = -24, -48, ・・・・(-24の倍数)
tm_min = -60, -120, ・・・・(-60の倍数)
tm_sec = -60, -120, ・・・・(-60の倍数)
動作環境
- W95J版/W95E版のリリース
CC16 V.3.10 Release 4から、W95J版とW95E版をリリースしました(以降、Windows 95対応日本語版をW95J版、Windows 95対応英語版をW95E版と略します)。これに伴い、従来のIBJ版および98版は、W95J版に統合しました。また、IBE版は、W95E版に統合しました)。動作するホストマシンおよびOSのバージョンは、表3のとおりです。
表3 動作環境
| CC16 | ホストマシン | OS |
| W95J版 | IBM PC/AT互換機 | Windows 95およびWindows NT 4.0 のDOSプロンプト環境 |
| W95E版 |
| SPARC版 | SPARCstation | SunOS Release 4.1.x |
| Solaris版 | Solaris 2.x |
| HP9000/700版 | HP9000シリーズ700 | HP-UX Release 9.x |
- 提供メディアの変更/インストール方法の変更
各ホストごとのCC16すべてを、1枚のCD-ROMまたはCD-Rに格納しました。新インストーラにより、同梱するライセンスID証書に記載されたID番号を入力することで、対応ホストのCC16がインストールできるように変更しました。
出荷情報 (保守製品のため、現在は出荷しておりません。)
CC16 V.3.10 Release 4 の出荷情報は、表4の通りです。出荷に関しては、最寄りのルネサス営業または特約店までお問い合わせください。
表4 出荷情報
| 発注形名 | CC16 | 仕様明細 | 出荷メディア |
| MSCH-TOOL-S-CC | W95J版(日本語版) | CC16-W95J | CD-ROMまたはCD-R |
| W95E版(英語版) | CC16-W95E |
| SPARC版 | CC16-SPARC |
| Solaris版 | CC16-SOLARIS |
| HP9000/700版 | CC16-HP700 |
無償バージョンアップについて (保守製品のため、バージョンアップサービスは終了いたしました。)
- CC16を既に購入され、お客様登録カードをご返送いただいているお客様は、以下の条件で CC16 V.3.10 Release 4へ無償バージョンアップさせていただきます。
- IBJ版または98版から、W95J版へバージョンアップをご希望される場合。
- IBE版から、W95E版へバージョンアップをご希望される場合。
- SPARC版、Solaris版、または、HP9000/700版から、同じ版へバージョンアップをご希望される場合。
なお、EWS版からPC版、PC版からEWS版へは、無償バージョンアップできません。
無償バージョンアップは表5のとおりです。
表5 無償バージョンアップ一覧
| 前回ご購入版 | 今回バージョンアップ版 (V.3.10 Release 4) |
| IBJ版 | W95J版 |
| IBE版 | W95E版 |
| 98版 | W95J版 |
| SPARC版 | SPARC版 |
| Solaris版 | Solaris版 |
| HP9000/700版 | HP9000/700版 |
- バージョンアップ方法
無償バージョンアップをご希望のお客様は、以下の手順にてオンラインバージョンアップを行ってください。
- 「CC16無償ライセンスID発行申し込み用紙」をプリントアウトし、必要事項をご記入のうえ、同用紙に記載の宛先までFAXでご送付ください。
- 弊社より、「ライセンスID証書」を返送いたします。
- オンラインバージョンアップサイト にアクセスして、該当するホスト版のCC16およびリリースノートをダウンロードしてください(リリースノートはPDFです)。
- ダウンロードしたバイナリから、CC16のインストールを行ってください。その際、ライセンスID証書に記述されたID番号の入力が必要になります。インストール方法は、オンラインバージョンアップのサイトおよびリリースノートをご参照ください(PC版のインストールは、インストーラの指示に従ってください)。
- バージョンアップに関する注意事項
- 無償バージョンアップに該当されない場合は、有償となります。
- マニュアルおよびメディアが必要な場合は、有償となりますので、別途発注してください。
- 「CC16 V.3.10 ユーザーズマニュアル」は、改訂しておりません。現在お持ちの「CC16 V.3.10 ユーザーズマニュアル」をそのままご使用ください。「CC16 V.3.10 ユーザーズマニュアル」をお持ちでない場合には、別途購入ください。