Commit graph

10165 commits

Author SHA1 Message Date
Daniel Jacobowitz
63ed89b41d * infcmd.c (attach_command): Reread symbols if we already have
an exec file.
2004-03-23 16:45:01 +00:00
Andrew Cagney
f3b364276e 2004-03-23 Andrew Cagney <cagney@redhat.com>
* rs6000-tdep.c (frame_get_saved_regs): Delete unused function.
2004-03-23 16:32:39 +00:00
Andrew Cagney
aa2a3f87e9 2004-03-23 Andrew Cagney <cagney@redhat.com>
* gdbarch.sh (SIGTRAMP_START, SIGTRAMP_END): Deprecate.
	* gdbarch.h, gdbarch.c: Re-generate.
	* i386obsd-tdep.c (i386obsd_init_abi): Update.
	* i386nbsd-tdep.c (i386nbsd_init_abi): Update.
	* i386bsd-tdep.c (i386bsd_init_abi): Update.
	* config/vax/tm-vaxbsd.h (DEPRECATED_SIGTRAMP_END)
	(DEPRECATED_SIGTRAMP_START): Update.
	* config/m68k/tm-nbsd.h (DEPRECATED_SIGTRAMP_END)
	(DEPRECATED_SIGTRAMP_START): Update.
	* blockframe.c (find_pc_sect_partial_function): Update.
	* arch-utils.c (legacy_pc_in_sigtramp): Update.

Index: doc/ChangeLog
2004-03-23  Andrew Cagney  <cagney@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Deprecate
	references to SIGTRAMP_START and SIGTRAMP_END.
2004-03-23 15:16:47 +00:00
Daniel Jacobowitz
00cac89514 * remote.c (remote_open_1): Reopen the exec file and reread symbols
if necessary.
2004-03-23 15:14:02 +00:00
Andrew Cagney
f561f02630 2004-03-23 Andrew Cagney <cagney@redhat.com>
* gdbarch.sh (PC_IN_SIGTRAMP): Change to a function with
	predicate, deprecate.
	* gdbarch.h, gdbarch.c: Re-generate.
	* alpha-linux-tdep.c (alpha_linux_init_abi): Update.
	* alpha-osf1-tdep.c (alpha_osf1_init_abi): Update.
	* alpha-tdep.c (alpha_sigtramp_frame_sniffer): Update.
	* alphafbsd-tdep.c (alphafbsd_init_abi): Update.
	* alphanbsd-tdep.c (alphanbsd_init_abi): Update.
	* amd64-linux-tdep.c (amd64_linux_init_abi): Update.
	* amd64-tdep.c (amd64_sigtramp_frame_sniffer): Update.
	* amd64nbsd-tdep.c (amd64nbsd_init_abi): Update.
	* amd64obsd-tdep.c (amd64obsd_init_abi): Update.
	* arm-tdep.c (arm_sigtramp_unwind_sniffer): Update.
	* blockframe.c (find_pc_partial_function): Update.
	* breakpoint.c (bpstat_what): Update.
	* frame.c (frame_type_from_pc, legacy_get_prev_frame): Update.
	* frv-linux-tdep.c (frv_linux_init_abi): Update.
	* frv-tdep.c (frv_sigtramp_frame_sniffer): Update.
	* hppa-hpux-tdep.c (hppa_hpux_init_abi): Update.
	* i386-interix-tdep.c (i386_interix_init_abi): Update.
	* i386-linux-tdep.c (i386_linux_init_abi): Update.
	* i386-nto-tdep.c (i386nto_init_abi): Update.
	* i386-sol2-tdep.c (i386_sol2_init_abi): Update.
	* i386-tdep.c (i386_sigtramp_frame_sniffer)
	(i386_svr4_init_abi, i386_go32_init_abi, i386_gdbarch_init): Update.
	* i386bsd-tdep.c (i386bsd_init_abi): Update.
	* i386nbsd-tdep.c (i386nbsd_init_abi): Update.
	* i386obsd-tdep.c (i386obsd_init_abi): Update.
	* ia64-tdep.c (ia64_sigtramp_frame_sniffer): Update.
	* infrun.c (pc_in_sigtramp): Update.
	* m68k-tdep.c (m68k_sigtramp_frame_sniffer): Update.
	* m68klinux-tdep.c (m68k_linux_init_abi): Update.
	* mips-tdep.c (mips_gdbarch_init): Update.
	* mipsnbsd-tdep.c (mipsnbsd_init_abi): Update.
	* ppc-linux-tdep.c: Update comment.
	* ppcnbsd-tdep.c (ppcnbsd_init_abi): Update.
	* shnbsd-tdep.c (shnbsd_init_abi): Update.
	* sparc-linux-tdep.c (sparc32_linux_init_abi): Update.
	* sparc-sol2-tdep.c (sparc32_sol2_init_abi): Update.
	* sparc64-sol2-tdep.c (sparc64_sol2_init_abi): Update.
	* sparc64fbsd-tdep.c (sparc64fbsd_init_abi): Update.
	* sparc64nbsd-tdep.c (sparc64nbsd_init_abi): Update.
	* sparc64obsd-tdep.c (sparc64obsd_init_abi): Update.
	* sparcnbsd-tdep.c (sparc32nbsd_init_abi): Update.
	* sparcobsd-tdep.c (sparc32obsd_init_abi): Update.

