Bug#1121530: libreoffice: Please build with -fPIE on sparc64 to fix FTBFS
Source: libreoffice
Version: 4:25.8.3-1
Severity: normal
Tags: patch
User: debian-sparc@lists.debian.org
Usertags: sparc64
X-Debbugs-Cc: debian-sparc@lists.debian.org
Hi,
on sparc64, libreoffice fails to build from source due to some GOT offsets
being too large for the dynamic linker:
lp_MDO.o: in function `getMDO':
lp_MDO.c:(.text+0x6f4): relocation truncated to fit: R_SPARC_GOT13 against symbol `mdo_free' defined in .text section in lp_MDO.o
lp_MDO.c:(.text+0x6fc): relocation truncated to fit: R_SPARC_GOT13 against symbol `mdo_calloc' defined in .text section in lp_MDO.o
mmio.o: in function `mm_read_mtx_crd':
mmio.c:(.text+0x938): relocation truncated to fit: R_SPARC_GOT13 against symbol `stdin@@GLIBC_2.2' defined in .data section in /lib/sparc64-linux-gnu/libc.so.6
mmio.c:(.text+0x9f8): relocation truncated to fit: R_SPARC_GOT13 against symbol `stdin@@GLIBC_2.2' defined in .data section in /lib/sparc64-linux-gnu/libc.so.6
mmio.c:(.text+0xa7c): relocation truncated to fit: R_SPARC_GOT13 against symbol `stdin@@GLIBC_2.2' defined in .data section in /lib/sparc64-linux-gnu/libc.so.6
mmio.o: in function `mm_read_unsymmetric_sparse':
mmio.c:(.text+0xce8): relocation truncated to fit: R_SPARC_GOT13 against symbol `stderr@@GLIBC_2.2' defined in .data section in /lib/sparc64-linux-gnu/libc.so.6
mmio.c:(.text+0xd24): relocation truncated to fit: R_SPARC_GOT13 against symbol `stderr@@GLIBC_2.2' defined in .data section in /lib/sparc64-linux-gnu/libc.so.6
mmio.o: in function `mm_write_mtx_crd':
mmio.c:(.text+0xdd0): relocation truncated to fit: R_SPARC_GOT13 against symbol `stdout@@GLIBC_2.2' defined in .data section in /lib/sparc64-linux-gnu/libc.so.6
mmio.c:(.text+0xf44): relocation truncated to fit: R_SPARC_GOT13 against symbol `stdout@@GLIBC_2.2' defined in .data section in /lib/sparc64-linux-gnu/libc.so.6
myblas.o: in function `is_nativeBLAS':
myblas.c:(.text+0x7a0): relocation truncated to fit: R_SPARC_GOT13 against symbol `hBLAS' defined in .bss section in myblas.o
myblas.o: in function `load_BLAS':
myblas.c:(.text+0x7c0): additional relocation overflows omitted from the output
collect2: error: ld returned 1 exit status
This can be fixed by passing "-fPIE" which makes sure the compiler makes sure
that the GOT entries are capable of handling large offsets.
I propose the following patch:
--- debian/rules.orig 2025-11-08 21:28:26.000000000 +0100
+++ debian/rules 2025-11-27 22:11:18.063514133 +0100
@@ -1146,6 +1146,11 @@
DEB_CXXFLAGS_MAINT_APPEND = -ffp-contract=off
endif
+ifneq (,$(filter sparc64,$(DEB_HOST_ARCH)))
+ DEB_CFLAGS_MAINT_APPEND = -fPIE
+ DEB_CXXFLAGS_MAINT_APPEND = -fPIE
+endif
+
ifneq (,$(filter s390x,$(DEB_HOST_ARCH)))
ifeq (,$(shell gcc -v 2>&1 | grep disable-s390-excess-float-precision))
DEB_CFLAGS_MAINT_APPEND = -fexcess-precision=fast
I'm attaching the patch to this bug report as well.
Thanks,
Adrian
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer
`. `' Physicist
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
--- debian/rules.orig 2025-11-08 21:28:26.000000000 +0100
+++ debian/rules 2025-11-27 22:11:18.063514133 +0100
@@ -1146,6 +1146,11 @@
DEB_CXXFLAGS_MAINT_APPEND = -ffp-contract=off
endif
+ifneq (,$(filter sparc64,$(DEB_HOST_ARCH)))
+ DEB_CFLAGS_MAINT_APPEND = -fPIE
+ DEB_CXXFLAGS_MAINT_APPEND = -fPIE
+endif
+
ifneq (,$(filter s390x,$(DEB_HOST_ARCH)))
ifeq (,$(shell gcc -v 2>&1 | grep disable-s390-excess-float-precision))
DEB_CFLAGS_MAINT_APPEND = -fexcess-precision=fast
Reply to: