]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
riscv: Fix incorrect gnu property alignment on rv32
authorJesse Huang <jesse.huang@sifive.com>
Fri, 11 Apr 2025 04:25:21 +0000 (21:25 -0700)
committerKito Cheng <kito.cheng@sifive.com>
Wed, 16 Apr 2025 06:55:27 +0000 (14:55 +0800)
Codegen is incorrectly emitting a ".p2align 3" that coerces the
alignment of the .note.gnu.property section from 4 to 8 on rv32.

2025-04-11  Jesse Huang  <jesse.huang@sifive.com>

gcc/ChangeLog

* config/riscv/riscv.cc (riscv_file_end): Fix .p2align value.

gcc/testsuite/ChangeLog

* gcc.target/riscv/gnu-property-align-rv32.c: New file.
* gcc.target/riscv/gnu-property-align-rv64.c: New file.

gcc/config/riscv/riscv.cc
gcc/testsuite/gcc.target/riscv/gnu-property-align-rv32.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/gnu-property-align-rv64.c [new file with mode: 0644]

index 38f3ae7cd840a0d2e446f1dd4906990a679ccb0d..d3656a7a4307b1c5687628edca5415dc23150ed9 100644 (file)
@@ -10382,7 +10382,7 @@ riscv_file_end ()
       fprintf (asm_out_file, "1:\n");
 
       /* pr_type.  */
-      fprintf (asm_out_file, "\t.p2align\t3\n");
+      fprintf (asm_out_file, "\t.p2align\t%u\n", p2align);
       fprintf (asm_out_file, "2:\n");
       fprintf (asm_out_file, "\t.long\t0xc0000000\n");
       /* pr_datasz.  */
diff --git a/gcc/testsuite/gcc.target/riscv/gnu-property-align-rv32.c b/gcc/testsuite/gcc.target/riscv/gnu-property-align-rv32.c
new file mode 100644 (file)
index 0000000..4f48cff
--- /dev/null
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv32g_zicfiss -fcf-protection=return -mabi=ilp32d " } */
+
+void foo() {}
+
+/* { dg-final { scan-assembler-times ".p2align\t2" 3 } } */
+/* { dg-final { scan-assembler-not ".p2align\t3" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/gnu-property-align-rv64.c b/gcc/testsuite/gcc.target/riscv/gnu-property-align-rv64.c
new file mode 100644 (file)
index 0000000..1bfd127
--- /dev/null
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64g_zicfiss -fcf-protection=return -mabi=lp64d " } */
+
+void foo() {}
+
+/* { dg-final { scan-assembler-times ".p2align\t3" 3 } } */
+/* { dg-final { scan-assembler-not ".p2align\t2" } } */