Index: doc/ChangeLog
2004-03-23  Andrew Cagney  <cagney@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Deprecate
	references to PC_IN_SIGTRAMP.
2004-03-23 14:48:00 +00:00
Andrew Cagney
d2259dd367 2004-03-23 Andrew Cagney <cagney@redhat.com>
* tramp-frame.h, tramp-frame.h: New files.
	* Makefile.in (SFILES, tramp_frame_h, COMMON_OBS, tramp-frame.o):
	Update rules to include "tramp-frame.h" and "tramp-frame.c".
2004-03-23 14:12:30 +00:00
Andrew Cagney
8050c72f30 2004-03-23 Andrew Cagney <cagney@redhat.com>
* Makefile.in: Update all dependencies.
2004-03-23 13:58:03 +00:00
Andrew Cagney
0db9b4b709 2004-03-23 Andrew Cagney <cagney@redhat.com>
* Makefile.in (trad_frame_h): Add $(frame_h).
	* trad-frame.h: Update copyright.  Include "frame.h".
	(struct trad_frame_cache, trad_frame_cache_zalloc): Declare.
	(trad_frame_set_id, trad_frame_get_id): Declare.
	(trad_frame_set_reg_addr, trad_frame_get_register): Declare.
	* trad-frame.c: Update copyright.
	(struct trad_frame_cache): Define.
	(trad_frame_cache_zalloc): New function.
	(trad_frame_set_id, trad_frame_get_id): New functions.
	(trad_frame_set_reg_addr, trad_frame_get_register): New functions.
2004-03-23 13:49:50 +00:00
Andrew Cagney
8e645ae742 2004-03-22 Andrew Cagney <cagney@redhat.com>
* s390-tdep.c (struct s390_stub_unwind_cache): Rename
	s390_pltstub_unwind_cache.
	(s390_stub_frame_unwind_cache): Rename
	s390_pltstub_frame_unwind_cache.
	(s390_stub_frame_this_id): Rename s390_pltstub_frame_this_id.
	(s390_stub_frame_prev_register): Rename
	s390_pltstub_frame_prev_register.
	(s390_stub_frame_unwind): Rename s390_pltstub_frame_unwind.
	(s390_stub_frame_sniffer): Rename s390_stub_frame_sniffer.

	From Ulrich Weigand:
	* s390-tdep.c (s390_pltstub_frame_sniffer): Handle invalid function
	pointer calls like PLT calls.
2004-03-22 22:33:33 +00:00
Daniel Jacobowitz
34fcf120a5 * mips-tdep.c (non_heuristic_proc_desc): Search using the specified
PC rather than the partial function start address.  Use the start
	address to sanity check the found PDR.
2004-03-22 21:39:00 +00:00
Daniel Jacobowitz
5b917078ef * lin-lwp.c (lin_lwp_wait): Pass the LWP ID to
linux_handle_extended_wait.
2004-03-22 20:18:33 +00:00
Andrew Cagney
c3122434a9 2004-03-22 Andrew Cagney <cagney@redhat.com>
* rs6000-tdep.c (frame_initial_stack_address): Delete unused
	function.
2004-03-22 17:07:08 +00:00
Andrew Cagney
8adf9e781b 2004-03-22 Andrew Cagney <cagney@redhat.com>
* frame.h (generic_pop_current_frame): Delete declaration.
	(deprecate_pop_dummy_frame): Deprecate
	generic_pop_dummy_frame.
	* dummy-frame.c (deprecated_pop_dummy_frame): Update.
	(generic_pop_current_frame): Delete function.
	* mn10300-tdep.c (mn10300_pop_frame): Eliminate call to
	generic_pop_current_frame.
	* v850-tdep.c (v850_pop_frame): Update.
	* mcore-tdep.c (mcore_pop_frame): Update.
	* sh64-tdep.c (sh64_pop_frame): Update.
	* h8300-tdep.c (h8300_pop_frame): Update.
2004-03-22 16:58:08 +00:00
Andrew Cagney
90ba813f1f 2004-03-22 Andrew Cagney <cagney@redhat.com>
* frame.h (deprecated_pc_in_call_dummy): Rename
	generic_pc_in_call_dummy.
	* dummy-frame.h (pc_in_dummy_frame): Delete declaration.
	* dummy-frame.c (deprecated_pc_in_call_dummy): Rename
	generic_pc_in_call_dummy.
	(pc_in_dummy_frame): Make static.
	* gdbarch.sh (DEPRECATED_PC_IN_CALL_DUMMY): Update.
	* gdbarch.h, gdbarch.c: Re-generate.
	* dummy-frame.c (dummy_frame_sniffer): Simplify.
	* frame.c (frame_type_from_pc): Call deprecated_pc_in_call_dummy.
	(legacy_get_prev_frame): Ditto.
	* inferior.h: Delete reference to generic_pc_in_call_dummy in
	comment.
