This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[gdb_6_0-branch commit] PPC64: new call_dummy_address gdbarch method
- From: Jim Blandy <jimb at redhat dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: 27 Jun 2003 19:22:12 -0500
- Subject: [gdb_6_0-branch commit] PPC64: new call_dummy_address gdbarch method
I've committed this to the 6.0 branch, with verbal approval on the
phone from Kevin Buettner, the PPC Linux maintainer. It is already
committed to the trunk.
2003-06-06 Jim Blandy <jimb@redhat.com>
* ppc-linux-tdep.c (ppc64_call_dummy_address): New function.
(ppc_linux_init_abi): Set it as the gdbarch's call_dummy_address
method.
Index: gdb/ppc-linux-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/ppc-linux-tdep.c,v
retrieving revision 1.28.8.5
diff -c -r1.28.8.5 ppc-linux-tdep.c
*** gdb/ppc-linux-tdep.c 7 Jun 2003 00:06:05 -0000 1.28.8.5
--- gdb/ppc-linux-tdep.c 7 Jun 2003 00:15:33 -0000
***************
*** 893,898 ****
--- 893,910 ----
}
+ /* On 64-bit PowerPC Linux, the ELF header's e_entry field is the
+ address of a function descriptor for the entry point function, not
+ the actual entry point itself. So to find the actual address at
+ which execution should begin, we need to fetch the function's entry
+ point from that descriptor. */
+ static CORE_ADDR
+ ppc64_call_dummy_address (void)
+ {
+ return ppc64_desc_entry_point (entry_point_address ());
+ }
+
+
enum {
ELF_NGREG = 48,
ELF_NFPREG = 33,
***************
*** 1014,1019 ****
--- 1026,1033 ----
if (tdep->wordsize == 8)
{
+ set_gdbarch_call_dummy_address (gdbarch, ppc64_call_dummy_address);
+
set_gdbarch_in_solib_call_trampoline
(gdbarch, ppc64_in_solib_call_trampoline);
set_gdbarch_skip_trampoline_code (gdbarch, ppc64_skip_trampoline_code);