diff options
author | nwhitehorn <nwhitehorn@FreeBSD.org> | 2010-07-10 02:29:22 +0000 |
---|---|---|
committer | nwhitehorn <nwhitehorn@FreeBSD.org> | 2010-07-10 02:29:22 +0000 |
commit | 5d21d768b2c9f3601cbb00aa36a5ec22bacf93df (patch) | |
tree | 9f6c3a9c7f6dc298b58f5ddb2655b080c986678d /contrib/gdb | |
parent | c497cd3792b4bca40349c51f22dfd4c77c77ec9f (diff) | |
download | FreeBSD-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.c | 19 | ||||
-rw-r--r-- | contrib/gdb/gdb/solib-svr4.c | 1 |
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 |