FreeBSD 16 switched the powerpc64le base ABI to IEEE binary128 for long double (matching the direction of powerpc64le-linux). For GCC to be ABI-compatible with the FreeBSD system it must likewise default long double to IEEE-128. GCC already supports this on powerpc64le-linux; this series wires FreeBSD into the same paths.
Patches 1-3 are FreeBSD target enablement mirroring the existing powerpc64le-linux IEEE-128 support. Patch 4 is a general libgfortran bug that any IEEE-128 long double target hits (it breaks the build), and is independent of the rest. Tested by building GCC from git on powerpc64le-unknown-freebsd16.0 with --with-long-double-format=ieee: builds to completion, long double defaults to IEEE binary128, and f951 and libgfortran.so.5 are produced. Piotr Kubaj (4): rs6000: default long double to IEEE 128-bit on powerpc*le configure: accept --with-long-double-format on powerpc64le-*-freebsd* libgcc: build float128 support for powerpc64*-*-freebsd* libgfortran: don't add REAL(KIND=17) when long double is IEEE 128-bit gcc/config.gcc | 5 ++++- gcc/configure.ac | 3 ++- libgcc/config.host | 6 ++++++ libgfortran/kinds-override.h | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) -- 2.49.0
