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