[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: