diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index 0ac9bb292050bf90f42a1d51de1678fb4f97986f..e6e33a53367d37279899367cee6848034aa7224c 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -2540,9 +2540,13 @@ SmallVector Writer::createPhdrs(Partition &part) { // Add a TLS segment if any. PhdrEntry *tlsHdr = make(PT_TLS, PF_R); for (OutputSection *sec : outputSections) - if (sec->partition == partNo && sec->flags & SHF_TLS) + if (sec->partition == partNo && sec->flags & SHF_TLS) { + // It making TLS hdr for each TLS section, for adlt. + if (config->adlt) + tlsHdr = addHdr(PT_TLS, PF_R); tlsHdr->add(sec); - if (tlsHdr->firstSec) + } + if (!config->adlt && tlsHdr->firstSec) ret.push_back(tlsHdr); // Add an entry for .dynamic.