[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1107859: libffi-dev: Can't link libffi_pic.a to large binaries like chromium on loong64



Package: libffi-dev
Version: 3.4.8-2
Severity: normal
Tags: patch
X-Debbugs-Cc: debian-loongarch@lists.debian.org
User: debian-loongarch@lists.debian.org
Usertags: loong64

Chromium is linking libffi staticly. While on LoongArch64 platform the default code model

provides 256MiB PC-relative addressing space[1], which is not enough for chromium.

I will get following errors like:


ld.lld-19: error: /lib/loongarch64-linux-gnu/libffi_pic.a(prep_cif.o):(function ffi_prep_cif_core: .text+0x2b8): relocation R_LARCH_B26 out of range: 157436696 is not in [-134217728, 134217727]; references 'abort'


After recompiling libffi with code model medium, chromium can get linked fine.


Here is my patch setting medium code model:


diff --git a/debian/rules b/debian/rules
index 87e4467..7ad92a9 100755
--- a/debian/rules
+++ b/debian/rules
@@ -22,6 +22,13 @@ CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS)
 CFLAGS   = $(shell dpkg-buildflags --get CFLAGS)
 LDFLAGS  = $(shell dpkg-buildflags --get LDFLAGS)

+# This will enable linking libffi staticly with large binaries like chromium.
+# For more details, see:
+# https://github.com/loongson/la-abi-specs/blob/release/laelf.adoc#code_models
+ifeq (loong64,$(DEB_HOST_ARCH))
+CFLAGS += -mcmodel=medium
+endif
+
 ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
   with_check = yes
 else



-- System Information:
Debian Release: 13.0
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: loong64 (loongarch64)
Foreign Architectures: amd64

Kernel: Linux 6.15-loong64 (SMP w/8 CPU threads; PREEMPT)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=zh_CN.UTF-8, LC_CTYPE=zh_CN.UTF-8 (charmap=UTF-8), LANGUAGE=zh_CN:zh
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages libffi-dev depends on:
ii libffi8 3.4.8-2

libffi-dev recommends no packages.

libffi-dev suggests no packages.

-- no debconf information


Reply to: