Fabrice Bellard <address@hidden> writes:
Which version of gcc are you using ? Do you use a patched gcc ? Can
you give me your spec file and the gcc -v log when you compile
op-i386.c ?
I use gcc 3.3 or 3.4 snapshots usually.
I am totally unable to get correct code. In particular, I cannot make
gcc 3.2.3 generate R_ALPHA_BRADDR relocations. Currently, to get
correct code, I must do the following:
--
int __op_param1;
#define PARAM1 ({ int _r; asm("ldah %0,__op_param1($29) !gprelhigh\n" \
"lda %0,__op_param1(%0) !gprellow" :
"=r"(_r) ); _r; })
Ah yes, this is because gcc 3.2.3 doesn't support visibility("hidden")
yet. If a symbol has global visibility, gcc cannot know it is accessed
with the same gp, since it might be provided by libc for example. I
don't think there's any better way do this with 3.2.3.
#define CALL(x) asm volatile ("bsr $26, %0" : : "i" (x))
--
and use the macro CALL to call a function!
This seems to works for me even with 3.2.3. What happens if you don't
use the macro? Maybe your binutils is too old? I have 2.14.90.0.4-0.1.
Also, concerning the signal handler, siginfo is only filled in with
2.4.20 and newer kernels...