[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



Hi,

On Mon, 16 Jun 2025 09:01:48 +0200, Matthias Klose wrote:
>isn't that something that should be done upstream for that architecture?

There are three code models on loongarch64 according to its doc[1]:
- normal, the default one providing 256MiB PC-relative memory space.
- medium, providing 256GiB PC-relative memory space.
- extreme, providing full 64-bit memory space

And from the doc[1], wider addressing range requires more instructions and brings higher overhead. The performance and size of an application can benefit from a code model that does not overestimate the memory space accessed by the code.  So I think the default normal model should be fine for common use. If upstream compiler makes medium by default, that may harm performance and size when the binary size is not that large like chromium. So we have to decide which code model to use on each library. libffi is a library which is set statically linked by chromium, so we have to build libffi with medium code model.

There is also libc++.a having similar issue[2] when linking chromium on loong64, so I have created a MR[3] at llvm.

[1] https://github.com/loongson/la-abi-specs/blob/release/laelf.adoc#code-models
[2] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1107858
[3] https://salsa.debian.org/pkg-llvm-team/llvm-toolchain/-/merge_requests/172

Best regards,
Jianfeng

Reply to: