From 049375e2b5fc707436fd5d80337c253beededb2d Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 1 Feb 2018 20:44:49 +0000 Subject: [PATCH] Do not use packed structures in soft-fp. Building for soft-float ColdFire produces an error in soft-fp: In file included from ../sysdeps/ieee754/soft-fp/s_fmaf.c:42: ../soft-fp/single.h:85:3: error: 'packed' attribute ignored for field of type 'struct ' [-Werror=attributes] } bits __attribute__ ((packed)); ^ While this error only appears in that particular case, this attribute is in fact never useful, on any architecture. If you have struct __attribute__ ((packed)) { ... } bits; or struct { ... } __attribute__ ((packed)) bits; then the attribute affects the layout of the structure type. But with the form used in this code struct { ... } bits __attribute__ ((packed)); the field bits is being declared packed, but the layout of its type has already been determined at that point. If on any platform the layout of the sequence of bit-fields were wrong without the use of a packed attribute, the attribute would need to be used via a definition of _FP_STRUCT_LAYOUT, not in its present position. So this patch removes the useless attribute to fix the build for ColdFire soft-float. Tested with build-many-glibcs.py that installed stripped shared libraries are unchanged by the patch. * soft-fp/double.h (union _FP_UNION_D): Do not use attribute packed on bits. * soft-fp/extended.h (union _FP_UNION_E): Likewise. * soft-fp/half.h (union _FP_UNION_H): Likewise. * soft-fp/quad.h (union _FP_UNION_Q): Likewise. * soft-fp/single.h (union _FP_UNION_S): Likewise. --- ChangeLog | 9 +++++++++ soft-fp/double.h | 4 ++-- soft-fp/extended.h | 2 +- soft-fp/half.h | 2 +- soft-fp/quad.h | 2 +- soft-fp/single.h | 2 +- 6 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7923327a9d2..2d9734a688f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2018-02-01 Joseph Myers + + * soft-fp/double.h (union _FP_UNION_D): Do not use attribute + packed on bits. + * soft-fp/extended.h (union _FP_UNION_E): Likewise. + * soft-fp/half.h (union _FP_UNION_H): Likewise. + * soft-fp/quad.h (union _FP_UNION_Q): Likewise. + * soft-fp/single.h (union _FP_UNION_S): Likewise. + 2018-02-01 Carlos O'Donell Ramin Seyed-Moussavi Joseph Myers diff --git a/soft-fp/double.h b/soft-fp/double.h index f6c83d72534..23d11ccf726 100644 --- a/soft-fp/double.h +++ b/soft-fp/double.h @@ -89,7 +89,7 @@ union _FP_UNION_D unsigned exp : _FP_EXPBITS_D; unsigned sign : 1; # endif - } bits __attribute__ ((packed)); + } bits; }; # define FP_DECL_D(X) _FP_DECL (2, X) @@ -210,7 +210,7 @@ union _FP_UNION_D unsigned exp : _FP_EXPBITS_D; unsigned sign : 1; # endif - } bits __attribute__ ((packed)); + } bits; }; # define FP_DECL_D(X) _FP_DECL (1, X) diff --git a/soft-fp/extended.h b/soft-fp/extended.h index 102acfc1ca0..d2794320fa1 100644 --- a/soft-fp/extended.h +++ b/soft-fp/extended.h @@ -88,7 +88,7 @@ union _FP_UNION_E unsigned exp : _FP_EXPBITS_E; unsigned sign : 1; # endif /* not bigendian */ - } bits __attribute__ ((packed)); + } bits; }; diff --git a/soft-fp/half.h b/soft-fp/half.h index ea28db6c18e..a1fea7b0075 100644 --- a/soft-fp/half.h +++ b/soft-fp/half.h @@ -75,7 +75,7 @@ union _FP_UNION_H unsigned exp : _FP_EXPBITS_H; unsigned sign : 1; #endif - } bits __attribute__ ((packed)); + } bits; }; #define FP_DECL_H(X) _FP_DECL (1, X) diff --git a/soft-fp/quad.h b/soft-fp/quad.h index 71621f01bfe..9a9e4e71f73 100644 --- a/soft-fp/quad.h +++ b/soft-fp/quad.h @@ -93,7 +93,7 @@ union _FP_UNION_Q unsigned exp : _FP_EXPBITS_Q; unsigned sign : 1; # endif /* not bigendian */ - } bits __attribute__ ((packed)); + } bits; }; diff --git a/soft-fp/single.h b/soft-fp/single.h index 2918f78d971..d5c4a6d4a1e 100644 --- a/soft-fp/single.h +++ b/soft-fp/single.h @@ -82,7 +82,7 @@ union _FP_UNION_S unsigned exp : _FP_EXPBITS_S; unsigned sign : 1; #endif - } bits __attribute__ ((packed)); + } bits; }; #define FP_DECL_S(X) _FP_DECL (1, X) -- 2.39.2