aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/mips-tdep.c16
2 files changed, 13 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4cf2199..232511e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+Thu Jul 3 13:48:11 1997 Michael Snyder (msnyder@cleaver.cygnus.com)
+
+ * mips-tdep.c (mips_push_arguments): don't left-adjust 32-bit
+ integers in 64-bit register parameters before function calls.
+
Mon Jun 30 17:54:51 1997 Michael Snyder (msnyder@cleaver.cygnus.com)
* mips-tdep.c (mips_push_arguments): special-case handling for
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index f68ecee..de60fae 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -1375,19 +1375,19 @@ mips_push_arguments(nargs, args, sp, struct_return, struct_addr)
{
CORE_ADDR regval = extract_address (val, partial_len);
- /* A simple argument being passed in a general register.
- If the length is smaller than the register size, we
- have to adjust the alignment on big endian targets.
+ /* A non-floating-point argument being passed in a
+ general register. If a struct or union, and if
+ small enough for a single register, we have to
+ adjust the alignment.
- For structs, it appears that we have to
- do the same even in little endian mode.
+ It does not seem to be necessary to do the
+ same for integral types.
- But don't do this adjustment on EABI targets. */
+ Also don't do this adjustment on EABI targets. */
if (!MIPS_EABI &&
TYPE_LENGTH (arg_type) < MIPS_REGSIZE &&
- (TARGET_BYTE_ORDER == BIG_ENDIAN ||
- typecode == TYPE_CODE_STRUCT ||
+ (typecode == TYPE_CODE_STRUCT ||
typecode == TYPE_CODE_UNION))
regval <<= ((MIPS_REGSIZE - partial_len) *
TARGET_CHAR_BIT);