                                                    更新日付： 2004年 5 月 27 日

Sun[tm] Studio 9、C コンパイラ Readme 

    目次

      A. はじめに 
      B. Sun Studio 9、C コンパイラについて 
      C. 新規および変更された機能 
      D. ソフトウェアの修正事項 
      E. 問題点と回避策 
      F. 制限事項と互換性の問題 
      G. 記述の誤りの訂正 



     ------------------------------------------------------------------

     A. はじめに

     この文書には、Sun[tm] Studio 9、C コンパイラに関する情報が記載され
     ています。このリリースで導入された新機能、ソフトウェアの修正事項、
     既知の問題点、制限事項、互換性の問題について説明します。この文書の
     記載内容は、このリリースのマニュアルの記載内容に優先します。

     製品マニュアル 

        * リリースノート (Solaris プラットフォーム): 
          http://docs.sun.com から入手可能です。リリースノートの情報は、
          各製品の Readme ファイルの情報に優先します。 
        * Sun Studio 9 のドキュメント: 製品のマニュアルページ、README 
          の HTML バージョン、およびマニュアルは、
          /installation_directory/SUNWspro/docs/ja/index.html からアク
          セスできます。デフォルトの installation_directory は /opt で
          す。index.html ページから以下のマニュアルにアクセスできます。
             o C ユーザーズガイド 
             o C++ ユーザーズガイド 
             o 数学ライブラリ Readme 
             o 数値計算ガイド 
             o インクリメンタルリンカー Readme 
             o Sun Performance Library Readme 
             o Sun Performance Library Reference Manual 
             o Sun Performance Library User's Guide for Fortran and C 
        * 統合開発環境 (IDE) のドキュメント: IDE にある「ヘルプ」メ
          ニューから Sun Studio 9 IDE の各コンポーネントのオンラインヘ
          ルプにアクセスできます。 
        * 開発者向けリソースのポータル: 技術資料、サンプルコード、ド
          キュメント、ナレッジベースについては、開発者向けポータルの 
          http://developers.sun.com/prodtech/cc を参照してください。 

     この文書のテキスト版を表示するには、コマンドプロンプトで次のコマン
     ドを入力します。

        cc -xhelp=readme

     この文書の HTML 版を表示するには、デフォルトのインストールディレク
     トリにある次のファイルを開きます。

          file:/opt/SUNWspro/docs/ja/index.html

     注 - Sun Studio 9 ソフトウェアが /opt 以外のディレクトリにインス
     トールされている場合は、ご使用のシステムにおける実際のパスを、シス
     テム管理者に確認してください。
     


     ------------------------------------------------------------------

     B. Sun Studio 9、C コンパイラについて

     このリリースの C コンパイラは、SPARC (R); プラットフォーム版 
     Solaris[tm] オペレーティング環境のバージョン 8、9、10、および 
     x86 プラットフォーム版 Solaris オペレーティング環境のバージョン 
     8、9、10 で利用できます。 

     Solaris 10 より前のオペレーティングシステム上では、このコンパイラ
     は、ISO/IEC 9899:1999, Programming Language - C 規格に規定されてい
     る言語機能の大部分に対応しています。Solaris 10 では、このコンパイ
     ラは、C99 規格に完全に準拠しています (-xc99=all,lib を指定した場
     合)。このコンパイラはまた、ISO/IEC 9899:1990, Programming 
     Languages - C 規格にも準拠しています。

     今回の開発リリースの 64 ビット SPARC アーキテクチャ機能は、C の国
     際規格と -xarch=v9 に対応しています。
     


     ------------------------------------------------------------------

     C. 新規および変更された機能

     ここでは、このリリースで C コンパイラの新しく追加された機能と変更
     された機能について説明します。

        * -xarch、-xcode、-xmemalign、および -xprefetch オプションのデ
          フォルトを変更、-fast および -O オプションの展開の変更による
          パフォーマンスの向上 

        * Intel アーキテクチャ向けに -xarch、-xtarget、および -xchip の
          フラグと -flteval オプションを追加

        * -xlibmopt、-xnolibmopt、-xipo_archive、および 
          -xprefetch_auto_type オプションによる実行時パフォーマンスの向
          上

        * -xpch でのプリコンパイル済みヘッダーファイルの自動生成による
          コンパイル時パフォーマンスの向上

        * -xchip および -xtarget のフラグの追加による SPARC のサポート
          拡張 

        * extern インライン関数、指示付きの初期化子、汎用文字名 など、
          Solaris 10 上での 1999 C ISO 機能の完全サポート 

        * lint ユーティリティのセキュリティ検査機能の追加 

     -xarch のデフォルトを v8plus に変更 

     C コンパイラがコードを生成するときのデフォルトのアーキテクチャが、
     v8plus (UltraSPARC) になりました。今後のリリースで、v7 のサポート
     は廃止される予定です。

     新しいデフォルトでは、現在使用されているほぼあらゆるマシンで実行時
     のパフォーマンスが向上します。ただし、UltraSPARC 以前のコンピュー
     タへの配備を意図したアプリケーションは、そうしたコンピュータ上では
     デフォルトで動作しなくなります。アプリケーションがそうしたコン
     ピュータで動作するようにするには、-xarch=v8 でコンパイルしてくださ
     い。

     v8 システムに配備する場合は、各コンパイラコマンド行だけでなく、す
     べてのリンク時コマンドでも -xarch=v8 オプションを明示的に指定する
     必要があります。提供のシステムライブラリは、v8 アーキテクチャで動
     作します。 

     v7 システムに配備する場合は、各コンパイラコマンド行だけでなく、す
     べてのリンク時コマンドでも -xarch=v7 オプションを明示的に指定する
     必要があります。提供のシステムライブラリは、v8 命令セットを利用し
     ます。Sun Studio 9 リリースの場合、v7 についてサポートされているオ
     ペレーティングシステムは、Solaris 8 リリースだけです。v8 命令が検
     出された場合、Solaris 8 オペレーティングシステムはソフトウェアでそ
     の命令を解釈します。このためプログラムは実行されますが、パフォーマ
     ンスは低下します。

     x86 の場合、-xarch はデフォルトで generic になります。x86 の場合、
     -fast は -xarch=native に展開されることに注意してください。

     -xarch の詳細は、C マニュアルページの cc(1) を参照してください。

     -xcode のデフォルトを変更 

     (SPARC のみ) v9 の場合、デフォルトは -xcode=abs44 です。v8 の場合
     は、-xcode=abs32 のままです。

     -xcode の詳細は、C マニュアルページの cc(1) を参照してください。

     -xmemalign のデフォルトを変更 

     (SPARC のみ) v8 アーキテクチャの場合、-xmemalign は -xmemalign=8i 
     になります。v9 アーキテクチャの場合は、デフォルトは -xmemalign=8s 
     です。

     -xmemalign の詳細は、C マニュアルページの cc(1) を参照してください。

     -xprefetch のデフォルトを変更 

     (SPARC のみ) -xprefetch のデフォルトが -xprefetch=auto,explicit に
     なりました。基本的に非線形のメモリーアクセスパターンを持つアプリ
     ケーションには、この変更が良くない影響をもたらします。この変更を無
     効にするには、-xprefetch=no%auto,no%explicit を指定します。

     -xprefetch の詳細は、C マニュアルページの cc(1) を参照してください。

     -fast の展開を変更 

     -fast オプションが -xlibmopt にも展開されるようになりました。

     -O の展開を変更 

     (SPARC および x86) -O マクロは、-xO2 ではなく、-xO3 に展開されるよ
     うになりました。

     このデフォルトの変更によって、実行時のパフォーマンスが向上します。
     ただし、あらゆる変数を自動的に volatile と見なすことを前提にするプ
     ログラムの場合、-xO3 は不適切になることがあります。このことを前提
     とする代表的なプログラムとしては、専用の同期方式を実装するデバイス
     ドライバや古いマルチスレッドアプリケーションがあります。回避策は、
     -O ではなく、-xO2 を使ってコンパイルすることです。

     -O の詳細は、C マニュアルページの cc(1) を参照してください。

     Intel アーキテクチャ向けの -xarch、-xtarget、-xchip のフラグを追加

     C コンパイラが、Intel 向けに -xarch、-xtarget、および -xchip 用の
     新しいフラグをサポートするようになりました。これらの新しいフラグは、
     Intel プラットフォーム上での Solaris ソフトウェアによる sse および
     sse2 命令のサポートとの組み合わせで Pentium 3 および Pentium 4 
     チップを活用することを意図しています。新しいフラグは次のとおりです。

        * -xchip=pentium3 は Pentium 3 方式のプロセッサ用に最適化します
        * -xchip=pentium4 は Pentium 4 方式のプロセッサ用に最適化します
        * -xtarget=pentium3 は、-xarch=sse、-xchip=pentium3、
          -xcache=16/32/4:256/32/4 に設定します
        * -xtarget=pentium4 は、-xarch=sse2、-xchip=pentium4、
          -xcache=8/64/4:256/128/8 に設定します
        * -xarch=sse は、pentium_pro 命令セットアーキテクチャに SSE 命
          令セットを追加します
        * -xarch=sse2 は、SSE が許可する命令セットに SSE2 命令セットを
          追加します

          x86 に関する特記事項
          Solaris x86 SSE/SSE2 Pentium 4 互換プラットフォームで動作する
          よう -xarch={sse | sse2} を付けてコンパイルしたプログラムは、
          SSE/SSE2 対応のプラットフォームでのみ実行する必要があります。
          SSE/SSE2 に対応していないプラットフォームでそうしたプログラム
          を実行すると、セグメント例外が発生したり、明示的な警告メッ
          セージなしに不正な結果が発生したりすることがあります。
          SSE/SSE2 でコンパイルされたバイナリが SSE/SSE2 に対応していな
          いプラットフォームで実行されることのないようにするための OS 
          およびコンパイラに対するパッチが、後日提供されるかもしれませ
          ん。

          Pentium 4 互換プラットフォームの場合、Solaris 9 update 6 以降
          の OS リリースが SSE/SSE2 に対応しています。これより前のバー
          ジョンの Solaris OS は SSE/SSE2 に対応していません。

          このことは、.il インラインアセンブリ言語関数を使用しているプ
          ログラムや、SSE/SSE2 命令を利用している __asm() アセンブラ
          コードにも当てはまります。

          コンパイルとリンクを別々に行う場合は、必ずコンパイラを使って
          リンクし、-xarch={sse | sse2} で適切な起動ルーチンがリンクさ
          れるようにしてください。

     実際のコンパイル時の適切な -xarch、-xchip、および -xtarget のフラ
     グの組み合わせは、次のガイドラインに基づいて決定することができます。

        * Solaris 9 update 6 か、それ以前の Solaris を実行する 
          Pentium 3 または Pentium 4 で構築を行い、-fast、-xarch=native、
          または -xtarget=native を指定するかどうか。

          この場合、コンパイラは次のように展開します。

             o Solaris 9 update 5 またはそれ以前の Solaris オペレー
               ティングシステムは、sse および sse2 命令をサポートしない
               ため、-xarch は pentium_pro に設定されます (期待されるよ
               うな pentium3 あるいは pentium4 ではありません)。

               注: これらのバージョンの Solaris ソフトウェアを使用して
               いるかどうかに関係なく、-xarch=sse あるいは -xarch=sse2 
               を指定することができますが、Solaris 9 update 6 以降およ
               び Solaris 10 は SSE および SSE2 命令をサポートしている
               ため、構築で生成された実行可能ファイルは、そうしたバー
               ジョンの Solaris ソフトウェアを実行するマシンで実行する
               必要があります。

             o -xchip は、適宜 pentium3 または pentium4 に設定されます。
             o -xcache は、Pentium 3 プロセッサの場合 16/32/4:256/32/4、
               Pentium 4 プロセッサの場合 8/64/4:256/128/8 に設定されま
               す。

        * Solaris 9 update 6 以降の Solaris を実行する Pentium 3 または
          Pentium 4 で構築を行い、-fast、-xarch=native、または 
          -xtarget=native を指定するかどうか。

          この場合、コンパイラは次のように展開します。

             o -xarch は、Pentium 3 の場合 sse、Pentium 4 の場合 sse2 
               に設定されます。
             o -xchip は、適宜 pentium3 または pentium4 に設定されます。
             o -xcache は、Pentium 3 プロセッサの場合 16/32/4:256/32/4、
               Pentium 4 プロセッサの場合 8/64/4:256/128/8 に設定されま
               す。


     -xarch、-xtarget、および -xchip の詳細は、C マニュアルページの 
     cc(1) を参照してください。

     -xlibmopt および -xnolibmopt オプションの追加 

     -xlibmopt オプションは、最適化された数学ルーチンのライブラリを使用
     するようコンパイラに指示します。このオプションを使用するときは 
     -fround=nearest を指定することによって、デフォルトの丸めモードを使
     用する必要があります。数学ルーチンライブラリは最高のパフォーマンス
     が得られるように最適化されており、通常、高速なコードを生成します。
     この結果は、通常の数学ライブラリが生成する結果と少し異なることがあ
     ります。その場合、通常、異なるのは最後のビットです。

     このライブラリは、コマンド行で新たに追加された -xnolibmopt オプシ
     ョンを指定することによって明示的に無効にすることができます。

     -xlibmopt および -xnolibmopt の詳細は、C マニュアルページの cc(1) 
     を参照してください。

     -xipo_archive オプションの追加 

     新しい -xipo_archive オプションは、-xipo を使ってコンパイルされ、
     実行可能ファイルを生成する前にアーカイブライブラリ (.a) に存在する
     オブジェクトファイルを使って、リンカーに渡すオブジェクトファイルを
     最適化するよう指示します。コンパイル中に最適化されたライブラリに含
     まれるオブジェクトファイルはすべて、その最適化されたバージョンに置
     き換えられます。

     -xipo_archive の詳細は、cc(1) のマニュアルページを参照してください。

     -xprefetch_auto_type を追加 

     新しいオプション -xprefetch_auto_type を利用することによって、直接
     メモリーアクセスに対してプリフェッチが生成されるのと同じ方法で、
     -xprefetch_level=[1|2|3] が指示するループに対して間接プリフェッチ
     を生成することができます。

     -xdepend、-xrestrict、-xalias_level などのオプションと組み合わせる
     と、-xprefetch_auto_type の最適化のメリットを増すことができます。
     これらのオプションはメモリー別名のあいまいさを排除する情報を生成す
     るのに役立つため、間接プリフェッチ候補の計算の積極性に影響し、自動
     的な間接プリフェッチの挿入を促進します。

     -xprefetch_auto_type オプションの詳細は、cc(1) のマニュアルページ
     を参照してください。

     -xpch によるプリコンパイル済みヘッダーファイルの自動生成 

     このリリースの C コンパイラでは、プリコンパイル済みのヘッダー機能
     が拡張され、コンパイラの側でプリコンパイル済みヘッダーファイルを自
     動的に生成できるようになっています。ただし、これまでどおり、プリ
     コンパイル済みヘッダーファイルを手動で生成することもできます。コン
     パイラの新しい機能の詳細は、cc(1) のマニュアルページの -xpch オプ
     ションの説明をお読みください。また、CCadmin(1) のマニュアルページ
     も参照してください。

     -xchip および -xtarget のフラグの追加による SPARC のサポート拡張 

     (SPARC のみ) -xchip および -xtarget オプションが、値として 
     ultra3i および ultra4 をサポートするようになりました。このため、
     UltraSPARC IIIi および UltraSPARC IV 用に最適化されたアプリケー
     ションを構築できます。

     extern インライン関数のサポート 

     インライン関数の定義および extern インライン関数が、1999 C ISO 規
     格の仕様どおりに機能するようになりました。

     インライン関数定義とは、キーワード inline を使い、static または 
     extern キーワードなしで定義された関数です。ソース (またはインク
     ルードファイル) 内に含まれるあらゆるプロトタイプにも、static また
     は extern キーワードなしでキーワード inline が含まれます。

     インライン関数定義は、関数に外部定義を提供しません。インライン定義
     を含むソースファイルに現れる関数呼び出しはどれも、呼び出し位置で関
     数定義をインライン化するか、外部定義された関数を参照することによっ
     て実現されます。

     最適化による利点を考慮した結果、コンパイラは、-xO3 以上が指定され
     た場合にのみインライン定義に対する呼び出しをインライン化します。こ
     れ以外の場合は、外部関数に対する呼び出しが行われます。このため、イ
     ンライン定義を含むプログラムは、extern 関数定義を含むオブジェクト
     ファイルとリンクさせることを推奨します。

     関数定義とともに (あるいは関数定義を伴うファイル内の任意のプロトタ
     イプ宣言上で) extern および inline 両方のキーワードを使用すると、
     外部関数がそのオブジェクトファイル内に定義されます。C++ のリンクと
     の互換性を維持するため、extern インライン関数の定義を複数含むオブ
     ジェクトをリンクする場合、リンカーは、そうした関数のうちの 1 つだ
     けを選択し、すべての外部参照を実現します。

     規格に適合した動作を実現するには、最新のコンパイラを使って古いコー
     ドをコンパイルする必要があります。ただし、古い C および C++ バイナ
     リ (C/C++ 5.6 より前) で extern インライン関数を使用していて、その
     古いバイナリの動作を変更することなく、新しい C および C++ バイナリ
     とリンクする場合は、-features=no%extinl を指定します。

     -features の詳細は、C マニュアルページの cc(1) を参照してください。

     指示付きの初期化子 

     指示付きの初期化子は、数値プログラミングで一般的なスパース配列を初
     期化する仕組みです。

     指示付きの初期化子によって、システムプログラミングで一般的なスパー
     ス構造体を初期化したり、先頭メンバーであるかどうかに関係なく、任意
     のメンバーを使って共用体を初期化したりできます。

     例を挙げて考えてみます。最初の例は、指示付きの初期化子を使用して配
     列を初期化する方法を示しています。 

          enum { first, second, third };
          const char *nm[] = {
          [third] = "third member",
          [first] = "first member",
          [second] = "second member",
          };

     次の例は、指示付きの初期化子を使用して構造体のフィールドを初期化す
     る方法を示しています。

          division_t result = { .quot = 2, .rem = -1 };

     この例は、指示付きの初期化子を使用し、これ以外の方法では誤解を生む
     おそれがある複雑な構造体を初期化する方法を示しています。 

          struct { int z[3], count; } w[] = { [0].z = {1}, [1].z[0] = 2 };
     1 つの指示子で両端から配列を作成することができます。 

          int z[MAX] = {1, 3, 5, 7, 9, [MAX-5] = 8, 6, 4, 2, 0};

     MAX が 10 より大きい場合、この配列の中央には値ゼロの要素が含まれま
     す。MAX が 10 より小さい場合、最初の 5 つの初期化子が提供する値の
     一部は、2 つ目の 5 つ値によって置き換えられます。

     共用体のすべてのメンバーを初期化することができます。 

          union { /* ... */ } u = { .any_member = 42 };

     汎用文字名 (UCN) 

     UCN では、C のソースで英字ばかりでなく、任意の文字を使用することが
     できます。UCN の形式は次のとおりです。 

        * \u 4 桁の 16 進値 
        * \U 8 桁の 16 進値 

     UCN には、00A0 未満で 0024 ($)、0040 (@)、0060 (?) 以外の値、ある
     いは D800 - DFFF の範囲の値を指定できません。

     識別子や文字定数、文字列リテラルで UCN を使用して、C の基本文字
     セットにはない文字を表すことができます。

     UCN \Unnnnnnnn は、8 桁の短い識別子 (ISO/IEC 10646 で定義) が 
     nnnnnnnn の文字を表します。同様に汎用文字名 \unnnn は、4桁の短い識
     別子が nnnn (または 8 桁の短い識別子が 0000nnnn) の文字を表します。

     -flteval オプションの追加 

     (Intel のみ) このオプションは、浮動小数点式の評価方法の制御に使用
     します。

     -flteval の詳細は、cc(1) のマニュアルページを参照してください。

     lint のセキュリティ検査機能の追加 

     このリリースの lint ユーティリティには、新しいセキュリティ検査機能
     が追加されています。コンパイルの前に新しい -errsecurity オプション
     を使用し、セキュリティに問題がないかどうかコードを検査することがで
     きます。

     -errsecurity[={core, standard, extended, %none}]

     lint -errsecurity=core
     このレベルでは、たいていの場合で安全でない、または検査することの難
     しいソースコードの構文がないかどうかを検査します。このレベルの検査
     には、以下があります。 

        * printf() および scanf() 系の関数での変数書式文字列の使用 
        * scanf() 関数における非結合文字列 (%s) 形式の使用 
        * 安全な使用法のない関数の使用 (gets()、cftime()、ascftime()、
          creat()) 
        * O_CREAT と組み合わせた open() の不正使用 

     このレベルで警告が生成されるソースコードはバグと考えてください。問
     題のコードを変更することを推奨します。どんな場合でも、単純明快でよ
     り安全な別の方法があります。

     lint -errsecurity=standard
     このレベルの検査には、core レベルの検査に加えて、安全かもしれない
     が、より良い別の方法がある構文の検査があります。新しく作成したコー
     ドの検査には、このレベルを推奨します。このレベルで追加される検査に
     は、以下があります。

        * strlcpy() 以外の文字列コピー関数の使用 
        * 脆弱な乱数関数の使用 
        * 安全でない関数を使った一時ファイルの生成 
        * fopen() を使ったファイルの作成 
        * シェルを呼び出す関数の使用 

     このレベルで警告を生成するソースコードは、新しいコードまたは大幅に
     修正したコードに書き換えてください。ただし、従来のコードに含まれる
     こうした警告に対処することと、アプリケーションを不安定にするリスク
     とのバランスを検討してください。

     lint -errsecurity=extended
     このレベルでは、core および standard レベルの検査を含む完全な検査
     が行われます。また、状況によっては安全でない可能性がある構文につい
     て、多数の警告が生成されます。このレベルの検査は、コードを見直す際
     の一助になりますが、許容しうるソースコードが守る必要のある基準と考
     える必要はありません。このレベルで追加される検査には、以下がありま
     す。

        * ループ内での getc() または fgetc() の呼び出し 
        * パス名競合になりがちな関数の使用 
        * exec() 系の関数の使用 
        * stat() と他の関数との間の競合 

     このレベルで警告が生成されるコードを見直して、安全上の潜在的な問題
     があるかどうかを判定することができます。

     -errsecurity の値が指定されていない場合、コンパイラは 
     -errsecury=%none に設定します。-errsecurity は指定されているが、引
     数が指定されていない場合は、-errsecurity=standard に設定します。 
     


     ------------------------------------------------------------------

     D. ソフトウェアの修正事項

     現時点では新しい情報はありません。
     


     ------------------------------------------------------------------

     E. 問題点と回避策

     ここでは、これまでにわかっているソフトウェアの問題点とその回避策に
     ついて説明します。最新情報またはパッチについては、
     http://developers.sun.com/prodtech/cc/support_index.html を参照し
     てください。

        * 5044272 -flteval=2 のとき、単純なコードシーケンスで SIGSEGV 
          になる
     
          コンパイラが、誤って ldouble を double に変換しています。次の
          テストは、この問題が発生する例です。 

          % cat t.c
          #pragma STDC FENV_ACCESS ON
          #pragma STDC FP_CONTRACT OFF
          
          int NumFail = 0;
          int NumPass = 0;
          
          int main(void)
          {
                  double d = 5.;
                  auto double d3_aut = 3;
          
                  d3_aut = 3;
                  if (d == (d3_aut += 2.L)) {
                          NumPass++;
                  } else {
                          NumFail++;
                  }
          
                  return (NumFail);
          }
          % cc t.c -flteval=2
          % ./a.out
          % echo $status
          1

        * 5044281 -flteval=2 モードのとき非常に単純な構造に不正なコード
          が生成される 

          % more t.c
          #include <stdio.h>
          
          static const float f_one = 1.f;
          static const float f_zero = 0.f;
          int main(void) {
                  int NumFail = 0, NumPass = 0;
          
                  if ((f_zero ? f_one : f_zero) == f_zero) {
                          NumPass++;
                  } else {
                          NumFail++;
                  }
                  return (NumFail);
          }
          % cc t.c -flteval=2
          % ./a.out
          % echo $status
          1

        * 5044322 -flteval=2 のとき、for: ld = f += 1.f; に不正なコード
          が生成される 

          ynh% cat t.c
          int NumFail = 0uL;
          int NumPass = 0uL;
          long double ld;
          float f;
          
          int main() {
                  f = 0x1p-23f / 2.f;
                  ld = f += 1.f;
                  if (ld == 1.L) {
                          NumPass++;
                  } else {
                          NumFail++;
                  }
          
                  return (NumFail);
          }
          ynh% /set/mercury/dist/intel-S2/bin/cc t.c -flteval=2
          ynh% ./a.out
          ynh% echo $status
          1
          ynh% 
     


     ------------------------------------------------------------------

     F. 制限事項と互換性の問題

     ここでは、制限事項およびシステムまたはその他のソフトウェアとの互換
     性の問題について説明します。Sun Studio 9 リリースの最新情報につい
     ては、http://docs.sun.com から入手可能なリリースノートを確認してく
     ださい。

     この文書の発行時点で判明している問題点はありません。
     


     ------------------------------------------------------------------

     G. 記述の誤りの訂正

     現時点では新しい情報はありません。 
     


     ------------------------------------------------------------------

     Copyright (C) 2004 Sun Microsystems, Inc., All rights reserved. 
     Use is subject to license terms.
