aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--soft-fp/double.h6
-rw-r--r--soft-fp/extended.h6
-rw-r--r--soft-fp/quad.h8
-rw-r--r--soft-fp/single.h4
-rw-r--r--soft-fp/soft-fp.h12
6 files changed, 32 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index e2bc926..a2e0d6c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2012-03-01 Kai Tietz <ktietz@redhat.com>
+
+ * soft-fp/soft-fp.h (_FP_STRUCT_LAYOUT): New macro.
+ * soft-fp/quad.h (_FP_UNION_Q): Use _FP_STRUCT_LAYOUT on struct
+ containing bit-fields.
+ * soft-fp/extended.h (_FP_UNION_E): Likewise.
+ * soft-fp/single.h (_FP_UNION_S): Likewise.
+ * soft-fp/double.h (_FP_UNION_D): Likewise.
+
2012-02-29 Joseph Myers <joseph@codesourcery.com>
[BZ #13786]
diff --git a/soft-fp/double.h b/soft-fp/double.h
index e247e6e..5bad49c 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 3ab6b6a..af9c6e6 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 ea70138..b05bd2d 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 c10d25a..119d0db 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 ed4d39d..46cb1cf 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; \