2004-03-22 15:36:47 +00:00
Andrew Cagney
244675f99a 2004-03-21 Andrew Cagney <cagney@redhat.com>
* inferior.h (deprecated_pc_in_call_dummy_at_entry_point): Delete
	declaration and out-of-date comment.
	* blockframe.c (deprecated_pc_in_call_dummy_at_entry_point):
	Delete function.
	* mn10300-tdep.c (mn10300_gdbarch_init): Do not set
	deprecated_pc_in_call_dummy.
2004-03-22 01:43:32 +00:00
Andrew Cagney
ca4bb888c1 2004-03-21 Andrew Cagney <cagney@redhat.com>
* infrun.c (handle_inferior_event): For non legacy frames, use the
	frame ID and frame type to identify a signal trampoline.  Update
	comments.
2004-03-21 22:53:49 +00:00
Nathan J. Williams
1777c7b4ae 2004-03-21 Nathan J. Williams <nathanw@wasabisystems.com>
* mipsnbsd-tdep.c: Update copyright. Include "mips-tdep.h".
        * Makefile.in (mipsnbsd-tdep.o): Update dependencies.
2004-03-21 22:34:12 +00:00
Andrew Cagney
82417da5f0 2004-03-21 Andrew Cagney <cagney@redhat.com>
* frame-unwind.h: Update copyright.
	(struct frame_data): Add opaque declaration.
	(frame_sniffer_ftype): Declare.
	(struct frame_unwind): Add "unwind_data" and "sniffer".
	(frame_unwind_register_unwinder): Declare.
	(frame_unwind_find_by_frame): Add parameter "this_cache".
	* frame.c (get_frame_id, create_new_frame, legacy_get_prev_frame)
	(legacy_get_prev_frame, legacy_get_prev_frame)
	(get_frame_type): Pass the prologue_cache to
	frame_unwind_find_by_frame.
	* frame-unwind.c (struct frame_unwind_table_entry): Add field
	"unwinder".
	(frame_unwind_register_unwinder): New function.
	(frame_unwind_find_by_frame): Handle an unwind sniffer.
2004-03-21 22:28:52 +00:00
Paul N. Hilfinger
b2ba182e8f print_percentage: Use floating point to avoid incorrect results when
portion*100 overflows.
2004-03-20 09:53:03 +00:00
Kevin Buettner
81332287eb Remove old frame code. Enable new frame code for AIX. 2004-03-20 04:58:13 +00:00
Kevin Buettner
61a650991d Commit Andrew Cagney's rs6000 / PPC framification patch. 2004-03-20 04:51:21 +00:00
Kevin Buettner
88f7da0511 * breakpoint.c (adjust_breakpoint_address): Don't adjust
breakpoint address for watchpoints or the catch eventpoints.
	Add new paramter ``bptype''.  Adjust all callers.
2004-03-19 20:49:43 +00:00
Andrew Cagney
33cb8b0f85 2004-03-19 Andrew Cagney <cagney@redhat.com>
* config/pa/tm-hppa.h (GDB_TARGET_IS_HPPA): Delete unused macro.

Index: doc/ChangeLog
2004-03-19  Andrew Cagney  <cagney@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Delete
	reference to GDB_TARGET_IS_HPPA.
2004-03-19 17:43:34 +00:00
Andrew Cagney
f826dce170 2004-03-19 Andrew Cagney <cagney@redhat.com>
* PROBLEMS: Delete note that ARM does not use frame code, problem
	fixed.
2004-03-19 16:42:31 +00:00
Andrew Cagney
292ab03412 2004-03-18 Andrew Cagney <cagney@redhat.com>
* stack.c (return_command): Delete code wrapped in #ifdef
	DEPRECATED_CALL_DUMMY_HAS_COMPLETED, macro no longer defined.
2004-03-18 23:04:45 +00:00
Andrew Cagney
43b1ab882f 2004-03-18 Andrew Cagney <cagney@redhat.com>
* rs6000-tdep.c (skip_prologue): Record only the first LR save.
2004-03-18 20:30:08 +00:00
Andrew Cagney
dbfe462616 2004-03-18 Andrew Cagney <cagney@redhat.com>
* config/mips/tm-nbsd.h: Replace IN_SIGTRAMP with
	DEPRECATED_IN_SIGTRAMP.
	* config/powerpc/tm-linux.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* config/mips/tm-linux.h (DEPRECATED_IN_SIGTRAMP) Ditto.
	* config/mips/tm-irix6.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* config/mips/tm-irix5.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* config/ia64/tm-linux.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* config/ia64/tm-aix.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* config/arm/tm-linux.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* config/arm/tm-embed.h (DEPRECATED_IN_SIGTRAMP): Ditto.
	* arch-utils.c (legacy_pc_in_sigtramp): Ditto.
	* arch-utils.h: Remove reference to IN_SIGTRAMP in comment.
