[parisc-linux] GCC patch to fix various problems in the passing of aggregates

John David Anglin dave@hiauly1.hia.nrc.ca
Tue, 17 Sep 2002 14:01:02 -0400 (EDT)


This is a heads up to those that build from source.  A patch was applied
yesterday to the gcc 3.3 trunk to fix various ABI related problems in the
passing of aggregates.  It fixes various va_arg problems and improves
compatibility with the HP specified runtime architectures.  The downside
is that code (libraries) compiled with earlier versions of gcc may be
incompatible with new code.

The impact for 32-bit code is that 5-7 byte structs are now passed
correctly.  The patch also fixes a problem in passing structs with
a single char or short field.  Variable and zero sized types are now
also handled correctly.

The impact for 64-bit code is more significant.  All aggregates 
with a non-zero size MOD 8 were incorrectly padded when passed
by value.  This is now fixed.  As a GCC extension to the runtime,
variable and zero sized types are passed by invisible reference.

For more info, see <http://gcc.gnu.org/ml/gcc-patches/2002-09/msg00972.html>
and <http://gcc.gnu.org/ml/gcc-patches/2002-09/msg00975.html>.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)