X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fppcnbsd-tdep.c;h=6fe84779caba248c6a5355daa2edb09d7c0454dc;hb=976411d6b6aa5cae05259eb92b87a04262052e09;hp=b79f5d4b68767de32b7551944d2924b43c851f2c;hpb=3e8c568d4fc67da218a87d51da180bba5ad585f1;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/ppcnbsd-tdep.c b/gdb/ppcnbsd-tdep.c index b79f5d4b68..6fe84779ca 100644 --- a/gdb/ppcnbsd-tdep.c +++ b/gdb/ppcnbsd-tdep.c @@ -1,7 +1,6 @@ /* Target-dependent code for NetBSD/powerpc. - Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 - Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Wasabi Systems, Inc. @@ -9,7 +8,7 @@ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -18,9 +17,7 @@ GNU General Public License for more details. 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., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ #include "defs.h" #include "gdbtypes.h" @@ -31,7 +28,7 @@ #include "tramp-frame.h" #include "gdb_assert.h" -#include "gdb_string.h" +#include #include "ppc-tdep.h" #include "ppcnbsd-tdep.h" @@ -45,13 +42,13 @@ struct ppc_reg_offsets ppcnbsd_reg_offsets; /* NetBSD/powerpc register sets. */ -struct regset ppcnbsd_gregset = +const struct regset ppcnbsd_gregset = { &ppcnbsd_reg_offsets, ppc_supply_gregset }; -struct regset ppcnbsd_fpregset = +const struct regset ppcnbsd_fpregset = { &ppcnbsd_reg_offsets, ppc_supply_fpregset @@ -76,12 +73,12 @@ ppcnbsd_regset_from_core_section (struct gdbarch *gdbarch, /* NetBSD is confused. It appears that 1.5 was using the correct SVR4 convention but, 1.6 switched to the below broken convention. For - the moment use the broken convention. Ulgh!. */ + the moment use the broken convention. Ulgh! */ static enum return_value_convention -ppcnbsd_return_value (struct gdbarch *gdbarch, struct type *valtype, - struct regcache *regcache, gdb_byte *readbuf, - const gdb_byte *writebuf) +ppcnbsd_return_value (struct gdbarch *gdbarch, struct value *function, + struct type *valtype, struct regcache *regcache, + gdb_byte *readbuf, const gdb_byte *writebuf) { #if 0 if ((TYPE_CODE (valtype) == TYPE_CODE_STRUCT @@ -95,8 +92,8 @@ ppcnbsd_return_value (struct gdbarch *gdbarch, struct type *valtype, return RETURN_VALUE_STRUCT_CONVENTION; else #endif - return ppc_sysv_abi_broken_return_value (gdbarch, valtype, regcache, - readbuf, writebuf); + return ppc_sysv_abi_broken_return_value (gdbarch, function, valtype, + regcache, readbuf, writebuf); } @@ -106,17 +103,17 @@ static const struct tramp_frame ppcnbsd2_sigtramp; static void ppcnbsd_sigtramp_cache_init (const struct tramp_frame *self, - struct frame_info *next_frame, + struct frame_info *this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func) { - struct gdbarch *gdbarch = get_frame_arch (next_frame); + struct gdbarch *gdbarch = get_frame_arch (this_frame); struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); CORE_ADDR addr, base; int i; - base = frame_unwind_register_unsigned (next_frame, - gdbarch_sp_regnum (current_gdbarch)); + base = get_frame_register_unsigned (this_frame, + gdbarch_sp_regnum (gdbarch)); if (self == &ppcnbsd2_sigtramp) addr = base + 0x10 + 2 * tdep->wordsize; else @@ -134,9 +131,8 @@ ppcnbsd_sigtramp_cache_init (const struct tramp_frame *self, addr += tdep->wordsize; trad_frame_set_reg_addr (this_cache, tdep->ppc_ctr_regnum, addr); addr += tdep->wordsize; - trad_frame_set_reg_addr (this_cache, - gdbarch_pc_regnum (current_gdbarch), - addr); /* SRR0? */ + trad_frame_set_reg_addr (this_cache, gdbarch_pc_regnum (gdbarch), + addr); /* SRR0? */ addr += tdep->wordsize; /* Construct the frame ID using the function start. */ @@ -215,6 +211,8 @@ _initialize_ppcnbsd_tdep (void) { /* General-purpose registers. */ ppcnbsd_reg_offsets.r0_offset = 0; + ppcnbsd_reg_offsets.gpr_size = 4; + ppcnbsd_reg_offsets.xr_size = 4; ppcnbsd_reg_offsets.lr_offset = 128; ppcnbsd_reg_offsets.cr_offset = 132; ppcnbsd_reg_offsets.xer_offset = 136; @@ -226,6 +224,7 @@ _initialize_ppcnbsd_tdep (void) /* Floating-point registers. */ ppcnbsd_reg_offsets.f0_offset = 0; ppcnbsd_reg_offsets.fpscr_offset = 256; + ppcnbsd_reg_offsets.fpscr_size = 4; /* AltiVec registers. */ ppcnbsd_reg_offsets.vr0_offset = 0;