代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/binutils 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。