[Revert] [ELF] Determine default search directories from Context
authorShankar Easwaran <shankare@codeaurora.org>
Fri, 6 Feb 2015 21:23:50 +0000 (21:23 +0000)
committerShankar Easwaran <shankare@codeaurora.org>
Fri, 6 Feb 2015 21:23:50 +0000 (21:23 +0000)
It looks like the Driver manages search path for each Target lld would support
on the Gnu flavor.

llvm-svn: 228440

lld/include/lld/Driver/Driver.h
lld/include/lld/ReaderWriter/ELFLinkingContext.h
lld/lib/Driver/GnuLdDriver.cpp
lld/lib/ReaderWriter/ELF/X86/X86LinkingContext.h

index 780b34a..188e38d 100644 (file)
@@ -91,6 +91,10 @@ private:
   static bool applyEmulation(llvm::Triple &triple,
                              llvm::opt::InputArgList &args,
                              raw_ostream &diag);
+  static void addPlatformSearchDirs(ELFLinkingContext &ctx,
+                                    llvm::Triple &triple,
+                                    llvm::Triple &baseTriple);
+
   GnuLdDriver() LLVM_DELETED_FUNCTION;
 };
 
index 3c8c198..b010951 100644 (file)
@@ -292,11 +292,6 @@ public:
   bool alignSegments() const { return _alignSegments; }
   void setAlignSegments(bool align) { _alignSegments = align; }
 
-  /// \brief add platform specific search directories.
-  virtual void addDefaultSearchDirs(llvm::Triple & /*triple*/) {
-    addSearchPath("=/usr/lib");
-  }
-
   // We can parse several linker scripts via command line whose ASTs are stored
   // in the current linking context via addLinkerScript().
   void addLinkerScript(std::unique_ptr<script::Parser> script) {
index 22ec8a6..2ec4e05 100644 (file)
@@ -321,6 +321,18 @@ bool GnuLdDriver::applyEmulation(llvm::Triple &triple,
   return true;
 }
 
+void GnuLdDriver::addPlatformSearchDirs(ELFLinkingContext &ctx,
+                                        llvm::Triple &triple,
+                                        llvm::Triple &baseTriple) {
+  if (triple.getOS() == llvm::Triple::NetBSD &&
+      triple.getArch() == llvm::Triple::x86 &&
+      baseTriple.getArch() == llvm::Triple::x86_64) {
+    ctx.addSearchPath("=/usr/lib/i386");
+    return;
+  }
+  ctx.addSearchPath("=/usr/lib");
+}
+
 std::unique_ptr<ELFLinkingContext>
 GnuLdDriver::createELFLinkingContext(llvm::Triple triple) {
   std::unique_ptr<ELFLinkingContext> p;
@@ -404,7 +416,7 @@ bool GnuLdDriver::parse(int argc, const char *argv[],
 
   // Add the default search directory specific to the target.
   if (!(hasNoStdLib = parsedArgs->hasArg(OPT_nostdlib)))
-    ctx->addDefaultSearchDirs(baseTriple);
+    addPlatformSearchDirs(*ctx, triple, baseTriple);
 
   // Handle --demangle option(For compatibility)
   if (parsedArgs->getLastArg(OPT_demangle))
index 5ea0c95..ff424f4 100644 (file)
@@ -36,15 +36,6 @@ public:
       return false;
     }
   }
-
-  void addDefaultSearchDirs(llvm::Triple &baseTriple) override {
-    if (_triple.getOS() == llvm::Triple::NetBSD &&
-        baseTriple.getArch() == llvm::Triple::x86_64) {
-      addSearchPath("=/usr/lib/i386");
-      return;
-    }
-    ELFLinkingContext::addDefaultSearchDirs(baseTriple);
-  }
 };
 } // end namespace elf
 } // end namespace lld