/* Target dependent code for GDB on TI C6x systems.
- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+ Copyright (C) 2010-2022 Free Software Foundation, Inc.
Contributed by Andrew Jenner <andrew@codesourcery.com>
Contributed by Yao Qi <yao@codesourcery.com>
static const gdb_byte *
tic6x_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
{
- struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+ tic6x_gdbarch_tdep *tdep = (tic6x_gdbarch_tdep *) gdbarch_tdep (gdbarch);
*size = kind;
static const struct frame_unwind tic6x_frame_unwind =
{
+ "tic6x prologue",
NORMAL_FRAME,
default_frame_unwind_stop_reason,
tic6x_frame_this_id,
static const struct frame_unwind tic6x_stub_unwind =
{
+ "tic6x stub",
NORMAL_FRAME,
default_frame_unwind_stop_reason,
tic6x_stub_this_id,
if (inst == TIC6X_INST_SWE)
{
- struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+ tic6x_gdbarch_tdep *tdep
+ = (tic6x_gdbarch_tdep *) gdbarch_tdep (gdbarch);
if (tdep->syscall_next_pc != NULL)
return tdep->syscall_next_pc (get_current_frame ());
int len = TYPE_LENGTH (arg_type);
enum type_code typecode = arg_type->code ();
- val = value_contents (arg);
+ val = value_contents (arg).data ();
/* Copy the argument to general registers or the stack in
- register-sized pieces. */
+ register-sized pieces. */
if (argreg < first_arg_on_stack)
{
if (len <= 4)
|| typecode == TYPE_CODE_UNION)
{
/* For a 5-8 byte structure or union in big-endian, the
- first byte occupies byte 3 (the MSB) of the upper (odd)
- register and the remaining bytes fill the decreasingly
- significant bytes. 5-7 byte structures or unions have
- padding in the LSBs of the lower (even) register. */
+ first byte occupies byte 3 (the MSB) of the upper (odd)
+ register and the remaining bytes fill the decreasingly
+ significant bytes. 5-7 byte structures or unions have
+ padding in the LSBs of the lower (even) register. */
if (byte_order == BFD_ENDIAN_BIG)
{
regcache->cooked_write (arg_regs[argreg] + 1, val);
else
{
/* The argument is being passed by value in a pair of
- registers. */
+ registers. */
ULONGEST regval = extract_unsigned_integer (val, len,
byte_order);
tic6x_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
{
struct gdbarch *gdbarch;
- struct gdbarch_tdep *tdep;
tdesc_arch_data_up tdesc_data;
const struct target_desc *tdesc = info.target_desc;
int has_gp = 0;
arches != NULL;
arches = gdbarch_list_lookup_by_info (arches->next, &info))
{
- tdep = gdbarch_tdep (arches->gdbarch);
+ tic6x_gdbarch_tdep *tdep
+ = (tic6x_gdbarch_tdep *) gdbarch_tdep (arches->gdbarch);
if (has_gp != tdep->has_gp)
continue;
return arches->gdbarch;
}
- tdep = XCNEW (struct gdbarch_tdep);
+ tic6x_gdbarch_tdep *tdep = new tic6x_gdbarch_tdep;
tdep->has_gp = has_gp;
gdbarch = gdbarch_alloc (&info, tdep);