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 via email to