[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 メーリングリストの案内