RISC-V: create new frag after alignment.
authorLifang Xia <lifang_xia@linux.alibaba.com>
Thu, 20 Jan 2022 02:42:55 +0000 (10:42 +0800)
committerLifang Xia <lifang_xia@c-sky.com>
Sat, 22 Jan 2022 09:20:18 +0000 (17:20 +0800)
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

index 390aaf1710b39f1f2581b184bb93e02a0cf32150..25908597436d935309ab935f1f34c772e4b18267 100644 (file)
@@ -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;
 }