This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB 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] Add enum for mips breakpoint kinds


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

commit 44f1c4d7b0160a51ecf7fe1af42416f1d2a71356
Author: Yao Qi <yao.qi@linaro.org>
Date:   Thu Nov 3 14:35:13 2016 +0000

    Add enum for mips breakpoint kinds
    
    This patch adds an enum mips_breakpoint_kind to avoid using magic
    numbers as much as possible.
    
    gdb:
    
    2016-11-03  Yao Qi  <yao.qi@linaro.org>
    
    	* mips-tdep.c (mips_breakpoint_kind): New enum.
    	(mips_breakpoint_from_pc): Use it.
    	(mips_remote_breakpoint_from_pc): Likewise.

Diff:
---
 gdb/ChangeLog   |  6 ++++++
 gdb/mips-tdep.c | 40 +++++++++++++++++++++++++---------------
 2 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7ae7359..f4f3e8b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
 2016-11-03  Yao Qi  <yao.qi@linaro.org>
 
+	* mips-tdep.c (mips_breakpoint_kind): New enum.
+	(mips_breakpoint_from_pc): Use it.
+	(mips_remote_breakpoint_from_pc): Likewise.
+
+2016-11-03  Yao Qi  <yao.qi@linaro.org>
+
 	* arch-utils.h (GDBARCH_BREAKPOINT_MANIPULATION): New macro.
 	(SET_GDBARCH_BREAKPOINT_MANIPULATION): New macro.
 	aarch64-tdep.c (aarch64_breakpoint_from_pc): Remove.  Use
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index e4b60c0..627b9c0 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -108,6 +108,23 @@ static const char *const mips_abi_strings[] = {
   NULL
 };
 
+/* Enum describing the different kinds of breakpoints.  */
+
+enum mips_breakpoint_kind
+{
+  /* 16-bit MIPS16 mode breakpoint.  */
+  MIPS_BP_KIND_MIPS16 = 2,
+
+  /* 16-bit microMIPS mode breakpoint.  */
+  MIPS_BP_KIND_MICROMIPS16 = 3,
+
+  /* 32-bit standard MIPS mode breakpoint.  */
+  MIPS_BP_KIND_MIPS32 = 4,
+
+  /* 32-bit microMIPS mode breakpoint.  */
+  MIPS_BP_KIND_MICROMIPS32 = 5,
+};
+
 /* For backwards compatibility we default to MIPS16.  This flag is
    overridden as soon as unambiguous ELF file flags tell us the
    compressed ISA encoding used.  */
@@ -7097,16 +7114,7 @@ mips_breakpoint_from_pc (struct gdbarch *gdbarch,
     }
 }
 
-/* Determine the remote breakpoint kind suitable for the PC.  The following
-   kinds are used:
-
-   * 2 -- 16-bit MIPS16 mode breakpoint,
-
-   * 3 -- 16-bit microMIPS mode breakpoint,
-
-   * 4 -- 32-bit standard MIPS mode breakpoint,
-
-   * 5 -- 32-bit microMIPS mode breakpoint.  */
+/* Determine the remote breakpoint kind suitable for the PC.  */
 
 static void
 mips_remote_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr,
@@ -7117,21 +7125,23 @@ mips_remote_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr,
   if (mips_pc_is_mips16 (gdbarch, pc))
     {
       *pcptr = unmake_compact_addr (pc);
-      *kindptr = 2;
+      *kindptr = MIPS_BP_KIND_MIPS16;
     }
   else if (mips_pc_is_micromips (gdbarch, pc))
     {
       ULONGEST insn;
       int status;
-      int size;
 
       insn = mips_fetch_instruction (gdbarch, ISA_MICROMIPS, pc, &status);
-      size = status ? 2 : mips_insn_size (ISA_MICROMIPS, insn) == 2 ? 2 : 4;
+      if (status || (mips_insn_size (ISA_MICROMIPS, insn) == 2))
+	*kindptr = MIPS_BP_KIND_MICROMIPS16;
+      else
+	*kindptr = MIPS_BP_KIND_MICROMIPS32;
+
       *pcptr = unmake_compact_addr (pc);
-      *kindptr = size | 1;
     }
   else
-    *kindptr = 4;
+    *kindptr = MIPS_BP_KIND_MIPS32;
 }
 
 /* Return non-zero if the standard MIPS instruction INST has a branch


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