[PATCH] D96571: [ASan] Introduce a way set different ways of emitting module destructors.
Dan Liew via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 11 19:32:51 PST 2021
delcypher created this revision.
delcypher added reviewers: kubamracek, yln, aralisza, kcc, vitalybuka.
Herald added a subscriber: hiraditya.
delcypher requested review of this revision.
Herald added a project: LLVM.
Previously there was no way to control how module destructors were emitted
by `ModuleAddressSanitizerPass`. However, we want language frontends (e.g. Clang)
to be able to decide how to emit these destructors (if at all).
This patch introduces the `AsanDtorKind` enum that represents the different ways
destructors can be emitted. There are currently only two valid ways to emit destructors.
- `Global` - Use `llvm.global_dtors`. This was the previous behavior and is the default.
- `None` - Do not emit module destructors.
The `ModuleAddressSanitizerPass` and the various wrappers around it have been updated
to take the `AsanDtorKind` as an argument.
The `-asan-destructor-kind=` command line argument has been introduced to make this
easy to test from `opt`. If this argument is specified it overrides the value passed
to the `ModuleAddressSanitizerPass` constructor.
Note that `AsanDtorKind` is not `bool` because we will introduce a new way to
emit destructors in a subsequent patch.
Note that `AsanDtorKind` is given its own header file because if it is declared
in `Transforms/Instrumentation/AddressSanitizer.h` it leads to compile error
(Module is ambiguous) when trying to use it in
`clang/Basic/CodeGenOptions.def`.
rdar://71609176
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D96571
Files:
llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h
llvm/include/llvm/Transforms/Instrumentation/AddressSanitizerOptions.h
llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
llvm/test/Instrumentation/AddressSanitizer/no_global_dtors.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D96571.323211.patch
Type: text/x-patch
Size: 12568 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210212/20ef34be/attachment.bin>
More information about the llvm-commits
mailing list