皆様お世話になりますタイトルの組み合わせで開発を進めていき、コンパイルすると以下のエラーが出ます。
E0562332:Relocation value is odd number : ".\generate\cstart.obj"-".text"-"0000005f"
このエラーはグローバル変数を作ったり作らなかったりすると消えたり消えなかったりします。その他ソースの内容は影響していないように感じます。これについて調べると下記URIに到達するのですが、いまいち具体的な解決に至っていません。
https://ja-support.renesas.com/knowledgeBase/18975356https://renesasrulz.com/mcu-mpu/rl78/f/rl78-forum/19728/how-to-resolve-e0562332-relocation-value-is-odd-number-error/64932https://www.renesas.com/us/en/document/tnn/note-using-c-compiler-package-rl78-family-1
cstart.asmの.textセクションが奇数エリアに指定されているとのことですが、これを解決する具体的な方法をご教示いただければ幸いです。CC-RL Version 1.11.0e2studio Version 2022-04 (22.4.0)対象 RL78 G1C G13 etc...
以上、何卒よろしくお願いいたします。
sun-tkさん、こんにちは。NoMaYと申します。しばらく前から私の頭の中で、ルネサスさんがCC-RX/RL(/RHも?)の(CC-RXの大昔のC++言語サポートではなく)モダンなC++言語対応を進めているのかなぁ、という考えが浮かび始めていたのですけれども、本件もそれに関係していそうです。恐らく、以下のような顛末ではないかと思うのです。また、対処方法は以下の通りです。なお、エラーが出る/出ないに関する条件として考えられることは、sun-tkさんのプロジェクトでサイズが奇数バイトのセクションが都合の悪い位置に配置されているのかも知れません。もしよろしければMAPファイルを見せて頂けないでしょうか?顛末(推測):● ルネサスさん社内でCC-RLのC++言語対応が進行中である(完了していない?)が、なぜかe2 studioは先走ってC++対応のスタートアップルーチンを生成してしまった対処方法:● スタートアップルーチン(cstart.asm)の以下の部分を$IF 0 ~ $ENDIFで括る
;-------------------------------------------------- ; call global constructor ;--------------------------------------------------$IF 0 ; Maybe the following code for C++ is not supported yet. (by NoMaY) MOVW BC,#LOWW(SIZEOF(.init)) BR $.L2_INIT.L1_INIT: DECW BC DECW BC MOVW AX,BC MOV ES,#HIGHW(STARTOF(.init)) ADDW AX,ES:!LOWW(STARTOF(.init)) MOV CS,#0x00 PUSH BC CALL AX POP BC.L2_INIT: CLRW AX CMPW AX,BC BNZ $.L1_INIT$ENDIF
以下、e2 studioの画面コピーとCS+のCC-RLのヘルプの画面コピーです。対処方法: スタートアップルーチン(cstart.asm)の以下の部分を$IF 0 ~ $ENDIFで括るそもそも.initセクションというのはヘルプに記載が無いPRNファイルとMAPファイルでエラーとなった箇所を確認(なお私が咄嗟に作成したものではエラーになりません)なおPRNファイルを生成させる場合は以下を設定します