public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] LoongArch: gas: Simplify relocations in sections with debuging flag
@ 2024-04-17  6:27 Jinyang He
  0 siblings, 0 replies; only message in thread
From: Jinyang He @ 2024-04-17  6:27 UTC (permalink / raw)
  To: Chenghua Xu, Zhensong Liu, mengqinggang
  Cc: WANG Xuerui, Xi Ruoyao, binutils, Jinyang He, Lulu Cai

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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-04-17  6:27 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-17  6:27 [PATCH] LoongArch: gas: Simplify relocations in sections with debuging flag Jinyang He

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).