Make gdb.mi/user-selected-context-sync.exp use proc_with_prefix
[deliverable/binutils-gdb.git] / gdb / msp430-tdep.c
index 56276aff298f6d480898c562a7f44080c1fde551..f37aa48e53cd361120af8b4481fc169e4bb80e16 100644 (file)
@@ -1,7 +1,7 @@
 /* Target-dependent code for the Texas Instruments MSP430 for GDB, the
    GNU debugger.
 
-   Copyright (C) 2012-2015 Free Software Foundation, Inc.
+   Copyright (C) 2012-2016 Free Software Foundation, Inc.
 
    Contributed by Red Hat, Inc.
 
@@ -248,7 +248,6 @@ msp430_pseudo_register_write (struct gdbarch *gdbarch,
                              struct regcache *regcache,
                              int regnum, const gdb_byte *buffer)
 {
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   if (MSP430_NUM_REGS <= regnum && regnum < MSP430_NUM_TOTAL_REGS)
 
     {
@@ -278,17 +277,9 @@ msp430_register_sim_regno (struct gdbarch *gdbarch, int regnum)
   return regnum;
 }
 
-/* Implement the "breakpoint_from_pc" gdbarch method.  */
-
-static const gdb_byte *
-msp430_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr,
-                          int *lenptr)
-{
-  static gdb_byte breakpoint[] = { 0x43, 0x43 };
+constexpr gdb_byte msp430_break_insn[] = { 0x43, 0x43 };
 
-  *lenptr = sizeof breakpoint;
-  return breakpoint;
-}
+typedef BP_MANIPULATION (msp430_break_insn) msp430_breakpoint;
 
 /* Define a "handle" struct for fetching the next opcode.  */
 
@@ -306,7 +297,8 @@ struct msp430_get_opcode_byte_handle
 static int
 msp430_get_opcode_byte (void *handle)
 {
-  struct msp430_get_opcode_byte_handle *opcdata = handle;
+  struct msp430_get_opcode_byte_handle *opcdata
+    = (struct msp430_get_opcode_byte_handle *) handle;
   int status;
   gdb_byte byte;
 
@@ -502,10 +494,11 @@ msp430_analyze_frame_prologue (struct frame_info *this_frame,
        stop_addr = func_start;
 
       msp430_analyze_prologue (get_frame_arch (this_frame), func_start,
-                              stop_addr, *this_prologue_cache);
+                              stop_addr,
+                              (struct msp430_prologue *) *this_prologue_cache);
     }
 
-  return *this_prologue_cache;
+  return (struct msp430_prologue *) *this_prologue_cache;
 }
 
 /* Given a frame and a prologue cache, return this frame's base.  */
@@ -581,13 +574,9 @@ static const struct frame_unwind msp430_unwind = {
 static int
 msp430_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int reg)
 {
-  if (reg < MSP430_NUM_REGS)
+  if (reg >= 0 && reg < MSP430_NUM_REGS)
     return reg + MSP430_NUM_REGS;
-  else
-    {
-      warning (_("Unmapped DWARF Register #%d encountered."), reg);
-      return -1;
-    }
+  return -1;
 }
 
 /* Implement the "return_value" gdbarch method.  */
@@ -770,10 +759,16 @@ msp430_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
                  int size = 2;
 
                  if (code_model == MSP_LARGE_CODE_MODEL
-                     && TYPE_CODE (arg_type) == TYPE_CODE_PTR)
+                     && (TYPE_CODE (arg_type) == TYPE_CODE_PTR
+                         || TYPE_CODE (arg_type) == TYPE_CODE_REF
+                         || TYPE_CODE (arg_type) == TYPE_CODE_STRUCT
+                         || TYPE_CODE (arg_type) == TYPE_CODE_UNION))
                    {
-                     /* Pointer arguments using large memory model are passed
-                        using entire register.  */
+                     /* When using the large memory model, pointer,
+                        reference, struct, and union arguments are
+                        passed using the entire register.  (As noted
+                        earlier, aggregates are always passed by
+                        reference.) */
                      if (offset != 0)
                        continue;
                      size = 4;
@@ -998,7 +993,10 @@ msp430_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_long_double_format (gdbarch, floatformats_ieee_double);
 
   /* Breakpoints.  */
-  set_gdbarch_breakpoint_from_pc (gdbarch, msp430_breakpoint_from_pc);
+  set_gdbarch_breakpoint_kind_from_pc (gdbarch,
+                                      msp430_breakpoint::kind_from_pc);
+  set_gdbarch_sw_breakpoint_from_kind (gdbarch,
+                                      msp430_breakpoint::bp_from_kind);
   set_gdbarch_decr_pc_after_break (gdbarch, 1);
 
   /* Disassembly.  */
This page took 0.026125 seconds and 4 git commands to generate.