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;