diff options
Diffstat (limited to 'lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp')
| -rw-r--r-- | lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp | 20 | 
1 files changed, 13 insertions, 7 deletions
diff --git a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp index 0be1c10a7ab0..acd919e4d411 100644 --- a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp +++ b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp @@ -540,6 +540,12 @@ MachOLinkingContext::searchDirForLibrary(StringRef path,      return llvm::None;    } +  // Search for stub library +  fullPath.assign(path); +  llvm::sys::path::append(fullPath, Twine("lib") + libName + ".tbd"); +  if (fileExists(fullPath)) +    return fullPath.str().copy(_allocator); +    // Search for dynamic library    fullPath.assign(path);    llvm::sys::path::append(fullPath, Twine("lib") + libName + ".dylib"); @@ -604,7 +610,7 @@ bool MachOLinkingContext::validateImpl() {    }    // If -exported_symbols_list used, all exported symbols must be defined. -  if (_exportMode == ExportMode::whiteList) { +  if (_exportMode == ExportMode::exported) {      for (const auto &symbol : _exportedSymbols)        addInitialUndefinedSymbol(symbol.getKey());    } @@ -618,7 +624,7 @@ bool MachOLinkingContext::validateImpl() {      if (needsStubsPass())        addDeadStripRoot(binderSymbolName());      // If using -exported_symbols_list, make all exported symbols live. -    if (_exportMode == ExportMode::whiteList) { +    if (_exportMode == ExportMode::exported) {        setGlobalsAreDeadStripRoots(false);        for (const auto &symbol : _exportedSymbols)          addDeadStripRoot(symbol.getKey()); @@ -852,9 +858,9 @@ bool MachOLinkingContext::exportSymbolNamed(StringRef sym) const {    case ExportMode::globals:      llvm_unreachable("exportSymbolNamed() should not be called in this mode");      break; -  case ExportMode::whiteList: +  case ExportMode::exported:      return _exportedSymbols.count(sym); -  case ExportMode::blackList: +  case ExportMode::unexported:      return !_exportedSymbols.count(sym);    }    llvm_unreachable("_exportMode unknown enum value"); @@ -863,11 +869,11 @@ bool MachOLinkingContext::exportSymbolNamed(StringRef sym) const {  std::string MachOLinkingContext::demangle(StringRef symbolName) const {    // Only try to demangle symbols if -demangle on command line    if (!demangleSymbols()) -    return symbolName; +    return std::string(symbolName);    // Only try to demangle symbols that look like C++ symbols    if (!symbolName.startswith("__Z")) -    return symbolName; +    return std::string(symbolName);    SmallString<256> symBuff;    StringRef nullTermSym = Twine(symbolName).toNullTerminatedStringRef(symBuff); @@ -882,7 +888,7 @@ std::string MachOLinkingContext::demangle(StringRef symbolName) const {      return result;    } -  return symbolName; +  return std::string(symbolName);  }  static void addDependencyInfoHelper(llvm::raw_fd_ostream *DepInfo,  | 
