X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fia64-tdep.c;h=5a144090548ecef9fc0a7119872d3373eec6f466;hb=7d0b9ebc1e0079271a7c7737b53bc026525eab64;hp=08eb79d7df4d49b79249b41a654124c29b2c0cb2;hpb=efd66ac6698323d9523a4dce352008c4c835812e;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c index 08eb79d7df..5a14409054 100644 --- a/gdb/ia64-tdep.c +++ b/gdb/ia64-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for the IA-64 for GDB, the GNU debugger. - Copyright (C) 1999-2014 Free Software Foundation, Inc. + Copyright (C) 1999-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -30,7 +30,6 @@ #include "frame-unwind.h" #include "doublest.h" #include "value.h" -#include "gdb_assert.h" #include "objfiles.h" #include "elf/common.h" /* for DT_PLTGOT value */ #include "elf-bfd.h" @@ -127,8 +126,6 @@ static CORE_ADDR ia64_find_global_pointer (struct gdbarch *gdbarch, #define NUM_IA64_RAW_REGS 462 static int sp_regnum = IA64_GR12_REGNUM; -static int fp_regnum = IA64_VFP_REGNUM; -static int lr_regnum = IA64_VRAP_REGNUM; /* NOTE: we treat the register stack registers r32-r127 as pseudo-registers because they may not be accessible via the ptrace @@ -513,7 +510,7 @@ fetch_instruction (CORE_ADDR addr, instruction_type *it, long long *instr) { gdb_byte bundle[BUNDLE_LEN]; int slotnum = (int) (addr & 0x0f) / SLOT_MULTIPLIER; - long long template; + long long templ; int val; /* Warn about slot numbers greater than 2. We used to generate @@ -544,8 +541,8 @@ fetch_instruction (CORE_ADDR addr, instruction_type *it, long long *instr) return 0; *instr = slotN_contents (bundle, slotnum); - template = extract_bit_field (bundle, 0, 5); - *it = template_encoding_table[(int)template][slotnum]; + templ = extract_bit_field (bundle, 0, 5); + *it = template_encoding_table[(int)templ][slotnum]; if (slotnum == 2 || (slotnum == 1 && *it == L)) addr += 16; @@ -638,12 +635,12 @@ static int ia64_memory_insert_breakpoint (struct gdbarch *gdbarch, struct bp_target_info *bp_tgt) { - CORE_ADDR addr = bp_tgt->placed_address; + CORE_ADDR addr = bp_tgt->placed_address = bp_tgt->reqstd_address; gdb_byte bundle[BUNDLE_LEN]; int slotnum = (int) (addr & 0x0f) / SLOT_MULTIPLIER, shadow_slotnum; long long instr_breakpoint; int val; - int template; + int templ; struct cleanup *cleanup; if (slotnum > 2) @@ -672,8 +669,8 @@ ia64_memory_insert_breakpoint (struct gdbarch *gdbarch, a breakpoint on an L-X instruction. */ bp_tgt->shadow_len = BUNDLE_LEN - shadow_slotnum; - template = extract_bit_field (bundle, 0, 5); - if (template_encoding_table[template][slotnum] == X) + templ = extract_bit_field (bundle, 0, 5); + if (template_encoding_table[templ][slotnum] == X) { /* X unit types can only be used in slot 2, and are actually part of a 2-slot L-X instruction. We cannot break at this @@ -682,7 +679,7 @@ ia64_memory_insert_breakpoint (struct gdbarch *gdbarch, gdb_assert (slotnum == 2); error (_("Can't insert breakpoint for non-existing slot X")); } - if (template_encoding_table[template][slotnum] == L) + if (template_encoding_table[templ][slotnum] == L) { /* L unit types can only be used in slot 1. But the associated opcode for that instruction is in slot 2, so bump the slot number @@ -740,7 +737,7 @@ ia64_memory_remove_breakpoint (struct gdbarch *gdbarch, int slotnum = (addr & 0x0f) / SLOT_MULTIPLIER, shadow_slotnum; long long instr_breakpoint, instr_saved; int val; - int template; + int templ; struct cleanup *cleanup; addr &= ~0x0f; @@ -762,8 +759,8 @@ ia64_memory_remove_breakpoint (struct gdbarch *gdbarch, for addressing the SHADOW_CONTENTS placement. */ shadow_slotnum = slotnum; - template = extract_bit_field (bundle_mem, 0, 5); - if (template_encoding_table[template][slotnum] == X) + templ = extract_bit_field (bundle_mem, 0, 5); + if (template_encoding_table[templ][slotnum] == X) { /* X unit types can only be used in slot 2, and are actually part of a 2-slot L-X instruction. We refuse to insert @@ -777,7 +774,7 @@ ia64_memory_remove_breakpoint (struct gdbarch *gdbarch, do_cleanups (cleanup); return -1; } - if (template_encoding_table[template][slotnum] == L) + if (template_encoding_table[templ][slotnum] == L) { /* L unit types can only be used in slot 1. But the breakpoint was actually saved using slot 2, so update the slot number @@ -830,7 +827,7 @@ ia64_breakpoint_from_pc (struct gdbarch *gdbarch, int slotnum = (int) (*pcptr & 0x0f) / SLOT_MULTIPLIER, shadow_slotnum; long long instr_fetched; int val; - int template; + int templ; struct cleanup *cleanup; if (slotnum > 2) @@ -858,13 +855,13 @@ ia64_breakpoint_from_pc (struct gdbarch *gdbarch, /* Check for L type instruction in slot 1, if present then bump up the slot number to the slot 2. */ - template = extract_bit_field (bundle, 0, 5); - if (template_encoding_table[template][slotnum] == X) + templ = extract_bit_field (bundle, 0, 5); + if (template_encoding_table[templ][slotnum] == X) { gdb_assert (slotnum == 2); error (_("Can't insert breakpoint for non-existing slot X")); } - if (template_encoding_table[template][slotnum] == L) + if (template_encoding_table[templ][slotnum] == L) { gdb_assert (slotnum == 1); slotnum = 2; @@ -1104,7 +1101,7 @@ ia64_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, if ((cfm & 0x7f) > regnum - V32_REGNUM) { ULONGEST reg_addr = rse_address_add (bsp, (regnum - V32_REGNUM)); - write_memory (reg_addr, (void *) buf, 8); + write_memory (reg_addr, buf, 8); } } else if (IA64_NAT0_REGNUM <= regnum && regnum <= IA64_NAT31_REGNUM) @@ -1400,7 +1397,6 @@ examine_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, && it == M && ((instr & 0x1ee0000003fLL) == 0x02c00000000LL)) { /* alloc - start of a regular function. */ - int sor = (int) ((instr & 0x00078000000LL) >> 27); int sol = (int) ((instr & 0x00007f00000LL) >> 20); int sof = (int) ((instr & 0x000000fe000LL) >> 13); int rN = (int) ((instr & 0x00000001fc0LL) >> 6); @@ -1851,10 +1847,10 @@ ia64_frame_cache (struct frame_info *this_frame, void **this_cache) enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); struct ia64_frame_cache *cache; gdb_byte buf[8]; - CORE_ADDR cfm, psr; + CORE_ADDR cfm; if (*this_cache) - return *this_cache; + return (struct ia64_frame_cache *) *this_cache; cache = ia64_alloc_frame_cache (); *this_cache = cache; @@ -1869,7 +1865,6 @@ ia64_frame_cache (struct frame_info *this_frame, void **this_cache) cache->bsp = extract_unsigned_integer (buf, 8, byte_order); get_frame_register (this_frame, IA64_PSR_REGNUM, buf); - psr = extract_unsigned_integer (buf, 8, byte_order); get_frame_register (this_frame, IA64_CFM_REGNUM, buf); cfm = extract_unsigned_integer (buf, 8, byte_order); @@ -2241,7 +2236,7 @@ ia64_sigtramp_frame_cache (struct frame_info *this_frame, void **this_cache) gdb_byte buf[8]; if (*this_cache) - return *this_cache; + return (struct ia64_frame_cache *) *this_cache; cache = ia64_alloc_frame_cache (); @@ -2490,7 +2485,7 @@ ia64_access_reg (unw_addr_space_t as, unw_regnum_t uw_regnum, unw_word_t *val, { int regnum = ia64_uw2gdb_regnum (uw_regnum); unw_word_t bsp, sof, sol, cfm, psr, ip; - struct frame_info *this_frame = arg; + struct frame_info *this_frame = (struct frame_info *) arg; struct gdbarch *gdbarch = get_frame_arch (this_frame); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); long new_sof, old_sof; @@ -2553,7 +2548,7 @@ ia64_access_fpreg (unw_addr_space_t as, unw_regnum_t uw_regnum, unw_fpreg_t *val, int write, void *arg) { int regnum = ia64_uw2gdb_regnum (uw_regnum); - struct frame_info *this_frame = arg; + struct frame_info *this_frame = (struct frame_info *) arg; /* We never call any libunwind routines that need to write registers. */ gdb_assert (!write); @@ -2570,7 +2565,7 @@ ia64_access_rse_reg (unw_addr_space_t as, unw_regnum_t uw_regnum, { int regnum = ia64_uw2gdb_regnum (uw_regnum); unw_word_t bsp, sof, sol, cfm, psr, ip; - struct regcache *regcache = arg; + struct regcache *regcache = (struct regcache *) arg; struct gdbarch *gdbarch = get_regcache_arch (regcache); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); long new_sof, old_sof; @@ -2634,7 +2629,7 @@ ia64_access_rse_fpreg (unw_addr_space_t as, unw_regnum_t uw_regnum, unw_fpreg_t *val, int write, void *arg) { int regnum = ia64_uw2gdb_regnum (uw_regnum); - struct regcache *regcache = arg; + struct regcache *regcache = (struct regcache *) arg; /* We never call any libunwind routines that need to write registers. */ gdb_assert (!write); @@ -3724,7 +3719,7 @@ ia64_push_dummy_call (struct gdbarch *gdbarch, struct value *function, int nslots, rseslots, memslots, slotnum, nfuncargs; int floatreg; ULONGEST bsp; - CORE_ADDR funcdescaddr, pc, global_pointer; + CORE_ADDR funcdescaddr, global_pointer; CORE_ADDR func_addr = find_function_addr (function, NULL); nslots = 0; @@ -3855,11 +3850,11 @@ ia64_push_dummy_call (struct gdbarch *gdbarch, struct value *function, len = TYPE_LENGTH (type); while (len > 0 && floatreg < IA64_FR16_REGNUM) { - char to[MAX_REGISTER_SIZE]; + gdb_byte to[MAX_REGISTER_SIZE]; convert_typed_floating (value_contents (arg) + argoffset, float_elt_type, to, ia64_ext_type (gdbarch)); - regcache_cooked_write (regcache, floatreg, (void *)to); + regcache_cooked_write (regcache, floatreg, to); floatreg++; argoffset += TYPE_LENGTH (float_elt_type); len -= TYPE_LENGTH (float_elt_type); @@ -3964,7 +3959,7 @@ ia64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) if (arches != NULL) return arches->gdbarch; - tdep = xzalloc (sizeof (struct gdbarch_tdep)); + tdep = XCNEW (struct gdbarch_tdep); gdbarch = gdbarch_alloc (&info, tdep); tdep->size_of_register_frame = ia64_size_of_register_frame;