llvm-project/llvm/test/Instrumentation/HeapProfiler
Fangrui Song 7b78956224 [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
2021-07-21 14:03:26 -07:00
..
basic.ll [sanitizer] Place module_ctor/module_dtor in llvm.used 2021-07-21 14:03:26 -07:00
filename.ll [MemProf] Pass down memory profile name with optional path from clang 2020-11-01 17:38:23 -08:00
instrumentation-use-callbacks.ll
masked-load-store.ll
scale-granularity.ll
shadow.ll [MemProf] Fix a potential "permission denied" test failure on some systems. 2020-12-07 14:04:23 +01:00
version-mismatch-check.ll