From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:47791) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RFqtf-0003b1-GE for qemu-devel@nongnu.org; Mon, 17 Oct 2011 13:22:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RFqte-0006ow-0I for qemu-devel@nongnu.org; Mon, 17 Oct 2011 13:22:43 -0400 Received: from mail-ww0-f53.google.com ([74.125.82.53]:42817) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RFqtd-0006oc-RR for qemu-devel@nongnu.org; Mon, 17 Oct 2011 13:22:41 -0400 Received: by wwi36 with SMTP id 36so1624551wwi.10 for ; Mon, 17 Oct 2011 10:22:40 -0700 (PDT) Sender: Richard Henderson Message-ID: <4E9C645A.5060200@twiddle.net> Date: Mon, 17 Oct 2011 10:22:34 -0700 From: Richard Henderson MIME-Version: 1.0 References: <4E9BB180.6080506@mc.net> <4E9C0497.2000605@siriusit.co.uk> <4E9C3703.3040109@mc.net> In-Reply-To: <4E9C3703.3040109@mc.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] gcc auto-omit-frame-pointer vs msvc longjmp List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Bob Breuer Cc: Mark Cave-Ayland , Kai Tietz , qemu-devel , "gcc@gcc.gnu.org" On 10/17/2011 07:09 AM, Bob Breuer wrote: > I don't think this is a free/g_free issue. If I use the following > patch, then I at least get the openbios messages: > > diff --git a/cpu-exec.c b/cpu-exec.c > index a9fa608..dfbd6ea 100644 > --- a/cpu-exec.c > +++ b/cpu-exec.c > @@ -180,6 +180,7 @@ static void cpu_handle_debug_exception(CPUState > /* main execution loop */ > > volatile sig_atomic_t exit_request; > +register void *ebp asm("ebp"); > > int cpu_exec(CPUState *env) > { > @@ -233,6 +234,8 @@ int cpu_exec(CPUState *env) > > /* prepare setjmp context for exception handling */ > for(;;) { > + int dummy = 0; > + ebp = &dummy; See if asm("" : : : "ebp"); also solves the problem. > Google finds a mention of longjmp failing with -fomit-frame-pointer: > http://lua-users.org/lists/lua-l/2005-02/msg00158.html > > Looks like gcc 4.6 turns on -fomit-frame-pointer by default. Hmm. This is the first I've heard of a longjmp implementation failing without a frame pointer. Presumably this is with the mingw i.e. msvc libc? This is something that could be worked around in gcc, I suppose. We recognize longjmp for some things, we could force the use of a frame pointer for msvc targets too. For now it might be best to simply force -fno-omit-frame-pointer for mingw host in the configure script. r~