[2.6.30-rc8 KVM] gcc 3.3 dies at emulate_2op_cl().

From: Tetsuo Handa
Date: Fri Jun 05 2009 - 01:42:29 EST


(Continued from http://lkml.org/lkml/2009/6/4/14 )
I tried to identify the location of gcc 3.3's internal error using
"make CONFIG_DEBUG_INFO=1 arch/x86/kvm/x86_emulate.s", and it turned out that
the location is emulate_2op_cl().

Commenting out like below solves the gcc's internal error.

diff --git a/arch/x86/kvm/x86_emulate.c b/arch/x86/kvm/x86_emulate.c
index ca91749..561b9b6 100644
--- a/arch/x86/kvm/x86_emulate.c
+++ b/arch/x86/kvm/x86_emulate.c
@@ -2070,7 +2070,7 @@ twobyte_insn:
break;
case 0xa4: /* shld imm8, r, r/m */
case 0xa5: /* shld cl, r, r/m */
- emulate_2op_cl("shld", c->src2, c->src, c->dst, ctxt->eflags);
+ //emulate_2op_cl("shld", c->src2, c->src, c->dst, ctxt->eflags);
break;
case 0xab:
bts: /* bts */
@@ -2080,7 +2080,7 @@ twobyte_insn:
break;
case 0xac: /* shrd imm8, r, r/m */
case 0xad: /* shrd cl, r, r/m */
- emulate_2op_cl("shrd", c->src2, c->src, c->dst, ctxt->eflags);
+ //emulate_2op_cl("shrd", c->src2, c->src, c->dst, ctxt->eflags);
break;
case 0xae: /* clflush */
break;

I think something is wrong with emulate_2op_cl() when compiled with gcc 3.3.5 .

Regards.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/