summaryrefslogtreecommitdiff
path: root/tools/gccld
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2005-12-22 01:50:56 +0000
committerReid Spencer <rspencer@reidspencer.com>2005-12-22 01:50:56 +0000
commit156aa35eb57a25582b2a07501ed64cafb4a90e59 (patch)
treeded872c02fa963c68702ade99865929ca388013e /tools/gccld
parent0b4e244a054921d6317a7c55d0e49767b57f58f8 (diff)
downloadllvm-156aa35eb57a25582b2a07501ed64cafb4a90e59.tar.gz
llvm-156aa35eb57a25582b2a07501ed64cafb4a90e59.tar.bz2
llvm-156aa35eb57a25582b2a07501ed64cafb4a90e59.tar.xz
Implement PR679:
* Changed the -rpath option from cl::opt to cl::list * Changed the interface to GenerateNative to take a std::vector<std::string> 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
Diffstat (limited to 'tools/gccld')
-rw-r--r--tools/gccld/GenerateCode.cpp13
-rw-r--r--tools/gccld/gccld.cpp7
-rw-r--r--tools/gccld/gccld.h2
3 files changed, 15 insertions, 7 deletions
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<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 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<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 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<std::string> &RPath,
const std::string &SOName,
bool Verbose=false);