aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenFunction.cpp
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2021-04-16 12:18:45 -0700
committerFangrui Song <i@maskray.me>2021-04-16 12:18:46 -0700
commit6d2d3bd0a61f5fc7fd9f61f48bc30e9ca77cc619 (patch)
treeaff9aacda8d5c87d954a9d44b8b068177c3b4b9d /clang/lib/CodeGen/CodeGenFunction.cpp
parent5c729750a6d75df4eeb3eaad72e0b4e93ea27c0e (diff)
downloadllvm-6d2d3bd0a61f5fc7fd9f61f48bc30e9ca77cc619.zip
llvm-6d2d3bd0a61f5fc7fd9f61f48bc30e9ca77cc619.tar.gz
llvm-6d2d3bd0a61f5fc7fd9f61f48bc30e9ca77cc619.tar.bz2
[ELF] Default to -z start-stop-gc with a glibc "__libc_" special case
Change the default to facilitate GC for metadata section usage, so that they don't need SHF_LINK_ORDER or SHF_GROUP just to drop the unhelpful rule (if they want to be unconditionally retained, use SHF_GNU_RETAIN (`__attribute__((retain))`) or linker script `KEEP`). The dropped SHF_GROUP special case makes the behavior of -z start-stop-gc and -z nostart-stop-gc closer to GNU ld>=2.37 (https://sourceware.org/PR27451). However, we default to -z start-stop-gc (which actually matches more closely to GNU ld before 2015-10 https://sourceware.org/PR19167), which is different from modern GNU ld (which has the unhelpful rule to work around glibc). As a compensation, we special case `__libc_` sections as a workaround for glibc<2.34 (https://sourceware.org/PR27492). Since -z start-stop-gc as the default actually matches the traditional GNU ld behavior, there isn't much to be aware of. There was a systemd usage which has been fixed by https://github.com/systemd/systemd/pull/19144
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.cpp')
0 files changed, 0 insertions, 0 deletions