Date: Thu, 19 Sep 2024 20:29:25 -0700 From: Mark Millard <marklmi@yahoo.com> To: Dimitry Andric <dim@FreeBSD.org> Cc: FreeBSD Toolchain <freebsd-toolchain@freebsd.org>, FreeBSD Mailing List <freebsd-ports@freebsd.org>, Lorenzo Salvadore <developer@lorenzosalvadore.it>, Brooks Davis <brooks@FreeBSD.org>, fuz@freebsd.org Subject: Re: official lang/gcc14 package builds are broken, at least for armv7: "error: attempt to use a poisoned identifier" and more Message-ID: <2A5F966E-9846-44CF-AA00-099C0F2515CF@yahoo.com> In-Reply-To: <DA981CE7-C2BF-40CC-8EFE-DA854BA00A36@yahoo.com> References: <44F55AB3-D1C3-4171-9EE7-C852EBF2055C.ref@yahoo.com> <44F55AB3-D1C3-4171-9EE7-C852EBF2055C@yahoo.com> <F590BEBD-8A97-4A58-889C-6B1A87D316AA@FreeBSD.org> <DA981CE7-C2BF-40CC-8EFE-DA854BA00A36@yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sep 17, 2024, at 20:19, Mark Millard <marklmi@yahoo.com> wrote: > On Sep 17, 2024, at 11:40, Dimitry Andric <dim@FreeBSD.org> wrote: >=20 >> This is because of gcc's weird identifier poisoning system, and them = not correctly marking all used standard C++ headers for inclusion before = the poisoning takes place. >>=20 >> Try the attached patch, which I have been using for a long time now = (months, at least since the bootstrap options were deleted, but which I = reverted locally). >>=20 >> -Dimitry >>=20 >> <lang__gcc14-devel-fix-plugins-1.diff> >>=20 >>> On 17 Sep 2024, at 16:24, Mark Millard <marklmi@yahoo.com> wrote: >>>=20 >>> Also: no member named 'fancy_abort' in namespace 'std' >>>=20 >>> Such is associated with not using STANDARD_BOOTSTRAP for armv7, = given GCC's historic lack of keeping builds of everything working for = just direct use of clang++/libc++ or the like. >>>=20 >>> The specific change that got back into this issue was: >>>=20 >>> -LANGUAGES:=3D c,c++,objc,fortran >>> +LANGUAGES:=3D c,c++,objc,fortran,jit >>>=20 >>> It is the jit part of the build that fails to build as stands. >>>=20 >>> See: >>>=20 >>> = https://pkg-status.freebsd.org/ampere2/data/main-armv7-default/p13f486017d= 78_s3df987c99/logs/errors/gcc14-14.2.0_1.log >>>=20 >>> Example: >>>=20 >>> In file included from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/jit/dummy-frontend.cc:23= : >>> In file included from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/jit/jit-playback.h:24: >>> In file included from /usr/include/c++/v1/string:594: >>> In file included from = /usr/include/c++/v1/__memory_resource/polymorphic_allocator.h:20: >>> In file included from /usr/include/c++/v1/tuple:1455: >>> In file included from /usr/include/c++/v1/exception:82: >>> /usr/include/c++/v1/__exception/exception_ptr.h:111:3: error: no = member named 'fancy_abort' in namespace 'std'; did you mean simply = 'fancy_abort'? >>> 111 | std::abort(); >>> | ^~~~~ >>> /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/system.h:808:13: = note: 'fancy_abort' declared here >>> 808 | extern void fancy_abort (const char *, int, const char *) >>> | ^ >>> In file included from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/jit/dummy-frontend.cc:23= : >>> In file included from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/jit/jit-playback.h:26: >>> In file included from /usr/include/c++/v1/vector:325: >>> 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:35: >>> /usr/include/c++/v1/locale:288:32: error: attempt to use a poisoned = identifier >>> 288 | __status =3D (unsigned char*)malloc(__nkw); >>> | ^ >>> /usr/include/c++/v1/locale:1385:24: error: attempt to use a poisoned = identifier >>> 1385 | __ob =3D (char_type*)malloc(2 * static_cast<size_t>(__nc) * = sizeof(char_type)); >>> | ^ >>> /usr/include/c++/v1/locale:2429:31: error: attempt to use a poisoned = identifier >>> 2429 | _Tp* __t =3D (_Tp*)std::realloc(__owns ? __b.get() : 0, = __new_cap); >>> | ^ >>> /usr/include/c++/v1/locale:2632:24: error: attempt to use a poisoned = identifier >>> 2632 | __h.reset((char*)malloc(static_cast<size_t>(__wn - __wb.get() = + 2))); >>> | ^ >>> /usr/include/c++/v1/locale:2910:28: error: attempt to use a poisoned = identifier >>> 2910 | __hd.reset((char_type*)malloc(static_cast<size_t>(__n) * = sizeof(char_type))); >>> | ^ >>> /usr/include/c++/v1/locale:2936:28: error: attempt to use a poisoned = identifier >>> 2936 | __hw.reset((char_type*)malloc(__exn * sizeof(char_type))); >>> | ^ >>> /usr/include/c++/v1/locale:2974:27: error: attempt to use a poisoned = identifier >>> 2974 | __h.reset((char_type*)malloc(__exn * sizeof(char_type))); >>> | ^ >>>=20 >=20 > In my environment (that somewhat predates the change that made the > ampere2 based build fail), I set up a poudriere-devel test for > lang/gcc14 ( not lang/gcc14-devel ): >=20 > # poudriere ports -l > PORTSTREE METHOD TIMESTAMP PATH > default null 2021-04-18 02:05:47 /usr/ports >=20 > # ~/fbsd-based-on-what-commit.sh -C /usr/ports/ > d13cce06daa6 (HEAD -> main, freebsd/main, freebsd/HEAD) = graphics/gmic-qt: Update to 3.4.1 > Author: Jason E. Hale <jhale@FreeBSD.org> > Commit: Jason E. Hale <jhale@FreeBSD.org> > CommitDate: 2024-09-02 04:05:53 +0000 > branch: main > merge-base: d13cce06daa6361cdbd6b97b768ab80aa60b8677 > merge-base: CommitDate: 2024-09-02 04:05:53 +0000 > n675562 (--first-parent --count for merge-base) >=20 > (Note: I've made no commits.) >=20 > # git -C /usr/ports/ status lang/gcc14 > On branch main > Your branch is up to date with 'freebsd/main'. >=20 > Changes not staged for commit: > (use "git add <file>..." to update what will be committed) > (use "git restore <file>..." to discard changes in working directory) > modified: lang/gcc14/Makefile >=20 > Untracked files: > (use "git add <file>..." to include in what will be committed) > lang/gcc14/files/patch-gcc_jit_dummy-frontend.cc > lang/gcc14/files/patch-gcc_jit_jit-builtins.cc > lang/gcc14/files/patch-gcc_jit_jit-playback.cc > lang/gcc14/files/patch-gcc_jit_jit-recording.cc > lang/gcc14/files/patch-gcc_jit_libgccjit.cc >=20 > no changes added to commit (use "git add" and/or "git commit -a") >=20 > (Note, below the whitespace details might not be preserved, > so the text is only suggestive.) >=20 > # git -C /usr/ports/ diff lang/gcc14 > diff --git a/lang/gcc14/Makefile b/lang/gcc14/Makefile > index 53bac89a7f14..17029847fa7c 100644 > --- a/lang/gcc14/Makefile > +++ b/lang/gcc14/Makefile > @@ -73,7 +73,7 @@ CONFIGURE_TARGET=3D = x86_64-portbld-${OPSYS:tl}${OSREL} > CONFIGURE_ARGS+=3D --with-abi=3Delfv2 > .endif >=20 > -LANGUAGES:=3D c,c++,objc,fortran > +LANGUAGES:=3D c,c++,objc,fortran,jit > TARGLIB=3D ${PREFIX}/lib/gcc${SUFFIX} > TARGLIB32=3D ${PREFIX}/lib32 # The version information is added = later > LIBEXEC=3D ${PREFIX}/libexec/gcc${SUFFIX} >=20 > And, from the content of your patch: >=20 > # head -30 /usr/ports/lang/gcc14/files/patch-gcc_jit_*.cc > =3D=3D> /usr/ports/lang/gcc14/files/patch-gcc_jit_dummy-frontend.cc = <=3D=3D > --- gcc/jit/dummy-frontend.cc.orig 2024-01-14 22:32:46 UTC > +++ gcc/jit/dummy-frontend.cc > @@ -18,6 +18,8 @@ along with GCC; see the file COPYING3. If not see > <http://www.gnu.org/licenses/>. */ >=20 > #include "config.h" > +#define INCLUDE_STRING > +#define INCLUDE_VECTOR > #include "system.h" >=20 > =3D=3D> /usr/ports/lang/gcc14/files/patch-gcc_jit_jit-builtins.cc <=3D=3D= > --- gcc/jit/jit-builtins.cc.orig 2024-01-14 22:32:46 UTC > +++ gcc/jit/jit-builtins.cc > @@ -18,6 +18,8 @@ along with GCC; see the file COPYING3. If not see > <http://www.gnu.org/licenses/>. */ >=20 > #include "config.h" > +#define INCLUDE_STRING > +#define INCLUDE_VECTOR > #include "system.h" > #include "coretypes.h" > #include "target.h" >=20 > =3D=3D> /usr/ports/lang/gcc14/files/patch-gcc_jit_jit-playback.cc <=3D=3D= > --- gcc/jit/jit-playback.cc.orig 2024-01-14 22:32:46 UTC > +++ gcc/jit/jit-playback.cc > @@ -20,6 +20,8 @@ along with GCC; see the file COPYING3. If not see >=20 > #include "config.h" > #define INCLUDE_MUTEX > +#define INCLUDE_STRING > +#define INCLUDE_VECTOR > #include "libgccjit.h" > #include "system.h" > #include "coretypes.h" >=20 > =3D=3D> /usr/ports/lang/gcc14/files/patch-gcc_jit_jit-recording.cc <=3D=3D= > --- gcc/jit/jit-recording.cc.orig 2024-01-14 22:32:46 UTC > +++ gcc/jit/jit-recording.cc > @@ -20,6 +20,8 @@ along with GCC; see the file COPYING3. If not see >=20 > #include "config.h" > #define INCLUDE_SSTREAM > +#define INCLUDE_STRING > +#define INCLUDE_VECTOR > #include "system.h" > #include "coretypes.h" > #include "tm.h" >=20 > =3D=3D> /usr/ports/lang/gcc14/files/patch-gcc_jit_libgccjit.cc <=3D=3D > /jit/libgccjit.cc.orig 2024-01-14 22:32:46 UTC > +++ gcc/jit/libgccjit.cc > @@ -20,6 +20,8 @@ along with GCC; see the file COPYING3. If not see >=20 > #include "config.h" > #define INCLUDE_MUTEX > +#define INCLUDE_STRING > +#define INCLUDE_VECTOR > #include "system.h" > #include "coretypes.h" > #include "timevar.h" >=20 > The result for poudriere bulk lang/gcc14 was: >=20 > [00:06:55] [01] [00:00:00] Building lang/gcc14 | gcc14-14.2.0 > [00:28:00] [01] [00:21:05] Finished lang/gcc14 | gcc14-14.2.0: = Success ending TMPFS: 1.61 GiB >=20 > So it looks like adding your files/patch-gcc_jit_*.cc > files to lang/gcc14 would allow the ampere2 builds > of lang/gcc14 for armv7 to work without use of > STANDARD_BOOTSTRAP (at least for now). >=20 >=20 > ( The "ending TMPFS: . . . GiB" is something I add to > poudirere for helping to find packages that I might > want to add to TMPFS_BLACKLIST .) >=20 >=20 > The context has: >=20 > # poudriere jail -jmain-armv7 -i > Jail name: main-armv7 > Jail version: 15.0-CURRENT > Jail arch: armv7 > Jail method: pkgbase > Jail mount: /usr/local/poudriere/jails/main-armv7-poud > Jail fs: Jail updated: 2024-08-27 21:47:56 > Jail pkgbase: disabled >=20 > The pkgbase system for the jail is from the official > materials at the time it was last updated. It is > not my personal world build at all. >=20 I just fetched an update to my /usr/ports/ on amd64 and tried to build my ports for amd64. It is my odd personal environment. But it got failures building jit materials. For example: In file included from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/bits/ba= sic_ios.h:37, from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/std/ios= :46, from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/std/ist= ream:40, from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/std/sst= ream:40, from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/system.h:774, from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/jit/jit-recording.cc:25:= = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/bits/lo= cale_facets.h:250:53: error: macro "toupper" passed 2 arguments, but = takes just 1 250 | toupper(char_type *__lo, const char_type* __hi) const | ^ In file included from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/system.h:235: = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/../include/safe-ctype.h:= 146:9: note: macro "toupper" defined here 146 | #define toupper(c) do_not_use_toupper_with_safe_ctype | ^~~~~~~ = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/bits/lo= cale_facets.h:279:53: error: macro "tolower" passed 2 arguments, but = takes just 1 279 | tolower(char_type* __lo, const char_type* __hi) const | ^ = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/../include/safe-ctype.h:= 148:9: note: macro "tolower" defined here 148 | #define tolower(c) do_not_use_tolower_with_safe_ctype | ^~~~~~~ = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/bits/lo= cale_facets.h:827:53: error: macro "toupper" passed 2 arguments, but = takes just 1 827 | toupper(char_type *__lo, const char_type* __hi) const | ^ = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/../include/safe-ctype.h:= 146:9: note: macro "toupper" defined here 146 | #define toupper(c) do_not_use_toupper_with_safe_ctype | ^~~~~~~ = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/bits/lo= cale_facets.h:860:53: error: macro "tolower" passed 2 arguments, but = takes just 1 860 | tolower(char_type* __lo, const char_type* __hi) const | ^ = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/../include/safe-ctype.h:= 148:9: note: macro "tolower" defined here 148 | #define tolower(c) do_not_use_tolower_with_safe_ctype | ^~~~~~~ In file included from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/bits/ba= sic_ios.h:37, from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/std/ios= :46, from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/std/ist= ream:40, from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/std/sst= ream:40, from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/system.h:774, from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/jit/jit-recording.cc:25:= = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/bits/lo= cale_facets.h:250:53: error: macro "toupper" passed 2 arguments, but = takes just 1 250 | toupper(char_type *__lo, const char_type* __hi) const | ^ In file included from = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/system.h:235: = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/../include/safe-ctype.h:= 146:9: note: macro "toupper" defined here 146 | #define toupper(c) do_not_use_toupper_with_safe_ctype | ^~~~~~~ = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/libstdc++-v3/include/bits/lo= cale_facets.h:279:53: error: macro "tolower" passed 2 arguments, but = takes just 1 279 | tolower(char_type* __lo, const char_type* __hi) const | ^ = /wrkdirs/usr/ports/lang/gcc14/work/gcc-14.2.0/gcc/../include/safe-ctype.h:= 148:9: note: macro "tolower" defined here 148 | #define tolower(c) do_not_use_tolower_with_safe_ctype | ^~~~~~~ . . . The context has the: Untracked files: (use "git add <file>..." to include in what will be committed) lang/gcc14/files/patch-gcc_jit_dummy-frontend.cc lang/gcc14/files/patch-gcc_jit_jit-builtins.cc lang/gcc14/files/patch-gcc_jit_jit-playback.cc lang/gcc14/files/patch-gcc_jit_jit-recording.cc lang/gcc14/files/patch-gcc_jit_libgccjit.cc So these from your patch proved insufficient for this context. (It will be a while before the aarch64 context gets to the lang/gcc14 and its jit.) =3D=3D=3D Mark Millard marklmi at yahoo.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2A5F966E-9846-44CF-AA00-099C0F2515CF>