Renesas Synergy™

FAQ 1008113 : リンカで、次のメッセージが出力されるのですが、どうしてですか? ld850: fatal error: F4414: CallTBasePointer(CTBP) is not set. CTBP must be set when compiler option "-Ot" (or "-Xpro_epi_runtime=off") is not specified.

V850E/V850ESコアのデバイス・ファイルを指定していた場合に、 関数のプロローグ/エピローグのランタイム機能が有効になっていて、 CTBPの設定が行われていない場合に上記のメッセージが出力されます。

サンプルのスタートアップモジュールを参考にしてCTBPの設定を追加してください。

	mov     #___PROLOG_TABLE,r12   -- for prologue/epilogue runtime
	ldsr    r12, 20                -- set CTBP (CALLT base pointer)


最適化レベルと、関数のプロローグ/エピローグのランタイム機能のON/OFFの関係は以下のようになります。

最適化レベル 関数のプロローグ/エピローグのランタイム機能
-Od(デバッグ優先) ON
-Ob(デフォルト) ON
-Og(標準最適化) ON
-O(高度な最適化) ON
-Os(サイズ優先) ON
-Ot(速度優先) OFF


関数のプロローグ/エピローグのランタイム機能はオプションで制御することが可能ですので、 必要がない場合には無効にしてください。
-Xpro_epi_runtime=on (有効)
-Xpro_epi_runtime=off (無効)
なお、PM+で指定する場合は、コンパイラオプションの設定ダイアログの[出力コード]タブの “プロローグエピローグランタイム”で指定してください。


RX850 Pro/RX850V4を使用している場合には、callt命令を使用することができますが、 RX850を使用している場合には、callt命令は使用できません。 そのため、RX850を使用時には-Xpro_epi_runtime=offを指定してください。

 

 

適用製品

V850用コンパイラパッケージ [CA850]
他にご質問がございましたら、リクエストを送信してください