2004-03-18 19:59:07 +00:00
Andrew Cagney
0cad6aec70 2004-03-18 Andrew Cagney <cagney@redhat.com>
* frame-base.c: Update copyright.  Include "gdb_obstack.h".
	(struct frame_base_table_entry): Define.
	(struct frame_base_table): Re-implement as a linked list.
	(frame_base_init): Re-implement.
	(frame_base_table): Delete function.
	(append_predicate): Delete function.
	(frame_base_append_sniffer): Update.
	(frame_base_set_default): Update.
	(frame_base_find_by_frame): Update.
	(_initialize_frame_base): Use gdbarch_data_register_pre_init.
	* Makefile.in (frame-base.o): Update dependencies.
2004-03-18 16:22:00 +00:00
Andrew Cagney
9982c2e721 2004-03-17 Andrew Cagney <cagney@redhat.com>
* frame.c (legacy_get_prev_frame): Pass correct frame to
	frame_unwind_find_by_frame.
2004-03-17 23:43:36 +00:00
David Carlton
8dfe89858d 2004-03-17 David Carlton <carlton@kealia.com>
* NEWS: Mention C++ nested types and namespaces
2004-03-17 17:35:54 +00:00
Michael Chastain
ed47347a6d 2004-03-16 Michael Chastain <mec.gnu@mindspring.com>
* PROBLEMS: Add section headers, "Regressions since gdb 6.0"
	and "Regressions since gdb 5.3.".  Add known regressions since
	gdb 6.0.
2004-03-17 07:00:41 +00:00
Mark Kettenis
3248c32522 Fix typo in ChangeLog entry. 2004-03-17 00:21:17 +00:00
David Carlton
90aeadfcc3 2004-03-16 David Carlton <carlton@kealia.com>
* dwarf2read.c (process_structure_scope): Process children even
	when we're a declaration.
2004-03-16 22:43:15 +00:00
Andrew Cagney
73912b9b23 2004-03-16 Andrew Cagney <cagney@redhat.com>
* symtab.h (find_pc_sect_partial_function): Delete declaration.
	* blockframe.c (find_pc_partial_function)
	(find_pc_sect_partial_function): Merge into a single
	find_pc_partial_function.
2004-03-16 20:25:24 +00:00
Mark Kettenis
283accbcf2 * i386bsd-nat.c: s/regno/regnum/g.
(fetch_inferior_registers): Use I386_ST0_REGNUM instead of
FP0_REGNUM.
(store_inferior_registers): Likewise.
2004-03-16 13:54:10 +00:00
Mark Kettenis
f5b1afdf65 * i386bsd-nat.c (fill_fpregset): Call i387_collect_fsave instead
of i387_fill_fsave.
(store_inferior_registers): Call i387_collect_fsave and
i387_collect_fxsave instead of i387_fill_fsave and
i387_fill_fxsave.
2004-03-16 13:48:23 +00:00
Andrew Cagney
41fe5eb389 2004-03-15 Andrew Cagney <cagney@redhat.com>
* Makefile.in (frame-unwind.o): Update dependencies.
	* frame-unwind.c: Include "gdb_obstack.h".
	(frame_unwind_init): Replace "gdbarch" parameter with an "obstack"
	parameter.
	(append_predicate): Delete function.
	(struct frame_unwind_table_entry): New structure.
	(struct frame_unwind_table): Replace "sniffer" with "head" and
	"tail".
	(frame_unwind_append_sniffer): Update.
	(frame_unwind_find_by_frame): Update.
	(_initialize_frame_unwind): Registe frame_unwind_init using
	gdbarch_data_register_pre_init.
2004-03-15 23:08:28 +00:00
Mark Kettenis
3f63813d05 * i386bsd-nat.c: Update copyright year.
(CANNOT_FETCH_REGISTER, CANNOT_STORE_REGISTER): Undefine and then
define unconditionally.
2004-03-15 23:03:07 +00:00
Mark Kettenis
63b6c53fc1 * i387-tdep.h (i387_collect_fsave): New prototype.
* i387-tdep.c (i387_collect_fsave): New function containing most
of the code from i387_fill_fsave.
(i387_fill_fsave): Call i387_fill_fsave.
2004-03-15 22:44:12 +00:00
Mark Kettenis
871fbe6a50 * i386-linux-tdep.c: Update copyright year.
(i386_linux_svr4_fetch_link_map_offsets): Remove function.
(i386_linux_init_abi): Set solib_svr4_fetch_link_maop_offsets to
svr4_ilp32_link_map_offsets instead of
i386_linux_svr4_fetch_link_map_offsets.
2004-03-15 22:38:21 +00:00
David Carlton
8176b9b8a3 2004-03-15 David Carlton <carlton@kealia.com>
Fix for PR c++/1553:
	* dwarf2read.c (read_structure_type): Determine type name by
	calling determine_class_name.
	(determine_class_name): New.
	(determine_prefix): Look at TYPE_TAG_NAME and call
	determine_class_name when appropriate.
	(determine_prefix_aux, class_name): Delete.
