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~