X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gdb%2Fspu-tdep.c;h=a9bab946bdba3df56af5dc2ec5b1e6d3f74fd90f;hb=4762f10bd5ccd005a3a2e8d04168ecddd37f323a;hp=55d262fb1c2d8b3c8b98f75e6c3766cbd19d26e8;hpb=10eaee5f56611ce5f92ccd305849c0cc6addd130;p=external%2Fbinutils.git diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c index 55d262f..a9bab94 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-2018 Free Software Foundation, Inc. + Copyright (C) 2006-2019 Free Software Foundation, Inc. Contributed by Ulrich Weigand . Based on a port by Sid Manning . @@ -198,7 +198,7 @@ spu_pseudo_register_read_spu (readable_regcache *regcache, const char *regname, return status; xsnprintf (annex, sizeof annex, "%d/%s", (int) id, regname); memset (reg, 0, sizeof reg); - target_read (target_stack, TARGET_OBJECT_SPU, annex, + target_read (current_top_target (), TARGET_OBJECT_SPU, annex, reg, 0, sizeof reg); ul = strtoulst ((char *) reg, NULL, 16); @@ -229,7 +229,7 @@ spu_pseudo_register_read (struct gdbarch *gdbarch, readable_regcache *regcache, if (status != REG_VALID) return status; xsnprintf (annex, sizeof annex, "%d/fpcr", (int) id); - target_read (target_stack, TARGET_OBJECT_SPU, annex, buf, 0, 16); + target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, 16); return status; case SPU_SRR0_REGNUM: @@ -263,7 +263,7 @@ spu_pseudo_register_write_spu (struct regcache *regcache, const char *regname, xsnprintf (annex, sizeof annex, "%d/%s", (int) id, regname); xsnprintf (reg, sizeof reg, "0x%s", phex_nz (extract_unsigned_integer (buf, 4, byte_order), 4)); - target_write (target_stack, TARGET_OBJECT_SPU, annex, + target_write (current_top_target (), TARGET_OBJECT_SPU, annex, (gdb_byte *) reg, 0, strlen (reg)); } @@ -286,7 +286,7 @@ spu_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, case SPU_FPSCR_REGNUM: regcache_raw_read_unsigned (regcache, SPU_ID_REGNUM, &id); xsnprintf (annex, sizeof annex, "%d/fpcr", (int) id); - target_write (target_stack, TARGET_OBJECT_SPU, annex, buf, 0, 16); + target_write (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, 16); break; case SPU_SRR0_REGNUM: @@ -1356,19 +1356,19 @@ spu_value_to_regcache (struct regcache *regcache, int regnum, if (spu_scalar_value_p (type)) { int preferred_slot = len < 4 ? 4 - len : 0; - regcache_cooked_write_part (regcache, regnum, preferred_slot, len, in); + regcache->cooked_write_part (regnum, preferred_slot, len, in); } else { while (len >= 16) { - regcache_cooked_write (regcache, regnum++, in); + regcache->cooked_write (regnum++, in); in += 16; len -= 16; } if (len > 0) - regcache_cooked_write_part (regcache, regnum, 0, len, in); + regcache->cooked_write_part (regnum, 0, len, in); } } @@ -1381,19 +1381,19 @@ spu_regcache_to_value (struct regcache *regcache, int regnum, if (spu_scalar_value_p (type)) { int preferred_slot = len < 4 ? 4 - len : 0; - regcache_cooked_read_part (regcache, regnum, preferred_slot, len, out); + regcache->cooked_read_part (regnum, preferred_slot, len, out); } else { while (len >= 16) { - regcache_cooked_read (regcache, regnum++, out); + regcache->cooked_read (regnum++, out); out += 16; len -= 16; } if (len > 0) - regcache_cooked_read_part (regcache, regnum, 0, len, out); + regcache->cooked_read_part (regnum, 0, len, out); } } @@ -1401,7 +1401,8 @@ static CORE_ADDR spu_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, CORE_ADDR struct_addr) + function_call_return_method return_method, + CORE_ADDR struct_addr) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); CORE_ADDR sp_delta; @@ -1413,16 +1414,16 @@ spu_push_dummy_call (struct gdbarch *gdbarch, struct value *function, /* Set the return address. */ memset (buf, 0, sizeof buf); store_unsigned_integer (buf, 4, byte_order, SPUADDR_ADDR (bp_addr)); - regcache_cooked_write (regcache, SPU_LR_REGNUM, buf); + regcache->cooked_write (SPU_LR_REGNUM, buf); /* If STRUCT_RETURN is true, then the struct return address (in STRUCT_ADDR) will consume the first argument-passing register. Both adjust the register count and store that value. */ - if (struct_return) + if (return_method == return_method_struct) { memset (buf, 0, sizeof buf); store_unsigned_integer (buf, 4, byte_order, SPUADDR_ADDR (struct_addr)); - regcache_cooked_write (regcache, regnum++, buf); + regcache->cooked_write (regnum++, buf); } /* Fill in argument registers. */ @@ -1480,7 +1481,7 @@ spu_push_dummy_call (struct gdbarch *gdbarch, struct value *function, sp -= 32; /* Store stack back chain. */ - regcache_cooked_read (regcache, SPU_RAW_SP_REGNUM, buf); + regcache->cooked_read (SPU_RAW_SP_REGNUM, buf); target_write_memory (sp, buf, 16); /* Finally, update all slots of the SP register. */ @@ -1490,7 +1491,7 @@ spu_push_dummy_call (struct gdbarch *gdbarch, struct value *function, CORE_ADDR sp_slot = extract_unsigned_integer (buf + 4*i, 4, byte_order); store_unsigned_integer (buf + 4*i, 4, byte_order, sp_slot + sp_delta); } - regcache_cooked_write (regcache, SPU_RAW_SP_REGNUM, buf); + regcache->cooked_write (SPU_RAW_SP_REGNUM, buf); return sp; } @@ -1540,7 +1541,7 @@ spu_return_value (struct gdbarch *gdbarch, struct value *function, { case RETURN_VALUE_REGISTER_CONVENTION: if (opencl_vector && TYPE_LENGTH (type) == 2) - regcache_cooked_write_part (regcache, SPU_ARG1_REGNUM, 2, 2, in); + regcache->cooked_write_part (SPU_ARG1_REGNUM, 2, 2, in); else spu_value_to_regcache (regcache, SPU_ARG1_REGNUM, type, in); break; @@ -1556,7 +1557,7 @@ spu_return_value (struct gdbarch *gdbarch, struct value *function, { case RETURN_VALUE_REGISTER_CONVENTION: if (opencl_vector && TYPE_LENGTH (type) == 2) - regcache_cooked_read_part (regcache, SPU_ARG1_REGNUM, 2, 2, out); + regcache->cooked_read_part (SPU_ARG1_REGNUM, 2, 2, out); else spu_regcache_to_value (regcache, SPU_ARG1_REGNUM, type, out); break; @@ -1596,14 +1597,14 @@ spu_memory_remove_breakpoint (struct gdbarch *gdbarch, -- this is not the correct behaviour. The workaround is to check whether the PID we are asked to remove this - breakpoint from (i.e. ptid_get_pid (inferior_ptid)) is different from the + breakpoint from (i.e. inferior_ptid.pid ()) is different from the PID of the current inferior (i.e. current_inferior ()->pid). This is only true in the context of detach_breakpoints. If so, we simply do nothing. [ Note that for the fork child process, it does not matter if breakpoints remain inserted, because those SPU contexts are not runnable anyway -- the Linux kernel allows only the original process to invoke spu_run. */ - if (ptid_get_pid (inferior_ptid) != current_inferior ()->pid) + if (inferior_ptid.pid () != current_inferior ()->pid) return 0; return default_memory_remove_breakpoint (gdbarch, bp_tgt); @@ -1655,7 +1656,7 @@ spu_software_single_step (struct regcache *regcache) target += SPUADDR_ADDR (pc); else if (reg != -1) { - regcache_raw_read_part (regcache, reg, 0, 4, buf); + regcache->raw_read_part (reg, 0, 4, buf); target += extract_unsigned_integer (buf, 4, byte_order) & -4; } @@ -1820,8 +1821,8 @@ spu_get_overlay_table (struct objfile *objfile) { CORE_ADDR vma = extract_unsigned_integer (ovly_table + 16*i + 0, 4, byte_order); - CORE_ADDR size = extract_unsigned_integer (ovly_table + 16*i + 4, - 4, byte_order); + /* Note that this skips the "size" entry, which is at offset + 4. */ CORE_ADDR pos = extract_unsigned_integer (ovly_table + 16*i + 8, 4, byte_order); CORE_ADDR buf = extract_unsigned_integer (ovly_table + 16*i + 12, @@ -1882,11 +1883,10 @@ spu_overlay_update (struct obj_section *osect) /* All sections. */ else { - struct objfile *objfile; - - ALL_OBJSECTIONS (objfile, osect) - if (section_is_overlay (osect)) - spu_overlay_update_osect (osect); + for (objfile *objfile : current_program_space->objfiles ()) + ALL_OBJFILE_OSECTIONS (objfile, osect) + if (section_is_overlay (osect)) + spu_overlay_update_osect (osect); } } @@ -1999,12 +1999,11 @@ spu_objfile_from_frame (struct frame_info *frame) { struct gdbarch *gdbarch = get_frame_arch (frame); struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - struct objfile *obj; if (gdbarch_bfd_arch_info (gdbarch)->arch != bfd_arch_spu) return NULL; - ALL_OBJFILES (obj) + for (objfile *obj : current_program_space->objfiles ()) { if (obj->sections != obj->sections_end && SPUADDR_SPU (obj_section_addr (obj->sections)) == tdep->id) @@ -2040,7 +2039,7 @@ flush_ea_cache (void) type = lookup_pointer_type (type); addr = BMSYMBOL_VALUE_ADDRESS (msymbol); - call_function_by_hand (value_from_pointer (type, addr), NULL, 0, NULL); + call_function_by_hand (value_from_pointer (type, addr), NULL, {}); } } @@ -2079,7 +2078,7 @@ info_spu_event_command (const char *args, int from_tty) id = get_frame_register_unsigned (frame, SPU_ID_REGNUM); xsnprintf (annex, sizeof annex, "%d/event_status", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, (sizeof (buf) - 1)); if (len <= 0) error (_("Could not read event_status.")); @@ -2087,7 +2086,7 @@ info_spu_event_command (const char *args, int from_tty) event_status = strtoulst ((char *) buf, NULL, 16); xsnprintf (annex, sizeof annex, "%d/event_mask", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, (sizeof (buf) - 1)); if (len <= 0) error (_("Could not read event_mask.")); @@ -2127,7 +2126,8 @@ info_spu_signal_command (const char *args, int from_tty) id = get_frame_register_unsigned (frame, SPU_ID_REGNUM); xsnprintf (annex, sizeof annex, "%d/signal1", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, buf, 0, 4); + len = target_read (current_top_target (), TARGET_OBJECT_SPU, + annex, buf, 0, 4); if (len < 0) error (_("Could not read signal1.")); else if (len == 4) @@ -2137,7 +2137,7 @@ info_spu_signal_command (const char *args, int from_tty) } xsnprintf (annex, sizeof annex, "%d/signal1_type", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, (sizeof (buf) - 1)); if (len <= 0) error (_("Could not read signal1_type.")); @@ -2145,7 +2145,8 @@ info_spu_signal_command (const char *args, int from_tty) signal1_type = strtoulst ((char *) buf, NULL, 16); xsnprintf (annex, sizeof annex, "%d/signal2", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, buf, 0, 4); + len = target_read (current_top_target (), TARGET_OBJECT_SPU, + annex, buf, 0, 4); if (len < 0) error (_("Could not read signal2.")); else if (len == 4) @@ -2155,7 +2156,7 @@ info_spu_signal_command (const char *args, int from_tty) } xsnprintf (annex, sizeof annex, "%d/signal2_type", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, (sizeof (buf) - 1)); if (len <= 0) error (_("Could not read signal2_type.")); @@ -2243,7 +2244,7 @@ info_spu_mailbox_command (const char *args, int from_tty) ui_out_emit_tuple tuple_emitter (current_uiout, "SPUInfoMailbox"); xsnprintf (annex, sizeof annex, "%d/mbox_info", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, sizeof buf); if (len < 0) error (_("Could not read mbox_info.")); @@ -2252,7 +2253,7 @@ info_spu_mailbox_command (const char *args, int from_tty) "mbox", "SPU Outbound Mailbox"); xsnprintf (annex, sizeof annex, "%d/ibox_info", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, sizeof buf); if (len < 0) error (_("Could not read ibox_info.")); @@ -2261,7 +2262,7 @@ info_spu_mailbox_command (const char *args, int from_tty) "ibox", "SPU Outbound Interrupt Mailbox"); xsnprintf (annex, sizeof annex, "%d/wbox_info", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, sizeof buf); if (len < 0) error (_("Could not read wbox_info.")); @@ -2473,7 +2474,7 @@ info_spu_dma_command (const char *args, int from_tty) id = get_frame_register_unsigned (frame, SPU_ID_REGNUM); xsnprintf (annex, sizeof annex, "%d/dma_info", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, 40 + 16 * 32); if (len <= 0) error (_("Could not read dma_info.")); @@ -2550,7 +2551,7 @@ info_spu_proxydma_command (const char *args, int from_tty) id = get_frame_register_unsigned (frame, SPU_ID_REGNUM); xsnprintf (annex, sizeof annex, "%d/proxydma_info", id); - len = target_read (target_stack, TARGET_OBJECT_SPU, annex, + len = target_read (current_top_target (), TARGET_OBJECT_SPU, annex, buf, 0, 24 + 8 * 32); if (len <= 0) error (_("Could not read proxydma_info."));