tag 1110520 + patch retitle 1110520 jpeg-xl: FTBFS on architectures using gcc-13: undefined reference to `__cxa_call_terminate' user [email protected] 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: [email protected] > User: [email protected] > 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@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 [email protected] http://aurel32.net

