Re: GCC predefines
"Joel Baker" <lucifer@lightbearer.com> writes:
> Both are ELF systems, and both define the OS standard symbol for their
> respective OSen. However, what I can't figure out is why the NetBSD config
> doesn't have -Dunix - it certainly seems to support the various files that
> I've seen that used as a trigger for (unistd.h, etc).
You can't be really certain that the NetBSD config doesn't have
-Dunix. In gcc 3.2, these things are not controlled through the spec
file anymore.
Instead, the function builtin_define_std is invoked at runtime. If it
is invoked as
builtin_define_std ("unix");
then the preprocessor will define __unix and __unix__, and, unless
--std=c89 is specified, it will also define unix.
To find out what is defined, compile an empty C file with -v -E.
> Is this just a crufty value from Days of Yore when NetBSD didn't have
> support for the standard that symbol represents? If so, which file do I
> need to poke at in GCC to convince it otherwise, at least on Debian/NetBSD
> systems?
As the starting point, you need to verify that unix really isn't
defined.
If so, you need to inspect config/netbsd* and config/i386/netbsd* (and
their includes); take particular notice of
NETBSD_OS_CPP_BUILTINS_COMMON.
> I'm also wondering just what is up with the -A flags, and what suitable
> values for those are...
What do you mean, "is up"? They are assertions, for use with the
#QUESTION preprocessor mechanism. While this is potentially very
powerful, it is not used widely.
Regards,
Martin
Reply to: