| Index: gdb/sh64-tdep.c
|
| diff --git a/gdb/sh64-tdep.c b/gdb/sh64-tdep.c
|
| index 4e6f262462a7b700b43d32e0171a3cac9e23b65a..79dde80778dd66d5ea0a6e7e2399a0fedcdb65ae 100644
|
| --- a/gdb/sh64-tdep.c
|
| +++ b/gdb/sh64-tdep.c
|
| @@ -1,6 +1,6 @@
|
| /* Target-dependent code for Renesas Super-H, for GDB.
|
|
|
| - Copyright (C) 1993-2005, 2007-2012 Free Software Foundation, Inc.
|
| + Copyright (C) 1993-2013 Free Software Foundation, Inc.
|
|
|
| This file is part of GDB.
|
|
|
| @@ -32,7 +32,7 @@
|
| #include "value.h"
|
| #include "dis-asm.h"
|
| #include "inferior.h"
|
| -#include "gdb_string.h"
|
| +#include <string.h>
|
| #include "gdb_assert.h"
|
| #include "arch-utils.h"
|
| #include "regcache.h"
|
| @@ -237,7 +237,7 @@ sh64_elf_make_msymbol_special (asymbol *sym, struct minimal_symbol *msym)
|
| static int
|
| pc_is_isa32 (bfd_vma memaddr)
|
| {
|
| - struct minimal_symbol *sym;
|
| + struct bound_minimal_symbol sym;
|
|
|
| /* If bit 0 of the address is set, assume this is a
|
| ISA32 (shmedia) address. */
|
| @@ -248,8 +248,8 @@ pc_is_isa32 (bfd_vma memaddr)
|
| the high bit of the info field. Use this to decide if the function is
|
| ISA16 or ISA32. */
|
| sym = lookup_minimal_symbol_by_pc (memaddr);
|
| - if (sym)
|
| - return MSYMBOL_IS_SPECIAL (sym);
|
| + if (sym.minsym)
|
| + return MSYMBOL_IS_SPECIAL (sym.minsym);
|
| else
|
| return 0;
|
| }
|
| @@ -1067,8 +1067,8 @@ sh64_push_dummy_call (struct gdbarch *gdbarch,
|
| int argnum;
|
| struct type *type;
|
| CORE_ADDR regval;
|
| - char *val;
|
| - char valbuf[8];
|
| + const gdb_byte *val;
|
| + gdb_byte valbuf[8];
|
| int len;
|
| int argreg_size;
|
| int fp_args[12];
|
| @@ -1113,22 +1113,21 @@ sh64_push_dummy_call (struct gdbarch *gdbarch,
|
| /* value gets right-justified in the register or stack word. */
|
| if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
|
| memcpy (valbuf + argreg_size - len,
|
| - (char *) value_contents (args[argnum]), len);
|
| + value_contents (args[argnum]), len);
|
| else
|
| - memcpy (valbuf, (char *) value_contents (args[argnum]), len);
|
| + memcpy (valbuf, value_contents (args[argnum]), len);
|
|
|
| val = valbuf;
|
| }
|
| else
|
| - val = (char *) value_contents (args[argnum]);
|
| + val = value_contents (args[argnum]);
|
|
|
| while (len > 0)
|
| {
|
| if (int_argreg > ARGLAST_REGNUM)
|
| {
|
| /* Must go on the stack. */
|
| - write_memory (sp + stack_offset, (const bfd_byte *) val,
|
| - argreg_size);
|
| + write_memory (sp + stack_offset, val, argreg_size);
|
| stack_offset += 8;/*argreg_size;*/
|
| }
|
| /* NOTE WELL!!!!! This is not an "else if" clause!!!
|
| @@ -1153,7 +1152,7 @@ sh64_push_dummy_call (struct gdbarch *gdbarch,
|
| }
|
| else
|
| {
|
| - val = (char *) value_contents (args[argnum]);
|
| + val = value_contents (args[argnum]);
|
| if (len == 4)
|
| {
|
| /* Where is it going to be stored? */
|
| @@ -1175,10 +1174,10 @@ sh64_push_dummy_call (struct gdbarch *gdbarch,
|
| int_argreg ++;
|
| }
|
| else
|
| - ;
|
| - /* Store it as the integers, 8 bytes at the time, if
|
| - necessary spilling on the stack. */
|
| -
|
| + {
|
| + /* Store it as the integers, 8 bytes at the time, if
|
| + necessary spilling on the stack. */
|
| + }
|
| }
|
| else if (len == 8)
|
| {
|
| @@ -1202,9 +1201,10 @@ sh64_push_dummy_call (struct gdbarch *gdbarch,
|
| int_argreg ++;
|
| }
|
| else
|
| - ;
|
| - /* Store it as the integers, 8 bytes at the time, if
|
| - necessary spilling on the stack. */
|
| + {
|
| + /* Store it as the integers, 8 bytes at the time, if
|
| + necessary spilling on the stack. */
|
| + }
|
| }
|
| }
|
| }
|
| @@ -1260,7 +1260,7 @@ sh64_extract_return_value (struct type *type, struct regcache *regcache,
|
| if (len <= 8)
|
| {
|
| int offset;
|
| - char buf[8];
|
| + gdb_byte buf[8];
|
| /* Result is in register 2. If smaller than 8 bytes, it is padded
|
| at the most significant end. */
|
| regcache_raw_read (regcache, DEFAULT_RETURN_REGNUM, buf);
|
| @@ -1286,10 +1286,10 @@ sh64_extract_return_value (struct type *type, struct regcache *regcache,
|
|
|
| static void
|
| sh64_store_return_value (struct type *type, struct regcache *regcache,
|
| - const void *valbuf)
|
| + const gdb_byte *valbuf)
|
| {
|
| struct gdbarch *gdbarch = get_regcache_arch (regcache);
|
| - char buf[64]; /* more than enough... */
|
| + gdb_byte buf[64]; /* more than enough... */
|
| int len = TYPE_LENGTH (type);
|
|
|
| if (TYPE_CODE (type) == TYPE_CODE_FLT)
|
| @@ -1298,9 +1298,9 @@ sh64_store_return_value (struct type *type, struct regcache *regcache,
|
| for (i = 0; i < len; i += 4)
|
| if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_LITTLE)
|
| regcache_raw_write (regcache, regnum++,
|
| - (char *) valbuf + len - 4 - i);
|
| + valbuf + len - 4 - i);
|
| else
|
| - regcache_raw_write (regcache, regnum++, (char *) valbuf + i);
|
| + regcache_raw_write (regcache, regnum++, valbuf + i);
|
| }
|
| else
|
| {
|
| @@ -1448,7 +1448,7 @@ sh64_register_type (struct gdbarch *gdbarch, int reg_nr)
|
|
|
| static void
|
| sh64_register_convert_to_virtual (struct gdbarch *gdbarch, int regnum,
|
| - struct type *type, char *from, char *to)
|
| + struct type *type, gdb_byte *from, gdb_byte *to)
|
| {
|
| if (gdbarch_byte_order (gdbarch) != BFD_ENDIAN_LITTLE)
|
| {
|
| @@ -1529,7 +1529,7 @@ sh64_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
|
| enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
| int base_regnum;
|
| int offset = 0;
|
| - char temp_buffer[MAX_REGISTER_SIZE];
|
| + gdb_byte temp_buffer[MAX_REGISTER_SIZE];
|
| enum register_status status;
|
|
|
| if (reg_nr >= DR0_REGNUM
|
| @@ -1705,7 +1705,7 @@ sh64_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
|
| enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
| int base_regnum, portion;
|
| int offset;
|
| - char temp_buffer[MAX_REGISTER_SIZE];
|
| + gdb_byte temp_buffer[MAX_REGISTER_SIZE];
|
|
|
| if (reg_nr >= DR0_REGNUM
|
| && reg_nr <= DR_LAST_REGNUM)
|
| @@ -1720,7 +1720,7 @@ sh64_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
|
| for (portion = 0; portion < 2; portion++)
|
| regcache_raw_write (regcache, base_regnum + portion,
|
| (temp_buffer
|
| - + register_size (gdbarch,
|
| + + register_size (gdbarch,
|
| base_regnum) * portion));
|
| }
|
|
|
| @@ -1732,9 +1732,8 @@ sh64_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
|
| /* Write the real regs for which this one is an alias. */
|
| for (portion = 0; portion < 2; portion++)
|
| regcache_raw_write (regcache, base_regnum + portion,
|
| - ((char *) buffer
|
| - + register_size (gdbarch,
|
| - base_regnum) * portion));
|
| + (buffer + register_size (gdbarch,
|
| + base_regnum) * portion));
|
| }
|
|
|
| else if (reg_nr >= FV0_REGNUM
|
| @@ -1745,9 +1744,8 @@ sh64_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
|
| /* Write the real regs for which this one is an alias. */
|
| for (portion = 0; portion < 4; portion++)
|
| regcache_raw_write (regcache, base_regnum + portion,
|
| - ((char *) buffer
|
| - + register_size (gdbarch,
|
| - base_regnum) * portion));
|
| + (buffer + register_size (gdbarch,
|
| + base_regnum) * portion));
|
| }
|
|
|
| /* sh compact general pseudo registers. 1-to-1 with a shmedia
|
| @@ -1806,7 +1804,7 @@ sh64_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
|
| for (portion = 0; portion < 4; portion++)
|
| {
|
| regcache_raw_write (regcache, base_regnum + portion,
|
| - ((char *) buffer
|
| + (buffer
|
| + register_size (gdbarch,
|
| base_regnum) * portion));
|
| }
|
| @@ -1930,7 +1928,7 @@ sh64_do_fp_register (struct gdbarch *gdbarch, struct ui_file *file,
|
| alloca (register_size (gdbarch, gdbarch_fp0_regnum (gdbarch)));
|
|
|
| /* Get the data in raw format. */
|
| - if (!frame_register_read (frame, regnum, raw_buffer))
|
| + if (!deprecated_frame_register_read (frame, regnum, raw_buffer))
|
| error (_("can't read register %d (%s)"),
|
| regnum, gdbarch_register_name (gdbarch, regnum));
|
|
|
| @@ -1950,14 +1948,10 @@ sh64_do_fp_register (struct gdbarch *gdbarch, struct ui_file *file,
|
| fprintf_filtered (file, "%-10.9g", flt);
|
|
|
| /* Print the fp register as hex. */
|
| - fprintf_filtered (file, "\t(raw 0x");
|
| - for (j = 0; j < register_size (gdbarch, regnum); j++)
|
| - {
|
| - int idx = gdbarch_byte_order (gdbarch)
|
| - == BFD_ENDIAN_BIG ? j : register_size
|
| - (gdbarch, regnum) - 1 - j;
|
| - fprintf_filtered (file, "%02x", raw_buffer[idx]);
|
| - }
|
| + fprintf_filtered (file, "\t(raw ");
|
| + print_hex_chars (file, raw_buffer,
|
| + register_size (gdbarch, regnum),
|
| + gdbarch_byte_order (gdbarch));
|
| fprintf_filtered (file, ")");
|
| fprintf_filtered (file, "\n");
|
| }
|
| @@ -2046,8 +2040,11 @@ sh64_do_register (struct gdbarch *gdbarch, struct ui_file *file,
|
| (gdbarch, regnum)), file);
|
|
|
| /* Get the data in raw format. */
|
| - if (!frame_register_read (frame, regnum, raw_buffer))
|
| - fprintf_filtered (file, "*value not available*\n");
|
| + if (!deprecated_frame_register_read (frame, regnum, raw_buffer))
|
| + {
|
| + fprintf_filtered (file, "*value not available*\n");
|
| + return;
|
| + }
|
|
|
| get_formatted_print_options (&opts, 'x');
|
| opts.deref_ref = 1;
|
|
|