This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Questions about bootstrap problem on Solaris
- From: Brad Lucier <lucier at math dot purdue dot edu>
- To: gcc at gcc dot gnu dot org
- Cc: lucier at math dot purdue dot edu (Brad Lucier)
- Date: Thu, 21 Mar 2002 20:37:12 -0500 (EST)
- Subject: Questions about bootstrap problem on Solaris
I'm trying to figure out why bootstrap currently fails on Solaris.
The problem is here (I added the -save-temps):
banach-691% /export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/gcc/xgcc -shared-libgcc -B/export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/gcc/ -nostdinc++ -L/export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/sparcv9-sun-solaris2.8/libstdc++-v3/src -L/export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/sparcv9-sun-solaris2.8/libstdc++-v3/src/.libs -B/pkgs/gcc-3.1v9/sparcv9-sun-solaris2.8/bin/ -B/pkgs/gcc-3.1v9/sparcv9-sun-solaris2.8/lib/ -isystem /pkgs/gcc-3.1v9/sparcv9-sun-solaris2.8/include -nostdinc++ -I/export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/sparcv9-sun-solaris2.8/libstdc++-v3/include/sparcv9-sun-solaris2.8 -I/export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/sparcv9-sun-solaris2.8/libstdc++-v3/include -I../../../../libstdc++-v3/libsupc++ -I../../../../libstdc++-v3/libmath -g -O2 -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winline -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -g -c ../../../../libstdc++!
-v3/src/complex_io.cc -fPIC -DPIC -o .libs/complex_io.o -save-temps
In file included from /usr/include/iso/stdio_iso.h:38,
from /export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/gcc/include/stdio.h:36,
from /export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/sparcv9-sun-solaris2.8/libstdc++-v3/include/cstdio:50,
from /export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/sparcv9-sun-solaris2.8/libstdc++-v3/include/sparcv9-sun-solaris2.8/bits/c++io.h:35,
from /export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/sparcv9-sun-solaris2.8/libstdc++-v3/include/bits/fpos.h:44,
from /export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/sparcv9-sun-solaris2.8/libstdc++-v3/include/iosfwd:46,
from /export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/sparcv9-sun-solaris2.8/libstdc++-v3/include/ios:44,
from /export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/sparcv9-sun-solaris2.8/libstdc++-v3/include/istream:44,
from /export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/sparcv9-sun-solaris2.8/libstdc++-v3/include/sstream:44,
from /export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/sparcv9-sun-solaris2.8/libstdc++-v3/include/complex:51,
from ../../../../libstdc++-v3/src/complex_io.cc:30:
/usr/include/stdio_impl.h:30: conflicting types for `struct FILE'
/export/u3/lucier/programs/gcc/gcc-3.1/objdir-sparcv9/gcc/include/floatingpoint.h:52: previous
declaration as `typedef struct __FILE FILE'
The part of floatingpoint.h around line 52 is:
#ifdef __STDC__
#ifndef __P
#define __P(p) p
#endif
#ifndef _FILEDEFED
#define _FILEDEFED
typedef __FILE FILE; /* line 52 */
#endif
#else
#ifndef __P
#define __P(p) ()
#endif
#endif
The part of /usr/include/stdio_impl.h around line 30 is:
#ifdef _LP64
#ifndef _FILE64_H
struct __FILE_TAG {
long __pad[16];
};
#endif /* _FILE64_H */
#else
struct __FILE_TAG /* needs to be binary-compatible with old versions */
{
#ifdef _STDIO_REVERSE
unsigned char *_ptr; /* next character from/to here in buffer */
ssize_t _cnt; /* number of available characters in buffer */
#else
ssize_t _cnt; /* number of available characters in buffer */
unsigned char *_ptr; /* next character from/to here in buffer */
#endif
unsigned char *_base; /* the buffer */
unsigned char _flag; /* the state of the stream */
unsigned char _file; /* UNIX System file descriptor */
unsigned __orientation:2; /* the orientation of the stream */
unsigned __ionolock:1; /* turn off implicit locking */
unsigned __filler:5;
};
#endif /* _LP64 */
So I can't see how __FILE is being redefined here. OK, I figured
it out. floatingpoint.h includes stdio_tag.h as
#ifdef __STDC__
#include <stdio_tag.h>
#endif
which in turn says
/*
* Copyright (c) 1998 by Sun Microsystems, Inc.
* All rights reserved.
*/
#ifndef _STDIO_TAG_H
#define _STDIO_TAG_H
#pragma ident "@(#)stdio_tag.h 1.3 98/04/20 SMI"
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __FILE_TAG
#if defined(__cplusplus) && (__cplusplus < 54321L)
#define __FILE_TAG FILE
#else
#define __FILE_TAG __FILE
#endif
typedef struct __FILE_TAG __FILE;
#endif
#ifdef __cplusplus
}
#endif
#endif /* _STDIO_TAG_H */
Why this doesn't show up in the list of included files, I don't know.
Perhaps one of the fixinclude experts can help me out here. I
started with high hopes, but don't know how to proceed.
Brad