mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
b451f3588d
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 |
||
---|---|---|
.. | ||
abort-in-entry-block.ll | ||
backedge-pruning.ll | ||
chains.ll | ||
cmp-tracing-api-x86_32.ll | ||
cmp-tracing-api-x86_64.ll | ||
cmp-tracing.ll | ||
coff-comdat.ll | ||
coff-pc-table-inline-8bit-counters.ll | ||
coff-pc-table-inline-bool-flag.ll | ||
coff-used-ctor.ll | ||
const-cmp-tracing.ll | ||
coverage2-dbg.ll | ||
coverage-dbg.ll | ||
coverage.ll | ||
crit-edge-sancov.ll | ||
div-tracing.ll | ||
gep-tracing.ll | ||
inline-8bit-counters.ll | ||
inline-bool-flag.ll | ||
interposable-symbol.ll | ||
no-func.ll | ||
opaque-ptr.ll | ||
pc-table.ll | ||
postdominator_check.ll | ||
seh.ll | ||
stack-depth-variable-declared-by-user.ll | ||
stack-depth.ll | ||
switch-tracing.ll | ||
trace-pc-guard-inline-8bit-counters.ll | ||
trace-pc-guard-inline-bool-flag.ll | ||
trace-pc-guard.ll | ||
tracing-comdat.ll | ||
tracing.ll | ||
unreachable-critedge.ll | ||
wineh.ll |