Jonathan was kind enough to test this fix. It doesn't address all the solaris issues, but does get us further.

Solaris' sys/socket uses the poisoned bcopy identifier, so we must
#include it before poisoning.  The inclusion happens in cody.hh, so we
preemptively copy a bit of cody's inclusion logic to get it earlier.

        gcc/cp/
        * mapper-client.cc: Include sys/socket.h before system.h.

pushing to trunk
--
Nathan Sidwell
diff --git i/gcc/cp/mapper-client.cc w/gcc/cp/mapper-client.cc
index acec591296a..2ad770b3d78 100644
--- i/gcc/cp/mapper-client.cc
+++ w/gcc/cp/mapper-client.cc
@@ -19,6 +19,11 @@ along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
 #include "config.h"
+#if defined (__unix__)
+// Solaris11's socket header used bcopy, which we poison.  cody.hh
+// will include it later under the above check
+#include <sys/socket.h>
+#endif
 #include "system.h"
 
 #include "line-map.h"
@@ -28,6 +33,10 @@ along with GCC; see the file COPYING3.  If not see
 
 #include "../../c++tools/resolver.h"
 
+#if !HOST_HAS_O_CLOEXEC
+#define O_CLOEXEC 0
+#endif
+
 module_client::module_client (pex_obj *p, int fd_from, int fd_to)
   : Client (fd_from, fd_to), pex (p)
 {

Reply via email to