]> git.ipfire.org Git - thirdparty/gcc.git/commit
LoongArch: Fix the issue of function jump out of range caused by crtbeginS.o [PR118844].
authorLulu Cheng <chenglulu@loongson.cn>
Wed, 12 Feb 2025 06:29:58 +0000 (14:29 +0800)
committerLulu Cheng <chenglulu@loongson.cn>
Mon, 17 Feb 2025 02:15:39 +0000 (10:15 +0800)
commitae14d7d04da8c6cb542269722638071f999f94d8
treef809de7cc994fdc132b5f9931259568ca29e6e31
parent2ef2b206c4617abae60002280455f7175aaa6064
LoongArch: Fix the issue of function jump out of range caused by crtbeginS.o [PR118844].

Due to the presence of R_LARCH_B26 in
/usr/lib/gcc/loongarch64-linux-gnu/14/crtbeginS.o, its addressing
range is [PC-128MiB, PC+128MiB-4]. This means that when the code
segment size exceeds 128MB, linking with lld will definitely fail
(ld will not fail because the order of the two is different).

The linking order:
  lld: crtbeginS.o + .text + .plt
  ld : .plt + crtbeginS.o + .text

To solve this issue, add '-mcmodel=extreme' when compiling crtbeginS.o.

PR target/118844

libgcc/ChangeLog:

* config/loongarch/t-crtstuff: Add '-mcmodel=extreme'
to CRTSTUFF_T_CFLAGS_S.
libgcc/config/loongarch/t-crtstuff