[lld] e910437 - [lld/mac] Use fewer magic numbers in magic $ld$ handling code

Nico Weber via llvm-commits llvm-commits at lists.llvm.org
Sun Jun 6 15:13:30 PDT 2021


Author: Nico Weber
Date: 2021-06-06T18:13:16-04:00
New Revision: e91043744346babdeb1e57e8f46e5a7c8a98fbfb

URL: https://github.com/llvm/llvm-project/commit/e91043744346babdeb1e57e8f46e5a7c8a98fbfb
DIFF: https://github.com/llvm/llvm-project/commit/e91043744346babdeb1e57e8f46e5a7c8a98fbfb.diff

LOG: [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

Added: 
    

Modified: 
    lld/MachO/InputFiles.cpp

Removed: 
    


################################################################################
diff  --git a/lld/MachO/InputFiles.cpp b/lld/MachO/InputFiles.cpp
index 604430d83b5b..ec99f8004990 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<object::Archive> &&f)


        


More information about the llvm-commits mailing list