From 1d924f60708b0dcf60766c6e99b46274e495db9c Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 2 Aug 2005 22:07:38 +0000 Subject: [PATCH] Pass -export-dynamic to gcc when compiling with -native and the link is performed with -export-dynamic (aka. -disable-internalize). Patch by Nicholas Riley! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22601 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/gccld/GenerateCode.cpp | 9 +++++---- tools/gccld/gccld.cpp | 8 ++++---- tools/gccld/gccld.h | 1 + 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/tools/gccld/GenerateCode.cpp b/tools/gccld/GenerateCode.cpp index 56aaf7d5cfc..fa4a8fd3903 100644 --- a/tools/gccld/GenerateCode.cpp +++ b/tools/gccld/GenerateCode.cpp @@ -325,8 +325,7 @@ int llvm::GenerateAssembly(const std::string &OutputFilename, return sys::Program::ExecuteAndWait(llc, &args[0]); } -/// GenerateAssembly - generates a native assembly language source file from the -/// specified bytecode file. +/// GenerateCFile - generates a C source file from the specified bytecode file. int llvm::GenerateCFile(const std::string &OutputFile, const std::string &InputFile, const sys::Path &llc, @@ -344,8 +343,8 @@ int llvm::GenerateCFile(const std::string &OutputFile, return sys::Program::ExecuteAndWait(llc, &args[0]); } -/// GenerateNative - generates a native assembly language source file from the -/// specified assembly source file. +/// GenerateNative - generates a native executable file from the specified +/// assembly source file. /// /// Inputs: /// InputFilename - The name of the output bytecode file. @@ -365,6 +364,7 @@ int llvm::GenerateNative(const std::string &OutputFilename, const std::vector &Libraries, const sys::Path &gcc, char ** const envp, bool Shared, + bool ExportAllAsDynamic, const std::string &RPath, const std::string &SOName, bool Verbose) { @@ -400,6 +400,7 @@ int llvm::GenerateNative(const std::string &OutputFilename, args.push_back(InputFilename.c_str()); if (Shared) args.push_back("-shared"); + if (ExportAllAsDynamic) args.push_back("-export-dynamic"); if (!RPath.empty()) { std::string rp = "-Wl,-rpath," + RPath; args.push_back(rp.c_str()); diff --git a/tools/gccld/gccld.cpp b/tools/gccld/gccld.cpp index 2ae13aa7d4e..5c0fbb90d85 100644 --- a/tools/gccld/gccld.cpp +++ b/tools/gccld/gccld.cpp @@ -308,8 +308,8 @@ int main(int argc, char **argv, char **envp ) { Verbose); if (Verbose) std::cout << "Generating Native Code\n"; GenerateNative(OutputFilename, AssemblyFile.toString(), - LibPaths, Libraries, gcc, envp, LinkAsLibrary, RPath, - SOName, Verbose); + LibPaths, Libraries, gcc, envp, LinkAsLibrary, + NoInternalize, RPath, SOName, Verbose); if (!SaveTemps) { // Remove the assembly language file. @@ -340,8 +340,8 @@ int main(int argc, char **argv, char **envp ) { GenerateCFile(CFile.toString(), RealBytecodeOutput, llc, Verbose); if (Verbose) std::cout << "Generating Native Code\n"; GenerateNative(OutputFilename, CFile.toString(), - LibPaths, Libraries, gcc, envp, LinkAsLibrary, RPath, - SOName, Verbose); + LibPaths, Libraries, gcc, envp, LinkAsLibrary, + NoInternalize, RPath, SOName, Verbose); if (!SaveTemps) { // Remove the assembly language file. diff --git a/tools/gccld/gccld.h b/tools/gccld/gccld.h index 5b7bdf1c477..b1649f07476 100644 --- a/tools/gccld/gccld.h +++ b/tools/gccld/gccld.h @@ -45,6 +45,7 @@ GenerateNative (const std::string &OutputFilename, const sys::Path &gcc, char ** const envp, bool Shared, + bool ExportAllAsDynamic, const std::string &RPath, const std::string &SOName, bool Verbose=false);