diff options
| author | Fangrui Song <i@maskray.me> | 2021-07-21 14:03:26 -0700 |
|---|---|---|
| committer | Fangrui Song <i@maskray.me> | 2021-07-21 14:03:26 -0700 |
| commit | 7b789562244ee941b7bf2cefeb3fc08a59a01865 (patch) | |
| tree | 7ac8972cc255df1bc99f570e5491584d1a7b4a26 /lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h | |
| parent | 7898e7c82d98fabc8c87a5b7b4a4f7786df69314 (diff) | |
| download | llvm-7b789562244ee941b7bf2cefeb3fc08a59a01865.zip llvm-7b789562244ee941b7bf2cefeb3fc08a59a01865.tar.gz llvm-7b789562244ee941b7bf2cefeb3fc08a59a01865.tar.bz2 | |
[sanitizer] Place module_ctor/module_dtor in llvm.used
This removes an abuse of ELF linker behaviors while keeping Mach-O/COFF linker
behaviors unchanged.
ELF: when module_ctor is in a comdat, this patch removes reliance on a linker
abuse (an SHT_INIT_ARRAY in a section group retains the whole group) by using
SHF_GNU_RETAIN. No linker behavior difference when module_ctor is not in a comdat.
Mach-O: module_ctor gets `N_NO_DEAD_STRIP`. No linker behavior difference
because module_ctor is already referenced by a `S_MOD_INIT_FUNC_POINTERS`
section (GC root).
PE/COFF: no-op. SanitizerCoverage already appends module_ctor to `llvm.used`.
Other sanitizers: llvm.used for local linkage is not implemented in
`TargetLoweringObjectFileCOFF::emitLinkerDirectives` (once implemented or
switched to a non-local linkage, COFF can use module_ctor in comdat (i.e.
generalize ELF-specific rL301586)).
There is no object file size difference.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D106246
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h')
0 files changed, 0 insertions, 0 deletions
