はじめまして、YSと申します。初めて投稿させていただきます。
現在、e2studioにてターゲットデバイス:RX651、RTOS:RI600V4使用のプロジェクトを作成、コーディングを行っているのですが、
ビルド時に以下のエラーが発生して、対処方法がわからず苦慮しています。
E0562330:Relocation size overflow : "dequeue"-"PRI_KERNEL"-"00000005"
プロジェクトフォルダ下に「dequeue」に関連するファイルを探してみましたが発見できておらず、アセンブリリストファイルが何なのかが確認できませんでした。
「PRI_KERNEL」の配置アドレスはmapファイルより
PRI_KERNEL fff00400 fff04bbe 47bf 1
となっており、ソリューション実装ガイドに記載されているセクション配置内であり、配置自体には問題はないと考えています。
解決方法などわかる方がいらっしゃいましたら、ご助言いただけないでしょうか?
よろしくお願い致します。
こんにちは。NoMaYです。本件、ちょっと腑に落ちなかったので、ちょっと調べ始めます。どうも合点がいかないことは、以下の点です。(こんなことを気にして調べようとするので、さして私は出世しなかった(業務遂行効率が甚だ悪い為)、のですけれどもね、、、)(1) CC-RXの -nostuff オプションの有無と発生していたエラー E0562330:Relocation size overflow の因果関係(2) なぜ、resetprg.c のコンパイル時にCC-RXで -nostuff オプションを付けないとRI600が正常動作しないのか以下、合点がいかない理由です。(1) 詳細はHelpに譲りますが、このオプションは変数を一律4バイトアラインメントのセクションに配置するのですが、その仕様それ自体によって直接的にくだんの Relocation size overflow のリンクエラーを解消させたのだとは、このリンクエラーの仕様上の発生理由から考えると(推測すると)、とてもそうだとは思えない。私が思うに、このオプションを指定したことによって、Relocation size overflow を起こしていた変数が、運よくエラーを起こさない範囲内のアドレスに配置し直されたのだろう、ということだと思う(推測する)のです。ただ、調べようと思ってもRI600カーネルのバイナリライブラリの中なので、どうやったら良いものかなぁ、、、(2) FITのBSPモジュールの resetprg.c のソースは何度も見ているのですけれど、一体全体何がいけないのか、さっぱり理由が思い浮かびません。そもそも、(GNURX使用時にスタックを変数定義してますが)CC-RX使用時には変数なんて何も定義してなかったような、、、実は、こちらも、どうやって調べれば良いのかなぁ、という状態ではありますが、、、エヘヘ(てへぺろ)、、、[追記]しかし、よくよく考えてみると、リンカでの最適化を抑止してもくだんのエラーは解消されなかった、そうですので、何が起きていたのか藪の中ではありますけれども、、、
NoMaYさん
シェルティです、こんにちは。
すみません本件、NoMaYさんの推測であるところの「このオプションを指定したことによって、Relocation size overflow を起こしていた変数が、運よくエラーを起こさない範囲内のアドレスに配置し直された」が正しいように思います。前のシェルティの書き込みは推敲と検証が足りておらず、反射的に書き込んでしまいました。申し訳ありません。
以上です