qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] QEMU 0.2 is out


From: Fabrice Bellard
Subject: Re: [Qemu-devel] QEMU 0.2 is out
Date: Thu, 05 Jun 2003 00:43:21 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.1) Gecko/20020828

With gcc 3.3 and binutils 2.14.90.0.4 it is better. I fixed some bugs related to the new jump optimisation I introduced. But there is a big problem: no relocations are generated for calls to global functions if they are in the same file as the function call. I am trying various patches for this.

Fabrice.


Falk Hueffner wrote:
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...



--
Fabrice.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]