From e91043744346babdeb1e57e8f46e5a7c8a98fbfb Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Sun, 6 Jun 2021 16:11:25 -0400 Subject: [PATCH] [lld/mac] Use fewer magic numbers in magic $ld$ handling code Also simply a conditional and de-alias a variable. Minor cleanups, no behavior change. Differential Revision: https://reviews.llvm.org/D103774 --- lld/MachO/InputFiles.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/lld/MachO/InputFiles.cpp b/lld/MachO/InputFiles.cpp index 604430d..ec99f80 100644 --- a/lld/MachO/InputFiles.cpp +++ b/lld/MachO/InputFiles.cpp @@ -980,7 +980,7 @@ bool DylibFile::handleLDSymbol(StringRef originalName) { StringRef action; StringRef name; - std::tie(action, name) = originalName.drop_front(4 /* $ld$ */).split('$'); + std::tie(action, name) = originalName.drop_front(strlen("$ld$")).split('$'); if (action == "previous") handleLDPreviousSymbol(name, originalName); else if (action == "install_name") @@ -1003,8 +1003,8 @@ void DylibFile::handleLDPreviousSymbol(StringRef name, StringRef originalName) { std::tie(compatVersion, name) = name.split('$'); std::tie(platformStr, name) = name.split('$'); std::tie(startVersion, name) = name.split('$'); - std::tie(endVersion, symbolName) = name.split('$'); - std::tie(symbolName, rest) = symbolName.split('$'); + std::tie(endVersion, name) = name.split('$'); + std::tie(symbolName, rest) = name.split('$'); // TODO: ld64 contains some logic for non-empty symbolName as well. if (!symbolName.empty()) return; @@ -1047,14 +1047,10 @@ void DylibFile::handleLDInstallNameSymbol(StringRef name, StringRef condition, installName; std::tie(condition, installName) = name.split('$'); VersionTuple version; - if (!condition.startswith("os") || - version.tryParse(condition.drop_front(2 /* os */))) { + if (!condition.consume_front("os") || version.tryParse(condition)) warn("failed to parse os version, symbol '" + originalName + "' ignored"); - return; - } - if (version != config->platformInfo.minimum) - return; - dylibName = saver.save(installName); + else if (version == config->platformInfo.minimum) + dylibName = saver.save(installName); } ArchiveFile::ArchiveFile(std::unique_ptr &&f) -- 2.7.4