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