Projects
openEuler:24.03:SP1:Everything
binutils
_service:tar_scm:LoongArch-LoongArch64-allows-r...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:LoongArch-LoongArch64-allows-relocations-to-use-64-b.patch of Package binutils
From 87c63c08d6171b556f86c14fded00ab8b4aaa73b Mon Sep 17 00:00:00 2001 From: Lulu Cai <cailulu@loongson.cn> Date: Wed, 7 Aug 2024 18:04:26 +0800 Subject: [PATCH 110/123] LoongArch: LoongArch64 allows relocations to use 64-bit addends Relocations using 64-bit addends allow larger constant offset address calculations to be fused. --- gas/config/tc-loongarch.c | 3 +++ gas/testsuite/gas/loongarch/large_addend.d | 12 ++++++++++++ gas/testsuite/gas/loongarch/large_addend.s | 8 ++++++++ 3 files changed, 23 insertions(+) create mode 100644 gas/testsuite/gas/loongarch/large_addend.d create mode 100644 gas/testsuite/gas/loongarch/large_addend.s diff --git a/gas/config/tc-loongarch.c b/gas/config/tc-loongarch.c index 72815233..16355cac 100644 --- a/gas/config/tc-loongarch.c +++ b/gas/config/tc-loongarch.c @@ -1221,6 +1221,9 @@ append_fixp_and_insn (struct loongarch_cl_insn *ip) bfd_get_reloc_size (howto), &reloc_info[i].value, FALSE, r_type); } + /* Allow LoongArch 64 to use 64-bit addends. */ + if (LARCH_opts.ase_lp64) + ip->fixp[i]->fx_no_overflow = 1; } } diff --git a/gas/testsuite/gas/loongarch/large_addend.d b/gas/testsuite/gas/loongarch/large_addend.d new file mode 100644 index 00000000..18eb33a3 --- /dev/null +++ b/gas/testsuite/gas/loongarch/large_addend.d @@ -0,0 +1,12 @@ +#as: +#objdump: -r +#skip: loongarch32-*-* + +.*: file format elf64-loongarch + +RELOCATION RECORDS FOR \[\.text\]: +OFFSET TYPE VALUE +0000000000000000 R_LARCH_PCALA_HI20 _start\+0x7fffabcd12345678 +0000000000000004 R_LARCH_PCALA_LO12 _start\+0x7fffabcd12345678 +0000000000000008 R_LARCH_PCALA64_LO20 _start\+0x7fffabcd12345678 +000000000000000c R_LARCH_PCALA64_HI12 _start\+0x7fffabcd12345678 diff --git a/gas/testsuite/gas/loongarch/large_addend.s b/gas/testsuite/gas/loongarch/large_addend.s new file mode 100644 index 00000000..7db90525 --- /dev/null +++ b/gas/testsuite/gas/loongarch/large_addend.s @@ -0,0 +1,8 @@ + .text + .global _start +_start: + pcalau12i $a0, %pc_hi20(_start+0x7fffabcd12345678) + addi.d $a1, $zero, %pc_lo12(_start+0x7fffabcd12345678) + lu32i.d $a1, %pc64_lo20(_start+0x7fffabcd12345678) + lu52i.d $a1, $a1, %pc64_hi12(_start+0x7fffabcd12345678) + add.d $a0, $a1, $a0 -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2