mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-27 16:17:17 +00:00
LTO API: add lto_module_create_from_memory_with_path.
This function adds an extra path argument to lto_module_create_from_memory. The path argument will be passed to makeBuffer to make sure the MemoryBuffer has a name and the created module has a module identifier. This is mainly for emitting warning messages from the linker. When we emit warning message on a module, we can use the module identifier. rdar://15985737 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201114 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -40,7 +40,7 @@ typedef bool lto_bool_t;
|
|||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define LTO_API_VERSION 8
|
#define LTO_API_VERSION 9
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \since prior to LTO_API_VERSION=3
|
* \since prior to LTO_API_VERSION=3
|
||||||
@@ -175,6 +175,16 @@ lto_module_create(const char* path);
|
|||||||
extern lto_module_t
|
extern lto_module_t
|
||||||
lto_module_create_from_memory(const void* mem, size_t length);
|
lto_module_create_from_memory(const void* mem, size_t length);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads an object file from memory with an extra path argument.
|
||||||
|
* Returns NULL on error (check lto_get_error_message() for details).
|
||||||
|
*
|
||||||
|
* \since prior to LTO_API_VERSION=9
|
||||||
|
*/
|
||||||
|
extern lto_module_t
|
||||||
|
lto_module_create_from_memory_with_path(const void* mem, size_t length,
|
||||||
|
const char *path);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads an object file from disk. The seek point of fd is not preserved.
|
* Loads an object file from disk. The seek point of fd is not preserved.
|
||||||
* Returns NULL on error (check lto_get_error_message() for details).
|
* Returns NULL on error (check lto_get_error_message() for details).
|
||||||
|
@@ -100,7 +100,8 @@ public:
|
|||||||
std::string& errMsg);
|
std::string& errMsg);
|
||||||
static LTOModule *makeLTOModule(const void *mem, size_t length,
|
static LTOModule *makeLTOModule(const void *mem, size_t length,
|
||||||
llvm::TargetOptions options,
|
llvm::TargetOptions options,
|
||||||
std::string &errMsg);
|
std::string &errMsg,
|
||||||
|
llvm::StringRef path = "");
|
||||||
|
|
||||||
/// getTargetTriple - Return the Module's target triple.
|
/// getTargetTriple - Return the Module's target triple.
|
||||||
const char *getTargetTriple() {
|
const char *getTargetTriple() {
|
||||||
@@ -222,8 +223,9 @@ private:
|
|||||||
llvm::TargetOptions options,
|
llvm::TargetOptions options,
|
||||||
std::string &errMsg);
|
std::string &errMsg);
|
||||||
|
|
||||||
/// makeBuffer - Create a MemoryBuffer from a memory range.
|
/// Create a MemoryBuffer from a memory range with an optional name.
|
||||||
static llvm::MemoryBuffer *makeBuffer(const void *mem, size_t length);
|
static llvm::MemoryBuffer *makeBuffer(const void *mem, size_t length,
|
||||||
|
llvm::StringRef name = "");
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LTO_MODULE_H
|
#endif // LTO_MODULE_H
|
||||||
|
@@ -128,8 +128,8 @@ LTOModule *LTOModule::makeLTOModule(int fd, const char *path,
|
|||||||
|
|
||||||
LTOModule *LTOModule::makeLTOModule(const void *mem, size_t length,
|
LTOModule *LTOModule::makeLTOModule(const void *mem, size_t length,
|
||||||
TargetOptions options,
|
TargetOptions options,
|
||||||
std::string &errMsg) {
|
std::string &errMsg, StringRef path) {
|
||||||
OwningPtr<MemoryBuffer> buffer(makeBuffer(mem, length));
|
OwningPtr<MemoryBuffer> buffer(makeBuffer(mem, length, path));
|
||||||
if (!buffer)
|
if (!buffer)
|
||||||
return NULL;
|
return NULL;
|
||||||
return makeLTOModule(buffer.take(), options, errMsg);
|
return makeLTOModule(buffer.take(), options, errMsg);
|
||||||
@@ -186,10 +186,11 @@ LTOModule *LTOModule::makeLTOModule(MemoryBuffer *buffer,
|
|||||||
return Ret;
|
return Ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// makeBuffer - Create a MemoryBuffer from a memory range.
|
/// Create a MemoryBuffer from a memory range with an optional name.
|
||||||
MemoryBuffer *LTOModule::makeBuffer(const void *mem, size_t length) {
|
MemoryBuffer *LTOModule::makeBuffer(const void *mem, size_t length,
|
||||||
|
StringRef name) {
|
||||||
const char *startPtr = (const char*)mem;
|
const char *startPtr = (const char*)mem;
|
||||||
return MemoryBuffer::getMemBuffer(StringRef(startPtr, length), "", false);
|
return MemoryBuffer::getMemBuffer(StringRef(startPtr, length), name, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// objcClassNameFromExpression - Get string that the data pointer points to.
|
/// objcClassNameFromExpression - Get string that the data pointer points to.
|
||||||
|
@@ -156,6 +156,17 @@ lto_module_t lto_module_create_from_memory(const void* mem, size_t length) {
|
|||||||
return LTOModule::makeLTOModule(mem, length, Options, sLastErrorString);
|
return LTOModule::makeLTOModule(mem, length, Options, sLastErrorString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Loads an object file from memory with an extra path argument.
|
||||||
|
/// Returns NULL on error (check lto_get_error_message() for details).
|
||||||
|
lto_module_t lto_module_create_from_memory_with_path(const void* mem,
|
||||||
|
size_t length,
|
||||||
|
const char *path) {
|
||||||
|
lto_initialize();
|
||||||
|
llvm::TargetOptions Options;
|
||||||
|
lto_set_target_options(Options);
|
||||||
|
return LTOModule::makeLTOModule(mem, length, Options, sLastErrorString, path);
|
||||||
|
}
|
||||||
|
|
||||||
/// lto_module_dispose - Frees all memory for a module. Upon return the
|
/// lto_module_dispose - Frees all memory for a module. Upon return the
|
||||||
/// lto_module_t is no longer valid.
|
/// lto_module_t is no longer valid.
|
||||||
void lto_module_dispose(lto_module_t mod) {
|
void lto_module_dispose(lto_module_t mod) {
|
||||||
|
@@ -5,6 +5,7 @@ lto_module_create
|
|||||||
lto_module_create_from_fd
|
lto_module_create_from_fd
|
||||||
lto_module_create_from_fd_at_offset
|
lto_module_create_from_fd_at_offset
|
||||||
lto_module_create_from_memory
|
lto_module_create_from_memory
|
||||||
|
lto_module_create_from_memory_with_path
|
||||||
lto_module_get_deplib
|
lto_module_get_deplib
|
||||||
lto_module_get_linkeropt
|
lto_module_get_linkeropt
|
||||||
lto_module_get_num_deplibs
|
lto_module_get_num_deplibs
|
||||||
|
Reference in New Issue
Block a user