[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

samba -- Unsupported relocation type 6 in non-PLT relocations



>                                   Tue Jul 25 22:43:30 2006
>                                           千葉市中央区長洲
>                                                    藤原 誠
>                                           千葉市中央区長洲
>                                                    藤原 誠
3.99.21 ですが、/usr/pkgsrc/net/samba を make して起動すると
次のようになってしまいます。 samba-3.0.22 です。
────────────────────
ttypf:makoto@mini 14:13:30/060724(~)> sudo /etc/rc.d/samba start
Starting nmbd.
/usr/pkg/sbin/nmbd: Unsupported relocation type 6 in non-PLT relocations

Starting smbd.
/usr/pkg/sbin/smbd: Unsupported relocation type 6 in non-PLT relocations

ttypf:makoto@mini 14:13:37/060724(~)> 
────────────────────
gcc-4.1.2 が怪しいのではないかと、/usr/pkgsrc/lang/gcc3-c
を make して、その gcc-3.3.5 を使って作ったものだと、
────────────────────
ttypf:makoto@mini 16:13:18/060724(...net/samba)> sudo /etc/rc.d/samba start
Starting nmbd.
/usr/pkg/gcc3/lib/libgcc_s.so.1: Unsupported relocation type 10 in non-PLT relocations
────────────────────
となります。では、と、gcc-3.3.6 に件の patch を当てて 
(gcc-4.1.2 を使って) make しようとすると、次のようなところで止ってしまいます。
────────────────────
    Making all in testsuite

/export/local-src/gcc-3.3.6-work/powerpc-unknown-netbsd3.99.21/soft-float/libstdc++-v3/include/bits/stl_alloc.h:652:
undefined reference to `std::basic_string<char,std::char_traits<char>, std::allocator<char>
>::basic_string[in-charge](char const*, std::allocator<char>
const&)'
────────────────────

で、元の 4.1.2 の場合をもう少し調べると、

ttypf:makoto@mini 15:05:42/060724(...work/samba-3.0.22)> \
? objdump -R /usr/pkg/sbin/smbd | grep ADDR16
002b1a3e R_PPC_ADDR16_HA   .rodata+0x00325c10
002b1a46 R_PPC_ADDR16_LO   .rodata+0x00325c10
002b1a8e R_PPC_ADDR16_HA   .rodata+0x00304d54
この辺かな、と、そして、次の中の __fixdfdi 等が怪しいのか
と思っていますが、これは明示的な関数ではなくて演算
なのか、どの辺なのかを見つけられなかったのですが、

objdump -d /usr/pkg/sbin/smbd | grep ^00

002b0c74 <__udivdi3>:
002b10f0 <__moddi3>:
002b15c0 <__divdi3>:
002b1a3c <__fixdfdi>:
002b1a8c <__fixunsdfdi>:

もし本当にこの __fixdfdi 等の問題だとすると、
次の中に、参照があることを見つけました。
./libsmb/libsmbclient.o
U __fixdfdi

現在はとりあえず、以前の 3.99.15 の時に作った binary 
package を pkg_add しています。

-fPIC が付いていないのでは ? という話がありますが、
多分付いています (多分確かに付いています)。

gcc なのか gas なのか ld なのかも分っていませんが、
-fPIC という選択があるくらいですから gcc ですよね ?
で -S を付けたら、どうなるかなと思ったのですが、
Makefile にいい加減に -S を書いたくらいでは libsmbclient.s
は作られませんでした。
---
(藤原)
---
(藤原)
〒 260-0854 千葉市中央区長洲 1-10-13
株式会社 絹
Tel: 043-221-8082
FAX: 043-221-8083
H" 070-5073-4063
────────────────
便利なツール Emacs らくらく入門
http://books.ki.nu/rakuraku/
A5 版 448 頁 (技術評論社)	
ISBN:   4-7741-2041-3 	
2,380 + (税)119 = 2,499 円
────────────────
Makoto Fujiwara, 
Chiba, Japan, Narita Airport and Disneyland prefecture.
http://www.ki.nu/software/NetBSD/iBook2/
http://www.ki.nu/software/namazu/tutorial/