[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: __trampoline_setup
> 1664: 38 63 00 04 addi r3,r3,4
> 1668: 42 00 ff f4 bdnz+ 165c <__trampoline_setup+0x44>
> 166c: 7c 00 04 ac sync
> 1670: 4c 00 01 2c isync
> 1674: 4e 80 00 20 blr
> 1678: 48 00 00 01 bl 1678 <__trampoline_setup+0x60>
これは tramp.asm の最後の部分ですね。
/* Finally synchronize things & return */
sync
isync
blr
.Labort:
bl JUMP_TARGET(abort)
FUNC_END(__trampoline_setup)
で JUMP_TARGET() は ppc-asm.h にあって、
#define FUNC_NAME(name) GLUE(__USER_LABEL_PREFIX__,name)
#if defined __PIC__ || defined __pic__
#define JUMP_TARGET(name) FUNC_NAME(name@plt)
#else
#define JUMP_TARGET(name) FUNC_NAME(name)
#endif
てなわけで、__PIC__ もしくは __pic__ が定義されていないという
可能性が濃厚に…いや、gcc-3.3.x のバグか。
3/3ごろ:-)に対応済みみたいなのでとりあえずこれで。
Index: netbsd.h
===================================================================
RCS file: /cvs/cvsroot/src/gnu/dist/gcc/gcc/config/netbsd.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -c -r1.6 -r1.7
*** netbsd.h 15 Feb 2004 19:52:27 -0000 1.6
--- netbsd.h 3 Mar 2004 20:09:51 -0000 1.7
***************
*** 26,31 ****
--- 26,36 ----
builtin_define ("__NetBSD__"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=NetBSD"); \
+ if (flag_pic) \
+ { \
+ builtin_define ("__PIC__"); \
+ builtin_define ("__pic__"); \
+ } \
} \
while (0)
sysv4.h をみると -D__PIC__=2 にしてる場合があるので多少の疑問は
残るんですけど。