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 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 . === Mark Millard marklmi at yahoo.com