mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
soft-fp: Support using struct layout attributes on bit-fields.
This commit is contained in:
@ -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>
|
2012-02-29 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
[BZ #13786]
|
[BZ #13786]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Software floating-point emulation.
|
/* Software floating-point emulation.
|
||||||
Definitions for IEEE Double Precision
|
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.
|
Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Richard Henderson (rth@cygnus.com),
|
Contributed by Richard Henderson (rth@cygnus.com),
|
||||||
@ -67,7 +67,7 @@ typedef float DFtype __attribute__((mode(DF)));
|
|||||||
union _FP_UNION_D
|
union _FP_UNION_D
|
||||||
{
|
{
|
||||||
DFtype flt;
|
DFtype flt;
|
||||||
struct {
|
struct _FP_STRUCT_LAYOUT {
|
||||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||||
unsigned sign : 1;
|
unsigned sign : 1;
|
||||||
unsigned exp : _FP_EXPBITS_D;
|
unsigned exp : _FP_EXPBITS_D;
|
||||||
@ -166,7 +166,7 @@ union _FP_UNION_D
|
|||||||
union _FP_UNION_D
|
union _FP_UNION_D
|
||||||
{
|
{
|
||||||
DFtype flt;
|
DFtype flt;
|
||||||
struct {
|
struct _FP_STRUCT_LAYOUT {
|
||||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||||
unsigned sign : 1;
|
unsigned sign : 1;
|
||||||
unsigned exp : _FP_EXPBITS_D;
|
unsigned exp : _FP_EXPBITS_D;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Software floating-point emulation.
|
/* Software floating-point emulation.
|
||||||
Definitions for IEEE Extended Precision.
|
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.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Jakub Jelinek (jj@ultra.linux.cz).
|
Contributed by Jakub Jelinek (jj@ultra.linux.cz).
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ typedef float XFtype __attribute__((mode(XF)));
|
|||||||
union _FP_UNION_E
|
union _FP_UNION_E
|
||||||
{
|
{
|
||||||
XFtype flt;
|
XFtype flt;
|
||||||
struct
|
struct _FP_STRUCT_LAYOUT
|
||||||
{
|
{
|
||||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||||
unsigned long pad1 : _FP_W_TYPE_SIZE;
|
unsigned long pad1 : _FP_W_TYPE_SIZE;
|
||||||
@ -262,7 +262,7 @@ union _FP_UNION_E
|
|||||||
union _FP_UNION_E
|
union _FP_UNION_E
|
||||||
{
|
{
|
||||||
XFtype flt;
|
XFtype flt;
|
||||||
struct {
|
struct _FP_STRUCT_LAYOUT {
|
||||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||||
_FP_W_TYPE pad : (_FP_W_TYPE_SIZE - 1 - _FP_EXPBITS_E);
|
_FP_W_TYPE pad : (_FP_W_TYPE_SIZE - 1 - _FP_EXPBITS_E);
|
||||||
unsigned sign : 1;
|
unsigned sign : 1;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Software floating-point emulation.
|
/* Software floating-point emulation.
|
||||||
Definitions for IEEE Quad Precision.
|
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.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Richard Henderson (rth@cygnus.com),
|
Contributed by Richard Henderson (rth@cygnus.com),
|
||||||
Jakub Jelinek (jj@ultra.linux.cz),
|
Jakub Jelinek (jj@ultra.linux.cz),
|
||||||
@ -66,7 +66,7 @@ typedef float TFtype __attribute__((mode(TF)));
|
|||||||
union _FP_UNION_Q
|
union _FP_UNION_Q
|
||||||
{
|
{
|
||||||
TFtype flt;
|
TFtype flt;
|
||||||
struct
|
struct _FP_STRUCT_LAYOUT
|
||||||
{
|
{
|
||||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||||
unsigned sign : 1;
|
unsigned sign : 1;
|
||||||
@ -170,10 +170,10 @@ union _FP_UNION_Q
|
|||||||
union _FP_UNION_Q
|
union _FP_UNION_Q
|
||||||
{
|
{
|
||||||
TFtype flt /* __attribute__((mode(TF))) */ ;
|
TFtype flt /* __attribute__((mode(TF))) */ ;
|
||||||
struct {
|
struct _FP_STRUCT_LAYOUT {
|
||||||
_FP_W_TYPE a, b;
|
_FP_W_TYPE a, b;
|
||||||
} longs;
|
} longs;
|
||||||
struct {
|
struct _FP_STRUCT_LAYOUT {
|
||||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||||
unsigned sign : 1;
|
unsigned sign : 1;
|
||||||
unsigned exp : _FP_EXPBITS_Q;
|
unsigned exp : _FP_EXPBITS_Q;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Software floating-point emulation.
|
/* Software floating-point emulation.
|
||||||
Definitions for IEEE Single Precision.
|
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.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Richard Henderson (rth@cygnus.com),
|
Contributed by Richard Henderson (rth@cygnus.com),
|
||||||
Jakub Jelinek (jj@ultra.linux.cz),
|
Jakub Jelinek (jj@ultra.linux.cz),
|
||||||
@ -57,7 +57,7 @@ typedef float SFtype __attribute__((mode(SF)));
|
|||||||
union _FP_UNION_S
|
union _FP_UNION_S
|
||||||
{
|
{
|
||||||
SFtype flt;
|
SFtype flt;
|
||||||
struct {
|
struct _FP_STRUCT_LAYOUT {
|
||||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||||
unsigned sign : 1;
|
unsigned sign : 1;
|
||||||
unsigned exp : _FP_EXPBITS_S;
|
unsigned exp : _FP_EXPBITS_S;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Software floating-point emulation.
|
/* 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.
|
Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Richard Henderson (rth@cygnus.com),
|
Contributed by Richard Henderson (rth@cygnus.com),
|
||||||
@ -84,6 +84,16 @@
|
|||||||
#define FP_EX_DENORM 0
|
#define FP_EX_DENORM 0
|
||||||
#endif
|
#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
|
#ifdef _FP_DECL_EX
|
||||||
#define FP_DECL_EX \
|
#define FP_DECL_EX \
|
||||||
int _fex = 0; \
|
int _fex = 0; \
|
||||||
|
Reference in New Issue
Block a user