This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug bootstrap/49794] New: [4.7 regression] Solaris 10/x86 bootstrap broken by C++ build
- From: "ro at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 20 Jul 2011 11:07:51 +0000
- Subject: [Bug bootstrap/49794] New: [4.7 regression] Solaris 10/x86 bootstrap broken by C++ build
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49794
Summary: [4.7 regression] Solaris 10/x86 bootstrap broken by
C++ build
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: bootstrap
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: ro@gcc.gnu.org
CC: ian@airs.com
Host: i386-pc-solaris2.10
Target: i386-pc-solaris2.10
Build: i386-pc-solaris2.10
Solaris 10/x86 bootstrap is broken as of r176500: there are two failures in
stage2 libcpp:
/vol/gcc/src/hg/trunk/local/libcpp/charset.c: In function 'bool
convert_using_iconv(iconv_t, const uchar*, size_t, _cpp_strbuf*)':
/vol/gcc/src/hg/trunk/local/libcpp/charset.c:579:62: error: invalid conversion
from 'const char**' to 'char**' [-fpermissive]
The problem is that <iconv.h> has two variant iconv() declarations:
#ifdef _XPG6
extern size_t iconv(iconv_t, char **_RESTRICT_KYWD,
size_t *_RESTRICT_KYWD, char **_RESTRICT_KYWD,
size_t *_RESTRICT_KYWD);
#else
extern size_t iconv(iconv_t, const char **_RESTRICT_KYWD,
size_t *_RESTRICT_KYWD, char **_RESTRICT_KYWD,
size_t *_RESTRICT_KYWD);
#endif
libcpp configure is run with xgcc, which doesn't define _XOPEN_SOURCE 600, but
g++, which is used to compile libcpp, does, so the value of ICONV_CONST is
wrong.
The next failures is in init.c:
/vol/gcc/src/hg/trunk/local/libcpp/init.c:61:3: error: expected identifier
before '='
/vol/gcc/src/hg/trunk/local/libcpp/init.c:61:3: error: type '<lambda>' with no
linkage used to declare function 'void<lambda>::operator()() const' with
linkage [-fpermissive]
/vol/gcc/src/hg/trunk/local/libcpp/init.c: In lambda function:
/vol/gcc/src/hg/trunk/local/libcpp/init.c:61:3: error: expected '{' before '='
token
/vol/gcc/src/hg/trunk/local/libcpp/init.c: At global scope:
/vol/gcc/src/hg/trunk/local/libcpp/init.c:61:3: error: lambda expressions only
available with -std=c++0x or -std=gnu++0x [-Werror]
/vol/gcc/src/hg/trunk/local/libcpp/init.c:61:3: error: no match for 'operator='
in '{} = '#''
/vol/gcc/src/hg/trunk/local/libcpp/init.c:61:3: note: candidate is:
/vol/gcc/src/hg/trunk/local/libcpp/init.c:61:3: note:
<lambda()>&<lambda()>::operator=(const<lambda()>&)
/vol/gcc/src/hg/trunk/local/libcpp/init.c:61:3: note: no known conversion for
argument 1 from 'char' to 'const<lambda()>&'
And many more errors. The relevant section in the -g3 -save-temps outputis
__extension__ const uchar _cpp_trigraph_map[(127 * 2 + 1) + 1] = {
['='] = '#', [')'] = ']', ['!'] = '|',
['('] = '[', ['\''] = '^', ['>'] = '}',
['/'] = '\\', ['<'] = '{', ['-'] = '~',
};