//===----------------------------------------------------------------------===//
#include "llvm-c/lto.h"
+#include "llvm-c/Core.h"
#include "LTOModule.h"
#include "LTOCodeGenerator.h"
// loads an object file from disk
// returns NULL on error (check lto_get_error_message() for details)
//
-lto_module_t lto_module_create(const char* path)
+lto_module_t lto_module_create(const char* path, LLVMContextRef Ctxt)
{
- return LTOModule::makeLTOModule(path, sLastErrorString);
+ return LTOModule::makeLTOModule(path, *llvm::unwrap(Ctxt),
+ sLastErrorString);
}
// loads an object file from memory
// returns NULL on error (check lto_get_error_message() for details)
//
-lto_module_t lto_module_create_from_memory(const void* mem, size_t length)
+lto_module_t lto_module_create_from_memory(const void* mem, size_t length,
+ LLVMContextRef Ctxt)
{
- return LTOModule::makeLTOModule(mem, length, sLastErrorString);
+ return LTOModule::makeLTOModule(mem, length, *llvm::unwrap(Ctxt),
+ sLastErrorString);
}
// instantiates a code generator
// returns NULL if there is an error
//
-lto_code_gen_t lto_codegen_create()
+lto_code_gen_t lto_codegen_create(LLVMContextRef ContextRef)
{
- return new LTOCodeGenerator();
+ return new LTOCodeGenerator(*llvm::unwrap(ContextRef));
}
//
bool lto_codegen_set_pic_model(lto_code_gen_t cg, lto_codegen_model model)
{
- return cg->setCodePICModel(model, sLastErrorString);
+ return cg->setCodePICModel(model, sLastErrorString);
+}
+
+//
+// sets the path to gcc
+//
+void lto_codegen_set_gcc_path(lto_code_gen_t cg, const char* path)
+{
+ cg->setGccPath(path);
+}
+
+//
+// sets the path to the assembler tool
+//
+void lto_codegen_set_assembler_path(lto_code_gen_t cg, const char* path)
+{
+ cg->setAssemblerPath(path);
}
//
//
void lto_codegen_add_must_preserve_symbol(lto_code_gen_t cg, const char* symbol)
{
- cg->addMustPreserveSymbol(symbol);
+ cg->addMustPreserveSymbol(symbol);
}
//
bool lto_codegen_write_merged_modules(lto_code_gen_t cg, const char* path)
{
- return cg->writeMergedModules(path, sLastErrorString);
+ return cg->writeMergedModules(path, sLastErrorString);
}
extern const void*
lto_codegen_compile(lto_code_gen_t cg, size_t* length)
{
- return cg->compile(length, sLastErrorString);
+ return cg->compile(length, sLastErrorString);
}
+
+//
+// Used to pass extra options to the code generator
+//
extern void
lto_codegen_debug_options(lto_code_gen_t cg, const char * opt)
{
cg->setCodeGenDebugOptions(opt);
-}
-
-
-
+}
\ No newline at end of file