diff options
-rw-r--r-- | tools/gccld/GenerateCode.cpp | 13 | ||||
-rw-r--r-- | tools/gccld/gccld.cpp | 7 | ||||
-rw-r--r-- | tools/gccld/gccld.h | 2 |
3 files changed, 15 insertions, 7 deletions
diff --git a/tools/gccld/GenerateCode.cpp b/tools/gccld/GenerateCode.cpp index 3b5d2b2..9dffe33 100644 --- a/tools/gccld/GenerateCode.cpp +++ b/tools/gccld/GenerateCode.cpp @@ -352,7 +352,7 @@ int llvm::GenerateNative(const std::string &OutputFilename, const sys::Path &gcc, char ** const envp, bool Shared, bool ExportAllAsDynamic, - const std::string &RPath, + const std::vector<std::string> &RPaths, const std::string &SOName, bool Verbose) { // Remove these environment variables from the environment of the @@ -394,10 +394,13 @@ int llvm::GenerateNative(const std::string &OutputFilename, if (Shared) args.push_back("-shared"); if (ExportAllAsDynamic) args.push_back("-export-dynamic"); - if (!RPath.empty()) { - std::string rp = "-Wl,-rpath," + RPath; - StringsToDelete.push_back(strdup(rp.c_str())); - args.push_back(StringsToDelete.back()); + if (!RPaths.empty()) { + for (std::vector<std::string>::const_iterator I = RPaths.begin(), + E = RPaths.end(); I != E; I++) { + std::string rp = "-Wl,-rpath," + *I; + StringsToDelete.push_back(strdup(rp.c_str())); + args.push_back(StringsToDelete.back()); + } } if (!SOName.empty()) { std::string so = "-Wl,-soname," + SOName; diff --git a/tools/gccld/gccld.cpp b/tools/gccld/gccld.cpp index 612424e..ae45100 100644 --- a/tools/gccld/gccld.cpp +++ b/tools/gccld/gccld.cpp @@ -88,7 +88,7 @@ namespace { SaveTemps("save-temps", cl::desc("Do not delete temporary files")); - cl::opt<std::string> + cl::list<std::string> RPath("rpath", cl::desc("Set runtime shared library search path (requires -native or" " -native-cbe)"), @@ -107,6 +107,11 @@ namespace { CO5("eh-frame-hdr", cl::Hidden, cl::desc("Compatibility option: ignored")); cl::opt<std::string> CO6("h", cl::Hidden, cl::desc("Compatibility option: ignored")); + cl::opt<bool> + CO7("start-group", cl::Hidden, cl::desc("Compatibility option: ignored")); + cl::opt<bool> + CO8("end-group", cl::Hidden, cl::desc("Compatibility option: ignored")); + cl::alias A0("s", cl::desc("Alias for --strip-all"), cl::aliasopt(Strip)); cl::alias A1("S", cl::desc("Alias for --strip-debug"), diff --git a/tools/gccld/gccld.h b/tools/gccld/gccld.h index b1649f0..8dbae88 100644 --- a/tools/gccld/gccld.h +++ b/tools/gccld/gccld.h @@ -46,7 +46,7 @@ GenerateNative (const std::string &OutputFilename, char ** const envp, bool Shared, bool ExportAllAsDynamic, - const std::string &RPath, + const std::vector<std::string> &RPath, const std::string &SOName, bool Verbose=false); |