summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/TreeTransform.h
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2019-06-03 05:25:03 +0000
committerFangrui Song <maskray@google.com>2019-06-03 05:25:03 +0000
commitc78c999a9cd7a77b9d13c610c9faebac5d560a55 (patch)
tree97deaf0dd8ac30aafcd74e9ce21236577852e86f /clang/lib/Sema/TreeTransform.h
parent471f11805f741b0b22328e0fd111be4329f245a3 (diff)
downloadbcm5719-llvm-c78c999a9cd7a77b9d13c610c9faebac5d560a55.tar.gz
bcm5719-llvm-c78c999a9cd7a77b9d13c610c9faebac5d560a55.zip
[ELF] Simplify the condition to create .interp
(1) {gcc,clang} -fuse-ld=bfd -pie -fPIE -nostdlib a.c => .interp created (2) {gcc,clang} -fuse-ld=lld -pie -fPIE -nostdlib a.c => .interp not created (3) {gcc,clang} -fuse-ld=lld -pie -fPIE -nostdlib a.c a.so => .interp created The inconsistency of (2) is due to the condition `!Config->SharedFiles.empty()`. To make lld behave more like ld.bfd, we could change the condition to: Config->HasDynSymTab && !Config->DynamicLinker.empty() && Script->needsInterpSection(); However, that would bring another inconsistency as can be observed with: (4) {gcc,clang} -fuse-ld=bfd -no-pie -nostdlib a.c => .interp not created So instead, use `!Config->DynamicLinker.empty() && Script->needsInterpSection()`, which is both simple and consistent in these cases. The inconsistency of (4) likely originated from ld.bfd and gold's choice to have a default --dynamic-linker. Their condition to create .interp is ANDed with (not -shared). Since lld doesn't have a default --dynamic-linker, compiler drivers (gcc/clang) don't pass --dynamic-linker for -shared, and direct ld users are not supposed to specify --dynamic-linker for -shared, we do not need the condition !Config->Shared. Reviewed By: ruiu Differential Revision: https://reviews.llvm.org/D62765 llvm-svn: 362355
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud