summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2017-07-31 19:49:45 +0000
committerKostya Serebryany <kcc@google.com>2017-07-31 19:49:45 +0000
commitbb6f079a457548fd617f2560f0c296083ecae570 (patch)
treeadc74c7e37ed41cee1f232f77ac20ab86f2449df
parent9f6e41cdbabd7cfcfe7096544a61bb41dfcef746 (diff)
downloadbcm5719-llvm-bb6f079a457548fd617f2560f0c296083ecae570.tar.gz
bcm5719-llvm-bb6f079a457548fd617f2560f0c296083ecae570.zip
[sanitizer-coverage] ensure minimal alignment for coverage counters and guards
llvm-svn: 309610
-rw-r--r--llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp3
-rw-r--r--llvm/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll1
-rw-r--r--llvm/test/Instrumentation/SanitizerCoverage/tracing.ll1
3 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
index 9f129b71288..fb7f8ec85d4 100644
--- a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
+++ b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
@@ -487,6 +487,8 @@ GlobalVariable *SanitizerCoverageModule::CreateFunctionLocalArrayInSection(
if (auto Comdat = F.getComdat())
Array->setComdat(Comdat);
Array->setSection(getSectionName(Section));
+ Array->setAlignment(Ty->isPointerTy() ? DL->getPointerSize()
+ : Ty->getPrimitiveSizeInBits() / 8);
return Array;
}
@@ -505,7 +507,6 @@ void SanitizerCoverageModule::CreatePCArray(Function &F,
FunctionPCsArray->setInitializer(
ConstantArray::get(ArrayType::get(Int8PtrTy, N), PCs));
FunctionPCsArray->setConstant(true);
- FunctionPCsArray->setAlignment(DL->getPointerSize());
}
void SanitizerCoverageModule::CreateFunctionLocalArrays(
diff --git a/llvm/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll b/llvm/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll
index 5b5b75117fb..597f77f3c8c 100644
--- a/llvm/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll
+++ b/llvm/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll
@@ -5,6 +5,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
target triple = "x86_64-unknown-linux-gnu"
define void @foo() {
entry:
+; CHECK: section "__sancov_cntrs", align 1
; CHECK: %0 = load i8, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @__sancov_gen_, i64 0, i64 0), !nosanitize
; CHECK: %1 = add i8 %0, 1
; CHECK: store i8 %1, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @__sancov_gen_, i64 0, i64 0), !nosanitize
diff --git a/llvm/test/Instrumentation/SanitizerCoverage/tracing.ll b/llvm/test/Instrumentation/SanitizerCoverage/tracing.ll
index 1561a148601..209b9874cb2 100644
--- a/llvm/test/Instrumentation/SanitizerCoverage/tracing.ll
+++ b/llvm/test/Instrumentation/SanitizerCoverage/tracing.ll
@@ -26,6 +26,7 @@ entry:
; CHECK_PC: ret void
; CHECK_PC-NOT: call void @__sanitizer_cov_module_init
+; CHECK_PC_GUARD: section "__sancov_guards", align 4
; CHECK_PC_GUARD-LABEL: define void @foo
; CHECK_PC_GUARD: call void @__sanitizer_cov_trace_pc_guard
; CHECK_PC_GUARD: call void @__sanitizer_cov_trace_pc_guard
OpenPOWER on IntegriCloud