From 156aa35eb57a25582b2a07501ed64cafb4a90e59 Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Thu, 22 Dec 2005 01:50:56 +0000 Subject: Implement PR679: * Changed the -rpath option from cl::opt to cl::list * Changed the interface to GenerateNative to take a std::vector instead of just a std::string * Changed GenerateNative to generate multiple -Wl,-rpath, options to be passed to gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24930 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/gccld/GenerateCode.cpp | 13 ++++++++----- tools/gccld/gccld.cpp | 7 ++++++- tools/gccld/gccld.h | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) (limited to 'tools/gccld') diff --git a/tools/gccld/GenerateCode.cpp b/tools/gccld/GenerateCode.cpp index 3b5d2b2b05..9dffe332e4 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 612424eab2..ae45100088 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 b1649f0747..8dbae884c2 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); -- cgit v1.2.3