2004-03-15 22:33:52 +00:00
Kevin Buettner
fe8bf7d723 * breakpoint.c (TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Delete
unused macro definition.  The definition in target.h (or perhaps
	elsewhere) takes precedence.
2004-03-15 21:58:31 +00:00
Andrew Cagney
f9be684a36 2004-03-15 Andrew Cagney <cagney@redhat.com>
* ppc-tdep.h: Update copyright.
	(ppc_linux_supply_gregset, ppc_linux_supply_fpregset): Change
	function signatures to match "regsets.h".
	* ppc-linux-tdep.c: Include "regset.h".
	(ELF_GREGSET_SIZE): Delete.
	(right_supply_register): New function.
	(ppc_linux_supply_fpregset, ppc_linux_supply_gregset): Rewrite
	using right_supply_register.
	(ppc32_linux_supply_gregset, ppc64_linux_supply_gregset): New
	functions.
	(ppc64_linux_gregset, ppc32_linux_gregset): Define.
	(ppc_linux_init_abi): Register ppc_linux_regset_from_core_section.
	(_initialize_ppc_linux_tdep): Do not register
	ppc_linux_regset_core_fns.
	(ppc_linux_regset_from_core_section): Replace
	fetch_core_registers.
	(ppc_linux_regset_core_fns): Delete.
	* ppc-linux-nat.c: (right_fill_reg): New function.
	(supply_gregset): Update call to ppc_linux_supply_gregset.
	(fill_gregset): Clear the register set, use right_fill_reg.
	(supply_fpregset): Update call to ppc_linux_supply_fpregset.
	(fill_fpregset): Use right_fill_reg, correctly compute FP offsets.

Index: ppc-linux-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/ppc-linux-nat.c,v
retrieving revision 1.28
diff -u -r1.28 ppc-linux-nat.c
--- ppc-linux-nat.c	8 Mar 2004 01:45:02 -0000	1.28
+++ ppc-linux-nat.c	15 Mar 2004 21:28:31 -0000
@@ -507,7 +507,24 @@
 void
 supply_gregset (gdb_gregset_t *gregsetp)
 {
-  ppc_linux_supply_gregset ((char *) gregsetp);
+  /* NOTE: cagney/2003-11-25: This is the word size used by the ptrace
+     interface, and not the wordsize of the program's ABI.  */
+  int wordsize = sizeof (PTRACE_XFER_TYPE);
+  ppc_linux_supply_gregset (current_regcache, -1, gregsetp,
+			    sizeof (gdb_gregset_t), wordsize);
+}
+
+static void
+right_fill_reg (int regnum, void *reg)
+{
+  /* NOTE: cagney/2003-11-25: This is the word size used by the ptrace
+     interface, and not the wordsize of the program's ABI.  */
+  int wordsize = sizeof (PTRACE_XFER_TYPE);
+  /* Right fill the register.  */
+  regcache_raw_collect (current_regcache, regnum,
+			((bfd_byte *) reg
+			 + wordsize
+			 - register_size (current_gdbarch, regnum)));
 }

 void
@@ -516,36 +533,42 @@
   int regi;
   elf_greg_t *regp = (elf_greg_t *) gregsetp;
   struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+  const int elf_ngreg = 48;
+
+
+  /* Start with zeros.  */
+  memset (regp, 0, elf_ngreg * sizeof (*regp));

   for (regi = 0; regi < 32; regi++)
     {
       if ((regno == -1) || regno == regi)
-        regcache_collect (regi, regp + PT_R0 + regi);
+	right_fill_reg (regi, (regp + PT_R0 + regi));
     }

   if ((regno == -1) || regno == PC_REGNUM)
-    regcache_collect (PC_REGNUM, regp + PT_NIP);
+    right_fill_reg (PC_REGNUM, regp + PT_NIP);
   if ((regno == -1) || regno == tdep->ppc_lr_regnum)
-    regcache_collect (tdep->ppc_lr_regnum, regp + PT_LNK);
+    right_fill_reg (tdep->ppc_lr_regnum, regp + PT_LNK);
   if ((regno == -1) || regno == tdep->ppc_cr_regnum)
     regcache_collect (tdep->ppc_cr_regnum, regp + PT_CCR);
   if ((regno == -1) || regno == tdep->ppc_xer_regnum)
     regcache_collect (tdep->ppc_xer_regnum, regp + PT_XER);
   if ((regno == -1) || regno == tdep->ppc_ctr_regnum)
-    regcache_collect (tdep->ppc_ctr_regnum, regp + PT_CTR);
+    right_fill_reg (tdep->ppc_ctr_regnum, regp + PT_CTR);
 #ifdef PT_MQ
   if (((regno == -1) || regno == tdep->ppc_mq_regnum)
       && (tdep->ppc_mq_regnum != -1))
-    regcache_collect (tdep->ppc_mq_regnum, regp + PT_MQ);
+    right_fill_reg (tdep->ppc_mq_regnum, regp + PT_MQ);
 #endif
   if ((regno == -1) || regno == tdep->ppc_ps_regnum)
-    regcache_collect (tdep->ppc_ps_regnum, regp + PT_MSR);
+    right_fill_reg (tdep->ppc_ps_regnum, regp + PT_MSR);
 }

 void
 supply_fpregset (gdb_fpregset_t * fpregsetp)
 {
-  ppc_linux_supply_fpregset ((char *) fpregsetp);
+  ppc_linux_supply_fpregset (NULL, current_regcache, -1, fpregsetp,
+			     sizeof (gdb_fpregset_t));
 }

 /* Given a pointer to a floating point register set in /proc format
@@ -557,12 +580,13 @@
 {
   int regi;
   struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+  bfd_byte *fpp = (void *) fpregsetp;

   for (regi = 0; regi < 32; regi++)
     {
       if ((regno == -1) || (regno == FP0_REGNUM + regi))
-	regcache_collect (FP0_REGNUM + regi, (char *) (*fpregsetp + regi));
+	regcache_collect (FP0_REGNUM + regi, fpp + 8 * regi);
     }
   if ((regno == -1) || regno == tdep->ppc_fpscr_regnum)
-    regcache_collect (tdep->ppc_fpscr_regnum, (char *) (*fpregsetp + regi));
+    right_fill_reg (tdep->ppc_fpscr_regnum, (fpp + 8 * 32));
 }
Index: ppc-linux-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/ppc-linux-tdep.c,v
retrieving revision 1.50
diff -u -r1.50 ppc-linux-tdep.c
--- ppc-linux-tdep.c	16 Feb 2004 21:49:22 -0000	1.50
+++ ppc-linux-tdep.c	15 Mar 2004 21:28:31 -0000
@@ -32,7 +32,7 @@
 #include "regcache.h"
 #include "value.h"
 #include "osabi.h"
-
+#include "regset.h"
 #include "solib-svr4.h"
 #include "ppc-tdep.h"

@@ -959,81 +959,114 @@
 };

 enum {
-  ELF_GREGSET_SIZE = (ELF_NGREG * 4),
   ELF_FPREGSET_SIZE = (ELF_NFPREG * 8)
 };

+static void
+right_supply_register (struct regcache *regcache, int wordsize, int regnum,
+		       const bfd_byte *buf)
+{
+  regcache_raw_supply (regcache, regnum,
+		       (buf + wordsize
+			- register_size (current_gdbarch, regnum)));
+}
+
+/* Extract the register values found in the WORDSIZED ABI GREGSET,
+   storing their values in REGCACHE.  Note that some are left-aligned,
+   while others are right aligned.  */
+
 void
