X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fm32c-tdep.c;h=0d6324104b9f430ae5a17e614befad3999d73c30;hb=f3f8ece4b1c77c925d1f1566df0bf632790a4d24;hp=173e8a41d1924b77bb5913de63e611c997bf3e4d;hpb=849d0ba802323fe05e3039ed5b22957db2c85a67;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/m32c-tdep.c b/gdb/m32c-tdep.c index 173e8a41d1..0d6324104b 100644 --- a/gdb/m32c-tdep.c +++ b/gdb/m32c-tdep.c @@ -1,6 +1,6 @@ /* Renesas M32C target-dependent code for GDB, the GNU debugger. - Copyright (C) 2004-2018 Free Software Foundation, Inc. + Copyright (C) 2004-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -321,7 +321,7 @@ static enum register_status m32c_raw_write (struct m32c_reg *reg, struct regcache *cache, const gdb_byte *buf) { - regcache_raw_write (cache, reg->num, buf); + cache->raw_write (reg->num, buf); return REG_VALID; } @@ -368,7 +368,7 @@ m32c_banked_write (struct m32c_reg *reg, struct regcache *cache, const gdb_byte *buf) { struct m32c_reg *bank_reg = m32c_banked_register (reg, cache); - regcache_raw_write (cache, bank_reg->num, buf); + cache->raw_write (bank_reg->num, buf); return REG_VALID; } @@ -463,7 +463,7 @@ m32c_part_write (struct m32c_reg *reg, struct regcache *cache, int offset, len; m32c_find_part (reg, &offset, &len); - regcache_cooked_write_part (cache, reg->rx->num, offset, len, buf); + cache->cooked_write_part (reg->rx->num, offset, len, buf); return REG_VALID; } @@ -511,13 +511,13 @@ m32c_cat_write (struct m32c_reg *reg, struct regcache *cache, if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG) { - regcache_cooked_write (cache, reg->rx->num, buf); - regcache_cooked_write (cache, reg->ry->num, buf + high_bytes); + cache->cooked_write (reg->rx->num, buf); + cache->cooked_write (reg->ry->num, buf + high_bytes); } else { - regcache_cooked_write (cache, reg->rx->num, buf + low_bytes); - regcache_cooked_write (cache, reg->ry->num, buf); + cache->cooked_write (reg->rx->num, buf + low_bytes); + cache->cooked_write (reg->ry->num, buf); } return REG_VALID; @@ -571,17 +571,17 @@ m32c_r3r2r1r0_write (struct m32c_reg *reg, struct regcache *cache, if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG) { - regcache_cooked_write (cache, tdep->r0->num, buf + len * 3); - regcache_cooked_write (cache, tdep->r1->num, buf + len * 2); - regcache_cooked_write (cache, tdep->r2->num, buf + len * 1); - regcache_cooked_write (cache, tdep->r3->num, buf); + cache->cooked_write (tdep->r0->num, buf + len * 3); + cache->cooked_write (tdep->r1->num, buf + len * 2); + cache->cooked_write (tdep->r2->num, buf + len * 1); + cache->cooked_write (tdep->r3->num, buf); } else { - regcache_cooked_write (cache, tdep->r0->num, buf); - regcache_cooked_write (cache, tdep->r1->num, buf + len * 1); - regcache_cooked_write (cache, tdep->r2->num, buf + len * 2); - regcache_cooked_write (cache, tdep->r3->num, buf + len * 3); + cache->cooked_write (tdep->r0->num, buf); + cache->cooked_write (tdep->r1->num, buf + len * 1); + cache->cooked_write (tdep->r2->num, buf + len * 2); + cache->cooked_write (tdep->r3->num, buf + len * 3); } return REG_VALID; @@ -689,12 +689,11 @@ mark_general (struct m32c_reg *reg) } -/* Mark REG as a DMA register, and return it. */ -static struct m32c_reg * +/* Mark REG as a DMA register. */ +static void mark_dma (struct m32c_reg *reg) { reg->dma_p = 1; - return reg; } @@ -841,16 +840,16 @@ make_regs (struct gdbarch *arch) if (mach == bfd_mach_m32c) { - struct m32c_reg *svf = S (R16U (svf)); - struct m32c_reg *svp = S (RC (svp)); - struct m32c_reg *vct = S (RC (vct)); - - struct m32c_reg *dmd01 = DMA (RP (dmd, tdep->uint8)); - struct m32c_reg *dct01 = DMA (RP (dct, tdep->uint16)); - struct m32c_reg *drc01 = DMA (RP (drc, tdep->uint16)); - struct m32c_reg *dma01 = DMA (RP (dma, tdep->data_addr_reg_type)); - struct m32c_reg *dsa01 = DMA (RP (dsa, tdep->data_addr_reg_type)); - struct m32c_reg *dra01 = DMA (RP (dra, tdep->data_addr_reg_type)); + S (R16U (svf)); + S (RC (svp)); + S (RC (vct)); + + DMA (RP (dmd, tdep->uint8)); + DMA (RP (dct, tdep->uint16)); + DMA (RP (drc, tdep->uint16)); + DMA (RP (dma, tdep->data_addr_reg_type)); + DMA (RP (dsa, tdep->data_addr_reg_type)); + DMA (RP (dra, tdep->data_addr_reg_type)); } num_raw_regs = tdep->num_regs; @@ -1237,7 +1236,7 @@ m32c_decode_srcdest4 (struct m32c_pv_state *st, switch (code) { - case 0x0: sd.reg = (size == 1 ? &st->r0 : &st->r0); break; + case 0x0: sd.reg = &st->r0; break; case 0x1: sd.reg = (size == 1 ? &st->r0 : &st->r1); break; case 0x2: sd.reg = (size == 1 ? &st->r1 : &st->r2); break; case 0x3: sd.reg = (size == 1 ? &st->r1 : &st->r3); break; @@ -1952,22 +1951,6 @@ static const struct frame_unwind m32c_unwind = { default_frame_sniffer }; - -static CORE_ADDR -m32c_unwind_pc (struct gdbarch *arch, struct frame_info *next_frame) -{ - struct gdbarch_tdep *tdep = gdbarch_tdep (arch); - return frame_unwind_register_unsigned (next_frame, tdep->pc->num); -} - - -static CORE_ADDR -m32c_unwind_sp (struct gdbarch *arch, struct frame_info *next_frame) -{ - struct gdbarch_tdep *tdep = gdbarch_tdep (arch); - return frame_unwind_register_unsigned (next_frame, tdep->sp->num); -} - /* Inferior calls. */ @@ -2017,7 +2000,8 @@ m32c_reg_arg_type (struct type *type) static CORE_ADDR m32c_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, - struct value **args, CORE_ADDR sp, int struct_return, + struct value **args, CORE_ADDR sp, + function_call_return_method return_method, CORE_ADDR struct_addr) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); @@ -2055,7 +2039,7 @@ m32c_push_dummy_call (struct gdbarch *gdbarch, struct value *function, /* First, if the function returns an aggregate by value, push a pointer to a buffer for it. This doesn't affect the way subsequent arguments are allocated to registers. */ - if (struct_return) + if (return_method == return_method_struct) { int ptr_len = TYPE_LENGTH (tdep->ptr_voyd); sp -= ptr_len; @@ -2092,7 +2076,7 @@ m32c_push_dummy_call (struct gdbarch *gdbarch, struct value *function, && arg_size == 2 && i < num_prototyped_args && m32c_reg_arg_type (arg_type)) - regcache_cooked_write (regcache, tdep->r2->num, arg_bits); + regcache->cooked_write (tdep->r2->num, arg_bits); /* Everything else goes on the stack. */ else @@ -2139,21 +2123,6 @@ m32c_push_dummy_call (struct gdbarch *gdbarch, struct value *function, } -static struct frame_id -m32c_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - /* This needs to return a frame ID whose PC is the return address - passed to m32c_push_dummy_call, and whose stack_addr is the SP - m32c_push_dummy_call returned. - - m32c_unwind_sp gives us the CFA, which is the value the SP had - before the return address was pushed. */ - struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - CORE_ADDR sp = get_frame_register_unsigned (this_frame, tdep->sp->num); - return frame_id_build (sp, get_frame_pc (this_frame)); -} - - /* Return values. */ @@ -2449,7 +2418,7 @@ m32c_m16c_address_to_pointer (struct gdbarch *gdbarch, "couldn't find a symbol at that address, to find trampoline."), paddress (gdbarch, addr)); - func_name = MSYMBOL_LINKAGE_NAME (func_msym.minsym); + func_name = func_msym.minsym->linkage_name (); tramp_name = (char *) xmalloc (strlen (func_name) + 5); strcpy (tramp_name, func_name); strcat (tramp_name, ".plt"); @@ -2483,7 +2452,7 @@ m32c_m16c_address_to_pointer (struct gdbarch *gdbarch, "couldn't find trampoline named '%s.plt'.\n" "Returning pointer value %s instead; this may produce\n" "a useful result if converted back into an address by GDB,\n" - "but will most likely not be useful otherwise.\n"), + "but will most likely not be useful otherwise."), paddress (gdbarch, addr), func_name, paddress (gdbarch, ptrval)); @@ -2523,7 +2492,7 @@ m32c_m16c_pointer_to_address (struct gdbarch *gdbarch, if (ptr_msym.minsym) { - const char *ptr_msym_name = MSYMBOL_LINKAGE_NAME (ptr_msym.minsym); + const char *ptr_msym_name = ptr_msym.minsym->linkage_name (); int len = strlen (ptr_msym_name); if (len > 4 @@ -2643,8 +2612,6 @@ m32c_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Prologue analysis and unwinding. */ 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 @@ -2658,7 +2625,6 @@ m32c_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Inferior calls. */ 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 (gdbarch, m32c_skip_trampoline_code);