[Suzaku:00602] リンク時のエラー"ERROR: bad reloc type 10"について

KOJIMA Mamoru email@hidden
2006年 7月 26日 (水) 17:24:15 JST


はじめまして,核融合研の小嶋と申します.

他のOS上で動いているアプリケーションをuClinux/Microblazeに
移植して動かそうとしていますが,うまく行かず困っております.
Out of Treeコンパイルにある手順で,uClinux-dist内にアプリ
ケーションを追加しようとビルドすると,最後のリンク段階で
次のリロケーション・エラーが出て実行ファイルが生成されません.

mb-ld -relax -N -o test -L...(省略)
:
ERROR: bad reloc type 10
:
ERROR: bad reloc type 10
245 bad relocs
make: *** [test] Error 1

ちなみに,mb-g++でコンパイルで作成されたオブジェクト
ファイルのヘッダを見てみると次のようになっています.

colinux:/home/kojima# mb-objdump --header initMain.o

initMain.o:     file format elf32-microblaze

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000b90  00000000  00000000  00000034  2**2
                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
  1 .data         00000004  00000000  00000000  00000bc4  2**2
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          000018f4  00000000  00000000  00000bc8  2**2
                  ALLOC
  3 .stab         00001de8  00000000  00000000  00000bc8  2**2
                  CONTENTS, RELOC, READONLY, DEBUGGING
  4 .stabstr      000099bf  00000000  00000000  000029b0  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .rodata       000003a7  00000000  00000000  0000c370  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  6 .eh_frame     00000134  00000000  00000000  0000c718  2**2
                  CONTENTS, ALLOC, LOAD, RELOC, DATA

この中の.eh_frameセクションは,C++ 例外処理に使用される情報が
格納されるようですが,デフォルトのリンカスクリプトには
.eh_frameセクションが含まれていないようです.
(mb-ld --verboseで見ても,/tmpディレクトリに一時的に作成される
リンカスクリプトファイル(?)の中にもありませんでした) 

C++を用いる場合のリンカスクリプトには,.eh_frameなどの
例外処理用のセクション定義が新たに必要になるのでしょうか?
もし必要なら具体的にどのように指定すればよろしいのでしょうか?

どなたかご教授いただけると助かります.
どうぞよろしくお願いいたします.




suzaku メーリングリストの案内