Bug#1110520: jpeg-xl: FTBFS on riscv64: undefined reference to `__cxa_call_terminate'
Aurelien Jarno
aurel32 at debian.org
Fri Aug 8 22:20:21 BST 2025
tag 1110520 + patch
retitle 1110520 jpeg-xl: FTBFS on architectures using gcc-13: undefined reference to `__cxa_call_terminate'
user debian-s390 at lists.debian.org
usertags 1110520 s390x
thanks
On 2025-08-07 14:37, Luke Yasuda wrote:
> Source: jpeg-xl
> Version: 0.11.1-4
> Severity: serious
> Tags: ftbfs
> Justification: fails to build from source (but built successfully in the past)
> X-Debbugs-Cc: debian-riscv at lists.debian.org
> User: debian-riscv at lists.debian.org
> Usertags: riscv64
>
> Hi!
Hi,
> jpeg-xl FTBFS on riscv64, the version in sid and trixie:
>
>
> [333/418] : && /usr/bin/g++-13 -g -O2 -ffile-prefix-map=/build/reproducible-path/jpeg-xl-0.11.1=. -fstack-protector-strong -Wformat -Werror=format-security -fexcess-precision=fast -DJXL_DEBUG_WARNING -DJXL_DEBUG_ON_ERROR -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -Wl,-z,relro -Wl,-z,now -fPIE -pie -Wl,--dependency-file=lib/CMakeFiles/codec_test.dir/link.d lib/CMakeFiles/codec_test.dir/extras/codec_test.cc.o -o lib/tests/codec_test -Wl,-rpath,/build/reproducible-path/jpeg-xl-0.11.1/obj-riscv64-linux-gnu/lib lib/libjxl_testlib-internal.a lib/libjxl_extras-internal.a /usr/lib/riscv64-linux-gnu/libgtest_main.a /usr/lib/riscv64-linux-gnu/libgtest.a lib/libjxl-internal.a /usr/lib/riscv64-linux-gnu/libhwy.so /usr/lib/riscv64-linux-gnu/libbrotlidec.so /usr/lib/riscv64-linux-gnu/libbrotlicommon.so /usr/lib/riscv64-linux-gnu/libbrotlienc.so lib/libjxl_cms.so.0.11.1 /usr/lib/riscv64-linux-gnu/libtcmalloc_minimal.so lib/libjxl_threads.so.0.11.1 /usr/lib/riscv64-linux-gnu/libgif.so /usr/lib/riscv64-linux-gnu/libjpeg.so /usr/lib/riscv64-linux-gnu/libpng.so /usr/lib/riscv64-linux-gnu/libz.so /usr/lib/riscv64-linux-gnu/libOpenEXR-3_1.so /usr/lib/riscv64-linux-gnu/libOpenEXRUtil-3_1.so /usr/lib/riscv64-linux-gnu/libOpenEXRCore-3_1.so /usr/lib/riscv64-linux-gnu/libIex-3_1.so /usr/lib/riscv64-linux-gnu/libIlmThread-3_1.so /usr/lib/riscv64-linux-gnu/libImath-3_1.so && cd /build/reproducible-path/jpeg-xl-0.11.1/obj-riscv64-linux-gnu/lib && /usr/bin/cmake -D TEST_TARGET=codec_test -D TEST_EXECUTABLE=/build/reproducible-path/jpeg-xl-0.11.1/obj-riscv64-linux-gnu/lib/tests/codec_test -D TEST_EXECUTOR= -D TEST_WORKING_DIR=/build/reproducible-path/jpeg-xl-0.11.1/obj-riscv64-linux-gnu/lib -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D TEST_FILTER= -D NO_PRETTY_TYPES=FALSE -D NO_PRETTY_VALUES=FALSE -D TEST_LIST=codec_test_TESTS -D CTEST_FILE=/build/reproducible-path/jpeg-xl-0.11.1/obj-riscv64-linux-gnu/lib/codec_test[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=240 -D TEST_DISCOVERY_EXTRA_ARGS= -D TEST_XML_OUTPUT_DIR= -P /usr/share/cmake-3.31/Modules/GoogleTestAddTests.cmake
> FAILED: lib/tests/codec_test lib/codec_test[1]_tests.cmake /build/reproducible-path/jpeg-xl-0.11.1/obj-riscv64-linux-gnu/lib/codec_test[1]_tests.cmake
> : && /usr/bin/g++-13 -g -O2 -ffile-prefix-map=/build/reproducible-path/jpeg-xl-0.11.1=. -fstack-protector-strong -Wformat -Werror=format-security -fexcess-precision=fast -DJXL_DEBUG_WARNING -DJXL_DEBUG_ON_ERROR -Wdate-time -D_FORTIFY_SOURCE=2 -fno-rtti -Wl,-z,relro -Wl,-z,now -fPIE -pie -Wl,--dependency-file=lib/CMakeFiles/codec_test.dir/link.d lib/CMakeFiles/codec_test.dir/extras/codec_test.cc.o -o lib/tests/codec_test -Wl,-rpath,/build/reproducible-path/jpeg-xl-0.11.1/obj-riscv64-linux-gnu/lib lib/libjxl_testlib-internal.a lib/libjxl_extras-internal.a /usr/lib/riscv64-linux-gnu/libgtest_main.a /usr/lib/riscv64-linux-gnu/libgtest.a lib/libjxl-internal.a /usr/lib/riscv64-linux-gnu/libhwy.so /usr/lib/riscv64-linux-gnu/libbrotlidec.so /usr/lib/riscv64-linux-gnu/libbrotlicommon.so /usr/lib/riscv64-linux-gnu/libbrotlienc.so lib/libjxl_cms.so.0.11.1 /usr/lib/riscv64-linux-gnu/libtcmalloc_minimal.so lib/libjxl_threads.so.0.11.1 /usr/lib/riscv64-linux-gnu/libgif.so /usr/lib/riscv64-linux-gnu/libjpeg.so /usr/lib/riscv64-linux-gnu/libpng.so /usr/lib/riscv64-linux-gnu/libz.so /usr/lib/riscv64-linux-gnu/libOpenEXR-3_1.so /usr/lib/riscv64-linux-gnu/libOpenEXRUtil-3_1.so /usr/lib/riscv64-linux-gnu/libOpenEXRCore-3_1.so /usr/lib/riscv64-linux-gnu/libIex-3_1.so /usr/lib/riscv64-linux-gnu/libIlmThread-3_1.so /usr/lib/riscv64-linux-gnu/libImath-3_1.so && cd /build/reproducible-path/jpeg-xl-0.11.1/obj-riscv64-linux-gnu/lib && /usr/bin/cmake -D TEST_TARGET=codec_test -D TEST_EXECUTABLE=/build/reproducible-path/jpeg-xl-0.11.1/obj-riscv64-linux-gnu/lib/tests/codec_test -D TEST_EXECUTOR= -D TEST_WORKING_DIR=/build/reproducible-path/jpeg-xl-0.11.1/obj-riscv64-linux-gnu/lib -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D TEST_FILTER= -D NO_PRETTY_TYPES=FALSE -D NO_PRETTY_VALUES=FALSE -D TEST_LIST=codec_test_TESTS -D CTEST_FILE=/build/reproducible-path/jpeg-xl-0.11.1/obj-riscv64-linux-gnu/lib/codec_test[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=240 -D TEST_DISCOVERY_EXTRA_ARGS= -D TEST_XML_OUTPUT_DIR= -P /usr/share/cmake-3.31/Modules/GoogleTestAddTests.cmake
> /usr/bin/ld: /usr/lib/riscv64-linux-gnu/libgtest.a(gtest-all.cc.o): in function `testing::internal::XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(char const*)':
> (.text+0xb0e6): undefined reference to `__cxa_call_terminate'
> /usr/bin/ld: /usr/lib/riscv64-linux-gnu/libgtest.a(gtest-all.cc.o): in function `testing::internal::OpenFileForWriting(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
> (.text+0xb1c6): undefined reference to `__cxa_call_terminate'
> /usr/bin/ld: (.text+0xb28e): undefined reference to `__cxa_call_terminate'
> /usr/bin/ld: /usr/lib/riscv64-linux-gnu/libgtest.a(gtest-all.cc.o): in function `testing::internal::JsonUnitTestResultPrinter::JsonUnitTestResultPrinter(char const*)':
> (.text+0xb356): undefined reference to `__cxa_call_terminate'
> /usr/bin/ld: (.text+0xb41c): undefined reference to `__cxa_call_terminate'
> /usr/bin/ld: /usr/lib/riscv64-linux-gnu/libgtest.a(gtest-all.cc.o):(.text+0xb4e2): more undefined references to `__cxa_call_terminate' follow
> /usr/bin/ld: /usr/lib/riscv64-linux-gnu/libIlmThread-3_1.so: undefined reference to `__cxa_call_terminate at CXXABI_1.3.15'
> collect2: error: ld returned 1 exit status
The problem seems to happens because jpeg-xl is built with gcc-13 on
riscv64. It is also reproducible on s390x. It's not clear to me why, as
the packages providing libgtest.a or libIlmThread-3_1.so haven't been
rebuilt since the last build of jpeg-xl on riscv64.
Nevertheless I have tested that jpeg-xl builds fine on riscv64 with
gcc-14 (not clear why it has been changed to gcc-13 on riscv64), so the
easiest fix is to build it with it. Here is the patch I tested:
--- jpeg-xl-0.11.1/debian/control
+++ jpeg-xl-0.11.1/debian/control
@@ -4,7 +4,7 @@
Section: graphics
Priority: optional
Standards-Version: 4.7.0
-Build-Depends: asciidoc-base, gcc-13 [hppa powerpc ppc64 riscv64 sparc64 s390x], g++-13 [hppa powerpc ppc64 riscv64 sparc64 s390x],
+Build-Depends: asciidoc-base, gcc-13 [hppa powerpc ppc64 sparc64 s390x], g++-13 [hppa powerpc ppc64 sparc64 s390x],
cmake (>= 3.10),
debhelper-compat (= 13),
default-jdk [amd64 arm64 armel armhf i386 mips64el ppc64el riscv64 s390x alpha ia64 m68k powerpc ppc64 sh4 sparc64 x32] <!nojava>,
--- jpeg-xl-0.11.1/debian/rules
+++ jpeg-xl-0.11.1/debian/rules
@@ -2,7 +2,7 @@
include /usr/share/dpkg/default.mk
-GCC_13_ARCHS=hppa powerpc ppc64 riscv64 sparc64 s390x
+GCC_13_ARCHS=hppa powerpc ppc64 sparc64 s390x
ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),$(GCC_13_ARCHS)))
export CC=gcc-13
export CXX=g++-13
Unfortunately this strategy doesn't work for s390x, as it causes the
testsuite to fail.
Regards
Aurelien
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
aurelien at aurel32.net http://aurel32.net
More information about the Pkg-phototools-devel
mailing list