This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[PATCH] rs6000-tdep.c: Use rs6000_* methods for 64-bit SysV ABI.
- From: Kevin Buettner <kevinb at redhat dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: Fri, 12 Apr 2002 10:18:33 -0700
- Subject: [PATCH] rs6000-tdep.c: Use rs6000_* methods for 64-bit SysV ABI.
I've just committed the patch below.
Note (see the comments) that I do have some concerns about this patch.
However, I think that we're better off with Jimi's changes than we are
with the status quo.
From Jimi X <jimix@watson.ibm.com>:
* rs6000-tdep.c (rs6000_gdbarch_init): Use rs6000_* methods for
64-bit SysV ABI.
Index: rs6000-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/rs6000-tdep.c,v
retrieving revision 1.52
diff -u -p -r1.52 rs6000-tdep.c
--- rs6000-tdep.c 12 Apr 2002 07:37:18 -0000 1.52
+++ rs6000-tdep.c 12 Apr 2002 07:59:08 -0000
@@ -2658,7 +2658,14 @@ rs6000_gdbarch_init (struct gdbarch_info
set_gdbarch_extract_return_value (gdbarch, rs6000_extract_return_value);
- if (sysv_abi)
+ /* Note: kevinb/2002-04-12: I'm not convinced that rs6000_push_arguments()
+ is correct for the SysV ABI when the wordsize is 8, but I'm also
+ fairly certain that ppc_sysv_abi_push_arguments() will give even
+ worse results since it only works for 32-bit code. So, for the moment,
+ we're better off calling rs6000_push_arguments() since it works for
+ 64-bit code. At some point in the future, this matter needs to be
+ revisited. */
+ if (sysv_abi && wordsize == 4)
set_gdbarch_push_arguments (gdbarch, ppc_sysv_abi_push_arguments);
else
set_gdbarch_push_arguments (gdbarch, rs6000_push_arguments);
@@ -2699,7 +2706,9 @@ rs6000_gdbarch_init (struct gdbarch_info
}
set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
- if (osabi == ELFOSABI_LINUX)
+ /* Note: kevinb/2002-04-12: See note above regarding *_push_arguments().
+ The same remarks hold for the methods below. */
+ if (osabi == ELFOSABI_LINUX && wordsize == 4)
{
set_gdbarch_frameless_function_invocation (gdbarch,
ppc_linux_frameless_function_invocation);