[llvm-branch-commits] [NFC][asan] Extract out RecordPoison helper function (PR #195672)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon May 4 08:22:16 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-compiler-rt-sanitizer
Author: Vitaly Buka (vitalybuka)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/195672.diff
1 Files Affected:
- (modified) compiler-rt/lib/asan/asan_poisoning.cpp (+17-13)
``````````diff
diff --git a/compiler-rt/lib/asan/asan_poisoning.cpp b/compiler-rt/lib/asan/asan_poisoning.cpp
index 79457dda1e7c5..fffb3b4ac08f1 100644
--- a/compiler-rt/lib/asan/asan_poisoning.cpp
+++ b/compiler-rt/lib/asan/asan_poisoning.cpp
@@ -138,6 +138,22 @@ void AsanPoisonOrUnpoisonIntraObjectRedzone(uptr ptr, uptr size, bool poison) {
// ---------------------- Interface ---------------- {{{1
using namespace __asan;
+static void RecordPoison(uptr beg_addr, uptr end_addr) {
+ if (LIKELY(beg_addr >= end_addr || flags()->poison_history_size == 0))
+ return;
+ GET_STACK_TRACE(/*max_size=*/16, /*fast=*/false);
+ u32 current_tid = GetCurrentTidOrInvalid();
+
+ u32 stack_id = StackDepotPut(stack);
+
+ PoisonRecord record;
+ record.stack_id = stack_id;
+ record.thread_id = current_tid;
+ record.begin = beg_addr;
+ record.end = end_addr;
+ AddPoisonRecord(record);
+}
+
// Current implementation of __asan_(un)poison_memory_region doesn't check
// that user program (un)poisons the memory it owns. It poisons memory
// conservatively, and unpoisons progressively to make sure asan shadow
@@ -155,19 +171,7 @@ void __asan_poison_memory_region(void const volatile *addr, uptr size) {
VPrintf(3, "Trying to poison memory region [%p, %p)\n", (void *)beg_addr,
(void *)end_addr);
- if (flags()->poison_history_size > 0) {
- GET_STACK_TRACE(/*max_size=*/16, /*fast=*/false);
- u32 current_tid = GetCurrentTidOrInvalid();
-
- u32 stack_id = StackDepotPut(stack);
-
- PoisonRecord record;
- record.stack_id = stack_id;
- record.thread_id = current_tid;
- record.begin = beg_addr;
- record.end = end_addr;
- AddPoisonRecord(record);
- }
+ RecordPoison(beg_addr, end_addr);
ShadowSegmentEndpoint beg(beg_addr);
ShadowSegmentEndpoint end(end_addr);
``````````
</details>
https://github.com/llvm/llvm-project/pull/195672
More information about the llvm-branch-commits
mailing list