[PATCH] RISC-V: create new frag after alignment.

Lifang Xia lifang_xia@c-sky.com
Thu Jan 20 06:26:18 GMT 2022


From: Lifang Xia <lifang_xia@linux.alibaba.com>

PR 28793:

The alignment may be removed in linker. We need to create new frag after
alignment to prevent the assembler from computing static offsets.

gas/
	* config/tc-riscv.c (riscv_frag_align_code): Create new frag.
---
 gas/config/tc-riscv.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 390aaf1710b..25908597436 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -3913,6 +3913,12 @@ riscv_frag_align_code (int n)
 
   riscv_mapping_state (MAP_INSN, worst_case_bytes);
 
+  /* We need to start a new frag after the alignment which may be removed by
+     the linker, to prevent the assembler from computing static offsets.
+     This is necessary to get correct EH info.  */
+  frag_wane (frag_now);
+  frag_new (0);
+
   return true;
 }
 
-- 
2.17.1



More information about the Binutils mailing list