https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98315
Bug ID: 98315 Summary: [11 regression] libcody breaks Solaris bootstrap Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ro at gcc dot gnu.org CC: nathan at gcc dot gnu.org Target Milestone: --- Target: *-*-solaris2.11 Since the introduction of libcody, Solaris 11 bootstrap is broken: * On Solaris 11.4: In file included from /usr/include/sys/socket.h:25, from /vol/gcc/src/hg/master/local/gcc/../libcody/cody.hh:29, from /vol/gcc/src/hg/master/local/gcc/cp/mapper-client.h:26, from /vol/gcc/src/hg/master/local/gcc/cp/mapper-client.cc:26: /usr/include/sys/uio.h:192:3: error: attempt to use poisoned "bzero" bzero(&(xuiop)->xu_hint, sizeof ((xuiop)->xu_hint)); \ ^ where <sys/uio.h> has /* * Clear the hints portion of an xuio_t, leaving the initial uio_t and the * xu_ext union untouched. * * Note that this does not touch xu_type. Since zero copy is recognized as * UIO_XUIO with xu_type of UIOTYPE_ZEROCOPY, if extending a uio_t not setup * for zero copy into a full xuio_t then chances are that xu_type should be * initialized too as if the xuio_t had been bzero'd - ie to UIOTYPE_ASYNCIO. */ #define XUIO_BZERO_HINTS(xuiop) do { \ bzero(&(xuiop)->xu_hint, sizeof ((xuiop)->xu_hint)); \ _NOTE(CONSTCOND) } while (0) This macros isn't used anywhere, so I wonder why #pragma poison would be offended. * On Solaris 11.3: In file included from /usr/include/sys/stream.h:16, from /usr/include/netinet/in.h:66, from /usr/include/sys/socket.h:32, from /vol/gcc/src/hg/master/local/gcc/../libcody/cody.hh:29, from /vol/gcc/src/hg/master/local/gcc/cp/mapper-client.h:26, from /vol/gcc/src/hg/master/local/gcc/cp/mapper-client.cc:26: /usr/include/sys/strmdep.h:25:26: error: attempt to use poisoned "bcopy" #define strbcpy(s, d, c) bcopy(s, d, c) ^ with the following in <sys/strmdep.h>: /* * Copy data from one data buffer to another. * The addresses must be word aligned - if not, use bcopy! */ #define strbcpy(s, d, c) bcopy(s, d, c) I've hacked around both for no by removing bcopy and bzero from #pragma GCC poison in gcc/system.h.