-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                                                                    2000/07/28
　CodeWarrior for Dreamcast R3 Ver.3.02

　　　　　　　　　　　　　　　　　　　　　　　　　　　　　セガ・エンタプライゼス
　　　　　　　　　　　　　　　　　　　　　　　　　　　　テクニカルサポートセンタ

■このリリースについて

　CodeWarrior for Dreamcast R3(以下CWR3) Ver3.02(※セガ管理Version)です。
インストーラは付属していませんので、CD-ROMのイメージをコピー後、
　　　　 ... utl\dev\CodeWarrior\bin\regservers.bat
を実行してください。IDEを起動するには、
　　　　 ... utl\dev\CodeWarrior\bin\ide.exe
を実行してください。

　このバージョンに対応するセガライブラリは、SDK 2.xxJのみです。
　セガライブラリSDK 1.xxJをご使用になられる方は、CodeWarrior for Dreamcast R2
をご使用下さい。

■CodeWarrior for Dreamcast R3 Ver3.00RC1→Ver3.01への変更点

・IDEを最新の4.07に置換えました。
・標準ライブラリ(MSLRuntimeDC.LIB)から不要なスタートアップモジュール(startup.src)
  を削除しました。

■CodeWarrior for Dreamcast R3 Ver3.00b→Ver3.00RC1への変更点

(1)コンパイラ
=============

　if,switch文での分岐先が非常に離れたところにある場合に、不正コードを生成
　することがある不具合を修正しました。(bt,bra等のPC相対で飛ぶか、jmp命令で
　飛ぶか判定する部分の不具合)

(2)オーバレイ・プレリンカ関連
=============================

　R3 Ver3.00bで未対応でした、オーバレイに対応しました。(ただし非常駐部の
ソースデバッグに問題があります)同時にリンカコマンドファイルジェネレータを変更
しました。

(3)LCFファイルに関する注意点【重要】
====================================

　オーバレイ対応とコンパイラの修正のため、リンカコマンドファイルの使用を一部
修正しました。このためご使用のリンカコマンドファイル(segalib2.lcf)の一部を
修正していただく必要があります。

　(a)オーバレイを使用していない場合
　・SINITセグメントを以下のように修正してください。
---
[変更前]
	..sinit :
	{
		. = ALIGN(0x04);	
		___sinit__= .;
		STATICINIT

		. = ALIGN(0x04);
	} > .sinit

[変更後]
	..sinit :
	{
		. = ALIGN(0x04);	
		GROUP(ROOT)(.init)
		. = ALIGN(0x04);	
		___static_init_begin = .;
		GROUP(ROOT)(.ctor)
		___static_init_end = .;

		. = ALIGN(0x04);
	} > .sinit
---

　(b)オーバレイを使用する場合
　・R3 Ver3.00RC1のLCFジェネレータでLCFを作成してください。

　なお、Dreamcast SDK 2.00J(RC1)のサンプルに含まれるLCFファイルは、
　CodeWarrior R3 Ver3.00(RC1)用となっています。


 ******************************************************************************

■現バージョンでの制限事項・確認されている不具合

今回のリリースでは以下の制限事項/注意事項があります。

 1.CodeScapeによるリンクリオーダの機能が未サポート
 =================================================
　リンカの変更によるデータ形式変更により、CodeScapeのリンクリオーダ機能に対応
していません。CodeScape側の対応までしばらくお待ち下さい。

 2.Nindows2 SDKサンプルをビルドできない
 ======================================
　　Nindows2は、(1)C言語関数インタフェイスライブラリと(2)C++のクラスライブラリの
　２種類のインタフェイスを提供します。このうち(2)のインタフェイスは、CodeWarrior
　では使用できません(SHC専用となっています)。

　　CodeWarriorをご使用でかつNindows2のC++クラスライブラリインタフェイスが必要な
　方は、お手数ですが、テクニカルサポートまでその旨ご相談下さい。

 3.リンカコマンドファイル(.lcf)の書き方について
 ==============================================

　リンカコマンドファイルを直接編集される場合は以下の点にご注意下さい。
　リンカコマンドファイルを、標準に提供されているものか、LCFジェネレータから
生成されるものをご使用になっている場合は、以下の制限事項を特に気にする必要は
ありません。

(1)　MEMORY{ ... }内のセクションの順序は、アドレスの昇順に並べ、かつ、
　　SECTIONS{ ... }内のセクションの定義順も、MEMORY{ ... }で指定した
　　順にしなければなりません。

---
　MEMORY{
     ：
.bss_user   (RW):  ORIGIN = AFTER(.code_sg_sofdec), LENGTH = 0
.bss_user2  (RW):  ORIGIN = AFTER(.bss_user),       LENGTH = 0
     :
}

(例1) OKケース
..bss_user {

} > .bss_user
..bss_user2 {

} > .bss_user2

(例2) NGケース
..bss_user2 {

} > .bss_user2
..bss_user {

} > .bss_user
---

(2)　リンカコマンドファイル内で、変数の前方参照を行う場合は、
　あらかじめ変数を定義を行い、かつ初期値を設定しておきます。


(例1) NGケース:以下の例でのvalの計算時にリンクエラー。

例：
　SECTIONS {
	..data_sg_lh :
	{
		val = __END_BGAP - __START_DSGLH ; #リンク時エラー
		WRITEW val ;

		ALIGNALL(0x04);
		__START_DSGLH	= .;
		GROUP(ROOT)(DSGLH)
		__END_DSGLH		= .;
　　　　　　　 (中略)
	..bss_gap :
	{
		ALIGNALL(0x20);
		__START_BGAP	= .;
		GROUP(ROOT)(BGAP)
		__END_BGAP		= .;
	} > .bss_gap
 }


(例2) NGケース:
　前方に仮に変数を用意しておくと（値はなんでもよい）リンクエラーは回避
できますが、実際に計算した値が正しくメモリ上に書き込まれません。

SECTIONS {
    ..data_sg_lh :
    {
        __START_DSGLH = 0;
        __END_BGAP = 0;
        val = __END_BGAP - __START_DSGLH;
        WRITEW val ;
　　　　　　　 (中略)
	..bss_gap :
	{
		ALIGNALL(0x20);
		__START_BGAP	= .;
		GROUP(ROOT)(BGAP)
		__END_BGAP		= .;
	} > .bss_gap
 }


　(例3) OKケース

SECTIONS {
    ..data_sg_lh :
    {
        val = 0;               # 仮の変数定義
        WRITEW val ;           # 変数内容の書き込み

        ALIGNALL(0x04);
        __START_DSGLH = .;

        ... 中略 ...

    ..bss_gap :
    {
    ALIGNALL(0x20);
    __START_BGAP = .;
    GROUP(ROOT)(BGAP)
    __END_BGAP = .;

    val = __END_BGAP - __START_DSGLH;      # ここで計算する
                                           # ここでは__END_BGAP、
                                           # __START_DSGLHの値が確定して
                                           # いるので正しい結果が得られる
    } > .bss_gap
}

-以上-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
