/* Target-dependent code for the Texas Instruments MSP430 for GDB, the
GNU debugger.
- Copyright (C) 2012, 2013 Free Software Foundation, Inc.
+ Copyright (C) 2012-2015 Free Software Foundation, Inc.
Contributed by Red Hat, Inc.
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;
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. */
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. */
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;
const char *name)
{
return (name != NULL
- && strncmp (msp430_epilog_name_prefix, name,
- strlen (msp430_epilog_name_prefix)) == 0);
+ && startswith (name, msp430_epilog_name_prefix));
}
/* Implement the "skip_trampoline_code" gdbarch method. */
if (!bms.minsym)
return pc;
- stub_name = SYMBOL_LINKAGE_NAME (bms.minsym);
+ stub_name = MSYMBOL_LINKAGE_NAME (bms.minsym);
if (gdbarch_tdep (gdbarch)->code_model == MSP_SMALL_CODE_MODEL
&& msp430_in_return_stub (gdbarch, pc, stub_name))
/* 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;
tdep->isa = isa;