[PATCH] LoongArch: gas: Simplify relocations in sections with debuging flag
Jinyang He
hejinyang@loongson.cn
Wed Apr 17 06:27:42 GMT 2024
Gas should not emit ADD/SUB relocation pairs for label differences
in non-exec section when relax enabled, because the real value can
be compute out in assembly stage. Thus, correct the definition of
TC_FORCE_RELOCATION_SUB_SAME.
---
gas/config/tc-loongarch.h | 4 +---
gas/testsuite/gas/loongarch/relax_debug_line.d | 11 +++++++++++
gas/testsuite/gas/loongarch/relax_debug_line.s | 6 ++++++
3 files changed, 18 insertions(+), 3 deletions(-)
create mode 100644 gas/testsuite/gas/loongarch/relax_debug_line.d
create mode 100644 gas/testsuite/gas/loongarch/relax_debug_line.s
diff --git a/gas/config/tc-loongarch.h b/gas/config/tc-loongarch.h
index e0d0962e5f0..e1ef42c1314 100644
--- a/gas/config/tc-loongarch.h
+++ b/gas/config/tc-loongarch.h
@@ -91,9 +91,7 @@ extern bool loongarch_frag_align_code (int, int);
#define TC_FORCE_RELOCATION_SUB_SAME(FIX, SEC) \
(LARCH_opts.relax ? \
(GENERIC_FORCE_RELOCATION_SUB_SAME (FIX, SEC) \
- || ((SEC)->flags & SEC_CODE) != 0 \
- || ((SEC)->flags & SEC_DEBUGGING) != 0 \
- || TC_FORCE_RELOCATION (FIX)) \
+ || ((SEC)->flags & SEC_CODE) != 0) \
: (GENERIC_FORCE_RELOCATION_SUB_SAME (FIX, SEC))) \
#define TC_LINKRELAX_FIXUP(seg) ((seg->flags & SEC_CODE) \
diff --git a/gas/testsuite/gas/loongarch/relax_debug_line.d b/gas/testsuite/gas/loongarch/relax_debug_line.d
new file mode 100644
index 00000000000..0099eb5b79e
--- /dev/null
+++ b/gas/testsuite/gas/loongarch/relax_debug_line.d
@@ -0,0 +1,11 @@
+#as: --gdwarf-5
+#readelf: -r --wide
+
+Relocation section '\.rela\.debug_line' at offset .* contains 5 entries:
+#...
+0+22.*R_LARCH_32[ \t]+[0-9]+.*
+0+2c.*R_LARCH_32[ \t]+[0-9]+.*
+0+36.*R_LARCH_64[ \t]+[0-9]+.*
+0+42.*R_LARCH_ADD16[ \t]+[0-9]+.*
+0+42.*R_LARCH_SUB16[ \t]+[0-9]+.*
+#pass
diff --git a/gas/testsuite/gas/loongarch/relax_debug_line.s b/gas/testsuite/gas/loongarch/relax_debug_line.s
new file mode 100644
index 00000000000..d2852bb91e2
--- /dev/null
+++ b/gas/testsuite/gas/loongarch/relax_debug_line.s
@@ -0,0 +1,6 @@
+ .file 0 "test"
+ .text
+ .loc 0 10 0
+ nop
+
+.section .debug_line, "", @progbits
--
2.43.0
More information about the Binutils
mailing list