It does not really fit with the rest so I'll add this as a top post for the armv7 context:
Only main [so: 15] has armv7 lang/gcc14* build failures on teh oficial builders. Seems odd if it is just lang/gcc1[45]* 's problem. Official 14.1R builder success logs include: https://pkg-status.freebsd.org/ampere3/data/141releng-armv7-default/a66c1b68c862/logs/gcc14-14.2.0_3.log ---Begin OPTIONS List--- ===> The following configuration options are available for gcc14-14.2.0_3: GRAPHITE=off: Support for Graphite loop optimizations ====> Options available for the radio BOOTSTRAP: you can only select none or one of them LTO_BOOTSTRAP=off: Build using a full LTO bootstrap STANDARD_BOOTSTRAP=on: Build using a full bootstrap without LTO ===> Use 'make config' to modify these settings ---End OPTIONS List--- https://pkg-status.freebsd.org/ampere3/data/141releng-armv7-default/a66c1b68c862/logs/gcc14-devel-14.2.1.s20250308,1.log ---Begin OPTIONS List--- ===> The following configuration options are available for gcc14-devel-14.2.1.s20250308,1: GRAPHITE=off: Support for Graphite loop optimizations ====> Options available for the single BOOTSTRAP: you have to select exactly one of them LTO_BOOTSTRAP=off: Build using a full LTO bootstrap STANDARD_BOOTSTRAP=on: Build using a full bootstrap without LTO ===> Use 'make config' to modify these settings ---End OPTIONS List--- Note: armv7 has not had much build time in 2025-Apr so far, thus the lack of 14.2R examples. And a local build via: release-armv7 14.2-RELEASE-p2 armv7 pkgbase 2025-03-13 21:50:17 /usr/local/poudriere/jails/release-armv7 [01:58:58] [01] [01:34:53] Finished lang/gcc14 | gcc14-14.2.0_3: Success official-armv7 14.2-STABLE armv7 pkgbase 2025-03-13 21:47:04 /usr/local/poudriere/jails/official-armv7 (I'll update this after the build stops.) Mark On Apr 26, 2025, at 19:55, Mark Millard <mark...@yahoo.com> wrote: > On Apr 26, 2025, at 11:53, Mark Millard <mark...@yahoo.com> wrote: > >> On Apr 26, 2025, at 07:45, Michal Meloun <m...@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