forked from OSchip/llvm-project
Fix PR139: \
Add support for ordered linking with the LinkItems function llvm-svn: 18546
This commit is contained in:
parent
e96b620570
commit
a3df351820
|
@ -14,6 +14,7 @@
|
||||||
#ifndef LLVM_LINKER_H
|
#ifndef LLVM_LINKER_H
|
||||||
#define LLVM_LINKER_H
|
#define LLVM_LINKER_H
|
||||||
|
|
||||||
|
#include "llvm/Support/CommandLine.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
@ -22,6 +23,42 @@ namespace llvm {
|
||||||
|
|
||||||
class Module;
|
class Module;
|
||||||
|
|
||||||
|
/// This type is used to pass the linkage items (libraries and files) to
|
||||||
|
/// the LinkItems function. It is composed of string/bool pairs. The string
|
||||||
|
/// provides the name of the file or library (as with the -l option). The bool
|
||||||
|
/// should be true for libraries, false for files, signifying "isLibrary".
|
||||||
|
/// @brief A list of string/bool pairs
|
||||||
|
typedef std::vector<std::pair<std::string,bool> > LinkItemList;
|
||||||
|
|
||||||
|
/// This function can be used to link a set of linkage items into a module. A
|
||||||
|
/// linkage item is one of the three things identified by the LinkItemKind
|
||||||
|
/// enumeration. This function allows linking to preserve the order of
|
||||||
|
/// specification associated with a command line, or for other purposes. Each
|
||||||
|
/// item will be linked in turn as it occurs in \p Items. Note that library
|
||||||
|
/// path items will only be in effect after they have been processed.
|
||||||
|
/// @returns The aggregated/linked Module.
|
||||||
|
/// @throws nothing
|
||||||
|
Module* LinkItems (
|
||||||
|
const char * progname, ///< Name of the program being linked (for output)
|
||||||
|
const LinkItemList& Items, // Set of libraries/files to link in
|
||||||
|
const std::vector<std::string>& LibPaths, // Paths to search for libraries
|
||||||
|
bool Verbose, ///< Link verbosely, indicating each action
|
||||||
|
bool Native ///< Linking is for a native executable
|
||||||
|
);
|
||||||
|
|
||||||
|
/// This function provides some utility for tools that need to build the list
|
||||||
|
/// of link items from a triplet of command line options: Files, Libraries, and
|
||||||
|
/// LibraryPaths. The command line ordering is preserved by this function even
|
||||||
|
/// though the options are split into three separate cl::list<std::string>. The
|
||||||
|
/// resulting \p OutList is suitable for use with LinkItems.
|
||||||
|
/// @see LinkItems
|
||||||
|
/// @throws nothing
|
||||||
|
void BuildLinkItems(
|
||||||
|
LinkItemList& OutList,
|
||||||
|
const cl::list<std::string>& Files, ///< List of files to put in list
|
||||||
|
const cl::list<std::string>& Libs ///< List of libraries to put in list
|
||||||
|
);
|
||||||
|
|
||||||
/// This is the heart of the linker. The \p Src module is linked into the \p
|
/// This is the heart of the linker. The \p Src module is linked into the \p
|
||||||
/// Dest module. If an error occurs, true is returned, otherwise false. If \p
|
/// Dest module. If an error occurs, true is returned, otherwise false. If \p
|
||||||
/// ErrorMsg is not null and an error occurs, \p *ErrorMsg will be set to a
|
/// ErrorMsg is not null and an error occurs, \p *ErrorMsg will be set to a
|
||||||
|
|
Loading…
Reference in New Issue