unistd.h problem for C++ stuff and DragonFly

Hasso Tepper hasso at estpak.ee
Thu May 14 02:37:10 PDT 2009


I've already mentioned it in the list, but will summarize it again. The 
problem is that many C++ programs compile just fine on other platforms 
(mainly NetBSD is interesting), but don't on DragonFly due to 
declarations from unistd.h not being available. I still think that not 
including unistd.h is a problem in these applications, but this doesn't 
mean we haven't a problem in DragonFly.

I tracked it down to the threading stuff in the compiler. The unistd.h 
header is included by accident actually on other systems via 
bits/gthr-default.h. The point is that it's not included in DragonFly.
Relevant snippet from preprocessor output on DragonFly:

# 1 "/usr/include/c++/4.1/bits/gthr.h" 1 3
# 33 "/usr/include/c++/4.1/bits/gthr.h" 3
#pragma _GLIBCPP_GCC visibility push(default)
# 118 "/usr/include/c++/4.1/bits/gthr.h" 3
# 1 "/usr/include/c++/4.1/bits/gthr-single.h" 1 3

The same snippet from NetBSD NetBSD 5.0/i386 (thanks to Beket):

# 1 "/usr/include/g++/bits/gthr.h" 1 3
# 37 "/usr/include/g++/bits/gthr.h" 3
#pragma GCC visibility push(default)
# 118 "/usr/include/g++/bits/gthr.h" 3
# 1 "/usr/include/g++/bits/gthr-default.h" 1 3

Now please someone tell me why it's so and what it means.


-- 
Hasso Tepper





More information about the Kernel mailing list