-ppc_linux_supply_gregset (char *buf)
+ppc_linux_supply_gregset (struct regcache *regcache,
+			  int regnum, const void *gregs, size_t size,
+			  int wordsize)
 {
   int regi;
-  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+  struct gdbarch *regcache_arch = get_regcache_arch (regcache);
+  struct gdbarch_tdep *regcache_tdep = gdbarch_tdep (regcache_arch);
+  const bfd_byte *buf = gregs;

   for (regi = 0; regi < 32; regi++)
-    supply_register (regi, buf + 4 * regi);
+    right_supply_register (regcache, wordsize, regi, buf + wordsize * regi);
+
+  right_supply_register (regcache, wordsize, gdbarch_pc_regnum (regcache_arch),
+			 buf + wordsize * PPC_LINUX_PT_NIP);
+  right_supply_register (regcache, wordsize, regcache_tdep->ppc_lr_regnum,
+			 buf + wordsize * PPC_LINUX_PT_LNK);
+  regcache_raw_supply (regcache, regcache_tdep->ppc_cr_regnum,
+		       buf + wordsize * PPC_LINUX_PT_CCR);
+  regcache_raw_supply (regcache, regcache_tdep->ppc_xer_regnum,
+		       buf + wordsize * PPC_LINUX_PT_XER);
+  regcache_raw_supply (regcache, regcache_tdep->ppc_ctr_regnum,
+		       buf + wordsize * PPC_LINUX_PT_CTR);
+  if (regcache_tdep->ppc_mq_regnum != -1)
+    right_supply_register (regcache, wordsize, regcache_tdep->ppc_mq_regnum,
+			   buf + wordsize * PPC_LINUX_PT_MQ);
+  right_supply_register (regcache, wordsize, regcache_tdep->ppc_ps_regnum,
+			 buf + wordsize * PPC_LINUX_PT_MSR);
+}

-  supply_register (PC_REGNUM, buf + 4 * PPC_LINUX_PT_NIP);
-  supply_register (tdep->ppc_lr_regnum, buf + 4 * PPC_LINUX_PT_LNK);
-  supply_register (tdep->ppc_cr_regnum, buf + 4 * PPC_LINUX_PT_CCR);
-  supply_register (tdep->ppc_xer_regnum, buf + 4 * PPC_LINUX_PT_XER);
-  supply_register (tdep->ppc_ctr_regnum, buf + 4 * PPC_LINUX_PT_CTR);
-  if (tdep->ppc_mq_regnum != -1)
-    supply_register (tdep->ppc_mq_regnum, buf + 4 * PPC_LINUX_PT_MQ);
-  supply_register (tdep->ppc_ps_regnum, buf + 4 * PPC_LINUX_PT_MSR);
+static void
+ppc32_linux_supply_gregset (const struct regset *regset,
+			    struct regcache *regcache,
+			    int regnum, const void *gregs, size_t size)
+{
+  ppc_linux_supply_gregset (regcache, regnum, gregs, size, 4);
 }

