[compiler-rt] Add API to temporalily disable usage of ASAN's fake stack (PR #160135)

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 14 16:16:00 PDT 2025


================
@@ -217,26 +217,44 @@ static THREADLOCAL FakeStack *fake_stack_tls;
 FakeStack *GetTLSFakeStack() {
   return fake_stack_tls;
 }
-void SetTLSFakeStack(FakeStack *fs) {
+void SetTLSFakeStack(AsanThread* t, FakeStack* fs) {
+  if (fs && !t->IsFakeStackEnabled()) {
+    return;
+  }
   fake_stack_tls = fs;
 }
 #else
 FakeStack *GetTLSFakeStack() { return 0; }
-void SetTLSFakeStack(FakeStack *fs) { }
+void SetTLSFakeStack(AsanThread* t, FakeStack* fs) {}
 #endif  // (SANITIZER_LINUX && !SANITIZER_ANDROID) || SANITIZER_FUCHSIA
 
-static FakeStack *GetFakeStack() {
+static void DisableFakeStack() {
   AsanThread *t = GetCurrentThread();
-  if (!t) return nullptr;
+  if (t) {
+    t->SetFakeStackEnabled(false);
+  }
+}
+
+static void EnableFakeStack() {
+  AsanThread* t = GetCurrentThread();
+  if (t) {
+    t->SetFakeStackEnabled(true);
+  }
+}
+
+static FakeStack* GetFakeStack(bool for_allocation = true) {
----------------
vitalybuka wrote:

I am not sure understand what do we need for_allocation at all?

https://github.com/llvm/llvm-project/pull/160135


More information about the llvm-commits mailing list