aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Buettner <kevinb@redhat.com>2002-04-12 17:12:24 +0000
committerKevin Buettner <kevinb@redhat.com>2002-04-12 17:12:24 +0000
commit2ea5f656d72f0457f59fd540874bd2cad0687b1f (patch)
tree67f3756f272ec8064594b9746387e98d4f27756e
parent27b1578512b8f5594a84e588a19a6aa49704ffe5 (diff)
downloadfsf-binutils-gdb-2ea5f656d72f0457f59fd540874bd2cad0687b1f.zip
fsf-binutils-gdb-2ea5f656d72f0457f59fd540874bd2cad0687b1f.tar.gz
fsf-binutils-gdb-2ea5f656d72f0457f59fd540874bd2cad0687b1f.tar.bz2
From Jimi X <jimix@watson.ibm.com>:
* rs6000-tdep.c (rs6000_gdbarch_init): Use rs6000_* methods for 64-bit SysV ABI.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/rs6000-tdep.c13
2 files changed, 17 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9bd83cc..86df853 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,6 +1,12 @@
2002-04-12 Kevin Buettner <kevinb@redhat.com>
From Jimi X <jimix@watson.ibm.com>:
+ * rs6000-tdep.c (rs6000_gdbarch_init): Use rs6000_* methods for
+ 64-bit SysV ABI.
+
+2002-04-12 Kevin Buettner <kevinb@redhat.com>
+
+ From Jimi X <jimix@watson.ibm.com>:
* rs6000-tdep.c (rs6000_gdbarch_init): Compute ``wordsize'' from
bfd info.
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index 70683af..e0f07bc 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -2658,7 +2658,14 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
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 info, struct gdbarch_list *arches)
}
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);