diff options
author | Kai Tietz <ktietz@redhat.com> | 2012-03-01 16:22:09 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2012-03-01 16:22:09 +0000 |
commit | f775c276fd1f89cc9d561db0890a356e7d6e50b8 (patch) | |
tree | e9c1f14c5d7a5fa8534879736c46e492b2220994 /soft-fp | |
parent | 9ea559e401aefe0528600270b62d52195f1347eb (diff) | |
download | glibc-f775c276fd1f89cc9d561db0890a356e7d6e50b8.tar.gz |
soft-fp: Support using struct layout attributes on bit-fields.
Diffstat (limited to 'soft-fp')
-rw-r--r-- | soft-fp/double.h | 6 | ||||
-rw-r--r-- | soft-fp/extended.h | 6 | ||||
-rw-r--r-- | soft-fp/quad.h | 8 | ||||
-rw-r--r-- | soft-fp/single.h | 4 | ||||
-rw-r--r-- | soft-fp/soft-fp.h | 12 |
5 files changed, 23 insertions, 13 deletions
diff --git a/soft-fp/double.h b/soft-fp/double.h index e247e6ebb3..5bad49c14d 100644 --- a/soft-fp/double.h +++ b/soft-fp/double.h @@ -1,6 +1,6 @@ /* Software floating-point emulation. Definitions for IEEE Double Precision - Copyright (C) 1997, 1998, 1999, 2006, 2007, 2008, 2009 + Copyright (C) 1997, 1998, 1999, 2006, 2007, 2008, 2009, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson (rth@cygnus.com), @@ -67,7 +67,7 @@ typedef float DFtype __attribute__((mode(DF))); union _FP_UNION_D { DFtype flt; - struct { + struct _FP_STRUCT_LAYOUT { #if __BYTE_ORDER == __BIG_ENDIAN unsigned sign : 1; unsigned exp : _FP_EXPBITS_D; @@ -166,7 +166,7 @@ union _FP_UNION_D union _FP_UNION_D { DFtype flt; - struct { + struct _FP_STRUCT_LAYOUT { #if __BYTE_ORDER == __BIG_ENDIAN unsigned sign : 1; unsigned exp : _FP_EXPBITS_D; diff --git a/soft-fp/extended.h b/soft-fp/extended.h index 3ab6b6aa25..af9c6e65a8 100644 --- a/soft-fp/extended.h +++ b/soft-fp/extended.h @@ -1,6 +1,6 @@ /* Software floating-point emulation. Definitions for IEEE Extended Precision. - Copyright (C) 1999,2006,2007 Free Software Foundation, Inc. + Copyright (C) 1999,2006,2007,2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek (jj@ultra.linux.cz). @@ -63,7 +63,7 @@ typedef float XFtype __attribute__((mode(XF))); union _FP_UNION_E { XFtype flt; - struct + struct _FP_STRUCT_LAYOUT { #if __BYTE_ORDER == __BIG_ENDIAN unsigned long pad1 : _FP_W_TYPE_SIZE; @@ -262,7 +262,7 @@ union _FP_UNION_E union _FP_UNION_E { XFtype flt; - struct { + struct _FP_STRUCT_LAYOUT { #if __BYTE_ORDER == __BIG_ENDIAN _FP_W_TYPE pad : (_FP_W_TYPE_SIZE - 1 - _FP_EXPBITS_E); unsigned sign : 1; diff --git a/soft-fp/quad.h b/soft-fp/quad.h index ea70138790..b05bd2dba9 100644 --- a/soft-fp/quad.h +++ b/soft-fp/quad.h @@ -1,6 +1,6 @@ /* Software floating-point emulation. Definitions for IEEE Quad Precision. - Copyright (C) 1997,1998,1999,2006,2007 Free Software Foundation, Inc. + Copyright (C) 1997,1998,1999,2006,2007,2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson (rth@cygnus.com), Jakub Jelinek (jj@ultra.linux.cz), @@ -66,7 +66,7 @@ typedef float TFtype __attribute__((mode(TF))); union _FP_UNION_Q { TFtype flt; - struct + struct _FP_STRUCT_LAYOUT { #if __BYTE_ORDER == __BIG_ENDIAN unsigned sign : 1; @@ -170,10 +170,10 @@ union _FP_UNION_Q union _FP_UNION_Q { TFtype flt /* __attribute__((mode(TF))) */ ; - struct { + struct _FP_STRUCT_LAYOUT { _FP_W_TYPE a, b; } longs; - struct { + struct _FP_STRUCT_LAYOUT { #if __BYTE_ORDER == __BIG_ENDIAN unsigned sign : 1; unsigned exp : _FP_EXPBITS_Q; diff --git a/soft-fp/single.h b/soft-fp/single.h index c10d25a4a4..119d0db331 100644 --- a/soft-fp/single.h +++ b/soft-fp/single.h @@ -1,6 +1,6 @@ /* Software floating-point emulation. Definitions for IEEE Single Precision. - Copyright (C) 1997,1998,1999,2006 Free Software Foundation, Inc. + Copyright (C) 1997,1998,1999,2006,2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson (rth@cygnus.com), Jakub Jelinek (jj@ultra.linux.cz), @@ -57,7 +57,7 @@ typedef float SFtype __attribute__((mode(SF))); union _FP_UNION_S { SFtype flt; - struct { + struct _FP_STRUCT_LAYOUT { #if __BYTE_ORDER == __BIG_ENDIAN unsigned sign : 1; unsigned exp : _FP_EXPBITS_S; diff --git a/soft-fp/soft-fp.h b/soft-fp/soft-fp.h index ed4d39d44c..46cb1cfaef 100644 --- a/soft-fp/soft-fp.h +++ b/soft-fp/soft-fp.h @@ -1,5 +1,5 @@ /* Software floating-point emulation. - Copyright (C) 1997,1998,1999,2000,2002,2003,2005,2006,2007 + Copyright (C) 1997,1998,1999,2000,2002,2003,2005,2006,2007,2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson (rth@cygnus.com), @@ -84,6 +84,16 @@ #define FP_EX_DENORM 0 #endif +/* _FP_STRUCT_LAYOUT may be defined as an attribute to determine the + struct layout variant used for structures where bit-fields are used + to access specific parts of binary floating-point numbers. This is + required for systems where the default ABI uses struct layout with + differences in how consecutive bit-fields are laid out from the + default expected by soft-fp. */ +#ifndef _FP_STRUCT_LAYOUT +#define _FP_STRUCT_LAYOUT +#endif + #ifdef _FP_DECL_EX #define FP_DECL_EX \ int _fex = 0; \ |