Re: A partial workaround for lang/gcc14 building on/for armv7, given STANDARD_BOOTSTRAP hitting some FreeBSD __aeabi_* symbol issues
- Reply: Mark Millard : "Re: A partial workaround for lang/gcc14 building on/for armv7, given STANDARD_BOOTSTRAP hitting some FreeBSD __aeabi_* symbol issues"
- Reply: mmel@freebsd.org: "Re: A partial workaround for lang/gcc14 building on/for armv7, given STANDARD_BOOTSTRAP hitting some FreeBSD __aeabi_* symbol issues"
- In reply to: Mark Millard : "Re: A partial workaround for lang/gcc14 building on/for armv7, given STANDARD_BOOTSTRAP hitting some FreeBSD __aeabi_* symbol issues"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 27 Apr 2025 02:55:49 UTC
On Apr 26, 2025, at 11:53, Mark Millard <marklmi@yahoo.com> wrote: > On Apr 26, 2025, at 07:45, Michal Meloun <mmel@freebsd.org> wrote: >> >> On 26.04.2025 9:23, Mark Millard wrote: >>> FreeBSD has not and does not support all the __aeabi_ prefixed >>> symbols to make everything work for all the lang/gcc* . >>> It has gotten to the point that for lang/gcc14 (so modern) that >>> the likes of: >>> __aeabi_unwind_cpp_pr0 >>> __aeabi_unwind_cpp_pr1 >>> __aeabi_unwind_cpp_pr2 >>> lead to the likes of: >>> /usr/local/bin/ld: a.out: hidden symbol `__aeabi_unwind_cpp_pr0' in /wrkdirs/usr/ports/lang/gcc14/work/.build/./prev-gcc/libgcc_eh.a(unwind-arm.o) is referenced by DSO >> I am afraid that this is an incorrect and misleading analysis: > > Okay. These specific symbols are apparently not analogous > to others that have been run into in the past. I assumed > too much common context. > >> 1) FreeBSD provides (and has provided for a long time) __aeabi_unwind_cpp_pr* symbols in /usr/lib/libgcc_eh.lib in very similar manner as gcc. > > FYI: lang/gcc13 builds with STANDARD_BOOTSTRAP okay. lang/gcc14 and lang gcc15 do not. > > The below explores the installed package materials, not the > bootstrap materials that failed. (I've not gotten to that > yet.) > > When I look for definitions in the installed /usr/local/lib/gcc13/ > I find: > > # find /usr/local/lib/gcc13/ -type f -exec readelf -a {} \; -print 2>&1 | grep -e __aeabi_unwind_cpp_pr -e ^/ -e ^File: | grep -v "readelf: Not an ELF file" | grep -v " UND " | grep -v " R_ARM_NONE" | more > /usr/local/lib/gcc13/gcc/armv7-portbld-freebsd15.0/13.3.0/plugin/libcc1plugin.so.0.0.0 > /usr/local/lib/gcc13/gcc/armv7-portbld-freebsd15.0/13.3.0/plugin/libcp1plugin.so.0.0.0 > File: /usr/local/lib/gcc13/gcc/armv7-portbld-freebsd15.0/13.3.0/libgcc_eh.a(unwind-arm.o) > 000000f8 0000291a R_ARM_GOT_BREL 00000c34 __aeabi_unwind_cpp_pr2 > 000000fc 00002a1a R_ARM_GOT_BREL 00000c2c __aeabi_unwind_cpp_pr1 > 40: 0000000000000c24 8 FUNC GLOBAL HIDDEN 1 __aeabi_unwind_cpp_pr0 > 41: 0000000000000c34 8 FUNC WEAK HIDDEN 1 __aeabi_unwind_cpp_pr2 > 42: 0000000000000c2c 8 FUNC WEAK HIDDEN 1 __aeabi_unwind_cpp_pr1 > File: /usr/local/lib/gcc13/gcc/armv7-portbld-freebsd15.0/13.3.0/libgcc_eh.a(libunwind.o) > File: /usr/local/lib/gcc13/gcc/armv7-portbld-freebsd15.0/13.3.0/libgcc_eh.a(pr-support.o) > File: /usr/local/lib/gcc13/gcc/armv7-portbld-freebsd15.0/13.3.0/libgcc_eh.a(unwind-c.o) > File: /usr/local/lib/gcc13/gcc/armv7-portbld-freebsd15.0/13.3.0/libgcc_eh.a(emutls.o) > /usr/local/lib/gcc13/gcc/armv7-portbld-freebsd15.0/13.3.0/libgcc_eh.a > . . . > 0001e6cc 00005715 R_ARM_GLOB_DAT 0001bc84 __aeabi_unwind_cpp_pr2 > 0001e6d0 00005115 R_ARM_GLOB_DAT 0001bc74 __aeabi_unwind_cpp_pr0 > 0001e6e8 00005515 R_ARM_GLOB_DAT 0001bc7c __aeabi_unwind_cpp_pr1 > 81: 000000000001bc74 8 FUNC GLOBAL DEFAULT 12 __aeabi_unwind_cpp_pr0@@GCC_3.5 (12) > 85: 000000000001bc7c 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr1@@GCC_3.5 (12) > 87: 000000000001bc84 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr2@@GCC_3.5 (12) > 3974: 000000000001bc84 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr2 > 3984: 000000000001bc74 8 FUNC GLOBAL DEFAULT 12 __aeabi_unwind_cpp_pr0 > 4557: 000000000001bc7c 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr1 > /usr/local/lib/gcc13/libgcc_s.so.1 > > (Note that each file path was listed after the content instead > of before.) > > > My work around build of lang/gcc14 ends up with: > > # find /usr/local/lib/gcc14/ -type f -exec readelf -a {} \; -print 2>&1 | grep -e __aeabi_unwind_cpp_pr -e ^/ -e ^File: | grep -v "readelf: Not an ELF file" | grep -v " UND " | grep -v " R_ARM_NONE" | more > . . . > File: /usr/local/lib/gcc14/gcc/armv7-portbld-freebsd15.0/14.2.0/libgcc_eh.a(unwind-arm.o) > 000000f8 00002f1a R_ARM_GOT_BREL 00000c30 __aeabi_unwind_cpp_pr2 > 000000fc 0000301a R_ARM_GOT_BREL 00000c28 __aeabi_unwind_cpp_pr1 > 46: 0000000000000c20 8 FUNC GLOBAL HIDDEN 1 __aeabi_unwind_cpp_pr0 > 47: 0000000000000c30 8 FUNC WEAK HIDDEN 1 __aeabi_unwind_cpp_pr2 > 48: 0000000000000c28 8 FUNC WEAK HIDDEN 1 __aeabi_unwind_cpp_pr1 > File: /usr/local/lib/gcc14/gcc/armv7-portbld-freebsd15.0/14.2.0/libgcc_eh.a(libunwind.o) > File: /usr/local/lib/gcc14/gcc/armv7-portbld-freebsd15.0/14.2.0/libgcc_eh.a(pr-support.o) > File: /usr/local/lib/gcc14/gcc/armv7-portbld-freebsd15.0/14.2.0/libgcc_eh.a(unwind-c.o) > File: /usr/local/lib/gcc14/gcc/armv7-portbld-freebsd15.0/14.2.0/libgcc_eh.a(emutls.o) > /usr/local/lib/gcc14/gcc/armv7-portbld-freebsd15.0/14.2.0/libgcc_eh.a > . . . > 0001eb90 00005715 R_ARM_GLOB_DAT 0001c12c __aeabi_unwind_cpp_pr2 > 0001eb94 00005115 R_ARM_GLOB_DAT 0001c11c __aeabi_unwind_cpp_pr0 > 0001ebac 00005515 R_ARM_GLOB_DAT 0001c124 __aeabi_unwind_cpp_pr1 > 81: 000000000001c11c 8 FUNC GLOBAL DEFAULT 12 __aeabi_unwind_cpp_pr0@@GCC_3.5 (14) > 85: 000000000001c124 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr1@@GCC_3.5 (14) > 87: 000000000001c12c 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr2@@GCC_3.5 (14) > 4007: 000000000001c12c 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr2 > 4017: 000000000001c11c 8 FUNC GLOBAL DEFAULT 12 __aeabi_unwind_cpp_pr0 > 4593: 000000000001c124 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr1 > /usr/local/lib/gcc14/libgcc_s.so.1 > > (Note that each file path was listed after the content instead > of before.) > > > What I see in FreeBSD's /usr/lib/libgcc* are: > > # readelf -a /usr/lib/libgcc* -print 2>&1 | grep -e __aeabi_unwind_cpp_pr -e ^File: | grep -v "readelf: Not an ELF # readelf -a /usr/lib/libgcc* 2>&1 | grep -e __aeabi_unwind_cpp_pr -e ^File: | grep -v "readelf: Not an ELF file" | grep -v " UND " | grep -v " R_ARM_NONE" | more > . . . > File: /usr/lib/libgcc_eh.a > File: /usr/lib/libgcc_eh.a(int_util.o) > File: /usr/lib/libgcc_eh.a(gcc_personality_v0.o) > File: /usr/lib/libgcc_eh.a(Unwind-EHABI.o) > 44: 00000000000009f4 12 FUNC GLOBAL DEFAULT 2 __aeabi_unwind_cpp_pr0 > 56: 0000000000000bc4 12 FUNC GLOBAL DEFAULT 2 __aeabi_unwind_cpp_pr1 > 61: 0000000000000bd0 12 FUNC GLOBAL DEFAULT 2 __aeabi_unwind_cpp_pr2 > File: /usr/lib/libgcc_eh.a(Unwind-sjlj.o) > File: /usr/lib/libgcc_eh.a(UnwindLevel1-gcc-ext.o) > File: /usr/lib/libgcc_eh.a(UnwindLevel1.o) > File: /usr/lib/libgcc_eh.a(UnwindRegistersRestore.o) > File: /usr/lib/libgcc_eh.a(UnwindRegistersSave.o) > File: /usr/lib/libgcc_eh.a(libunwind.o) > 000001e4 0000af60 R_ARM_GOT_PREL 00000000 __aeabi_unwind_cpp_pr1 > 000001e8 0000b560 R_ARM_GOT_PREL 00000000 __aeabi_unwind_cpp_pr0 > 000001fc 0000de60 R_ARM_GOT_PREL 00000000 __aeabi_unwind_cpp_pr2 > File: /usr/lib/libgcc_s.so > 00028f98 00001515 R_ARM_GLOB_DAT 0001674c __aeabi_unwind_cpp_pr2 > 00028f88 00005515 R_ARM_GLOB_DAT 00016570 __aeabi_unwind_cpp_pr0 > 00028f90 00005c15 R_ARM_GLOB_DAT 00016740 __aeabi_unwind_cpp_pr1 > 21: 000000000001674c 12 FUNC GLOBAL DEFAULT 14 __aeabi_unwind_cpp_pr2@@GCC_3.5 (8) > 85: 0000000000016570 12 FUNC GLOBAL DEFAULT 14 __aeabi_unwind_cpp_pr0@@GCC_3.5 (8) > 92: 0000000000016740 12 FUNC GLOBAL DEFAULT 14 __aeabi_unwind_cpp_pr1@@GCC_3.5 (8) > 256: 0000000000016570 12 FUNC GLOBAL DEFAULT 14 __aeabi_unwind_cpp_pr0 > 273: 0000000000016740 12 FUNC GLOBAL DEFAULT 14 __aeabi_unwind_cpp_pr1 > 326: 000000000001674c 12 FUNC GLOBAL DEFAULT 14 __aeabi_unwind_cpp_pr2 > > [Note that each file path was listed before the content instead > of after. There is a "File: " prefix but no '(*.o)' suffix on > the just-file-name lines.] > > > I do not know if the below is of any significance or not. > > Note the libgcc_eh.a (R_ARM_NONE examples filtered out) > gcc14 vs. FreeBSD has: > > 000000f8 00002f1a R_ARM_GOT_BREL 00000c30 __aeabi_unwind_cpp_pr2 > 000000fc 0000301a R_ARM_GOT_BREL 00000c28 __aeabi_unwind_cpp_pr1 > vs. > 000001e4 0000af60 R_ARM_GOT_PREL 00000000 __aeabi_unwind_cpp_pr1 > 000001e8 0000b560 R_ARM_GOT_PREL 00000000 __aeabi_unwind_cpp_pr0 > 000001fc 0000de60 R_ARM_GOT_PREL 00000000 __aeabi_unwind_cpp_pr2 > > That suggests gcc14 has R_ARM_NONE for all __aeabi_unwind_cpp_pr0 > references in libgcc_eh.a . > > Also, the libgcc_eh.a gcc14 vs. FreeBSD has: > > 46: 0000000000000c20 8 FUNC GLOBAL HIDDEN 1 __aeabi_unwind_cpp_pr0 > 47: 0000000000000c30 8 FUNC WEAK HIDDEN 1 __aeabi_unwind_cpp_pr2 > 48: 0000000000000c28 8 FUNC WEAK HIDDEN 1 __aeabi_unwind_cpp_pr1 > vs. > 44: 00000000000009f4 12 FUNC GLOBAL DEFAULT 2 __aeabi_unwind_cpp_pr0 > 56: 0000000000000bc4 12 FUNC GLOBAL DEFAULT 2 __aeabi_unwind_cpp_pr1 > 61: 0000000000000bd0 12 FUNC GLOBAL DEFAULT 2 __aeabi_unwind_cpp_pr2 > > And libgcc_eh.a has the Unwind-EHABI.o / libunwind.o split in FreeBSD vs. > the just unwind-arm.o in gcc14. > > There is the libgcc_s.so.1 (gcc14) vs. libgcc_s.so (FreeBSD) having: > > 81: 000000000001c11c 8 FUNC GLOBAL DEFAULT 12 __aeabi_unwind_cpp_pr0@@GCC_3.5 (14) > 85: 000000000001c124 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr1@@GCC_3.5 (14) > 87: 000000000001c12c 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr2@@GCC_3.5 (14) > 4007: 000000000001c12c 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr2 > 4017: 000000000001c11c 8 FUNC GLOBAL DEFAULT 12 __aeabi_unwind_cpp_pr0 > 4593: 000000000001c124 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr1 > vs. > 21: 000000000001674c 12 FUNC GLOBAL DEFAULT 14 __aeabi_unwind_cpp_pr2@@GCC_3.5 (8) > 85: 0000000000016570 12 FUNC GLOBAL DEFAULT 14 __aeabi_unwind_cpp_pr0@@GCC_3.5 (8) > 92: 0000000000016740 12 FUNC GLOBAL DEFAULT 14 __aeabi_unwind_cpp_pr1@@GCC_3.5 (8) > 256: 0000000000016570 12 FUNC GLOBAL DEFAULT 14 __aeabi_unwind_cpp_pr0 > 273: 0000000000016740 12 FUNC GLOBAL DEFAULT 14 __aeabi_unwind_cpp_pr1 > 326: 000000000001674c 12 FUNC GLOBAL DEFAULT 14 __aeabi_unwind_cpp_pr2 > > > Again: I do not know the significance vs. lack of such. > > But lang/gcc13 and lang/gcc14 seem to agree for those sorts > of things. So it seems I should ignore such gcc* vs. FreeBSD > distinctions when I later look at the bootstrap failure > materials. > >> 2) The problem is exactly the opposite, gcc14 does not provide these symbols. When I look in a failed build tree I see what I saw in the installed materials, though under a build path: . . . File: /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a(unwind-arm.o) 000000f8 00002f1a R_ARM_GOT_BREL 00000c30 __aeabi_unwind_cpp_pr2 000000fc 0000301a R_ARM_GOT_BREL 00000c28 __aeabi_unwind_cpp_pr1 46: 0000000000000c20 8 FUNC GLOBAL HIDDEN 1 __aeabi_unwind_cpp_pr0 47: 0000000000000c30 8 FUNC WEAK HIDDEN 1 __aeabi_unwind_cpp_pr2 48: 0000000000000c28 8 FUNC WEAK HIDDEN 1 __aeabi_unwind_cpp_pr1 File: /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a(libunwind.o) File: /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a(pr-support.o) File: /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a(unwind-c.o) File: /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a(emutls.o) /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a 0001eb90 00005715 R_ARM_GLOB_DAT 0001c12c __aeabi_unwind_cpp_pr2 0001eb94 00005115 R_ARM_GLOB_DAT 0001c11c __aeabi_unwind_cpp_pr0 0001ebac 00005515 R_ARM_GLOB_DAT 0001c124 __aeabi_unwind_cpp_pr1 81: 000000000001c11c 8 FUNC GLOBAL DEFAULT 12 __aeabi_unwind_cpp_pr0@@GCC_3.5 (14) 85: 000000000001c124 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr1@@GCC_3.5 (14) 87: 000000000001c12c 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr2@@GCC_3.5 (14) 4007: 000000000001c12c 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr2 4017: 000000000001c11c 8 FUNC GLOBAL DEFAULT 12 __aeabi_unwind_cpp_pr0 4593: 000000000001c124 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr1 /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_s.so.1 . . . (Related details are shown later.) It looks like the lang/gcc13 and lang/gcc14 installed material that I provided in a previous Email, other than path details. Just what are you proposing that lang/gcc14 should change related to the above? > For the above, I did not look at the bootstrap stage materials > yet. So I'm not making any claim about this at this point here. > >> In the configuration phase, configure builds executable with the bootstrap libgcc(in this case the static libgcc.a), but with the host(FBSD) libc. The FBSD libc uses unwinder, but the bootstrap libgcc.a does not provide it. Just what is wrong with the above that needs to change? >> see: >> "/usr/ports/lang/gcc14/work/.build/./prev-gcc/xgcc -B/usr/ports/lang/gcc14/work/.build/./prev-gcc/ -B/usr/local/armv7-portbld-freebsd15.0/bin/ -B/usr/local/armv7-portbld-freebsd15.0/bin/ -B/usr/local/armv7-portbld-freebsd15.0/lib/ -isystem /usr/local/armv7-portbld-freebsd15.0/include -isystem /usr/local/armv7-portbld-freebsd15.0/sys-include -fno-checking -g -O2 -fno-checking -gtoggle -DLIBICONV_PLUG -static-libstdc++ -static-libgcc conftest.c The "hidden symbol `__aeabi_unwind_cpp_pr0'" error message below looks like the symbol was found to me. The problem looks to instead be tied to a disallowed hidden symbol status? Is this some sort of ABI mismatch that one side or the other needs to be made to match to avoid the disallowed status? configure:3479: /wrkdirs/usr/ports/lang/gcc14/work/.build/./prev-gcc/xgcc -B/wrkdirs/usr/ports/lang/gcc14/work/.build/./prev-gcc/ -B/usr/local/armv7-portbld-freebsd15.0/bin/ -B/usr/local/armv7-portbl d-freebsd15.0/bin/ -B/usr/local/armv7-portbld-freebsd15.0/lib/ -isystem /usr/local/armv7-portbld-freebsd15.0/include -isystem /usr/local/armv7-portbld-freebsd15.0/sys-include -fno-checking -o confte st -g -O2 -fno-checking -gtoggle -mcpu=cortex-a7 -DLIBICONV_PLUG -static-libstdc++ -static-libgcc conftest.c >&5 /usr/local/bin/ld: warning: libunwind.o: missing .note.GNU-stack section implies executable stack /usr/local/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker /usr/local/bin/ld: conftest: hidden symbol `__aeabi_unwind_cpp_pr0' in /wrkdirs/usr/ports/lang/gcc14/work/.build/./prev-gcc/libgcc_eh.a(unwind-arm.o) is referenced by DSO /usr/local/bin/ld: final link failed: bad value collect2: error: ld returned 1 exit status For reference: # ls -lodT /usr/local/armv7-portbld-freebsd15.0/* drwxr-xr-x 2 root wheel - 1024 Apr 26 09:35:00 2025 /usr/local/armv7-portbld-freebsd15.0/bin drwxr-xr-x 3 root wheel - 512 Feb 21 06:35:04 2025 /usr/local/armv7-portbld-freebsd15.0/lib # ls -lodT /usr/local/armv7-portbld-freebsd15.0/*/* -r-xr-xr-x 2 root wheel - 58744 Mar 13 16:01:53 2025 /usr/local/armv7-portbld-freebsd15.0/bin/ar -r-xr-xr-x 2 root wheel - 705080 Mar 13 16:02:13 2025 /usr/local/armv7-portbld-freebsd15.0/bin/as -r-xr-xr-x 1 root wheel - 85760 Mar 13 16:01:58 2025 /usr/local/armv7-portbld-freebsd15.0/bin/dlltool -r-xr-xr-x 4 root wheel - 2037008 Mar 13 16:02:29 2025 /usr/local/armv7-portbld-freebsd15.0/bin/ld -r-xr-xr-x 4 root wheel - 2037008 Mar 13 16:02:29 2025 /usr/local/armv7-portbld-freebsd15.0/bin/ld.bfd -r-xr-xr-x 2 root wheel - 4100236 Mar 13 16:02:17 2025 /usr/local/armv7-portbld-freebsd15.0/bin/ld.gold -r-xr-xr-x 2 root wheel - 44800 Mar 13 16:02:03 2025 /usr/local/armv7-portbld-freebsd15.0/bin/nm -r-xr-xr-x 2 root wheel - 170292 Mar 13 16:01:55 2025 /usr/local/armv7-portbld-freebsd15.0/bin/objcopy -r-xr-xr-x 2 root wheel - 506448 Mar 13 16:01:52 2025 /usr/local/armv7-portbld-freebsd15.0/bin/objdump -r-xr-xr-x 2 root wheel - 58748 Mar 13 16:01:54 2025 /usr/local/armv7-portbld-freebsd15.0/bin/ranlib -r-xr-xr-x 2 root wheel - 800524 Mar 13 16:02:01 2025 /usr/local/armv7-portbld-freebsd15.0/bin/readelf -r-xr-xr-x 2 root wheel - 170296 Mar 13 16:02:04 2025 /usr/local/armv7-portbld-freebsd15.0/bin/strip drwxr-xr-x 2 root wheel - 282112 Apr 26 09:35:00 2025 /usr/local/armv7-portbld-freebsd15.0/lib/ldscripts >> In any case, I don't see any way to fix this on the FBSD (kernel, userland) side. There is only one little strange item: that each single object references __aeabi_unwind_cpp_p* symbols... >> >> Michal >> >>> when attempting a build of lang/gcc14 for: >>> OPTIONS_DEFAULT_armv7= STANDARD_BOOTSTRAP >>> # find /wrkdirs/ -name config.log -exec grep -q __aeabi_unwind_cpp_pr0 {} \; -print | more >>> /wrkdirs/usr/ports/lang/gcc14/work/.build/libdecnumber/config.log >>> /wrkdirs/usr/ports/lang/gcc14/work/.build/libbacktrace/config.log >>> /wrkdirs/usr/ports/lang/gcc14/work/.build/libiberty/config.log >>> /wrkdirs/usr/ports/lang/gcc14/work/.build/lto-plugin/config.log >>> Note: The poudriere log file ends up instead reporting the likes of: >>> checking for library containing strerror... configure: error: Link tests are not allowed after GCC_NO_EXECUTABLES. >>> So: Giving no clue about the specifics. >>> Going in the direction of instead having: >>> #OPTIONS_DEFAULT_armv7= STANDARD_BOOTSTRAP >>> so that gcc is not used at all, the "jit" in: >>> LANGUAGES:= c,c++,objc,fortran,jit >>> prevents having the system clang/clang++ do all >>> the build: after the early stages, gcc/g++ >>> depends on library coding conventions specific >>> to gcc/g++ and clang/clang++ based builds do >>> not follow those conventions in libc++ or such. >>> (Poisoned names are detected and stop the build.) >>> As I do not need jit, I do the following in >>> order to have lang/gcc14 build on/for armv7 >>> (and, presumably could for armv6 as well) : >>> # git -C /usr/ports/ diff lang/gcc14/ | cat >>> diff --git a/lang/gcc14/Makefile b/lang/gcc14/Makefile >>> index 74c59905c48d..7f082e68ecfe 100644 >>> --- a/lang/gcc14/Makefile >>> +++ b/lang/gcc14/Makefile >>> @@ -39,8 +39,8 @@ CXXFLAGS:= ${CXXFLAGS:N-mretpoline} >>> OPTIONS_DEFINE= GRAPHITE >>> OPTIONS_DEFAULT_aarch64=STANDARD_BOOTSTRAP >>> -OPTIONS_DEFAULT_armv6= STANDARD_BOOTSTRAP >>> -OPTIONS_DEFAULT_armv7= STANDARD_BOOTSTRAP >>> +#OPTIONS_DEFAULT_armv6= STANDARD_BOOTSTRAP >>> +#OPTIONS_DEFAULT_armv7= STANDARD_BOOTSTRAP >>> OPTIONS_DEFAULT_amd64= STANDARD_BOOTSTRAP >>> OPTIONS_DEFAULT_i386= STANDARD_BOOTSTRAP >>> OPTIONS_DEFAULT_powerpc= STANDARD_BOOTSTRAP >>> @@ -80,7 +80,11 @@ CONFIGURE_TARGET= x86_64-portbld-${OPSYS:tl}${OSREL} >>> CONFIGURE_ARGS+= --with-abi=elfv2 >>> .endif >>> +.if ${ARCH} == armv7 || ${ARCH} == armv6 >>> +LANGUAGES:= c,c++,objc,fortran >>> +.else >>> LANGUAGES:= c,c++,objc,fortran,jit >>> +.endif >>> TARGLIB= ${PREFIX}/lib/gcc${SUFFIX} >>> TARGLIB32= ${PREFIX}/lib32 # The version information is added later >>> LIBEXEC= ${PREFIX}/libexec/gcc${SUFFIX} >>> (I do not show my disabling of install-strip use, >>> which is done for other reasons.) >>> At least for now that allows me to have lang/gcc14 >>> other than for the jit language that I do not use. >>> But gcc14 or g++14 is not involved in producing >>> that gcc14 and g++14 . >> > What I see in the failing build's tree for: # find -s /wrkdirs/usr/ports/lang/gcc14/work/ -name 'libgcc_eh*' -exec ls -lodT {} \; -rw-r--r-- 1 root wheel - 90994 Apr 26 18:18:35 2025 /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-armv7-portbld-freebsd15.0/libgcc/libgcc_eh.a -rw-r--r-- 1 root wheel - 90994 Apr 26 18:18:43 2025 /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a # diff /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-armv7-portbld-freebsd15.0/libgcc/libgcc_eh.a wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a # # find -s /wrkdirs/usr/ports/lang/gcc14/work/ -name 'libgcc_s*' -exec ls -lodT {} \; lrwxr-xr-x 1 root wheel - 13 Apr 26 18:18:38 2025 /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-armv7-portbld-freebsd15.0/libgcc/libgcc_s.so -> libgcc_s.so.1 -rwxr-xr-x 1 root wheel - 2855412 Apr 26 18:18:38 2025 /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-armv7-portbld-freebsd15.0/libgcc/libgcc_s.so.1 lrwxr-xr-x 1 root wheel - 13 Apr 26 18:18:43 2025 /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_s.so -> libgcc_s.so.1 -rw-r--r-- 1 root wheel - 2855412 Apr 26 18:18:43 2025 /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_s.so.1 # diff /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-armv7-portbld-freebsd15.0/libgcc/libgcc_s.so.1 /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_s.so.1 # find /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/ -type f -exec readelf -a {} \; -print 2>&1 | grep -e __aeabi_unwind_cpp_pr -e ^/ -e ^File: | grep -v "readelf: Not an ELF file" | grep -v " UND " | grep -v " R_ARM_NONE" | more . . . File: /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a(unwind-arm.o) 000000f8 00002f1a R_ARM_GOT_BREL 00000c30 __aeabi_unwind_cpp_pr2 000000fc 0000301a R_ARM_GOT_BREL 00000c28 __aeabi_unwind_cpp_pr1 46: 0000000000000c20 8 FUNC GLOBAL HIDDEN 1 __aeabi_unwind_cpp_pr0 47: 0000000000000c30 8 FUNC WEAK HIDDEN 1 __aeabi_unwind_cpp_pr2 48: 0000000000000c28 8 FUNC WEAK HIDDEN 1 __aeabi_unwind_cpp_pr1 File: /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a(libunwind.o) File: /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a(pr-support.o) File: /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a(unwind-c.o) File: /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a(emutls.o) /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a 0001eb90 00005715 R_ARM_GLOB_DAT 0001c12c __aeabi_unwind_cpp_pr2 0001eb94 00005115 R_ARM_GLOB_DAT 0001c11c __aeabi_unwind_cpp_pr0 0001ebac 00005515 R_ARM_GLOB_DAT 0001c124 __aeabi_unwind_cpp_pr1 81: 000000000001c11c 8 FUNC GLOBAL DEFAULT 12 __aeabi_unwind_cpp_pr0@@GCC_3.5 (14) 85: 000000000001c124 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr1@@GCC_3.5 (14) 87: 000000000001c12c 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr2@@GCC_3.5 (14) 4007: 000000000001c12c 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr2 4017: 000000000001c11c 8 FUNC GLOBAL DEFAULT 12 __aeabi_unwind_cpp_pr0 4593: 000000000001c124 8 FUNC WEAK DEFAULT 12 __aeabi_unwind_cpp_pr1 /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_s.so.1 . . . But I also see: # find -s /wrkdirs/usr/ports/lang/gcc14/work/ -name '*.log' -exec grep __aeabi_unwind_cpp_pr {} \; -print | less /usr/local/bin/ld: a.out: hidden symbol `__aeabi_unwind_cpp_pr0' in /wrkdirs/usr/ports/lang/gcc14/work/.build/./prev-gcc/libgcc_eh.a(unwind-arm.o) is referenced by DSO /wrkdirs/usr/ports/lang/gcc14/work/.build/libbacktrace/config.log /usr/local/bin/ld: a.out: hidden symbol `__aeabi_unwind_cpp_pr0' in /wrkdirs/usr/ports/lang/gcc14/work/.build/./prev-gcc/libgcc_eh.a(unwind-arm.o) is referenced by DSO /wrkdirs/usr/ports/lang/gcc14/work/.build/libdecnumber/config.log /usr/local/bin/ld: conftest: hidden symbol `__aeabi_unwind_cpp_pr0' in /wrkdirs/usr/ports/lang/gcc14/work/.build/./prev-gcc/libgcc_eh.a(unwind-arm.o) is referenced by DSO /wrkdirs/usr/ports/lang/gcc14/work/.build/libiberty/config.log /usr/local/bin/ld: a.out: hidden symbol `__aeabi_unwind_cpp_pr0' in /wrkdirs/usr/ports/lang/gcc14/work/.build/./prev-gcc/libgcc_eh.a(unwind-arm.o) is referenced by DSO /wrkdirs/usr/ports/lang/gcc14/work/.build/lto-plugin/config.log # ls -lodTt /wrkdirs/usr/ports/lang/gcc14/work/.build/libbacktrace/config.log /wrkdirs/usr/ports/lang/gcc14/work/.build/libdecnumber/config.log /wrkdirs/usr/ports/lang/gcc14/work/.build/libiberty/config.log /wrkdirs/usr/ports/lang/gcc14/work/.build/lto-plugin/config.log -rw-r--r-- 1 root wheel - 121955 Apr 26 18:26:51 2025 /wrkdirs/usr/ports/lang/gcc14/work/.build/libiberty/config.log -rw-r--r-- 1 root wheel - 14883 Apr 26 18:26:39 2025 /wrkdirs/usr/ports/lang/gcc14/work/.build/lto-plugin/config.log -rw-r--r-- 1 root wheel - 13880 Apr 26 18:26:38 2025 /wrkdirs/usr/ports/lang/gcc14/work/.build/libbacktrace/config.log -rw-r--r-- 1 root wheel - 11524 Apr 26 18:26:38 2025 /wrkdirs/usr/ports/lang/gcc14/work/.build/libdecnumber/config.log === Mark Millard marklmi at yahoo.com