diff --git a/tools/gccld/GenerateCode.cpp b/tools/gccld/GenerateCode.cpp index 3b5d2b2b050..9dffe332e48 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 &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::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 612424eab29..ae451000884 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 + cl::list 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 CO6("h", cl::Hidden, cl::desc("Compatibility option: ignored")); + cl::opt + CO7("start-group", cl::Hidden, cl::desc("Compatibility option: ignored")); + cl::opt + 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 b1649f07476..8dbae884c22 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 &RPath, const std::string &SOName, bool Verbose=false);