+static struct regset ppc32_linux_gregset = {
+  NULL, ppc32_linux_supply_gregset
+};
+
+static void
+ppc64_linux_supply_gregset (const struct regset *regset,
+			    struct regcache * regcache,
+			    int regnum, const void *gregs, size_t size)
+{
+  ppc_linux_supply_gregset (regcache, regnum, gregs, size, 8);
+}
+
+static struct regset ppc64_linux_gregset = {
+  NULL, ppc64_linux_supply_gregset
+};
+
 void
-ppc_linux_supply_fpregset (char *buf)
+ppc_linux_supply_fpregset (const struct regset *regset,
+			   struct regcache * regcache,
+			   int regnum, const void *fpset, size_t size)
 {
   int regi;
-  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+  struct gdbarch *regcache_arch = get_regcache_arch (regcache);
+  struct gdbarch_tdep *regcache_tdep = gdbarch_tdep (regcache_arch);
+  const bfd_byte *buf = fpset;

   for (regi = 0; regi < 32; regi++)
-    supply_register (FP0_REGNUM + regi, buf + 8 * regi);
+    regcache_raw_supply (regcache, FP0_REGNUM + regi, buf + 8 * regi);

   /* The FPSCR is stored in the low order word of the last doubleword in the
      fpregset.  */
-  supply_register (tdep->ppc_fpscr_regnum, buf + 8 * 32 + 4);
+  regcache_raw_supply (regcache, regcache_tdep->ppc_fpscr_regnum,
+		       buf + 8 * 32 + 4);
 }

-/*
-  Use a local version of this function to get the correct types for regsets.
-*/
+static struct regset ppc_linux_fpregset = { NULL, ppc_linux_supply_fpregset };

-static void
-fetch_core_registers (char *core_reg_sect,
-		      unsigned core_reg_size,
-		      int which,
-		      CORE_ADDR reg_addr)
+static const struct regset *
+ppc_linux_regset_from_core_section (struct gdbarch *core_arch,
+				    const char *sect_name, size_t sect_size)
 {
-  if (which == 0)
+  struct gdbarch_tdep *tdep = gdbarch_tdep (core_arch);
+  if (strcmp (sect_name, ".reg") == 0)
     {
-      if (core_reg_size == ELF_GREGSET_SIZE)
-	ppc_linux_supply_gregset (core_reg_sect);
+      if (tdep->wordsize == 4)
+	return &ppc32_linux_gregset;
       else
-	warning ("wrong size gregset struct in core file");
-    }
-  else if (which == 2)
-    {
-      if (core_reg_size == ELF_FPREGSET_SIZE)
-	ppc_linux_supply_fpregset (core_reg_sect);
-      else
-	warning ("wrong size fpregset struct in core file");
+	return &ppc64_linux_gregset;
     }
+  if (strcmp (sect_name, ".reg2") == 0)
+    return &ppc_linux_fpregset;
+  return NULL;
 }

-/* Register that we are able to handle ELF file formats using standard
-   procfs "regset" structures.  */
-
-static struct core_fns ppc_linux_regset_core_fns =
-{
-  bfd_target_elf_flavour,	/* core_flavour */
-  default_check_format,		/* check_format */
-  default_core_sniffer,		/* core_sniffer */
-  fetch_core_registers,		/* core_read_registers */
-  NULL				/* next */
-};
-
 static void
 ppc_linux_init_abi (struct gdbarch_info info,
                     struct gdbarch *gdbarch)
@@ -1086,6 +1119,7 @@
       /* PPC64 malloc's entry-point is called ".malloc".  */
       set_gdbarch_name_of_malloc (gdbarch, ".malloc");
     }
+  set_gdbarch_regset_from_core_section (gdbarch, ppc_linux_regset_from_core_section);
 }

 void
@@ -1099,5 +1133,4 @@
                          ppc_linux_init_abi);
   gdbarch_register_osabi (bfd_arch_rs6000, bfd_mach_rs6k, GDB_OSABI_LINUX,
                          ppc_linux_init_abi);
-  add_core_fns (&ppc_linux_regset_core_fns);
 }
