/* IBM RS/6000 native-dependent code for GDB, the GNU debugger.
- Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
- 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
- Foundation, Inc.
+ Copyright (C) 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+ 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007
+ Free Software Foundation, Inc.
This file is part of GDB.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
#include "defs.h"
#include "inferior.h"
#include "objfiles.h"
#include "libbfd.h" /* For bfd_default_set_arch_mach (FIXME) */
#include "bfd.h"
+#include "exceptions.h"
#include "gdb-stabs.h"
#include "regcache.h"
#include "arch-utils.h"
#include "ppc-tdep.h"
+#include "rs6000-tdep.h"
#include "exec.h"
#include <sys/ptrace.h>
to debugger memory starting at MYADDR. Copy to inferior if
WRITE is nonzero.
- Returns the length copied, which is either the LEN argument or zero.
- This xfer function does not do partial moves, since child_ops
- doesn't allow memory operations to cross below us in the target stack
- anyway. */
+ Returns the length copied, which is either the LEN argument or
+ zero. This xfer function does not do partial moves, since
+ deprecated_child_ops doesn't allow memory operations to cross below
+ us in the target stack anyway. */
int
-child_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len,
+child_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
int write, struct mem_attrib *attrib,
struct target_ops *target)
{
static void
exec_one_dummy_insn (void)
{
-#define DUMMY_INSN_ADDR (TEXT_SEGMENT_BASE)+0x200
+#define DUMMY_INSN_ADDR gdbarch_tdep (current_gdbarch)->text_segment_base+0x200
- char shadow_contents[BREAKPOINT_MAX]; /* Stash old bkpt addr contents */
int ret, status, pid;
CORE_ADDR prev_pc;
+ void *bp;
/* We plant one dummy breakpoint into DUMMY_INSN_ADDR address. We
assume that this address will never be executed again by the real
code. */
- target_insert_breakpoint (DUMMY_INSN_ADDR, shadow_contents);
+ bp = deprecated_insert_raw_breakpoint (DUMMY_INSN_ADDR);
/* You might think this could be done with a single ptrace call, and
you'd be correct for just about every platform I've ever worked
while (pid != PIDGET (inferior_ptid));
write_pc (prev_pc);
- target_remove_breakpoint (DUMMY_INSN_ADDR, shadow_contents);
+ deprecated_remove_raw_breakpoint (bp);
}
/* Fetch registers from the register section in core bfd. */
abfd = bfd_fdopenr (objname, gnutarget, fd);
if (!abfd)
{
- warning ("Could not open `%s' as an executable file: %s",
+ warning (_("Could not open `%s' as an executable file: %s"),
objname, bfd_errmsg (bfd_get_error ()));
return NULL;
}
if (!last)
{
- warning ("\"%s\": member \"%s\" missing.", objname, mem);
+ warning (_("\"%s\": member \"%s\" missing."), objname, mem);
bfd_close (abfd);
return NULL;
}
if (!bfd_check_format (last, bfd_object))
{
- warning ("\"%s\": member \"%s\" not in executable format: %s.",
+ warning (_("\"%s\": member \"%s\" not in executable format: %s."),
objname, mem, bfd_errmsg (bfd_get_error ()));
bfd_close (last);
bfd_close (abfd);
}
else
{
- warning ("\"%s\": not in executable format: %s.",
+ warning (_("\"%s\": not in executable format: %s."),
objname, bfd_errmsg (bfd_get_error ()));
bfd_close (abfd);
return NULL;
/* The kernel sets ld_info to -1, if the process is still using the
object, and the object is removed. Keep the symbol info for the
removed object and issue a warning. */
- warning ("%s (fd=%d) has disappeared, keeping its symbols",
+ warning (_("%s (fd=%d) has disappeared, keeping its symbols"),
name, fd);
continue;
}
|| objfile->obfd == NULL
|| bfd_stat (objfile->obfd, &vi) < 0)
{
- warning ("Unable to stat %s, keeping its symbols", name);
+ warning (_("Unable to stat %s, keeping its symbols"), name);
continue;
}
vmap_symtab (vp);
/* Announce new object files. Doing this after symbol relocation
- makes aix-thread.c's job easier. */
+ makes aix-thread.c's job easier. */
if (deprecated_target_new_objfile_hook && vp->objfile)
deprecated_target_new_objfile_hook (vp->objfile);
running a different copy of the same executable. */
if (symfile_objfile != NULL && !got_exec_file)
{
- warning ("Symbol file %s\nis not mapped; discarding it.\n\
+ warning (_("Symbol file %s\nis not mapped; discarding it.\n\
If in fact that file has symbols which the mapped files listed by\n\
\"info files\" lack, you can load symbols with the \"symbol-file\" or\n\
\"add-symbol-file\" commands (note that you must take care of relocating\n\
-symbols to the proper address).",
+symbols to the proper address)."),
symfile_objfile->name);
free_objfile (symfile_objfile);
symfile_objfile = NULL;
execbfd = exec_bfd;
if (!vmap || !exec_ops.to_sections)
- error ("vmap_exec: vmap or exec_ops.to_sections == 0\n");
+ error (_("vmap_exec: vmap or exec_ops.to_sections == 0."));
for (i = 0; &exec_ops.to_sections[i] < exec_ops.to_sections_end; i++)
{
/* Set the current architecture from the host running GDB. Called when
starting a child process. */
-static void
-set_host_arch (int pid)
+void
+rs6000_create_inferior (int pid)
{
enum bfd_architecture arch;
unsigned long mach;
info.abfd = exec_bfd;
if (!gdbarch_update_p (info))
- {
- internal_error (__FILE__, __LINE__,
- "set_host_arch: failed to select architecture");
- }
+ internal_error (__FILE__, __LINE__,
+ _("rs6000_create_inferior: failed to select architecture"));
}
\f
/* xcoff_relocate_symtab - hook for symbol table relocation.
- also reads shared libraries.. */
+ also reads shared libraries. */
void
xcoff_relocate_symtab (unsigned int pid)
if (errno == ENOMEM)
load_segs *= 2;
else
- perror_with_name ("ptrace ldinfo");
+ perror_with_name (_("ptrace ldinfo"));
}
else
{
: vp->objfile);
}
}
- error ("Unable to find TOC entry for pc %s\n", hex_string (pc));
+ error (_("Unable to find TOC entry for pc %s."), hex_string (pc));
}
\f
/* Register that we are able to handle rs6000 core file formats. */
void
_initialize_core_rs6000 (void)
{
- /* Initialize hook in rs6000-tdep.c for determining the TOC address when
- calling functions in the inferior. */
+ /* Initialize hook in rs6000-tdep.c for determining the TOC address
+ when calling functions in the inferior. */
rs6000_find_toc_address_hook = find_toc_address;
- /* Initialize hook in rs6000-tdep.c to set the current architecture when
- starting a child process. */
- rs6000_set_host_arch_hook = set_host_arch;
-
deprecated_add_core_fns (&rs6000_core_fns);
}