From e057d8973cc6a9d0bcc5cc385f318a607d117693 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Wed, 13 Sep 2023 19:15:42 -0700 Subject: [PATCH] [ELF][PPC64] Use the regular placement for .branch_lt The currently rule places .branch_lt after .data, which does not make sense. The original contributor probably wanted to place .branch_lt before .got/.toc, but failed to notice that .got/.toc are RELRO and placed earlier. Remove the special case so that .branch_lt is actually closer to .toc, alleviating the distance issue. --- lld/ELF/Writer.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index 255f8c334b969..d4c667c91ab75 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -941,12 +941,10 @@ static unsigned getSectionRank(const OutputSection &osec) { // their coverage by a single signed 16-bit offset from the TOC base // pointer. StringRef name = osec.name; - if (name == ".branch_lt") + if (name == ".got") rank |= 1; - else if (name == ".got") - rank |= 2; else if (name == ".toc") - rank |= 4; + rank |= 2; } if (config->emachine == EM_MIPS) {