mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-05 09:31:03 +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/llvmhelpers.h"
|
||||||
#include "gen/logger.h"
|
#include "gen/logger.h"
|
||||||
#include "gen/nested.h"
|
#include "gen/nested.h"
|
||||||
|
#include "gen/optimizer.h"
|
||||||
#include "gen/pragma.h"
|
#include "gen/pragma.h"
|
||||||
#include "gen/runtime.h"
|
#include "gen/runtime.h"
|
||||||
#include "gen/tollvm.h"
|
#include "gen/tollvm.h"
|
||||||
|
@ -989,6 +990,22 @@ void DtoDefineFunction(FuncDeclaration* fd)
|
||||||
{
|
{
|
||||||
func->addFnAttr(llvm::Attribute::UWTable);
|
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");
|
std::string entryname("entry");
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue