* 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 2bf3ace..63f8ea0 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 *",
 Sun Aug  4 16:22:42 1996  Fred Fish  <fnf@cygnus.com>
 
        * config/powerpc/nm-aix.h (PTRACE_ARG3_TYPE): Define to "int *",
index 5220c64..61df3c5 100644 (file)
@@ -63,6 +63,8 @@ struct inferior_status;
 #define REG_STRUCT_HAS_ADDR(gcc_p,type) \
   (TYPE_LENGTH (type) > 8)
 
 #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.  */
 
 /* 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)
    probably much more common.  (FIXME). */
 
 #define COERCE_FLOAT_TO_DOUBLE (current_language -> la_language == language_c)
+
+#define STACK_ALIGN(ADDR) (((ADDR) + 7) & -8)
index 63183a4..77faf25 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:
       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. */
       for (i = 0; i < TYPE_NFIELDS (type); i++)
        {
          /* Bit fields have no real alignment. */