/* 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.
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);
-}
-
\f
/* Inferior calls. */
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);
/* 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;
}
-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));
-}
-
-
\f
/* Return values. */
"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");
"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));
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
/* 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
/* 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);