Hi all, I tried to compile qemu cvs head on my x86_64 linux with gcc 4.1.2 using --disable-gcc-check, I found compile fails as stated in configure before i disabled gcc check.. Error message, points to a problem of dyngen not correctly detecting function ends on i386 when last instruction is a jump. I applied following change and successfully compiled/run qemu i386. This extra test check for a relative backward jump to function exit ret, gcc 4 apparently generates a few of these.
My small change to cvs head is : --- dyngen.c 2008-02-13 18:54:36.000000000 +0100 +++ dyngen.c 2008-02-13 19:10:14.000000000 +0100 @@ -1474,7 +1474,7 @@ len = p_end - p_start; if (len == 0) error("empty code for %s", name); - if (p_end[-1] == 0xc3) { + if (p_end[-1] == 0xc3 || p_end[-2] == 0xeb) { len--; } else { error("ret or jmp expected at the end of %s", name); Bye Chris.