From 4ee4d8d05f832b09104095d785114e43c78887ef Mon Sep 17 00:00:00 2001 From: Julian Seward Date: Sat, 12 Nov 2005 12:56:31 +0000 Subject: [PATCH] Always mark blrl as a return. git-svn-id: svn://svn.valgrind.org/vex/trunk@1451 --- VEX/priv/guest-ppc32/toIR.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/VEX/priv/guest-ppc32/toIR.c b/VEX/priv/guest-ppc32/toIR.c index 9258d681d9..141e898d4e 100644 --- a/VEX/priv/guest-ppc32/toIR.c +++ b/VEX/priv/guest-ppc32/toIR.c @@ -3233,7 +3233,10 @@ static Bool dis_branch ( UInt theInstr, IRConst_U32(guest_CIA_curr_instr + 4) )); - irbb->jumpkind = flag_LK ? Ijk_Call : Ijk_Ret; + /* blrl is pretty strange; it's like a return that sets the + return address of its caller to the insn following this + one. Mark it as a return. */ + irbb->jumpkind = Ijk_Ret; /* was flag_LK ? Ijk_Call : Ijk_Ret; */ irbb->next = mkexpr(ir_nia); break; -- 2.47.3