From 0d43c8e71131733b3e5d50df8454b2fbd7ac0c76 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Wed, 7 Aug 1996 16:05:19 +0000 Subject: [PATCH] * 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. Fixing assorted structure passing/return problems reported by the net. --- gdb/ChangeLog | 9 +++++++++ gdb/config/pa/tm-hppa.h | 4 ++++ gdb/hppa-tdep.c | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2bf3ace..63f8ea0 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -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 * config/powerpc/nm-aix.h (PTRACE_ARG3_TYPE): Define to "int *", diff --git a/gdb/config/pa/tm-hppa.h b/gdb/config/pa/tm-hppa.h index 5220c64..61df3c5 100644 --- a/gdb/config/pa/tm-hppa.h +++ b/gdb/config/pa/tm-hppa.h @@ -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) diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c index 63183a4..77faf25 100644 --- a/gdb/hppa-tdep.c +++ b/gdb/hppa-tdep.c @@ -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. */ -- 2.7.4