This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: __STRICT_ANSI__ "fixes" on STDC_0_IN_SYSTEM_HEADERS (solaris) targets
- From: "Kaveh R. Ghazi" <ghazi at caipclassic dot rutgers dot edu>
- To: zackw at panix dot com
- Cc: bkorb at gnu dot org, ebotcazou at libertysurf dot fr, gcc at gcc dot gnu dot org
- Date: Mon, 2 Oct 2006 18:47:02 -0400 (EDT)
- Subject: Re: __STRICT_ANSI__ "fixes" on STDC_0_IN_SYSTEM_HEADERS (solaris) targets
- References: <eb97335b0610020905o4d9ce7r162960ea54591ecc@mail.gmail.com>
> Let's not go down the road of including the target config file in
> more places which are not part of the compiler proper - which are
> not even inside the gcc directory!
I agree, but I also want to avoid duplicating the info in two places,
it makes maintenance harder.
> I'd like to see this used as an occasion to determine whether we
> still need this particular hack, which I have never been fond of.
Which hack? The STDC_0_IN_SYSTEM_HEADERS hack, or the strict_ansi_*
fixincludes hacks? Or both? I'm pretty sure solaris10 no longer
needs either one, but older releases of solaris do. I can't speak for
other svr4 targets or interix. My concern is that we should be
consistent, since applying the fixincludes hacks depends on not having
stdc_0_in_system_headers.
> If we really still do, the Right Thing would be to add another
> undocumented built-in preprocessor macro,
> __STDC_0_IN_SYSTEM_HEADERS__ say, which is defined only if
> CPP_OPTION(pfile, stdc_0_in_system_headers) is true.
> zw
I don't see how this will work given that fixincludes is built with
the bootstrap compiler in 4.0 and 4.1 which has no notion of your new
macro __STDC_0_IN_SYSTEM_HEADERS__.
For 4.2 and later, while fixincludes is three-staged, we'll still have
problems in stage1 fixincludes or with --disable-bootstrap
configurations using your scheme.
Another option might be to use the resulting gcc compiler just built
and compile an autoconf style check to see whether system headers
define __STDC__ to 1. We can create a testcase that fakes being in a
system header by using those digits in the line number directives
right? I forget the format, but I seem to recall one of the trailing
digits signifies we're in a system header. Then just see if you can
compile this:
# fake us into system header land...
#if __STDC__ - 0 == 0
#error "STDC_0_IN_SYSTEM_HEADERS"
#endif
If it fails, then fixincludes knows we have stdc_0_in_system_headers.
--Kaveh
--
Kaveh R. Ghazi ghazi@caip.rutgers.edu