Bug 41465 - bootstrap failed - ../libdecnumber/gstdint.h:80: error: two or more data types in declaration specifiers
Summary: bootstrap failed - ../libdecnumber/gstdint.h:80: error: two or more data type...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: bootstrap (show other bugs)
Version: unknown
: P3 normal
Target Milestone: 4.5.0
Assignee: Not yet assigned to anyone
URL: http://gcc.gnu.org/ml/gcc-patches/200...
Keywords: patch
Depends on:
Blocks:
 
Reported: 2009-09-24 23:40 UTC by Hin-Tak Leung
Modified: 2010-04-22 16:51 UTC (History)
1 user (show)

See Also:
Host: alphaev68-dec-osf5.1a
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Hin-Tak Leung 2009-09-24 23:40:23 UTC
svn-r152128 failed make bootstrap4-lean quite early with: (don't worry about the r150353 part below - I had to ftp a diff from one machine to the machine which does the building, so I only transport a diff from an earlier checkout).

gcc -c  -g -fkeep-inline-functions -DIN_GCC   -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition -Wc++-compat -fno-common  -DHAVE_CONFIG_H -I. -I. -I../../gcc-r150353/gcc -I../../gcc-r150353/gcc/. -I../../gcc-r150353/gcc/../include -I./../intl -I../../gcc-r150353/gcc/../libcpp/include  -I../../gcc-r150353/gcc/../libdecnumber -I../../gcc-r150353/gcc/../libdecnumber/dpd -I../libdecnumber   -I/usr/local/include ../../gcc-r150353/gcc/dfp.c -o dfp.o
In file included from ../../gcc-r150353/gcc/../libdecnumber/decContext.h:54,
                 from ../../gcc-r150353/gcc/../libdecnumber/decNumber.h:37,
                 from ../../gcc-r150353/gcc/../libdecnumber/dpd/decimal128.h:58,
                 from ../../gcc-r150353/gcc/dfp.c:34:
../libdecnumber/gstdint.h:80: error: two or more data types in declaration specifiers
../libdecnumber/gstdint.h:80: error: two or more data types in declaration specifiers
../libdecnumber/gstdint.h:80: error: two or more data types in declaration specifiers
../libdecnumber/gstdint.h:80: warning: useless type name in empty declaration
../libdecnumber/gstdint.h:85: error: two or more data types in declaration specifiers
../libdecnumber/gstdint.h:85: error: two or more data types in declaration specifiers
../libdecnumber/gstdint.h:85: error: two or more data types in declaration specifiers
../libdecnumber/gstdint.h:85: error: two or more data types in declaration specifiers
../libdecnumber/gstdint.h:85: warning: useless type name in empty declaration
make[3]: *** [dfp.o] Error 1
make[3]: Leaving directory `/home/htl10/tmp-build/ob-dir/gcc'
make[2]: *** [all-stage1-gcc] Error 2
make[2]: Leaving directory `/home/htl10/tmp-build/ob-dir'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/home/htl10/tmp-build/ob-dir'
make: *** [bootstrap4-lean] Error 2
bash-2.05a$ 
-----------------------------

it is a generated file, and it doesn't seem to like the two typedef int64_t lines:

---------------------------
/* Define intmax based on what we found */
#ifdef _INT64_T  
typedef int64_t       intmax_t;
#else 
typedef long          intmax_t;
#endif           
#ifdef _UINT64_T
typedef uint64_t      uintmax_t;
#else                                              
typedef unsigned long uintmax_t;
#endif          
-------------------------
Comment 1 Hin-Tak Leung 2009-09-24 23:51:44 UTC
int64_t and uint64_t are both already defined in /usr/include/inttypes.h - 
it appears that intmax_t and uintmax_t may also be defined elsewhere as well, although I couldn't locate it.
Comment 2 Hin-Tak Leung 2009-09-24 23:56:29 UTC
(In reply to comment #1)
> int64_t and uint64_t are both already defined in /usr/include/inttypes.h - 
> it appears that intmax_t and uintmax_t may also be defined elsewhere as well,
> although I couldn't locate it.

I thought I should explain the 2nd sentence a bit - I tried cleaning the relevant bit out and leaving just these two:
 
typedef long          intmax_t;
typedef unsigned long uintmax_t;

and compilation failed with a message about 'long long long' and 'unsigned long long long'. So it appears that intmax_t was expanded to 'long long' along the way.
Comment 3 Rainer Orth 2010-04-22 16:51:06 UTC
Already fixed for 4.5.0.