This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] AArch64: Refactor err_type.


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

commit 1d4823943d92e7fccb0616f885c029d9952cfb0e
Author: Tamar Christina <tamar.christina@arm.com>
Date:   Wed Oct 3 18:35:15 2018 +0100

    AArch64: Refactor err_type.
    
    Previously the ERR_ values were defined as different constants, to make this a
    bit more type safe and so they can be more easily re-used I'm changing them into
    an actual enum and updating any usages.
    
    include/
    
    	* opcode/aarch64.h (enum err_type): New.
    	(aarch64_decode_insn): Use it.
    
    opcodes/
    
    	* aarch64-dis.c (ERR_OK, ERR_UND, ERR_UNP, ERR_NYI): Remove.
    	(aarch64_decode_insn, print_insn_aarch64_word): Use err_type.

Diff:
---
 include/ChangeLog        |  5 +++++
 include/opcode/aarch64.h | 12 +++++++++++-
 opcodes/ChangeLog        |  5 +++++
 opcodes/aarch64-dis.c    | 21 ++++++++-------------
 4 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/include/ChangeLog b/include/ChangeLog
index 1b96ce6..97f36ed 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,5 +1,10 @@
 2018-10-03  Tamar Christina  <tamar.christina@arm.com>
 
+	* opcode/aarch64.h (enum err_type): New.
+	(aarch64_decode_insn): Use it.
+
+2018-10-03  Tamar Christina  <tamar.christina@arm.com>
+
 	* opcode/aarch64.h (struct aarch64_instr_sequence): New.
 	(aarch64_opcode_encode): Use it.
 
diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h
index 10bf097..40de440 100644
--- a/include/opcode/aarch64.h
+++ b/include/opcode/aarch64.h
@@ -641,6 +641,16 @@ enum aarch64_op
   OP_TOTAL_NUM,		/* Pseudo.  */
 };
 
+/* Error types.  */
+enum err_type
+{
+  ERR_OK,
+  ERR_UND,
+  ERR_UNP,
+  ERR_NYI,
+  ERR_NR_ENTRIES
+};
+
 /* Maximum number of operands an instruction can have.  */
 #define AARCH64_MAX_OPND_NUM 6
 /* Maximum number of qualifier sequences an instruction can have.  */
@@ -1187,7 +1197,7 @@ aarch64_stack_pointer_p (const aarch64_opnd_info *);
 extern int
 aarch64_zero_register_p (const aarch64_opnd_info *);
 
-extern int
+extern enum err_type
 aarch64_decode_insn (aarch64_insn, aarch64_inst *, bfd_boolean,
 		     aarch64_operand_error *errors);
 
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 2ccfe8e..1da4e80 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,5 +1,10 @@
 2018-10-03  Tamar Christina  <tamar.christina@arm.com>
 
+	* aarch64-dis.c (ERR_OK, ERR_UND, ERR_UNP, ERR_NYI): Remove.
+	(aarch64_decode_insn, print_insn_aarch64_word): Use err_type.
+
+2018-10-03  Tamar Christina  <tamar.christina@arm.com>
+
 	* aarch64-asm.c (aarch64_opcode_encode): Add insn_sequence.
 	* aarch64-dis.c (insn_sequence): New.
 
diff --git a/opcodes/aarch64-dis.c b/opcodes/aarch64-dis.c
index 599727e..c08c82f 100644
--- a/opcodes/aarch64-dis.c
+++ b/opcodes/aarch64-dis.c
@@ -26,11 +26,6 @@
 #include "aarch64-dis.h"
 #include "elf-bfd.h"
 
-#define ERR_OK   0
-#define ERR_UND -1
-#define ERR_UNP -3
-#define ERR_NYI -5
-
 #define INSNLEN 4
 
 /* Cached mapping symbol state.  */
@@ -2945,7 +2940,7 @@ user_friendly_fixup (aarch64_inst *inst)
    opcode may be filled in *INSN if NOALIASES_P is FALSE.  Return zero on
    success.  */
 
-int
+enum err_type
 aarch64_decode_insn (aarch64_insn insn, aarch64_inst *inst,
 		     bfd_boolean noaliases_p,
 		     aarch64_operand_error *errors)
@@ -3097,15 +3092,15 @@ print_insn_aarch64_word (bfd_vma pc,
 			 struct disassemble_info *info,
 			 aarch64_operand_error *errors)
 {
-  static const char *err_msg[6] =
+  static const char *err_msg[ERR_NR_ENTRIES+1] =
     {
-      [ERR_OK]   = "_",
-      [-ERR_UND] = "undefined",
-      [-ERR_UNP] = "unpredictable",
-      [-ERR_NYI] = "NYI"
+      [ERR_OK]  = "_",
+      [ERR_UND] = "undefined",
+      [ERR_UNP] = "unpredictable",
+      [ERR_NYI] = "NYI"
     };
 
-  int ret;
+  enum err_type ret;
   aarch64_inst inst;
 
   info->insn_info_valid = 1;
@@ -3139,7 +3134,7 @@ print_insn_aarch64_word (bfd_vma pc,
       /* Handle undefined instructions.  */
       info->insn_type = dis_noninsn;
       (*info->fprintf_func) (info->stream,".inst\t0x%08x ; %s",
-			     word, err_msg[-ret]);
+			     word, err_msg[ret]);
       break;
     case ERR_OK:
       user_friendly_fixup (&inst);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]