mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-03 17:31:50 +00:00
Fix PR139:\
When not linking as a library, use LinkItems to retain command line order of \ linking, otherwise use LinkFiles git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18549 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8bcd0502a3
commit
c191d497d5
@ -168,31 +168,30 @@ int main(int argc, char **argv, char **envp) {
|
||||
int exitCode = 0;
|
||||
|
||||
try {
|
||||
std::string ModuleID("gccld-output");
|
||||
std::auto_ptr<Module> Composite(new Module(ModuleID));
|
||||
|
||||
// We always look first in the current directory when searching for
|
||||
// libraries.
|
||||
LibPaths.insert(LibPaths.begin(), ".");
|
||||
|
||||
// If the user specified an extra search path in their environment, respect
|
||||
// it.
|
||||
if (char *SearchPath = getenv("LLVM_LIB_SEARCH_PATH"))
|
||||
LibPaths.push_back(SearchPath);
|
||||
|
||||
// Remove any consecutive duplicates of the same library...
|
||||
Libraries.erase(std::unique(Libraries.begin(), Libraries.end()),
|
||||
Libraries.end());
|
||||
|
||||
// Link in all of the files
|
||||
if (LinkFiles(argv[0], Composite.get(), InputFilenames, Verbose))
|
||||
return 1; // Error already printed
|
||||
// Set up the Composite module.
|
||||
std::auto_ptr<Module> Composite(0);
|
||||
|
||||
if (!LinkAsLibrary)
|
||||
LinkLibraries(argv[0], Composite.get(), Libraries, LibPaths,
|
||||
Verbose, Native);
|
||||
if (LinkAsLibrary) {
|
||||
// Link in only the files, we ignore libraries in this case.
|
||||
Composite.reset( new Module(argv[0]) );
|
||||
if (LinkFiles(argv[0], Composite.get(), InputFilenames, Verbose))
|
||||
return 1; // Error already printed
|
||||
} else {
|
||||
// Build a list of the items from our command line
|
||||
LinkItemList Items;
|
||||
BuildLinkItems(Items, InputFilenames, Libraries);
|
||||
|
||||
// Link in all of the libraries next...
|
||||
// Link all the items together
|
||||
Composite.reset( LinkItems(argv[0], Items, LibPaths, Verbose, Native) );
|
||||
|
||||
// Check for an error during linker
|
||||
if (!Composite.get())
|
||||
return 1; // Error already printed
|
||||
}
|
||||
|
||||
// Create the output file.
|
||||
std::string RealBytecodeOutput = OutputFilename;
|
||||
|
@ -389,29 +389,30 @@ int main(int argc, char **argv, char **envp) {
|
||||
cl::ParseCommandLineOptions(argc, argv, " llvm linker for GCC\n");
|
||||
sys::PrintStackTraceOnErrorSignal();
|
||||
|
||||
std::string ModuleID("llvm-ld-output");
|
||||
std::auto_ptr<Module> Composite(new Module(ModuleID));
|
||||
|
||||
// We always look first in the current directory when searching for libraries.
|
||||
LibPaths.insert(LibPaths.begin(), ".");
|
||||
|
||||
// If the user specified an extra search path in their environment, respect
|
||||
// it.
|
||||
if (char *SearchPath = getenv("LLVM_LIB_SEARCH_PATH"))
|
||||
LibPaths.push_back(SearchPath);
|
||||
|
||||
// Remove any consecutive duplicates of the same library...
|
||||
Libraries.erase(std::unique(Libraries.begin(), Libraries.end()),
|
||||
Libraries.end());
|
||||
|
||||
// Link in all of the files
|
||||
if (LinkFiles(argv[0], Composite.get(), InputFilenames, Verbose))
|
||||
return 1; // Error already printed
|
||||
// Set up the Composite module.
|
||||
std::auto_ptr<Module> Composite(0);
|
||||
|
||||
// Link in all of the libraries next...
|
||||
if (!LinkAsLibrary)
|
||||
LinkLibraries(argv[0], Composite.get(), Libraries, LibPaths,
|
||||
Verbose, Native);
|
||||
if (LinkAsLibrary) {
|
||||
// Link in only the files, we ignore libraries in this case.
|
||||
Composite.reset( new Module(argv[0]) );
|
||||
if (LinkFiles(argv[0], Composite.get(), InputFilenames, Verbose))
|
||||
return 1; // Error already printed
|
||||
} else {
|
||||
// Build a list of the items from our command line
|
||||
LinkItemList Items;
|
||||
BuildLinkItems(Items, InputFilenames, Libraries);
|
||||
|
||||
// Link all the items together
|
||||
Composite.reset( LinkItems(argv[0], Items, LibPaths, Verbose, Native) );
|
||||
|
||||
// Check for an error during linker
|
||||
if (!Composite.get())
|
||||
return 1; // Error already printed
|
||||
}
|
||||
|
||||
// Optimize the module
|
||||
Optimize(Composite.get());
|
||||
|
Loading…
Reference in New Issue
Block a user