This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]