]> git.proxmox.com Git - qemu.git/commitdiff
tci: don't write zero for reloc in tci_out_label
authorScott Wood <scottwood@freescale.com>
Tue, 19 Jun 2012 02:31:36 +0000 (21:31 -0500)
committerBlue Swirl <blauwirbel@gmail.com>
Sun, 24 Jun 2012 12:19:24 +0000 (12:19 +0000)
If tci_out_label is called in the context of tcg_gen_code_search_pc, we
could be overwriting an already patched relocation with zero -- and not
repatch it because the set_label is past search_pc, causing a QEMU crash
when it tries to branch to a zero label.

Not writing anything to the relocation area seems to be in line with what
other backends do from the couple I looked at (x86, ppc).

Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
tcg/tci/tcg-target.c

index d0a368d99a689bcad23fb66832dabdb24d6c8f7e..ef8580fc8d87206ddc4bddd114156d4891dc9538 100644 (file)
@@ -487,7 +487,7 @@ static void tci_out_label(TCGContext *s, TCGArg arg)
         assert(label->u.value);
     } else {
         tcg_out_reloc(s, s->code_ptr, sizeof(tcg_target_ulong), arg, 0);
-        tcg_out_i(s, 0);
+        s->code_ptr += sizeof(tcg_target_ulong);
     }
 }