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~

Reply via email to