https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114105

            Bug ID: 114105
           Summary: --disable-bootstrap based builds vs libcc1 and gcc/jit
                    use of gcc/system.h poisoning policy
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: markmigm at gmail dot com
  Target Milestone: ---

[ Note: not limited to gcc14 : FreeBSD ports lang/gcc12 (& -devel) and
lang/gcc13
(& -devel) had to be patched for libcc1 , not just lang/gcc14-devel ]

Attempting --disable-bootstrap builds of various gcc versions under clang &
libc++
gets errors from, appearently, assuming that the sources and toolchain will
follow
the gcc internal poisoning principles. The results are errors like:

In file included from
/wrkdirs/share/dim/ports/lang/gcc13/work/gcc-13.2.0/libcc1/libcc1plugin.cc:72:
In file included from /usr/include/c++/v1/vector:321:
In file included from /usr/include/c++/v1/__format/formatter_bool.h:20:
In file included from /usr/include/c++/v1/__format/formatter_integral.h:32:
/usr/include/c++/v1/locale:289:36: error: attempt to use a poisoned identifier
  289 |         __status = (unsigned char*)malloc(__nkw);
      |                                    ^
/usr/include/c++/v1/locale:1584:28: error: attempt to use a poisoned identifier
 1584 |         __ob =
(char_type*)malloc(2*static_cast<size_t>(__nc)*sizeof(char_type));
      |                            ^

(FreeBSD patches lang/gcc12* and lang/gcc13* and lang/gcc14-devel for the
libcc1
issues involving poisoning identifiers.)

and:

In file included from
/wrkdirs/usr/ports/lang/gcc14-devel/work/gcc-14-20240218/gcc/jit/dummy-frontend.cc:23:
In file included from
/wrkdirs/usr/ports/lang/gcc14-devel/work/gcc-14-20240218/gcc/jit/jit-playback.h:26:
In file included from /usr/include/c++/v1/vector:321:
In file included from /usr/include/c++/v1/__format/formatter_bool.h:20:
In file included from /usr/include/c++/v1/__format/formatter_integral.h:32:
/usr/include/c++/v1/locale:289:36: error: attempt to use a poisoned identifier
  289 |         __status = (unsigned char*)malloc(__nkw);
      |                                    ^

(FreeBSD is still working on patching lang/gcc14-devel for its gcc/jit issues
involving poisoning identifiers. It is possible that after that is done
more issues will be exposed.)

Part of the reason FreeBSD puts effort into making --disable-bootstrap work,
despite it not being the default in the ports, is to allow builds that stay
in the bounds of the free version of, for example, cirrus.

Reply via email to