X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fmn10300-tdep.c;h=62d4ca13aa550f8b0980f45a0d3fd4fc3d3ab687;hb=0154d99053a95392380cd4629a89b0ac46df3737;hp=cc0409fdc4ce65167ed250ccf38514171f2ab39a;hpb=28e7fd62340426746f9c896cbc40c5d374ec47aa;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c index cc0409fdc4..62d4ca13aa 100644 --- a/gdb/mn10300-tdep.c +++ b/gdb/mn10300-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for the Matsushita MN10300 for GDB, the GNU debugger. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -22,11 +22,8 @@ #include "dis-asm.h" #include "gdbtypes.h" #include "regcache.h" -#include "gdb_string.h" -#include "gdb_assert.h" #include "gdbcore.h" /* For write_memory_unsigned_integer. */ #include "value.h" -#include "gdbtypes.h" #include "frame.h" #include "frame-unwind.h" #include "frame-base.h" @@ -168,7 +165,7 @@ mn10300_use_struct_convention (struct type *type) static void mn10300_store_return_value (struct gdbarch *gdbarch, struct type *type, - struct regcache *regcache, const void *valbuf) + struct regcache *regcache, const gdb_byte *valbuf) { int len = TYPE_LENGTH (type); int reg, regsz; @@ -187,7 +184,7 @@ mn10300_store_return_value (struct gdbarch *gdbarch, struct type *type, regcache_raw_write (regcache, reg, valbuf); gdb_assert (regsz == register_size (gdbarch, reg + 1)); regcache_raw_write_part (regcache, reg+1, 0, - len - regsz, (char *) valbuf + regsz); + len - regsz, valbuf + regsz); } else internal_error (__FILE__, __LINE__, @@ -198,7 +195,7 @@ static void mn10300_extract_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, void *valbuf) { - char buf[MAX_REGISTER_SIZE]; + gdb_byte buf[MAX_REGISTER_SIZE]; int len = TYPE_LENGTH (type); int reg, regsz; @@ -326,11 +323,11 @@ mn10300_write_pc (struct regcache *regcache, CORE_ADDR val) so we need a single byte breakpoint. Matsushita hasn't defined one, so we defined it ourselves. */ -const static unsigned char * +static const unsigned char * mn10300_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *bp_addr, int *bp_size) { - static char breakpoint[] = {0xff}; + static gdb_byte breakpoint[] = {0xff}; *bp_size = 1; return breakpoint; } @@ -1095,10 +1092,12 @@ mn10300_analyze_frame_prologue (struct frame_info *this_frame, stop_addr = func_start; mn10300_analyze_prologue (get_frame_arch (this_frame), - func_start, stop_addr, *this_prologue_cache); + func_start, stop_addr, + ((struct mn10300_prologue *) + *this_prologue_cache)); } - return *this_prologue_cache; + return (struct mn10300_prologue *) *this_prologue_cache; } /* Given the next frame and a prologue cache, return this frame's @@ -1231,7 +1230,8 @@ mn10300_push_dummy_call (struct gdbarch *gdbarch, int len, arg_len; int stack_offset = 0; int argnum; - char *val, valbuf[MAX_REGISTER_SIZE]; + const gdb_byte *val; + gdb_byte valbuf[MAX_REGISTER_SIZE]; /* This should be a nop, but align the stack just in case something went wrong. Stacks are four byte aligned on the mn10300. */ @@ -1280,7 +1280,7 @@ mn10300_push_dummy_call (struct gdbarch *gdbarch, else { arg_len = TYPE_LENGTH (value_type (*args)); - val = (char *) value_contents (*args); + val = value_contents (*args); } while (regs_used < 2 && arg_len > 0) @@ -1361,21 +1361,31 @@ mn10300_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int dwarf2) appear in GCC's numbering, but have no counterpart in GDB's world, are marked with a -1. */ static int dwarf2_to_gdb[] = { - 0, 1, 2, 3, 4, 5, 6, 7, -1, 8, - 15, 16, 17, 18, 19, 20, 21, 22, - 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, - 9, 11 + E_D0_REGNUM, E_D1_REGNUM, E_D2_REGNUM, E_D3_REGNUM, + E_A0_REGNUM, E_A1_REGNUM, E_A2_REGNUM, E_A3_REGNUM, + -1, E_SP_REGNUM, + + E_E0_REGNUM, E_E1_REGNUM, E_E2_REGNUM, E_E3_REGNUM, + E_E4_REGNUM, E_E5_REGNUM, E_E6_REGNUM, E_E7_REGNUM, + + E_FS0_REGNUM + 0, E_FS0_REGNUM + 1, E_FS0_REGNUM + 2, E_FS0_REGNUM + 3, + E_FS0_REGNUM + 4, E_FS0_REGNUM + 5, E_FS0_REGNUM + 6, E_FS0_REGNUM + 7, + + E_FS0_REGNUM + 8, E_FS0_REGNUM + 9, E_FS0_REGNUM + 10, E_FS0_REGNUM + 11, + E_FS0_REGNUM + 12, E_FS0_REGNUM + 13, E_FS0_REGNUM + 14, E_FS0_REGNUM + 15, + + E_FS0_REGNUM + 16, E_FS0_REGNUM + 17, E_FS0_REGNUM + 18, E_FS0_REGNUM + 19, + E_FS0_REGNUM + 20, E_FS0_REGNUM + 21, E_FS0_REGNUM + 22, E_FS0_REGNUM + 23, + + E_FS0_REGNUM + 24, E_FS0_REGNUM + 25, E_FS0_REGNUM + 26, E_FS0_REGNUM + 27, + E_FS0_REGNUM + 28, E_FS0_REGNUM + 29, E_FS0_REGNUM + 30, E_FS0_REGNUM + 31, + + E_MDR_REGNUM, E_PSW_REGNUM, E_PC_REGNUM }; if (dwarf2 < 0 || dwarf2 >= ARRAY_SIZE (dwarf2_to_gdb)) - { - warning (_("Bogus register number in debug info: %d"), dwarf2); - return -1; - } + return -1; return dwarf2_to_gdb[dwarf2]; } @@ -1392,7 +1402,7 @@ mn10300_gdbarch_init (struct gdbarch_info info, if (arches != NULL) return arches->gdbarch; - tdep = xmalloc (sizeof (struct gdbarch_tdep)); + tdep = XNEW (struct gdbarch_tdep); gdbarch = gdbarch_alloc (&info, tdep); switch (info.bfd_arch_info->mach)