mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-02 08:01:11 +03:00
Add sanitizer attributes.
If the sanitizer is enabled (e.g. -sanitize=address) then the corresponding attribute (e.g. llvm::Attribute::SanitizerAddress) must be set.
This commit is contained in:
parent
ea9c996dcd
commit
49599f71e9
1 changed files with 17 additions and 0 deletions
|
@ -25,6 +25,7 @@
|
|||
#include "gen/llvmhelpers.h"
|
||||
#include "gen/logger.h"
|
||||
#include "gen/nested.h"
|
||||
#include "gen/optimizer.h"
|
||||
#include "gen/pragma.h"
|
||||
#include "gen/runtime.h"
|
||||
#include "gen/tollvm.h"
|
||||
|
@ -989,6 +990,22 @@ void DtoDefineFunction(FuncDeclaration* fd)
|
|||
{
|
||||
func->addFnAttr(llvm::Attribute::UWTable);
|
||||
}
|
||||
#if LDC_LLVM_VER >= 303
|
||||
if (opts::sanitize != opts::None) {
|
||||
// Set the required sanitizer attribute.
|
||||
if (opts::sanitize == opts::AddressSanitizer) {
|
||||
func->addFnAttr(llvm::Attribute::SanitizeAddress);
|
||||
}
|
||||
|
||||
if (opts::sanitize == opts::MemorySanitizer) {
|
||||
func->addFnAttr(llvm::Attribute::SanitizeMemory);
|
||||
}
|
||||
|
||||
if (opts::sanitize == opts::ThreadSanitizer) {
|
||||
func->addFnAttr(llvm::Attribute::SanitizeThread);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
std::string entryname("entry");
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue