Automatic date update in version.in
[deliverable/binutils-gdb.git] / gdb / m32c-tdep.c
index 547c997c6afe544ca307c369d74936225390b412..1bc5950c6e04586e1ba0cf11195d2567e57a7532 100644 (file)
@@ -1,6 +1,6 @@
 /* Renesas M32C target-dependent code for GDB, the GNU debugger.
 
-   Copyright (C) 2004-2016 Free Software Foundation, Inc.
+   Copyright (C) 2004-2017 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -990,16 +990,9 @@ make_regs (struct gdbarch *arch)
 
 \f
 /* Breakpoints.  */
+constexpr gdb_byte m32c_break_insn[] = { 0x00 };       /* brk */
 
-static const unsigned char *
-m32c_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pc, int *len)
-{
-  static unsigned char break_insn[] = { 0x00 };        /* brk */
-
-  *len = sizeof (break_insn);
-  return break_insn;
-}
-
+typedef BP_MANIPULATION (m32c_break_insn) m32c_breakpoint;
 
 \f
 /* Prologue analysis.  */
@@ -2018,7 +2011,7 @@ m32c_reg_arg_type (struct type *type)
   return (code == TYPE_CODE_INT
          || code == TYPE_CODE_ENUM
          || code == TYPE_CODE_PTR
-         || code == TYPE_CODE_REF
+         || TYPE_IS_REFERENCE (type)
          || code == TYPE_CODE_BOOL
          || code == TYPE_CODE_CHAR);
 }
@@ -2440,8 +2433,7 @@ m32c_m16c_address_to_pointer (struct gdbarch *gdbarch,
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   enum type_code target_code;
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_PTR ||
-             TYPE_CODE (type) == TYPE_CODE_REF);
+  gdb_assert (TYPE_CODE (type) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (type));
 
   target_code = TYPE_CODE (TYPE_TARGET_TYPE (type));
 
@@ -2520,8 +2512,7 @@ m32c_m16c_pointer_to_address (struct gdbarch *gdbarch,
   CORE_ADDR ptr;
   enum type_code target_code;
 
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_PTR ||
-             TYPE_CODE (type) == TYPE_CODE_REF);
+  gdb_assert (TYPE_CODE (type) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (type));
 
   ptr = extract_unsigned_integer (buf, TYPE_LENGTH (type), byte_order);
 
@@ -2621,7 +2612,7 @@ m32c_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc,
 static struct gdbarch *
 m32c_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 {
-  struct gdbarch *arch;
+  struct gdbarch *gdbarch;
   struct gdbarch_tdep *tdep;
   unsigned long mach = info.bfd_arch_info->mach;
 
@@ -2633,51 +2624,49 @@ m32c_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
     return arches->gdbarch;
 
   tdep = XCNEW (struct gdbarch_tdep);
-  arch = gdbarch_alloc (&info, tdep);
+  gdbarch = gdbarch_alloc (&info, tdep);
 
   /* Essential types.  */
-  make_types (arch);
+  make_types (gdbarch);
 
   /* Address/pointer conversions.  */
   if (mach == bfd_mach_m16c)
     {
-      set_gdbarch_address_to_pointer (arch, m32c_m16c_address_to_pointer);
-      set_gdbarch_pointer_to_address (arch, m32c_m16c_pointer_to_address);
+      set_gdbarch_address_to_pointer (gdbarch, m32c_m16c_address_to_pointer);
+      set_gdbarch_pointer_to_address (gdbarch, m32c_m16c_pointer_to_address);
     }
 
   /* Register set.  */
-  make_regs (arch);
-
-  /* Disassembly.  */
-  set_gdbarch_print_insn (arch, print_insn_m32c);
+  make_regs (gdbarch);
 
   /* Breakpoints.  */
-  set_gdbarch_breakpoint_from_pc (arch, m32c_breakpoint_from_pc);
+  set_gdbarch_breakpoint_kind_from_pc (gdbarch, m32c_breakpoint::kind_from_pc);
+  set_gdbarch_sw_breakpoint_from_kind (gdbarch, m32c_breakpoint::bp_from_kind);
 
   /* Prologue analysis and unwinding.  */
-  set_gdbarch_inner_than (arch, core_addr_lessthan);
-  set_gdbarch_skip_prologue (arch, m32c_skip_prologue);
-  set_gdbarch_unwind_pc (arch, m32c_unwind_pc);
-  set_gdbarch_unwind_sp (arch, m32c_unwind_sp);
+  set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
+  set_gdbarch_skip_prologue (gdbarch, m32c_skip_prologue);
+  set_gdbarch_unwind_pc (gdbarch, m32c_unwind_pc);
+  set_gdbarch_unwind_sp (gdbarch, m32c_unwind_sp);
 #if 0
   /* I'm dropping the dwarf2 sniffer because it has a few problems.
      They may be in the dwarf2 cfi code in GDB, or they may be in
      the debug info emitted by the upstream toolchain.  I don't 
      know which, but I do know that the prologue analyzer works better.
      MVS 04/13/06  */
-  dwarf2_append_sniffers (arch);
+  dwarf2_append_sniffers (gdbarch);
 #endif
-  frame_unwind_append_unwinder (arch, &m32c_unwind);
+  frame_unwind_append_unwinder (gdbarch, &m32c_unwind);
 
   /* Inferior calls.  */
-  set_gdbarch_push_dummy_call (arch, m32c_push_dummy_call);
-  set_gdbarch_return_value (arch, m32c_return_value);
-  set_gdbarch_dummy_id (arch, m32c_dummy_id);
+  set_gdbarch_push_dummy_call (gdbarch, m32c_push_dummy_call);
+  set_gdbarch_return_value (gdbarch, m32c_return_value);
+  set_gdbarch_dummy_id (gdbarch, m32c_dummy_id);
 
   /* Trampolines.  */
-  set_gdbarch_skip_trampoline_code (arch, m32c_skip_trampoline_code);
+  set_gdbarch_skip_trampoline_code (gdbarch, m32c_skip_trampoline_code);
 
-  set_gdbarch_virtual_frame_pointer (arch, m32c_virtual_frame_pointer);
+  set_gdbarch_virtual_frame_pointer (gdbarch, m32c_virtual_frame_pointer);
 
   /* m32c function boundary addresses are not necessarily even.
      Therefore, the `vbit', which indicates a pointer to a virtual
@@ -2687,9 +2676,9 @@ m32c_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
      In order to verify this, see the definition of
      TARGET_PTRMEMFUNC_VBIT_LOCATION in gcc/defaults.h along with the
      definition of FUNCTION_BOUNDARY in gcc/config/m32c/m32c.h.  */
-  set_gdbarch_vbit_in_delta (arch, 1);
+  set_gdbarch_vbit_in_delta (gdbarch, 1);
 
-  return arch;
+  return gdbarch;
 }
 
 /* Provide a prototype to silence -Wmissing-prototypes.  */
This page took 0.03298 seconds and 4 git commands to generate.