diff --git a/llvm/docs/RISCVUsage.rst b/llvm/docs/RISCVUsage.rst index 97442c0cc5e7..3452ad86cf21 100644 --- a/llvm/docs/RISCVUsage.rst +++ b/llvm/docs/RISCVUsage.rst @@ -612,3 +612,23 @@ Clang's ``-msmall-data-limit=`` option controls what the threshold size is (in b The small data limit threshold is also used to separate small constants into sections with names starting with ``.srodata``. LLD does not place these with the ``.sdata`` and ``.sbss`` sections as ``.srodata`` sections are read only and the other two are writable. Instead the ``.srodata`` sections are placed adjacent to ``.rodata``. Data suggests that these options can produce significant improvements across a range of benchmarks. + +Sanitizers +========== + +.. note:: + This is a summary of the current state of sanitizers, and not an official support statement. + +* UBSan is not platform-specific, and should work out of the box. + +* ASan and TSan already have shadow mappings defined for Linux on RISC-V, and are likely to work. + +* HWASan is also likely to work, though RISC-V Pointer Masking (very new) is needed as well to make it run efficiently. + +* Memtag: N/A - there is currently no ratified RISC-V memory tagging spec. + +* MSan is unlikely to work: there are currently no RISC-V-specific shadow mappings (this is probably easy to fix; perhaps the default Linux 64-bit mapping will work) and MSan does not explicitly handle any of the `@llvm.riscv.*` intrinsics (this is significantly more work to fix). + + Some intrinsics will be handled correctly anyway, if the RISC-V intrinsic is auto-upgraded into cross-platform LLVM intrinsics. Some others will be "heuristically" handled (possibly incorrectly). The rest will default to the "strict" handler, which checks that all the parameters are fully initialized. + + MSan intrinsics support is only required if code (including dependencies) manually calls the intrinsic.