Fix test names starting with uppercase using multi-line gdb_test_no_output
[deliverable/binutils-gdb.git] / gdb / rx-tdep.c
index 0bd91ff5f4b6221497aa31d6da55b4c035abf8b5..6b8d8d5d6046d30049a0ab596ce3512fa72f9de2 100644 (file)
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Renesas RX for GDB, the GNU debugger.
 
-   Copyright (C) 2008-2015 Free Software Foundation, Inc.
+   Copyright (C) 2008-2016 Free Software Foundation, Inc.
 
    Contributed by Red Hat, Inc.
 
@@ -36,6 +36,7 @@
 
 #include "elf/rx.h"
 #include "elf-bfd.h"
+#include <algorithm>
 
 /* Certain important register numbers.  */
 enum
@@ -200,7 +201,8 @@ struct rx_get_opcode_byte_handle
 static int
 rx_get_opcode_byte (void *handle)
 {
-  struct rx_get_opcode_byte_handle *opcdata = handle;
+  struct rx_get_opcode_byte_handle *opcdata
+    = (struct rx_get_opcode_byte_handle *) handle;
   int status;
   gdb_byte byte;
 
@@ -445,10 +447,10 @@ rx_analyze_frame_prologue (struct frame_info *this_frame,
        stop_addr = func_start;
 
       rx_analyze_prologue (func_start, stop_addr, frame_type,
-                           *this_prologue_cache);
+                          (struct rx_prologue *) *this_prologue_cache);
     }
 
-  return *this_prologue_cache;
+  return (struct rx_prologue *) *this_prologue_cache;
 }
 
 /* Determine type of frame by scanning the function for a return
@@ -469,7 +471,7 @@ rx_frame_type (struct frame_info *this_frame, void **this_cache)
 
   if (*this_cache != NULL)
     {
-      struct rx_prologue *p = *this_cache;
+      struct rx_prologue *p = (struct rx_prologue *) *this_cache;
 
       return p->frame_type;
     }
@@ -643,7 +645,7 @@ rx_frame_sniffer_common (const struct frame_unwind *self,
     }
   else
     {
-      struct rx_prologue *p = *this_cache;
+      struct rx_prologue *p = (struct rx_prologue *) *this_cache;
 
       return sniff_p (p->frame_type);
     }
@@ -812,7 +814,8 @@ rx_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
                                                struct_addr);
            }
          else if (TYPE_CODE (arg_type) != TYPE_CODE_STRUCT
-                  && TYPE_CODE (arg_type) != TYPE_CODE_UNION)
+                  && TYPE_CODE (arg_type) != TYPE_CODE_UNION
+                  && arg_size <= 8)
            {
              /* Argument is a scalar.  */
              if (arg_size == 8)
@@ -895,7 +898,7 @@ rx_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
                      && arg_size <= 4 * (RX_R4_REGNUM - arg_reg + 1)
                      && arg_size % 4 == 0)
                    {
-                     int len = min (arg_size, 4);
+                     int len = std::min (arg_size, (ULONGEST) 4);
 
                      if (write_pass)
                        regcache_cooked_write_unsigned (regcache, arg_reg,
@@ -958,7 +961,7 @@ rx_return_value (struct gdbarch *gdbarch,
 
       while (valtype_len > 0)
        {
-         int len = min (valtype_len, 4);
+         int len = std::min (valtype_len, (ULONGEST) 4);
 
          regcache_cooked_read_unsigned (regcache, argreg, &u);
          store_unsigned_integer (readbuf + offset, len, byte_order, u);
@@ -976,7 +979,7 @@ rx_return_value (struct gdbarch *gdbarch,
 
       while (valtype_len > 0)
        {
-         int len = min (valtype_len, 4);
+         int len = std::min (valtype_len, (ULONGEST) 4);
 
          u = extract_unsigned_integer (writebuf + offset, len, byte_order);
          regcache_cooked_write_unsigned (regcache, argreg, u);
@@ -989,14 +992,9 @@ rx_return_value (struct gdbarch *gdbarch,
   return RETURN_VALUE_REGISTER_CONVENTION;
 }
 
-/* Implement the "breakpoint_from_pc" gdbarch method.  */
-static const gdb_byte *
-rx_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr)
-{
-  static gdb_byte breakpoint[] = { 0x00 };
-  *lenptr = sizeof breakpoint;
-  return breakpoint;
-}
+constexpr gdb_byte rx_break_insn[] = { 0x00 };
+
+typedef BP_MANIPULATION (rx_break_insn) rx_breakpoint;
 
 /* Implement the dwarf_reg_to_regnum" gdbarch method.  */
 
@@ -1010,9 +1008,7 @@ rx_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
   else if (reg == 17)
     return RX_PC_REGNUM;
   else
-    internal_error (__FILE__, __LINE__,
-                    _("Undefined dwarf2 register mapping of reg %d"),
-                   reg);
+    return -1;
 }
 
 /* Allocate and initialize a gdbarch object.  */
@@ -1045,7 +1041,7 @@ rx_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   /* None found, create a new architecture from the information
      provided.  */
-  tdep = (struct gdbarch_tdep *) xmalloc (sizeof (struct gdbarch_tdep));
+  tdep = XNEW (struct gdbarch_tdep);
   gdbarch = gdbarch_alloc (&info, tdep);
   tdep->elf_flags = elf_flags;
 
@@ -1096,7 +1092,8 @@ rx_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_sp_regnum (gdbarch, RX_SP_REGNUM);
   set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
   set_gdbarch_decr_pc_after_break (gdbarch, 1);
-  set_gdbarch_breakpoint_from_pc (gdbarch, rx_breakpoint_from_pc);
+  set_gdbarch_breakpoint_kind_from_pc (gdbarch, rx_breakpoint::kind_from_pc);
+  set_gdbarch_sw_breakpoint_from_kind (gdbarch, rx_breakpoint::bp_from_kind);
   set_gdbarch_skip_prologue (gdbarch, rx_skip_prologue);
 
   set_gdbarch_print_insn (gdbarch, print_insn_rx);
This page took 0.027673 seconds and 4 git commands to generate.