diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index 1a86881c5b4c..b168e83cde25 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -362,9 +362,11 @@ template static bool isRelroSection(OutputSectionBase *Sec) { typename OutputSectionBase::uintX_t Flags = Sec->getFlags(); if (!(Flags & SHF_ALLOC) || !(Flags & SHF_WRITE)) return false; + if (Flags & SHF_TLS) + return true; uint32_t Type = Sec->getType(); - if ((Flags & SHF_TLS) || (Type == SHT_INIT_ARRAY || Type == SHT_FINI_ARRAY || - Type == SHT_PREINIT_ARRAY)) + if (Type == SHT_INIT_ARRAY || Type == SHT_FINI_ARRAY || + Type == SHT_PREINIT_ARRAY) return true; if (Sec == Out::GotPlt) return Config->ZNow;