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

objdump -r _absvdi2.* (-> R_PPC_PLTREL24)



>                                            千葉市中央区長洲
>                                                    藤原  誠

椿> 00001678 R_PPC_REL24       abort
椿> ・コンパイル時のログが残っていたら手動でやってみて REL24 になる

実は、libgcc_s.so.1.0 に入っているいくつかの関数から abort
が呼ばれていると思うのですが、どの場合も REL24 になっている
ようです。で、一つ前の、*.so で見たら、次のようになっています。
つまり
 REL24 でなくて RLTREL24 になっているのですが、これならいい
のでしょうか ?

 ttyp2:makoto@st4200  21:29:55/041016(...checkout/src)> \
 ? objdump -r gnu/lib/libgcc3/libgcc_s/obj/_absvdi2.so
 
 gnu/lib/libgcc3/libgcc_s/obj/_absvdi2.so:     file format elf32-powerpc
 
 RELOCATION RECORDS FOR [.text]:
 OFFSET   TYPE              VALUE 
 00000034 R_PPC_PLTREL24    abort

(1) PLTREL24 になるのはいい。libgcc_s.so を作る時に REL24 に
なるのがおかしい。

(2) そもそも PLTREL24 になるのがおかしい。( -fPIC 有)

このどちらなのか分らなくて済みません。
もう少し良く見ると、次のようになっていて、-fPIC は so を作る
時だけ付いています。つまり gcc の -fPIC には罪はなさそうです。

ttyp2:makoto@st4200  21:52:45/041016(...checkout/src)> objdump -r gnu/lib/libgcc3/libgcc/obj/_absvdi2.*o

gnu/lib/libgcc3/libgcc/obj/_absvdi2.o:     file format elf32-powerpc

RELOCATION RECORDS FOR [.text]:
OFFSET   TYPE              VALUE 
00000034 R_PPC_REL24       abort


gnu/lib/libgcc3/libgcc/obj/_absvdi2.po:     file format elf32-powerpc

RELOCATION RECORDS FOR [.text]:
OFFSET   TYPE              VALUE 
00000006 R_PPC_ADDR16_HA   .data
0000000e R_PPC_ADDR16_LO   .data
00000010 R_PPC_REL24       _mcount
00000048 R_PPC_REL24       abort


gnu/lib/libgcc3/libgcc/obj/_absvdi2.so:     file format elf32-powerpc

RELOCATION RECORDS FOR [.text]:
OFFSET   TYPE              VALUE 
00000034 R_PPC_PLTREL24    abort
---
(藤原)