[clang] [clang][FreeBSD] Enable KASAN and KMSAN for riscv64 (PR #202288)

via cfe-commits cfe-commits at lists.llvm.org
Fri Aug 21 11:08:30 PDT 2026


https://github.com/yizishun updated https://github.com/llvm/llvm-project/pull/202288

>From 0f4d849b7502997e144afdbe566615af11caf4ac Mon Sep 17 00:00:00 2001
From: Zishun Yi <zis at FreeBSD.org>
Date: Mon, 8 Jun 2026 07:24:09 +0000
Subject: [PATCH] [clang][FreeBSD] Enable KASAN and KMSAN for riscv64

enables KASAN and KMSAN for the riscv64 freebsd target in the Clang driver.

The corresponding FreeBSD kernel runtime support for riscv64 KASAN is currently
under active review.

Depends on: https://reviews.freebsd.org/D57381
---
 clang/lib/Driver/ToolChains/FreeBSD.cpp | 3 ++-
 clang/test/Driver/fsanitize.c           | 2 ++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/FreeBSD.cpp b/clang/lib/Driver/ToolChains/FreeBSD.cpp
index 724ccbefd790f..6301957b38453 100644
--- a/clang/lib/Driver/ToolChains/FreeBSD.cpp
+++ b/clang/lib/Driver/ToolChains/FreeBSD.cpp
@@ -487,6 +487,7 @@ FreeBSD::getSupportedSanitizers(BoundArch BA,
   const bool IsX86 = getTriple().getArch() == llvm::Triple::x86;
   const bool IsX86_64 = getTriple().getArch() == llvm::Triple::x86_64;
   const bool IsMIPS64 = getTriple().isMIPS64();
+  const bool IsRISCV64 = getTriple().getArch() == llvm::Triple::riscv64;
   SanitizerMask Res = ToolChain::getSupportedSanitizers(BA, DeviceOffloadKind);
   Res |= SanitizerKind::Address;
   Res |= SanitizerKind::PointerCompare;
@@ -501,7 +502,7 @@ FreeBSD::getSupportedSanitizers(BoundArch BA,
     Res |= SanitizerKind::Fuzzer;
     Res |= SanitizerKind::FuzzerNoLink;
   }
-  if (IsAArch64 || IsX86_64) {
+  if (IsAArch64 || IsX86_64 || IsRISCV64) {
     Res |= SanitizerKind::KernelAddress;
     Res |= SanitizerKind::KernelMemory;
     Res |= SanitizerKind::Memory;
diff --git a/clang/test/Driver/fsanitize.c b/clang/test/Driver/fsanitize.c
index f6a82d899d5bf..97dbee7c15bc8 100644
--- a/clang/test/Driver/fsanitize.c
+++ b/clang/test/Driver/fsanitize.c
@@ -406,10 +406,12 @@
 
 // RUN: %clang --target=x86_64--freebsd -fsanitize=kernel-address %s -### 2>&1 | FileCheck %s -check-prefix=KERNEL-ADDRESS-FREEBSD
 // RUN: %clang --target=aarch64--freebsd -fsanitize=kernel-address %s -### 2>&1 | FileCheck %s -check-prefix=KERNEL-ADDRESS-FREEBSD
+// RUN: %clang --target=riscv64--freebsd -fsanitize=kernel-address %s -### 2>&1 | FileCheck %s -check-prefix=KERNEL-ADDRESS-FREEBSD
 // KERNEL-ADDRESS-FREEBSD: "-fsanitize=kernel-address"
 
 // RUN: %clang --target=x86_64--freebsd -fsanitize=kernel-memory %s -### 2>&1 | FileCheck %s -check-prefix=KERNEL-MEMORY-FREEBSD
 // RUN: %clang --target=aarch64--freebsd -fsanitize=kernel-memory %s -### 2>&1 | FileCheck %s -check-prefix=KERNEL-MEMORY-FREEBSD
+// RUN: %clang --target=riscv64--freebsd -fsanitize=kernel-memory %s -### 2>&1 | FileCheck %s -check-prefix=KERNEL-MEMORY-FREEBSD
 // KERNEL-MEMORY-FREEBSD: "-fsanitize=kernel-memory"
 
 // * NetBSD; please keep ordered as in Sanitizers.def *



More information about the cfe-commits mailing list