| Index: gdb/spu-tdep.c
|
| diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c
|
| index f05a26b15e1cc0f4f42e26222cb184a73a8aac60..fdf435e10b569e07efec856cceed12171bcf6873 100644
|
| --- a/gdb/spu-tdep.c
|
| +++ b/gdb/spu-tdep.c
|
| @@ -1,5 +1,5 @@
|
| /* SPU target-dependent code for GDB, the GNU debugger.
|
| - Copyright (C) 2006-2012 Free Software Foundation, Inc.
|
| + Copyright (C) 2006-2013 Free Software Foundation, Inc.
|
|
|
| Contributed by Ulrich Weigand <uweigand@de.ibm.com>.
|
| Based on a port by Sid Manning <sid@us.ibm.com>.
|
| @@ -24,7 +24,7 @@
|
| #include "gdbtypes.h"
|
| #include "gdbcmd.h"
|
| #include "gdbcore.h"
|
| -#include "gdb_string.h"
|
| +#include <string.h>
|
| #include "gdb_assert.h"
|
| #include "frame.h"
|
| #include "frame-unwind.h"
|
| @@ -192,6 +192,7 @@ spu_pseudo_register_read_spu (struct regcache *regcache, const char *regname,
|
| gdb_byte reg[32];
|
| char annex[32];
|
| ULONGEST id;
|
| + ULONGEST ul;
|
|
|
| status = regcache_raw_read_unsigned (regcache, SPU_ID_REGNUM, &id);
|
| if (status != REG_VALID)
|
| @@ -201,7 +202,8 @@ spu_pseudo_register_read_spu (struct regcache *regcache, const char *regname,
|
| target_read (¤t_target, TARGET_OBJECT_SPU, annex,
|
| reg, 0, sizeof reg);
|
|
|
| - store_unsigned_integer (buf, 4, byte_order, strtoulst (reg, NULL, 16));
|
| + ul = strtoulst ((char *) reg, NULL, 16);
|
| + store_unsigned_integer (buf, 4, byte_order, ul);
|
| return REG_VALID;
|
| }
|
|
|
| @@ -254,7 +256,7 @@ spu_pseudo_register_write_spu (struct regcache *regcache, const char *regname,
|
| {
|
| struct gdbarch *gdbarch = get_regcache_arch (regcache);
|
| enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
| - gdb_byte reg[32];
|
| + char reg[32];
|
| char annex[32];
|
| ULONGEST id;
|
|
|
| @@ -263,7 +265,7 @@ spu_pseudo_register_write_spu (struct regcache *regcache, const char *regname,
|
| xsnprintf (reg, sizeof reg, "0x%s",
|
| phex_nz (extract_unsigned_integer (buf, 4, byte_order), 4));
|
| target_write (¤t_target, TARGET_OBJECT_SPU, annex,
|
| - reg, 0, strlen (reg));
|
| + (gdb_byte *) reg, 0, strlen (reg));
|
| }
|
|
|
| static void
|
| @@ -1135,6 +1137,7 @@ spu_write_pc (struct regcache *regcache, CORE_ADDR pc)
|
| {
|
| /* Keep interrupt enabled state unchanged. */
|
| ULONGEST old_pc;
|
| +
|
| regcache_cooked_read_unsigned (regcache, SPU_PC_REGNUM, &old_pc);
|
| regcache_cooked_write_unsigned (regcache, SPU_PC_REGNUM,
|
| (SPUADDR_ADDR (pc) & -4) | (old_pc & 3));
|
| @@ -1186,7 +1189,7 @@ spu2ppu_sniffer (const struct frame_unwind *self,
|
| CORE_ADDR base, func, backchain;
|
| gdb_byte buf[4];
|
|
|
| - if (gdbarch_bfd_arch_info (target_gdbarch)->arch == bfd_arch_spu)
|
| + if (gdbarch_bfd_arch_info (target_gdbarch ())->arch == bfd_arch_spu)
|
| return 0;
|
|
|
| base = get_frame_sp (this_frame);
|
| @@ -1217,7 +1220,7 @@ spu2ppu_sniffer (const struct frame_unwind *self,
|
| else
|
| {
|
| struct regcache *regcache;
|
| - regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch);
|
| + regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ());
|
| cache->regcache = regcache_dup (regcache);
|
| *this_prologue_cache = cache;
|
| return 1;
|
| @@ -1373,8 +1376,7 @@ spu_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
|
| struct value *arg = args[i];
|
| struct type *type = check_typedef (value_type (arg));
|
| const gdb_byte *contents = value_contents (arg);
|
| - int len = TYPE_LENGTH (type);
|
| - int n_regs = align_up (len, 16) / 16;
|
| + int n_regs = align_up (TYPE_LENGTH (type), 16) / 16;
|
|
|
| /* If the argument doesn't wholly fit into registers, it and
|
| all subsequent arguments go to the stack. */
|
| @@ -1612,8 +1614,9 @@ spu_software_single_step (struct frame_info *frame)
|
| else
|
| {
|
| if (optim)
|
| - error (_("Could not determine address of "
|
| - "single-step breakpoint."));
|
| + throw_error (OPTIMIZED_OUT_ERROR,
|
| + _("Could not determine address of "
|
| + "single-step breakpoint."));
|
| if (unavail)
|
| throw_error (NOT_AVAILABLE_ERROR,
|
| _("Could not determine address of "
|
| @@ -1749,7 +1752,7 @@ spu_get_overlay_table (struct objfile *objfile)
|
| unsigned ovly_table_size, ovly_buf_table_size;
|
| struct spu_overlay_table *tbl;
|
| struct obj_section *osect;
|
| - char *ovly_table;
|
| + gdb_byte *ovly_table;
|
| int i;
|
|
|
| tbl = objfile_data (objfile, spu_overlay_data);
|
| @@ -1921,7 +1924,7 @@ spu_catch_start (struct objfile *objfile)
|
| /* If we have debugging information, try to use it -- this
|
| will allow us to properly skip the prologue. */
|
| pc = SYMBOL_VALUE_ADDRESS (minsym);
|
| - symtab = find_pc_sect_symtab (pc, SYMBOL_OBJ_SECTION (minsym));
|
| + symtab = find_pc_sect_symtab (pc, SYMBOL_OBJ_SECTION (objfile, minsym));
|
| if (symtab != NULL)
|
| {
|
| struct blockvector *bv = BLOCKVECTOR (symtab);
|
| @@ -2045,7 +2048,7 @@ info_spu_event_command (char *args, int from_tty)
|
| if (len <= 0)
|
| error (_("Could not read event_status."));
|
| buf[len] = '\0';
|
| - event_status = strtoulst (buf, NULL, 16);
|
| + event_status = strtoulst ((char *) buf, NULL, 16);
|
|
|
| xsnprintf (annex, sizeof annex, "%d/event_mask", id);
|
| len = target_read (¤t_target, TARGET_OBJECT_SPU, annex,
|
| @@ -2053,7 +2056,7 @@ info_spu_event_command (char *args, int from_tty)
|
| if (len <= 0)
|
| error (_("Could not read event_mask."));
|
| buf[len] = '\0';
|
| - event_mask = strtoulst (buf, NULL, 16);
|
| + event_mask = strtoulst ((char *) buf, NULL, 16);
|
|
|
| chain = make_cleanup_ui_out_tuple_begin_end (current_uiout, "SPUInfoEvent");
|
|
|
| @@ -2112,7 +2115,7 @@ info_spu_signal_command (char *args, int from_tty)
|
| if (len <= 0)
|
| error (_("Could not read signal1_type."));
|
| buf[len] = '\0';
|
| - signal1_type = strtoulst (buf, NULL, 16);
|
| + signal1_type = strtoulst ((char *) buf, NULL, 16);
|
|
|
| xsnprintf (annex, sizeof annex, "%d/signal2", id);
|
| len = target_read (¤t_target, TARGET_OBJECT_SPU, annex, buf, 0, 4);
|
| @@ -2130,7 +2133,7 @@ info_spu_signal_command (char *args, int from_tty)
|
| if (len <= 0)
|
| error (_("Could not read signal2_type."));
|
| buf[len] = '\0';
|
| - signal2_type = strtoulst (buf, NULL, 16);
|
| + signal2_type = strtoulst ((char *) buf, NULL, 16);
|
|
|
| chain = make_cleanup_ui_out_tuple_begin_end (current_uiout, "SPUInfoSignal");
|
|
|
|
|