OSDN Git Service

* ia64-tdep.c (ia64_memory_insert_breakpoint): Check the slotnum
authorbrobecke <brobecke>
Mon, 28 Sep 2009 23:47:02 +0000 (23:47 +0000)
committerbrobecke <brobecke>
Mon, 28 Sep 2009 23:47:02 +0000 (23:47 +0000)
        and the type of instruction before deciding which slot to save
        in the breakpoint shadown contents.

gdb/ChangeLog
gdb/ia64-tdep.c

index 0627150..61cb155 100644 (file)
@@ -1,3 +1,9 @@
+2009-09-28  Joel Brobecker  <brobecker@adacore.com>
+
+       * ia64-tdep.c (ia64_memory_insert_breakpoint): Check the slotnum
+       and the type of instruction before deciding which slot to save
+       in the breakpoint shadown contents.
+
 2009-09-28  Doug Evans  <dje@google.com>
 
        * linux-nat.c (status_to_str): Handle TRAP_IS_SYSCALL.
index 674204a..bbde5f6 100644 (file)
@@ -635,6 +635,12 @@ ia64_memory_insert_breakpoint (struct gdbarch *gdbarch,
       return val;
     }
 
+  /* Check for L type instruction in slot 1, if present then bump up the slot
+     number to the slot 2.  */
+  template = extract_bit_field (bundle, 0, 5);
+  if (slotnum == 1 && template_encoding_table[template][slotnum] == L)
+    slotnum = 2;
+
   /* Slot number 2 may skip at most 2 bytes at the beginning.  */
   bp_tgt->shadow_len = BUNDLE_LEN - 2;
 
@@ -657,12 +663,6 @@ ia64_memory_insert_breakpoint (struct gdbarch *gdbarch,
       return val;
     }
 
-  /* Check for L type instruction in slot 1, if present then bump up the slot
-     number to the slot 2.  */
-  template = extract_bit_field (bundle, 0, 5);
-  if (slotnum == 1 && template_encoding_table[template][slotnum] == L)
-    slotnum = 2;
-
   /* Breakpoints already present in the code will get deteacted and not get
      reinserted by bp_loc_is_permanent.  Multiple breakpoints at the same
      location cannot induce the internal error as they are optimized into