leonardchan created this revision.
leonardchan added reviewers: aeubanks, vitalybuka.
leonardchan added a project: Sanitizers.
leonardchan requested review of this revision.
Herald added a project: clang.

The fix for PR52382 was already introduced in D112732 
<https://reviews.llvm.org/D112732> which ensures that module instrumentation 
always runs after function instrumentation. This adds a test that ensures the 
PR is addressed and prevent regression.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D113143

Files:
  clang/test/CodeGen/pr52382.c


Index: clang/test/CodeGen/pr52382.c
===================================================================
--- /dev/null
+++ clang/test/CodeGen/pr52382.c
@@ -0,0 +1,19 @@
+// RUN: %clang -target x86_64-unknown-linux-gnu -S -emit-llvm -o - 
-fsanitize=address %s | FileCheck %s
+
+// Ensure that ASan properly instruments a load into a global where the index
+// happens to be within the padding after the global which is used for the
+// redzone.
+
+// This global is 400 bytes long, but gets padded with 112 bytes for redzones,
+// rounding the total size after instrumentation to 512.
+int global_array[100] = {-1};
+
+// This access is 412 bytes after the start of the global: past the end of the
+// uninstrumented array, but within the bounds of the extended instrumented
+// array. We should ensure this is still instrumented.
+int main(void) { return global_array[103]; }
+
+// CHECK: @main
+// CHECK-NEXT: entry:
+// CHECK: call void @__asan_report_load4
+// CHECK: }


Index: clang/test/CodeGen/pr52382.c
===================================================================
--- /dev/null
+++ clang/test/CodeGen/pr52382.c
@@ -0,0 +1,19 @@
+// RUN: %clang -target x86_64-unknown-linux-gnu -S -emit-llvm -o - -fsanitize=address %s | FileCheck %s
+
+// Ensure that ASan properly instruments a load into a global where the index
+// happens to be within the padding after the global which is used for the
+// redzone.
+
+// This global is 400 bytes long, but gets padded with 112 bytes for redzones,
+// rounding the total size after instrumentation to 512.
+int global_array[100] = {-1};
+
+// This access is 412 bytes after the start of the global: past the end of the
+// uninstrumented array, but within the bounds of the extended instrumented
+// array. We should ensure this is still instrumented.
+int main(void) { return global_array[103]; }
+
+// CHECK: @main
+// CHECK-NEXT: entry:
+// CHECK: call void @__asan_report_load4
+// CHECK: }
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D113143: [clang][asan... Leonard Chan via Phabricator via cfe-commits

Reply via email to