Renesas Synergy™

FAQ 106626 : スタック情報ファイル(sniファイル)を出力しようと、最適化リンカで stackオプションを指定したところ、L1500 (W) Cannot check stack sizeの メッセージが出るようになりました。

このメッセージが出ていても、スタック情報ファイルは正常に作成されま す。 スタックセクションの配置が適切であれば、このメッセージは無視しても問題 ございません。以下、このメッセージについて説明いたします。

  1. L1500 (W) Cannot check stack size メッセージの説明
    本メッセージは、スタックセクションの整合性を最適化リンカがチェック できないことを示しています。

    スタックセクションの整合性チェックとは
     コンパイルオプションで stack=smallを指定すると、コンパイラはスタックの アドレス計算を下位1バイトで行なう命令コードを生成します。上位のバイト へは桁上がりせずにアドレス計算をするため、スタックセクションに関して 次のように制限されます。
    「スタックセクションは、任意のアドレス 0xXX00~0xXXFFの範囲に収まらなけ ればならない(0xXXFFをまたいではならない)。」
     最適化リンカは、スタックセクションの配置が上記制限の範囲に収まっている かをチェックします。これがスタックセクションの整合性チェックです。
    コンパイルオプションで stack=mediumを指定した場合は、スタックのアドレス 計算が下位2バイトになるため、スタックセクションの制限は次のように変わり ます。
    「スタックセクションは、任意のアドレス 0xXX0000~0xXXFFFFの範囲に収まら なければならない(0xXXFFFFをまたいではならない)。」
    コンパイルオプションでstack=large指定の場合には制限はありません。

    L1500の出力条件
    次の(1)~(3)の条件がすべて該当する場合、L1500のメッセージを表示します。
    (1) コンパイルオプションで stack=small、または stack=mediumを指定している。
    (2) 次の(a)、(b)のいずれかに該当する。
     (a) コンパイル(アセンブル)時に、goptimizeオプションを指定していない。
     (b) リンカへの入力ファイル内にスタックセクションが含まれていない。
    (3) リンカオプション stackを指定している。
  2. 対応方法
    (1) スタック計算サイズの整合性をチェックする場合
     L1500のメッセージが表示される場合、整合性チェックができませんので、 次の点についてご確認ください。
    ・スタックセクションを定義されているかご確認ください(HEWの自動生成ソースをご使用の場合、スタックセクションは定義されています)。
     スタックセクションがないと整合性チェックはできません。
    ・コンパイル(アセンブル)時に、goptimizeオプションを指定しているかご確認ください。整合性チェックには goptimizeオプション指定が必要です。

    (2) スタック計算サイズの整合性のチェックが不要の場合
      L1500のメッセージを無視してください。
    このメッセージが出力されていても、スタックの整合性チェック以外には一切 影響しません。スタック情報ファイルも正常に作成されます。
     また、次のオプション指定で、インフォメーションレベルのメッセージに変更 することによって本メッセージの出力を抑止できます。
      -CHange_message=Information=1500 (短縮指定:-CH=I=1500)

適用製品

SuperHファミリ用C/C++コンパイラパッケージ
H8SX,H8S,H8ファミリ用C/C++コンパイラパッケージ
他にご質問がございましたら、リクエストを送信してください