Hi,
(please CC me on replies, since I'm not subscribed to -bsd@.)
years ago, when Robert Millan improved the support for k*bsd* in gcc, he
added the __GLIBC__ define as part of the ones provided by gcc itself
(see [1][2]).
Unfortunately, __GLIBC__ is one of the defines provided by glibc itself
(in the internal <features.h> included in any public header), and
because of this (e)glibc on debian/kfreebsd has to carry the patch
local-undef-glibc.diff. Indeed, compiling trying to compile the simple:
#ifdef __GLIBC__
# error __GLIBC__ defined with no includes!
#endif
int main() { return 0; }
fails on kFreeBSD while it succeeds on Linux and Hurd.
This also causes that porting code like:
-#if defined(__linux__)
+#if defined(__linux__) || defined(__GLIBC__)
makes it work on kFreeBSD but still failing on Hurd (in situation where
there is no #include of stdlib headers prior to that), and in the past
I've been personally hit by this few times (and I'm not the only Hurd
porter to have hit such situation).
Since IMHO it is awkward for a compiler to claim to be a libc, my
suggestion (as also shown in the topic) is to drop the definition of
__GLIBC__ done in the k*bsd* configuration of gcc.
My proposal would be to remove it upstream and, once Whezy is released,
backport the patch for any gcc version in Debian. This should leave
plenty of time (at least 1-1½ years) to fix the (few?) kFreeBSD-specific
build failures and issues that could arise because of that (note that
some of the cases were fixed in the past with Hurd porting).
What do you think? Does it sound reasonable enough?
[1] http://gcc.gnu.org/ml/gcc-patches/2004-05/msg00050.html
[2] http://gcc.gnu.org/viewcvs?view=revision&revision=83577
--
Pino Toscano
Attachment:
signature.asc
Description: This is a digitally signed message part.