[binutils-gdb] Set insn_type for branch instructions on aarch64

Vladimir Mezentsev vmezents@sourceware.org
Fri Sep 8 18:58:19 GMT 2023


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=92c713d7da3578a3691a03c52d716094686390b9

commit 92c713d7da3578a3691a03c52d716094686390b9
Author: Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
Date:   Thu Sep 7 14:50:15 2023 -0700

    Set insn_type for branch instructions on aarch64
    
    gprofng uses insn_type in print_address_func().
    But insn_type is always zero on aarch64.
    
    opcodes/ChangeLog:
    2023-09-07  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
    
            * opcodes/aarch64-dis.c (print_insn_aarch64_word): Set insn_type for
            branch instructions.

Diff:
---
 opcodes/aarch64-dis.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/opcodes/aarch64-dis.c b/opcodes/aarch64-dis.c
index e1183705537..03bcc372a56 100644
--- a/opcodes/aarch64-dis.c
+++ b/opcodes/aarch64-dis.c
@@ -3846,6 +3846,12 @@ print_insn_aarch64_word (bfd_vma pc,
       break;
     case ERR_OK:
       user_friendly_fixup (&inst);
+      if (inst.opcode->iclass == condbranch
+	  || inst.opcode->iclass == testbranch
+	  || inst.opcode->iclass == compbranch)
+        info->insn_type = dis_condbranch;
+      else if (inst.opcode->iclass == branch_imm)
+        info->insn_type = dis_jsr;
       print_aarch64_insn (pc, &inst, word, info, errors);
       break;
     default:


More information about the Binutils-cvs mailing list