summaryrefslogtreecommitdiffstats
path: root/contrib/gdb
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2010-07-10 02:29:22 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2010-07-10 02:29:22 +0000
commit5d21d768b2c9f3601cbb00aa36a5ec22bacf93df (patch)
tree9f6c3a9c7f6dc298b58f5ddb2655b080c986678d /contrib/gdb
parentc497cd3792b4bca40349c51f22dfd4c77c77ec9f (diff)
downloadFreeBSD-src-5d21d768b2c9f3601cbb00aa36a5ec22bacf93df.zip
FreeBSD-src-5d21d768b2c9f3601cbb00aa36a5ec22bacf93df.tar.gz
Teach our toolchain how to generate 64-bit PowerPC binaries. This fixes
a variety of bugs in binutils related to handling of 64-bit PPC ELF, provides a GCC configuration for 64-bit PowerPC on FreeBSD, and associated build systems tweaks. Obtained from: projects/ppc64
Diffstat (limited to 'contrib/gdb')
-rw-r--r--contrib/gdb/gdb/ppcfbsd-tdep.c19
-rw-r--r--contrib/gdb/gdb/solib-svr4.c1
2 files changed, 13 insertions, 7 deletions
diff --git a/contrib/gdb/gdb/ppcfbsd-tdep.c b/contrib/gdb/gdb/ppcfbsd-tdep.c
index 296be18..3828e7f 100644
--- a/contrib/gdb/gdb/ppcfbsd-tdep.c
+++ b/contrib/gdb/gdb/ppcfbsd-tdep.c
@@ -35,13 +35,13 @@
#include "gdb_assert.h"
#include "solib-svr4.h"
-#define REG_FIXREG_OFFSET(x) ((x) * 4)
-#define REG_LR_OFFSET (32 * 4)
-#define REG_CR_OFFSET (33 * 4)
-#define REG_XER_OFFSET (34 * 4)
-#define REG_CTR_OFFSET (35 * 4)
-#define REG_PC_OFFSET (36 * 4)
-#define SIZEOF_STRUCT_REG (37 * 4)
+#define REG_FIXREG_OFFSET(x) ((x) * sizeof(register_t))
+#define REG_LR_OFFSET (32 * sizeof(register_t))
+#define REG_CR_OFFSET (33 * sizeof(register_t))
+#define REG_XER_OFFSET (34 * sizeof(register_t))
+#define REG_CTR_OFFSET (35 * sizeof(register_t))
+#define REG_PC_OFFSET (36 * sizeof(register_t))
+#define SIZEOF_STRUCT_REG (37 * sizeof(register_t))
#define FPREG_FPR_OFFSET(x) ((x) * 8)
#define FPREG_FPSCR_OFFSET (32 * 8)
@@ -274,8 +274,13 @@ ppcfbsd_init_abi (struct gdbarch_info info,
/* For NetBSD, this is an on again, off again thing. Some systems
do use the broken struct convention, and some don't. */
set_gdbarch_return_value (gdbarch, ppcfbsd_return_value);
+#ifdef __powerpc64__
+ set_solib_svr4_fetch_link_map_offsets (gdbarch,
+ svr4_lp64_fetch_link_map_offsets);
+#else
set_solib_svr4_fetch_link_map_offsets (gdbarch,
svr4_ilp32_fetch_link_map_offsets);
+#endif
}
void
diff --git a/contrib/gdb/gdb/solib-svr4.c b/contrib/gdb/gdb/solib-svr4.c
index 4f4664c..afea156 100644
--- a/contrib/gdb/gdb/solib-svr4.c
+++ b/contrib/gdb/gdb/solib-svr4.c
@@ -94,6 +94,7 @@ static char *solib_break_names[] =
into the data section (thus skipping the descriptor's symbol),
and eventually try this one, giving us the real entry point
address. */
+ ".r_debug_state",
"._dl_debug_state",
NULL
OpenPOWER on IntegriCloud