Index: gdb/spu-linux-nat.c |
diff --git a/gdb/spu-linux-nat.c b/gdb/spu-linux-nat.c |
index 2dfec8c12889d1c5fc52c13fe3a08fbff240e517..22ed4833af0561819ab199d670082f8d69700815 100644 |
--- a/gdb/spu-linux-nat.c |
+++ b/gdb/spu-linux-nat.c |
@@ -1,5 +1,5 @@ |
/* SPU native-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>. |
@@ -20,7 +20,7 @@ |
#include "defs.h" |
#include "gdbcore.h" |
-#include "gdb_string.h" |
+#include <string.h> |
#include "target.h" |
#include "inferior.h" |
#include "inf-child.h" |
@@ -29,11 +29,11 @@ |
#include "symfile.h" |
#include "gdb_wait.h" |
#include "gdbthread.h" |
+#include "gdb_bfd.h" |
#include <sys/ptrace.h> |
#include <asm/ptrace.h> |
#include <sys/types.h> |
-#include <sys/param.h> |
#include "spu-tdep.h" |
@@ -48,9 +48,9 @@ fetch_ppc_register (int regno) |
{ |
PTRACE_TYPE_RET res; |
- int tid = TIDGET (inferior_ptid); |
+ int tid = ptid_get_lwp (inferior_ptid); |
if (tid == 0) |
- tid = PIDGET (inferior_ptid); |
+ tid = ptid_get_pid (inferior_ptid); |
#ifndef __powerpc64__ |
/* If running as a 32-bit process on a 64-bit system, we attempt |
@@ -133,9 +133,9 @@ fetch_ppc_memory (ULONGEST memaddr, gdb_byte *myaddr, int len) |
/ sizeof (PTRACE_TYPE_RET)); |
PTRACE_TYPE_RET *buffer; |
- int tid = TIDGET (inferior_ptid); |
+ int tid = ptid_get_lwp (inferior_ptid); |
if (tid == 0) |
- tid = PIDGET (inferior_ptid); |
+ tid = ptid_get_pid (inferior_ptid); |
buffer = (PTRACE_TYPE_RET *) alloca (count * sizeof (PTRACE_TYPE_RET)); |
for (i = 0; i < count; i++, addr += sizeof (PTRACE_TYPE_RET)) |
@@ -163,9 +163,9 @@ store_ppc_memory (ULONGEST memaddr, const gdb_byte *myaddr, int len) |
/ sizeof (PTRACE_TYPE_RET)); |
PTRACE_TYPE_RET *buffer; |
- int tid = TIDGET (inferior_ptid); |
+ int tid = ptid_get_lwp (inferior_ptid); |
if (tid == 0) |
- tid = PIDGET (inferior_ptid); |
+ tid = ptid_get_pid (inferior_ptid); |
buffer = (PTRACE_TYPE_RET *) alloca (count * sizeof (PTRACE_TYPE_RET)); |
@@ -205,7 +205,7 @@ store_ppc_memory (ULONGEST memaddr, const gdb_byte *myaddr, int len) |
static int |
parse_spufs_run (int *fd, ULONGEST *addr) |
{ |
- enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch); |
+ enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ()); |
gdb_byte buf[4]; |
ULONGEST pc = fetch_ppc_register (32); /* nip */ |
@@ -236,7 +236,7 @@ spu_proc_xfer_spu (const char *annex, gdb_byte *readbuf, |
char buf[128]; |
int fd = 0; |
int ret = -1; |
- int pid = PIDGET (inferior_ptid); |
+ int pid = ptid_get_pid (inferior_ptid); |
if (!annex) |
return 0; |
@@ -276,7 +276,9 @@ static int |
spu_bfd_iovec_close (struct bfd *nbfd, void *stream) |
{ |
xfree (stream); |
- return 1; |
+ |
+ /* Zero means success. */ |
+ return 0; |
} |
static file_ptr |
@@ -315,16 +317,16 @@ spu_bfd_open (ULONGEST addr) |
ULONGEST *open_closure = xmalloc (sizeof (ULONGEST)); |
*open_closure = addr; |
- nbfd = bfd_openr_iovec (xstrdup ("<in-memory>"), "elf32-spu", |
- spu_bfd_iovec_open, open_closure, |
- spu_bfd_iovec_pread, spu_bfd_iovec_close, |
- spu_bfd_iovec_stat); |
+ nbfd = gdb_bfd_openr_iovec ("<in-memory>", "elf32-spu", |
+ spu_bfd_iovec_open, open_closure, |
+ spu_bfd_iovec_pread, spu_bfd_iovec_close, |
+ spu_bfd_iovec_stat); |
if (!nbfd) |
return NULL; |
if (!bfd_check_format (nbfd, bfd_object)) |
{ |
- bfd_close (nbfd); |
+ gdb_bfd_unref (nbfd); |
return NULL; |
} |
@@ -374,8 +376,13 @@ spu_symbol_file_add_from_memory (int inferior_fd) |
/* Open BFD representing SPE executable and read its symbols. */ |
nbfd = spu_bfd_open (addr); |
if (nbfd) |
- symbol_file_add_from_bfd (nbfd, SYMFILE_VERBOSE | SYMFILE_MAINLINE, |
- NULL, 0, NULL); |
+ { |
+ struct cleanup *cleanup = make_cleanup_bfd_unref (nbfd); |
+ |
+ symbol_file_add_from_bfd (nbfd, SYMFILE_VERBOSE | SYMFILE_MAINLINE, |
+ NULL, 0, NULL); |
+ do_cleanups (cleanup); |
+ } |
} |
@@ -387,9 +394,9 @@ spu_child_post_startup_inferior (ptid_t ptid) |
int fd; |
ULONGEST addr; |
- int tid = TIDGET (ptid); |
+ int tid = ptid_get_lwp (ptid); |
if (tid == 0) |
- tid = PIDGET (ptid); |
+ tid = ptid_get_pid (ptid); |
while (!parse_spufs_run (&fd, &addr)) |
{ |
@@ -436,16 +443,17 @@ spu_child_wait (struct target_ops *ops, |
set_sigint_trap (); /* Causes SIGINT to be passed on to the |
attached process. */ |
- pid = waitpid (PIDGET (ptid), &status, 0); |
+ pid = waitpid (ptid_get_pid (ptid), &status, 0); |
if (pid == -1 && errno == ECHILD) |
/* Try again with __WCLONE to check cloned processes. */ |
- pid = waitpid (PIDGET (ptid), &status, __WCLONE); |
+ pid = waitpid (ptid_get_pid (ptid), &status, __WCLONE); |
save_errno = errno; |
/* Make sure we don't report an event for the exit of the |
original program, if we've detached from it. */ |
- if (pid != -1 && !WIFSTOPPED (status) && pid != PIDGET (inferior_ptid)) |
+ if (pid != -1 && !WIFSTOPPED (status) |
+ && pid != ptid_get_pid (inferior_ptid)) |
{ |
pid = -1; |
save_errno = EINTR; |
@@ -487,7 +495,7 @@ spu_fetch_inferior_registers (struct target_ops *ops, |
{ |
struct gdbarch *gdbarch = get_regcache_arch (regcache); |
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); |
- char buf[4]; |
+ gdb_byte buf[4]; |
store_unsigned_integer (buf, 4, byte_order, fd); |
regcache_raw_supply (regcache, SPU_ID_REGNUM, buf); |
} |