forked from OSchip/llvm-project
[Clang][ASan] Teach Clang to not emit ASan module destructors when compiling with `-mkernel` or `-fapple-kext`.
rdar://71609176 Differential Revision: https://reviews.llvm.org/D96573
This commit is contained in:
parent
5d64dd8e3c
commit
fdce098b49
|
@ -825,6 +825,12 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC,
|
|||
AsanInvalidPointerSub = true;
|
||||
}
|
||||
|
||||
if (TC.getTriple().isOSDarwin() &&
|
||||
(Args.hasArg(options::OPT_mkernel) ||
|
||||
Args.hasArg(options::OPT_fapple_kext))) {
|
||||
AsanDtorKind = llvm::AsanDtorKind::None;
|
||||
}
|
||||
|
||||
if (const auto *Arg =
|
||||
Args.getLastArg(options::OPT_sanitize_address_destructor_kind_EQ)) {
|
||||
auto parsedAsanDtorKind = AsanDtorKindFromString(Arg->getValue());
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
// RUN: %clang -target x86_64-apple-darwin10 -fsanitize=address -mkernel -### \
|
||||
// RUN: %s 2>&1 | FileCheck %s
|
||||
// RUN: %clang -target x86_64-apple-darwin10 -fsanitize=address -fapple-kext \
|
||||
// RUN: -### %s 2>&1 | FileCheck %s
|
||||
// RUN: %clang -target x86_64-apple-darwin10 -fsanitize=address -fapple-kext \
|
||||
// RUN: -mkernel -### %s 2>&1 | FileCheck %s
|
||||
|
||||
// CHECK: "-fsanitize-address-destructor-kind=none"
|
||||
|
||||
// Check it's possible to override the driver's decision.
|
||||
// RUN: %clang -target x86_64-apple-darwin10 -fsanitize=address -fapple-kext \
|
||||
// RUN: -mkernel -### -fsanitize-address-destructor-kind=global %s 2>&1 | \
|
||||
// RUN: FileCheck -check-prefix=CHECK-OVERRIDE %s
|
||||
|
||||
// CHECK-OVERRIDE: "-fsanitize-address-destructor-kind=global"
|
Loading…
Reference in New Issue