llvm-capstone/lld/test
Fangrui Song 4bbcd63eea [ELF] Add -z start-stop-gc to let __start_/__stop_ not retain C identifier name sections
For one metadata section usage, each text section references a metadata section.
The metadata sections have a C identifier name to allow the runtime to collect them via `__start_/__stop_` symbols.

Since `__start_`/`__stop_` references are always present from live sections, the
C identifier name sections appear like GC roots, which means they cannot be
discarded by `ld --gc-sections`.

To make such sections GCable, either SHF_LINK_ORDER or a section group is needed.

SHF_LINK_ORDER is not suitable for the references can be inlined into other functions
(See D97430:
Function A (in the section .text.A) references its `__sancov_guard` section.
Function B inlines A (so now .text.B references `__sancov_guard` - this is invalid with the semantics of SHF_LINK_ORDER).

In the linking stage,
if `.text.A` gets discarded, and `__sancov_guard` is retained via the reference from `.text.B`,
the output will be invalid because `__sancov_guard` references the discarded `.text.A`.
LLD errors "sh_link points to discarded section".
)

A section group have size overhead, and is cumbersome when there is just one metadata section.

Add `-z start-stop-gc` to drop the "__start_/__stop_ references retain
non-SHF_LINK_ORDER non-SHF_GROUP C identifier name sections" rule.
We reserve the rights to switch the default in the future.

Reviewed By: phosek, jrtc27

Differential Revision: https://reviews.llvm.org/D96914
2021-02-25 15:46:37 -08:00
..
COFF [LLD] [COFF] Allow invoking lib.exe mode via -lib in addition to /lib 2021-02-24 11:16:12 +02:00
darwin
ELF [ELF] Add -z start-stop-gc to let __start_/__stop_ not retain C identifier name sections 2021-02-25 15:46:37 -08:00
mach-o Reland "[lib/Support/YAMLTraits] - Don't print leading zeroes when dumping Hex8/Hex16/Hex32 types." (https://reviews.llvm.org/D90930). 2020-11-18 13:08:46 +03:00
MachO [lld-macho] Basic support for linkage and visibility attributes in LTO 2021-02-25 13:27:40 -05:00
MinGW [LLD] [MinGW] Pass the --demangle and --no-demangle options to the COFF linker 2021-01-07 10:02:19 +02:00
Unit Support multi-configuration generators correctly in several config files 2021-02-11 09:32:20 -08:00
wasm Revert "[WebAssembly] call_indirect issues table number relocs" 2021-02-23 11:48:08 +01:00
CMakeLists.txt Support multi-configuration generators correctly in several config files 2021-02-11 09:32:20 -08:00
lit.cfg.py [lld][WebAssembly] Add suppport for PIC + passive data initialization 2020-12-04 17:28:23 -08:00
lit.site.cfg.py.in Support multi-configuration generators correctly in several config files 2021-02-11 09:32:20 -08:00