[PATCH 02/12] riscv/cfi: Setup necessary options for enable-cfi option

Jesse Huang jesse.huang@sifive.com
Wed Jun 18 08:42:48 GMT 2025


Co-authored-by: Hau Hsu <hau.hsu@sifive.com>
---
 sysdeps/riscv/Makefile        | 9 +++++++++
 sysdeps/riscv/preconfigure    | 2 ++
 sysdeps/riscv/preconfigure.ac | 1 +
 3 files changed, 12 insertions(+)

diff --git a/sysdeps/riscv/Makefile b/sysdeps/riscv/Makefile
index c08753ae8a..99976fddad 100644
--- a/sysdeps/riscv/Makefile
+++ b/sysdeps/riscv/Makefile
@@ -15,3 +15,12 @@ ASFLAGS-.os += -Wa,-mno-relax
 ASFLAGS-.o += -Wa,-mno-relax
 sysdep-CFLAGS += -mno-relax
 endif
+
+# Enable RISC-V CFI
+ifeq (yes,$(riscv-enable-cfi))
+CFLAGS-.o += -fcf-protection=full
+CFLAGS-.os += -fcf-protection=full
+CFLAGS-.op += -fcf-protection=full
+CFLAGS-.oS += -fcf-protection=full
+asm-CPPFLAGS += -fcf-protection=full -include sysdep.h
+endif
diff --git a/sysdeps/riscv/preconfigure b/sysdeps/riscv/preconfigure
index a5de5ccb7d..439b526452 100644
--- a/sysdeps/riscv/preconfigure
+++ b/sysdeps/riscv/preconfigure
@@ -62,6 +62,8 @@ riscv*)
 
     printf "%s\n" "#define RISCV_ABI_FLEN $abi_flen" >>confdefs.h
 
+    config_vars="$config_vars
+riscv-enable-cfi = $enable_cfi"
     ;;
 esac
 
diff --git a/sysdeps/riscv/preconfigure.ac b/sysdeps/riscv/preconfigure.ac
index a5c30e0dbf..fb75ae427a 100644
--- a/sysdeps/riscv/preconfigure.ac
+++ b/sysdeps/riscv/preconfigure.ac
@@ -60,5 +60,6 @@ riscv*)
 
     AC_DEFINE_UNQUOTED([RISCV_ABI_XLEN], [$xlen])
     AC_DEFINE_UNQUOTED([RISCV_ABI_FLEN], [$abi_flen])
+    LIBC_CONFIG_VAR([riscv-enable-cfi], [$enable_cfi])
     ;;
 esac
-- 
2.39.3



More information about the Libc-alpha mailing list