Bug#1142020: libffi: FTBFS on armhf,i386,hppa,m68k,sh4,sparc64: (symver)LIBFFI_INT128_8.3 disappeared from the symbols file
Jessica Clarke <[email protected]> Mon, 13 Jul 2026 23:31:00 +0100
| Newsgroups | gmane.linux.debian.devel.gcc |
|---|---|
| Message-ID | <272FC3A4-40A6-447F-9F35-F2C753AD479E__21891.4083599643$1783982008$gmane$org@debian.org> |
On 13 Jul 2026, at 23:15, Simon McVittie <[email protected]> wrote: >=20 > Source: libffi > Version: 3.7.1-1 > Severity: serious > Tags: ftbfs > Justification: fails to build from source (but built successfully in = the past) > X-Debbugs-Cc: [email protected], = [email protected], [email protected], = [email protected], [email protected] > User: [email protected] > Usertags: armhf > User: [email protected] > Usertags: hppa > User: [email protected] > Usertags: m68k > User: [email protected] > Usertags: sh4 > User: [email protected] > Usertags: sparc64 > User: [email protected] > Usertags: i386 >=20 > The recent libffi upload didn't build successfully on armhf, i386 and=20= > several -ports architectures. =46rom the buildd log=20 > = https://buildd.debian.org/status/fetch.php?pkg=3Dlibffi&arch=3Darmhf&ver=3D= 3.7.1-1&stamp=3D1783944369&raw=3D0=20 > and other architectures: >=20 > dpkg-gensymbols: error: some symbols or patterns disappeared in the = symbols file: see diff output below > dpkg-gensymbols: warning: debian/libffi8/DEBIAN/symbols does not match = completely debian/libffi8.symbols > --- debian/libffi8.symbols (libffi8_3.7.1-1_armhf) > +++ dpkg-gensymbolsJgDtu7 2026-07-13 12:06:07.296266272 +0000 > @@ -5,4 +5,4 @@ > (symver)LIBFFI_CLOSURE_8.0 3.4 > (symver|arch=3D!arc !hppa !ia64 !m68k !loong64 !any-mips !any-mipsel = !any-mips64 !nios2 !powerpc !ppc64 !ppc64el !riscv64 = !sh4)LIBFFI_COMPLEX_8.0 3.4 > (symver|arch=3D!arc !hppa !ia64 !m68k !nios2 = !sh4)LIBFFI_GO_CLOSURE_8.0 3.4 > - (symver)LIBFFI_INT128_8.3 3.7 > +#MISSING: 3.7.1-1# (symver)LIBFFI_INT128_8.3 3.7 >=20 > Perhaps this means the affected architectures don't offer an int128=20 > type in their ABIs? They are mostly, but not entirely, 32-bit (sparc64=20= > is 64-bit). >=20 > If libffi is expected to need per-architecture symbols file = adjustments,=20 > it might be a good idea to do the initial upload of each new upstream=20= > release to experimental, to avoid multiarch skew in unstable? 32-bit architectures don=E2=80=99t have __int128, so those are expected. sparc64 is unexpected, but uses libcalls for it, so probably some configure script check is a bit broken and gives a false negative. ppc64el is also missing the symbol, along with others, but not in your list here, and I assume the same is true for ppc64 but the build log is missing. That one doesn=E2=80=99t use libcalls, which is stranger, so = maybe something else is going on here. And looking through the source, the uses of this symbol version are gated on FFI_TARGET_HAS_INT128. So, yes, being an architecture that supports __int128 is necessary, but not sufficient. It=E2=80=99s about = whether that architecture=E2=80=99s ABI needs to consider __int128 or not (which = will of course imply that type is supported!). Searching the source for the macro that list is: alpha amd64 arm64 loong64 riscv64 s390x x32 Which is indeed the exact set of architectures it successfully built for. Jessica