badly initialized union in gcc include file (fwd)
Rejected by the spam filter when I first sent it...
I would appreciate any email feedback from the list.
Forwarded message:
> From branden Wed Dec 18 01:34:35 1996
> Subject: badly initialized union in gcc include file
> To: submit@bugs.debian.org
> Date: Wed, 18 Dec 1996 01:34:35 -0500 (EST)
> Cc: debian-user@lists.debian.org
> Reply-To: branden@purdue.edu
> X-Mailer: ELM [version 2.4 PL25]
> MIME-Version: 1.0
> Content-Type: text/plain; charset=US-ASCII
> Content-Transfer-Encoding: 7bit
> Content-Length: 3194
>
> Package: gcc
> Version: 2.7.2.1-2
>
> -- Please describe the problems with the package here
>
> Found a small syntactical blunder in
> /usr/lib/gcc-lib/i486-linux/2.7.2.1/include/float.h:
>
> /* float.h */
> #ifndef _FLOAT_H___
> #define _FLOAT_H___
> /* Produced by enquire version 4.3, CWI, Amsterdam */
>
> [...]
>
> /* Number of base-FLT_RADIX digits in the significand of a long double */
> #undef LDBL_MANT_DIG
> #define LDBL_MANT_DIG 64
> /* Number of decimal digits of precision in a long double */
> #undef LDBL_DIG
> #define LDBL_DIG 18
> /* Difference between 1.0 and the minimum long double greater than 1.0 */
> #undef LDBL_EPSILON
> #ifndef __LDBL_UNION__
> #define __LDBL_UNION__
> union __convert_long_double {
> unsigned __convert_long_double_i[4];
> long double __convert_long_double_d;
> };
> #endif
> #define LDBL_EPSILON (__extension__ ((union __convert_long_double) {0x0, 0x80000
> 000, 0x3fc0, 0x0}).__convert_long_double_d)
> /* Minimum int x such that FLT_RADIX**(x-1) is a normalised long double */
> #undef LDBL_MIN_EXP
> #define LDBL_MIN_EXP (-16381)
> /* Minimum normalised long double */
> #undef LDBL_MIN
> #define LDBL_MIN (__extension__ ((union __convert_long_double) {0x0, 0x80000000,
> 0x1, 0x0}).__convert_long_double_d)
> /* Minimum int x such that 10**x is a normalised long double */
> #undef LDBL_MIN_10_EXP
> #define LDBL_MIN_10_EXP (-4931)
> /* Maximum int x such that FLT_RADIX**(x-1) is a representable long double */
> #undef LDBL_MAX_EXP
> #define LDBL_MAX_EXP 16384
> /* Maximum long double */
> #undef LDBL_MAX
> #define LDBL_MAX (__extension__ ((union __convert_long_double) {0xffffffff, 0xff
> ffffff, 0x107ffe, 0x0}).__convert_long_double_d)
> /* Maximum int x such that 10**x is a representable long double */
> #undef LDBL_MAX_10_EXP
> #define LDBL_MAX_10_EXP 4932
>
> #endif /* _FLOAT_H___ */
>
> When initializing the int array in the union __convert_long_double, only a
> single pair of braces is used, but since initialization rules apply
> recursively, a pair is needed for both the union itself and the array.
> Without them, innocent programs can generate compiler warnings.
>
> Use the following code, compiled with -Wall, to demonstrate this:
>
> #include <stdio.h>
> #include <float.h>
>
> void main(void)
> {
>
> /* These next two lines both generate this message:
> * warning: missing braces around initializer for
> * `(anonymous).__convert_long_double_i'
> */
>
> printf("long double minimum = %Le\n", LDBL_MIN);
> printf("long double maximum = %Le\n", LDBL_MAX);
> }
>
> This is probably something for the upstream maintainer.
>
> -- System Information
> Debian Release: 1.2
> Kernel Version: Linux apocalypse 2.0.20 #1 Sat Sep 14 04:03:34 EST 1996 i486
>
> Versions of the packages this package depends on:
> libc5 Version: 5.4.13-1
>
> -- bug report generated by the debmake bug tool
>
> --
> "If a man ate a pound of pasta and a pound of | G. Branden Robinson
> antipasto, would they cancel out, leaving him | Purdue University
> still hungry?" -- Scott Adams | branden@purdue.edu
>
--
"Convictions are more dangerous enemies of truth | G. Branden Robinson
than lies." -- Friedrich Nietzsche | branden@purdue.edu
--
TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to
debian-user-REQUEST@lists.debian.org . Trouble? e-mail to Bruce@Pixar.com
Reply to: