libreoffice on armhf: ‘asm’ operand has impossible constraints or there are not enough registers

Rene Engelhard rene at debian.org
Sun Jul 28 16:38:01 UTC 2024


[ Ccing libreoffice upstream ]

Hi,

see https://buildd.debian.org/status/fetch.php?pkg=libreoffice&arch=armhf&ver=4%3A24.8.0~rc2-1&stamp=1722178361&raw=1:

build CXX] bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx
S=/<<PKGBUILDDIR>> && I=$S/instdir && W=$S/workdir &&  mkdir -p $W/CxxObject/bridges/source/cpp_uno/gcc3_linux_arm/ $W/Dep/CxxObject/bridges/source/cpp_uno/gcc3_linux_arm/ && cd /<<PKGBUILDDIR>> &&   	  arm-linux-gnueabihf-g++ -DARM -DARM32 -DBOOST_SYSTEM_NO_DEPRECATED -DCPPU_ENV=gcc3 -DLINUX -DNDEBUG -DOSL_DEBUG_LEVEL=0 -DUNIX -DUNX -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -D_LARGEFILE_SOURCE -D_PTHREADS -D_REENTRANT -D_TIME_BITS=64 -Wdate-time -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -DHAVE_POSIX_FALLOCATE   -fvisibility=hidden    -Wall -Wno-missing-braces -Wendif-labels -Wextra -Wundef -Wunreachable-code -Wshadow -Wunused-macros  -finput-charset=UTF-8 -fmessage-length=0 -fno-common -pipe   -Wdeprecated-copy-dtor -Wduplicated-cond -Wlogical-op -Wshift-overflow=2 -Wunused-const-variable=1 -Wno-cast-function-type -fvisibility-inlines-hidden -fPIC -Wshadow -Woverloaded-virtual -std=c++20 -pthread  -g1 -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -Wno-psabi  -O0 -Wp,-U_FORTIFY_SOURCE -fstrict-aliasing -fstrict-overflow -fexceptions -fno-enforce-eh-specs -fno-omit-frame-pointer -fno-strict-aliasing -fno-lto     -DLIBO_INTERNAL_ONLY  -c $S/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx -o $W/CxxObject/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.o -MMD -MT $W/CxxObject/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.o -MP -MF $W/Dep/CxxObject/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.d_ -I$S/bridges/inc -I$S/include  -I$S/config_host  -I$W/UnoApiHeadersTarget/udkapi/comprehensive   && mv $W/Dep/CxxObject/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.d_ $W/Dep/CxxObject/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.d
[...]
/<<PKGBUILDDIR>>/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx: In function ‘void {anonymous}::callVirtualMethod(void*, sal_Int32, void*, typelib_TypeDescriptionReference*, sal_uInt32*, sal_uInt32, sal_uInt32*, sal_uInt32, double*)’:
/<<PKGBUILDDIR>>/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx:278:5: error: ‘asm’ operand has impossible constraints or there are not enough registers
   278 |     __asm__ __volatile__ (
       |     ^~~~~~~
make[2]: *** [/<<PKGBUILDDIR>>/solenv/gbuild/LinkTarget.mk:338: /<<PKGBUILDDIR>>/workdir/CxxObject/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....

(so far) only on armhf, not on armel. (And arm64/aarch64 is a different bridge code)

The code is https://git.libreoffice.org/core/+/refs/tags/libreoffice-24.8.0.2/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx#274 ff.

This didn't change in LO itself, so the only explanation is g++ 13 vs. g++ 14.
Indeed the same happens with LibreOffice 24.2.5 and building with g++ 13 works.

Any idea?

Regards,

Rene




More information about the LibreOffice mailing list