* rs6000-nat.c (set_host_arch): Do not switch to a new architecture

if it already matches the current architecture from the exec file.
	Include arch-utils.h for gdbarch_info_init prototype.
	* Makefile.in (rs6000-nat.o): Update dependencies.
This commit is contained in:
Peter Schauer 2002-02-25 18:15:52 +00:00
parent 798bd83101
commit 19caaa4519
3 changed files with 28 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2002-02-25 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
* rs6000-nat.c (set_host_arch): Do not switch to a new architecture
if it already matches the current architecture from the exec file.
Include arch-utils.h for gdbarch_info_init prototype.
* Makefile.in (rs6000-nat.o): Update dependencies.
2002-02-25 Eli Zaretskii <eliz@is.elta.co.il>
* config/djgpp/djconfig.sh: Set NM=nm and CFLAGS="-g -O2" in the

View File

@ -1969,7 +1969,7 @@ rom68k-rom.o: rom68k-rom.c $(monitor_h) $(bfd_h) gdb_wait.h $(defs_h) \
rs6000-nat.o: rs6000-nat.c $(bfd_h) $(defs_h) $(inferior_h) $(target_h) \
$(gdbcore_h) $(xcoffsolib_h) $(symfile_h) $(objfiles_h) \
$(gdb_stabs_h) $(regcache_h)
$(gdb_stabs_h) $(regcache_h) $(arch_utils_h)
rs6000-tdep.o: rs6000-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h) \
$(target_h) ppc-tdep.h $(regcache_h) $(value_h) $(parser_defs_h)

View File

@ -1,6 +1,6 @@
/* 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
1998, 1999, 2000, 2001, 2002
Free Software Foundation, Inc.
This file is part of GDB.
@ -31,6 +31,7 @@
#include "bfd.h"
#include "gdb-stabs.h"
#include "regcache.h"
#include "arch-utils.h"
#include <sys/ptrace.h>
#include <sys/reg.h>
@ -928,6 +929,24 @@ set_host_arch (int pid)
arch = bfd_arch_powerpc;
mach = bfd_mach_ppc;
}
/* FIXME: schauer/2002-02-25:
We don't know if we are executing a 32 or 64 bit executable,
and have no way to pass the proper word size to rs6000_gdbarch_init.
So we have to avoid switching to a new architecture, if the architecture
matches already.
Blindly calling rs6000_gdbarch_init used to work in older versions of
GDB, as rs6000_gdbarch_init incorrectly used the previous tdep to
determine the wordsize. */
if (exec_bfd)
{
const struct bfd_arch_info *exec_bfd_arch_info;
exec_bfd_arch_info = bfd_get_arch_info (exec_bfd);
if (arch == exec_bfd_arch_info->arch)
return;
}
bfd_default_set_arch_mach (&abfd, arch, mach);
gdbarch_info_init (&info);