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


Reply via email to