/* IBM RS/6000 native-dependent code for GDB, the GNU debugger.
- Copyright (C) 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1986-1987, 1989, 1991-2004, 2007-2012 Free Software
+ Foundation, Inc.
This file is part of GDB.
#include "gdb-stabs.h"
#include "regcache.h"
#include "arch-utils.h"
+#include "inf-child.h"
#include "inf-ptrace.h"
#include "ppc-tdep.h"
#include "rs6000-tdep.h"
{
#if 0
/* FIXME: this happens 3 times at the start of each 64-bit program. */
- perror ("ptrace read");
+ perror (_("ptrace read"));
#endif
errno = 0;
}
if (errno)
{
- perror ("ptrace write");
+ perror (_("ptrace write"));
errno = 0;
}
}
/* Claim it exited with unknown signal. */
ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
- ourstatus->value.sig = TARGET_SIGNAL_UNKNOWN;
+ ourstatus->value.sig = GDB_SIGNAL_UNKNOWN;
return inferior_ptid;
}
(int *) 1, 0, NULL);
if (ret != 0)
- perror ("pt_continue");
+ perror (_("pt_continue"));
do
{
- pid = wait (&status);
+ pid = waitpid (PIDGET (inferior_ptid), &status, 0);
}
while (pid != PIDGET (inferior_ptid));
add_vmap (LdInfo *ldi)
{
bfd *abfd, *last;
- char *mem, *objname, *filename;
+ char *mem, *filename;
struct objfile *obj;
struct vmap *vp;
int fd;
filename = LDI_FILENAME (ldi, arch64);
mem = filename + strlen (filename) + 1;
mem = xstrdup (mem);
- objname = xstrdup (filename);
fd = LDI_FD (ldi, arch64);
if (fd < 0)
/* Note that this opens it once for every member; a possible
enhancement would be to only open it once for every object. */
- abfd = bfd_openr (objname, gnutarget);
+ abfd = bfd_openr (filename, gnutarget);
else
- abfd = bfd_fdopenr (objname, gnutarget, fd);
+ abfd = bfd_fdopenr (filename, gnutarget, fd);
+ abfd = gdb_bfd_ref (abfd);
if (!abfd)
{
warning (_("Could not open `%s' as an executable file: %s"),
- objname, bfd_errmsg (bfd_get_error ()));
+ filename, bfd_errmsg (bfd_get_error ()));
return NULL;
}
+ gdb_bfd_stash_filename (abfd);
/* Make sure we have an object file. */
{
last = 0;
/* FIXME??? am I tossing BFDs? bfd? */
- while ((last = bfd_openr_next_archived_file (abfd, last)))
+ while ((last = gdb_bfd_ref (bfd_openr_next_archived_file (abfd, last))))
if (strcmp (mem, last->filename) == 0)
break;
if (!last)
{
- warning (_("\"%s\": member \"%s\" missing."), objname, mem);
- bfd_close (abfd);
+ warning (_("\"%s\": member \"%s\" missing."), filename, mem);
+ gdb_bfd_unref (abfd);
return NULL;
}
if (!bfd_check_format (last, bfd_object))
{
warning (_("\"%s\": member \"%s\" not in executable format: %s."),
- objname, mem, bfd_errmsg (bfd_get_error ()));
- bfd_close (last);
- bfd_close (abfd);
+ filename, mem, bfd_errmsg (bfd_get_error ()));
+ gdb_bfd_unref (last);
+ gdb_bfd_unref (abfd);
return NULL;
}
else
{
warning (_("\"%s\": not in executable format: %s."),
- objname, bfd_errmsg (bfd_get_error ()));
- bfd_close (abfd);
+ filename, bfd_errmsg (bfd_get_error ()));
+ gdb_bfd_unref (abfd);
return NULL;
}
- obj = allocate_objfile (vp->bfd, 0);
+ obj = allocate_objfile (gdb_bfd_ref (vp->bfd), 0);
vp->objfile = obj;
/* Always add symbols for the main objfile. */
}
\f
+void _initialize_rs6000_nat (void);
+
void
_initialize_rs6000_nat (void)
{