Index: ppc-tdep.h
===================================================================
RCS file: /cvs/src/src/gdb/ppc-tdep.h,v
retrieving revision 1.25
diff -u -r1.25 ppc-tdep.h
--- ppc-tdep.h	10 Nov 2003 22:47:28 -0000	1.25
+++ ppc-tdep.h	15 Mar 2004 21:28:31 -0000
@@ -1,6 +1,7 @@
 /* Target-dependent code for GDB, the GNU debugger.
-   Copyright 2000, 2001, 2002, 2003
-   Free Software Foundation, Inc.
+
+   Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation,
+   Inc.

    This file is part of GDB.

@@ -62,8 +63,12 @@
 						    CORE_ADDR bpaddr);
 int ppc_linux_memory_remove_breakpoint (CORE_ADDR addr, char *contents_cache);
 struct link_map_offsets *ppc_linux_svr4_fetch_link_map_offsets (void);
-void ppc_linux_supply_gregset (char *buf);
-void ppc_linux_supply_fpregset (char *buf);
+void ppc_linux_supply_gregset (struct regcache *regcache,
+			       int regnum, const void *gregs, size_t size,
+			       int wordsize);
+void ppc_linux_supply_fpregset (const struct regset *regset,
+				struct regcache *regcache,
+				int regnum, const void *gregs, size_t size);

 enum return_value_convention ppc64_sysv_abi_return_value (struct gdbarch *gdbarch,
 							  struct type *valtype,
2004-03-15 21:35:25 +00:00
Andrew Cagney
ed6edd9bf2 2004-03-15 Andrew Cagney <cagney@redhat.com>
* rs6000-tdep.c (rs6000_register_virtual_type): Make registers
	unsigned.
2004-03-15 21:21:01 +00:00
Andrew Cagney
030f20e19e 2004-03-15 Andrew Cagney <cagney@redhat.com>
* gdbarch.sh (gdbarch_data_pre_init_fytpe)
	(gdbarch_data_register_pre_init, gdbarch_data_post_init_fytpe)
	(gdbarch_data_register_post_init): Replace gdbarch_data_init_ftype
	and register_gdbarch_data.
	(deprecated_set_gdbarch_data): Rename set_gdbarch_data.
	(struct gdbarch_data): Replace "init" by "pre_init" and
	"post_init".
	* gdbarch.h, gdbarch.c: Re-generate.
	* dwarf2-frame.c (dwarf2_frame_init): Replace "gdbarch" paramter
	with"obstack", use OBSTACK_ZALLOC.
	(dwarf2_frame_ops): Delete.
	(dwarf2_frame_set_init_reg): Use gdbarch_data.
	(dwarf2_frame_init_reg): Use gdbarch_data.
	(_initialize_dwarf2_frame): Use gdbarch_data_register_pre_init.
	* solib-svr4.c (set_solib_svr4_fetch_link_map_offsets)
	(_initialize_svr4_solib): Update.
	* user-regs.c (_initialize_user_regs): Update.
	* reggroups.c (_initialize_reggroup): Update.
	* regcache.c (_initialize_regcache): Update.
	* mips-linux-tdep.c (_initialize_mips_linux_tdep): Update.
	* libunwind-frame.c (_initialize_libunwind_frame): Update.
	* gnu-v3-abi.c (init_gnuv3_ops): Update.
	* frame-unwind.c (_initialize_frame_unwind): Update.
	* frame-base.c (_initialize_frame_base): Update.
	* user-regs.c (user_reg_add): Update.
	* reggroups.c (reggroup_add): Update.
	* mips-linux-tdep.c (set_mips_linux_register_addr): Update.
	* libunwind-frame.c (libunwind_frame_set_descr): Update.
	* frame-unwind.c (frame_unwind_append_sniffer): Update.
	* frame-base.c (frame_base_table): Update.
	* remote.c (_initialize_remote): Update.
	* gdb_obstack.h (OBSTACK_ZALLOC, OBSTACK_CALLOC): Define.
2004-03-15 20:38:08 +00:00
Andrew Cagney
3111a3fcb7 2004-03-15 Andrew Cagney <cagney@redhat.com>
* cris-tdep.c (bfd_lookup_symbol): Delete unused function.
2004-03-15 20:32:54 +00:00
Kevin Buettner
5ecb7103b5 * Makefile.in (frv-linux-tdep.o): Add dependencies.
* frv-linux-tdep.c: New file.
	* frv-tdep.c (struct gdbarch_tdep): Add new field
	``sigcontext_reg_addr''.
	(frv_set_sigcontext_reg_addr, frv_sigtramp,frame_cache)
	(frv_sigtramp_frame_this_id, frv_sigtramp_frame_prev_register)
	(frv_sigramp_frame_sniffer): New functions.
	(frv_sigtramp_frame_unwind): New static global.
	(frv_gdbarch_init): Hook in ABI-specific overrides.  Hook up frame
	sniffers.
	* frv-tdep.h (frv_set_sigcontext_reg_addr): New function.
	* config/frv/frv.mt (TDEPFILES): Add frv-linux-tdep.o.
2004-03-15 19:42:25 +00:00
Kevin Buettner
1ccda5e956 * frv-tdep.c (frv_analyze_prologue): Terminate prologue scan,
but not via a call to error(), when unable to read memory.
2004-03-15 18:49:02 +00:00
Kevin Buettner
b375a0a5da * frv-tdep.c (frv_call_dummy_words): Delete.
(frv_frame_unwind_cache): Delete unused variable, ``prev_sp''.
2004-03-15 18:31:37 +00:00
Andrew Cagney
4fdf61212c Index: ChangeLog
2004-03-15  Andrew Cagney  <cagney@redhat.com>

	* infrun.c (handle_step_into_function, step_over_function): Only
	update and use STEP_FRAME_ID when the system is using legacy
	frames.  Update comments.
2004-03-15 17:12:50 +00:00