X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fmsp430-tdep.c;h=88597660b5364dc7616ff582ae40702e9a58a93f;hb=b4991d292edd84c16bd2050bd071198ceae764fe;hp=b6e062a380fea2bd92b90a70f0e15d01a8493c0f;hpb=86a73007627a3c52d1c624ed430ac0e74fb8cc3e;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/msp430-tdep.c b/gdb/msp430-tdep.c index b6e062a380..88597660b5 100644 --- a/gdb/msp430-tdep.c +++ b/gdb/msp430-tdep.c @@ -1,7 +1,7 @@ /* Target-dependent code for the Texas Instruments MSP430 for GDB, the GNU debugger. - Copyright (C) 2012-2018 Free Software Foundation, Inc. + Copyright (C) 2012-2020 Free Software Foundation, Inc. Contributed by Red Hat, Inc. @@ -32,7 +32,7 @@ #include "frame-base.h" #include "value.h" #include "gdbcore.h" -#include "dwarf2-frame.h" +#include "dwarf2/frame.h" #include "reggroups.h" #include "elf/msp430.h" @@ -447,22 +447,6 @@ msp430_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) return p.prologue_end; } -/* Implement the "unwind_pc" gdbarch method. */ - -static CORE_ADDR -msp430_unwind_pc (struct gdbarch *arch, struct frame_info *next_frame) -{ - return frame_unwind_register_unsigned (next_frame, MSP430_PC_REGNUM); -} - -/* Implement the "unwind_sp" gdbarch method. */ - -static CORE_ADDR -msp430_unwind_sp (struct gdbarch *arch, struct frame_info *next_frame) -{ - return frame_unwind_register_unsigned (next_frame, MSP430_SP_REGNUM); -} - /* Given a frame described by THIS_FRAME, decode the prologue of its associated function if there is not cache entry as specified by THIS_PROLOGUE_CACHE. Save the decoded prologue in the cache and @@ -650,26 +634,14 @@ msp430_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp) return align_down (sp, 2); } - -/* Implement the "dummy_id" gdbarch method. */ - -static struct frame_id -msp430_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - return - frame_id_build (get_frame_register_unsigned - (this_frame, MSP430_SP_REGNUM), - get_frame_pc (this_frame)); -} - - /* Implement the "push_dummy_call" gdbarch method. */ static CORE_ADDR msp430_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, CORE_ADDR struct_addr) + function_call_return_method return_method, + CORE_ADDR struct_addr) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); int write_pass; @@ -699,7 +671,7 @@ msp430_push_dummy_call (struct gdbarch *gdbarch, struct value *function, sp = align_down (sp - sp_off, 4); sp_off = 0; - if (struct_return) + if (return_method == return_method_struct) { if (write_pass) regcache_cooked_write_unsigned (regcache, arg_reg, struct_addr); @@ -715,6 +687,7 @@ msp430_push_dummy_call (struct gdbarch *gdbarch, struct value *function, ULONGEST arg_size = TYPE_LENGTH (arg_type); int offset; int current_arg_on_stack; + gdb_byte struct_addr_buf[4]; current_arg_on_stack = 0; @@ -722,11 +695,9 @@ msp430_push_dummy_call (struct gdbarch *gdbarch, struct value *function, || TYPE_CODE (arg_type) == TYPE_CODE_UNION) { /* Aggregates of any size are passed by reference. */ - gdb_byte struct_addr[4]; - - store_unsigned_integer (struct_addr, 4, byte_order, + store_unsigned_integer (struct_addr_buf, 4, byte_order, value_address (arg)); - arg_bits = struct_addr; + arg_bits = struct_addr_buf; arg_size = (code_model == MSP_LARGE_CODE_MODEL) ? 4 : 2; } else @@ -837,7 +808,7 @@ msp430_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc) if (!bms.minsym) return pc; - stub_name = MSYMBOL_LINKAGE_NAME (bms.minsym); + stub_name = bms.minsym->linkage_name (); if (gdbarch_tdep (gdbarch)->code_model == MSP_SMALL_CODE_MODEL && msp430_in_return_stub (gdbarch, pc, stub_name)) @@ -995,14 +966,11 @@ msp430_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Frames, prologues, etc. */ set_gdbarch_inner_than (gdbarch, core_addr_lessthan); set_gdbarch_skip_prologue (gdbarch, msp430_skip_prologue); - set_gdbarch_unwind_pc (gdbarch, msp430_unwind_pc); - set_gdbarch_unwind_sp (gdbarch, msp430_unwind_sp); set_gdbarch_frame_align (gdbarch, msp430_frame_align); dwarf2_append_unwinders (gdbarch); frame_unwind_append_unwinder (gdbarch, &msp430_unwind); /* Dummy frames, return values. */ - set_gdbarch_dummy_id (gdbarch, msp430_dummy_id); set_gdbarch_push_dummy_call (gdbarch, msp430_push_dummy_call); set_gdbarch_return_value (gdbarch, msp430_return_value); @@ -1018,8 +986,9 @@ msp430_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Register the initialization routine. */ +void _initialize_msp430_tdep (); void -_initialize_msp430_tdep (void) +_initialize_msp430_tdep () { register_gdbarch_init (bfd_arch_msp430, msp430_gdbarch_init); }