* valops.c (call_function_by_hand): Handle aligning stacks that
authorJeff Law <law@redhat.com>
Wed, 7 Aug 1996 16:05:19 +0000 (16:05 +0000)
committerJeff Law <law@redhat.com>
Wed, 7 Aug 1996 16:05:19 +0000 (16:05 +0000)
        grow up correctly.
        * config/pa/tm-hppa.h (USE_STRUCT_CONVENTION): Define.
        (STACK_ALIGN): Define.
        * hppa-tdep.c (hppa_alignof): Don't demand a minumim two byte
        alignment on structs/unions.
Fixing assorted structure passing/return problems reported by the net.

gdb/ChangeLog
gdb/config/pa/tm-hppa.h
gdb/hppa-tdep.c

index 2bf3ace3e66ee27919c76a841314240ce589e802..63f8ea023bf81516adbcd2c567d88178c7e16eee 100644 (file)
@@ -1,3 +1,12 @@
+Wed Aug  7 09:59:19 1996  Jeffrey A Law  (law@cygnus.com)
+
+       * valops.c (call_function_by_hand): Handle aligning stacks that
+       grow up correctly.
+       * config/pa/tm-hppa.h (USE_STRUCT_CONVENTION): Define.
+       (STACK_ALIGN): Define.
+       * hppa-tdep.c (hppa_alignof): Don't demand a minumim two byte
+       alignment on structs/unions.
+       
 Sun Aug  4 16:22:42 1996  Fred Fish  <fnf@cygnus.com>
 
        * config/powerpc/nm-aix.h (PTRACE_ARG3_TYPE): Define to "int *",
index 5220c6466c7053c7f2511201be8a82f87d4e30b0..61df3c5de5e92632a2a04bc7657fdb15e215968b 100644 (file)
@@ -63,6 +63,8 @@ struct inferior_status;
 #define REG_STRUCT_HAS_ADDR(gcc_p,type) \
   (TYPE_LENGTH (type) > 8)
 
+#define USE_STRUCT_CONVENTION(gcc_p,type) (TYPE_LENGTH (type) > 8)
+
 /* Offset from address of function to start of its code.
    Zero on most machines.  */
 
@@ -664,3 +666,5 @@ extern int hpread_adjust_stack_address PARAMS ((CORE_ADDR));
    probably much more common.  (FIXME). */
 
 #define COERCE_FLOAT_TO_DOUBLE (current_language -> la_language == language_c)
+
+#define STACK_ALIGN(ADDR) (((ADDR) + 7) & -8)
index 63183a4c0f1d3fd2a92160c86f7e4e45f6802440..77faf25ad72c35b3ca89e0fc8e3d9c049ff34e0d 100644 (file)
@@ -1797,7 +1797,7 @@ hppa_alignof (type)
       return hppa_alignof (TYPE_FIELD_TYPE (type, 0));
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
-      max_align = 2;
+      max_align = 1;
       for (i = 0; i < TYPE_NFIELDS (type); i++)
        {
          /* Bit fields have no real alignment. */