diff options
author | Peter Schauer <Peter.Schauer@mytum.de> | 2002-02-25 18:15:52 +0000 |
---|---|---|
committer | Peter Schauer <Peter.Schauer@mytum.de> | 2002-02-25 18:15:52 +0000 |
commit | 19caaa451926df2ca71050758698fe8ef4a854c0 (patch) | |
tree | 17f106f3e4b178eb80fdb0be6747693d7c58d9f6 /gdb/rs6000-nat.c | |
parent | 798bd83101cf19a7dd11d6e8c76018fc753da57d (diff) | |
download | gdb-19caaa451926df2ca71050758698fe8ef4a854c0.zip gdb-19caaa451926df2ca71050758698fe8ef4a854c0.tar.gz gdb-19caaa451926df2ca71050758698fe8ef4a854c0.tar.bz2 |
* 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.
Diffstat (limited to 'gdb/rs6000-nat.c')
-rw-r--r-- | gdb/rs6000-nat.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/gdb/rs6000-nat.c b/gdb/rs6000-nat.c index f79e991..c2b1dd9 100644 --- a/gdb/rs6000-nat.c +++ b/gdb/rs6000-nat.c @@ -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); |