[asan] don't emit __asan_mapping_offset/__asan_mapping_scale by default -- they are currently used only for experiments

llvm-svn: 153040
This commit is contained in:
Kostya Serebryany 2012-03-19 16:40:35 +00:00
parent 4ac72dd982
commit c58dc9fcd2
1 changed files with 17 additions and 12 deletions

View File

@ -579,18 +579,23 @@ bool AddressSanitizer::runOnModule(Module &M) {
if (ClGlobals)
Res |= insertGlobalRedzones(M);
// Tell the run-time the current values of mapping offset and scale.
GlobalValue *asan_mapping_offset =
new GlobalVariable(M, IntptrTy, true, GlobalValue::LinkOnceODRLinkage,
ConstantInt::get(IntptrTy, MappingOffset),
kAsanMappingOffsetName);
GlobalValue *asan_mapping_scale =
new GlobalVariable(M, IntptrTy, true, GlobalValue::LinkOnceODRLinkage,
ConstantInt::get(IntptrTy, MappingScale),
kAsanMappingScaleName);
// Read these globals, otherwise they may be optimized away.
IRB.CreateLoad(asan_mapping_scale, true);
IRB.CreateLoad(asan_mapping_offset, true);
if (ClMappingOffsetLog >= 0) {
// Tell the run-time the current values of mapping offset and scale.
GlobalValue *asan_mapping_offset =
new GlobalVariable(M, IntptrTy, true, GlobalValue::LinkOnceODRLinkage,
ConstantInt::get(IntptrTy, MappingOffset),
kAsanMappingOffsetName);
// Read the global, otherwise it may be optimized away.
IRB.CreateLoad(asan_mapping_offset, true);
}
if (ClMappingScale) {
GlobalValue *asan_mapping_scale =
new GlobalVariable(M, IntptrTy, true, GlobalValue::LinkOnceODRLinkage,
ConstantInt::get(IntptrTy, MappingScale),
kAsanMappingScaleName);
// Read the global, otherwise it may be optimized away.
IRB.CreateLoad(asan_mapping_scale, true);
}
for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F) {