diff --git a/lld/MachO/ConcatOutputSection.cpp b/lld/MachO/ConcatOutputSection.cpp --- a/lld/MachO/ConcatOutputSection.cpp +++ b/lld/MachO/ConcatOutputSection.cpp @@ -339,7 +339,7 @@ void ConcatOutputSection::finalizeFlags(InputSection *input) { switch (sectionType(input->getFlags())) { default /*type-unspec'ed*/: - // FIXME: Add additional logics here when supporting emitting obj files. + // FIXME: Add additional logic here when supporting emitting obj files. break; case S_4BYTE_LITERALS: case S_8BYTE_LITERALS: @@ -373,8 +373,5 @@ auto newNames = config->sectionRenameMap.find(key); if (newNames != config->sectionRenameMap.end()) return newNames->second; - auto newName = config->segmentRenameMap.find(key.first); - if (newName != config->segmentRenameMap.end()) - return std::make_pair(newName->second, key.second); return key; } diff --git a/lld/MachO/OutputSegment.cpp b/lld/MachO/OutputSegment.cpp --- a/lld/MachO/OutputSegment.cpp +++ b/lld/MachO/OutputSegment.cpp @@ -153,7 +153,16 @@ static DenseMap nameToOutputSegment; std::vector macho::outputSegments; +static StringRef maybeRenameSegment(StringRef name) { + auto newName = config->segmentRenameMap.find(name); + if (newName != config->segmentRenameMap.end()) + return newName->second; + return name; +} + OutputSegment *macho::getOrCreateOutputSegment(StringRef name) { + name = maybeRenameSegment(name); + OutputSegment *&segRef = nameToOutputSegment[name]; if (segRef) return segRef; diff --git a/lld/test/MachO/rename.s b/lld/test/MachO/rename.s --- a/lld/test/MachO/rename.s +++ b/lld/test/MachO/rename.s @@ -71,8 +71,7 @@ # SECTSEGYES-NEXT: segname __TEXT # SECTSEGYES: Section # SECTSEGYES-NEXT: sectname __to_sect -# SECTSEGYES-NEXT: segname __TO_SECT -## FIXME: ^ This should use __SEG like ld64 does. +# SECTSEGYES-NEXT: segname __SEG ## ...but rename_segment has no effect if it doesn't match the name after ## rename_section is applied. # RUN: %lld -dylib \