Я успешно удалось изменить заданный входной битовый код, который
был прочитан из файла как описано в этом так посте.
Теперь хочу сохранить его в какой-нибудь выходной файл с битовым кодом, с
что-то похожее saveIRFile(module,"myOutputBC.bc");
,
Здесь main.cpp
файл, который я использую, но я не могу найти
правильный API, чтобы сделать желаемое сохранение.
/**********************/
/* LLVM INCLUDE FILES */
/**********************/
#include "llvm/IR/Module.h"#include "llvm/IRReader/IRReader.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Support/SourceMgr.h"#include "llvm/IR/LLVMContext.h"
/**************/
/* NAMESPACES */
/**************/
using namespace std;
using namespace llvm;
int main(int argc, char **argv)
{
LLVMContext ctx;
SMDiagnostic Err;
unique_ptr<Module> M = parseIRFile(argv[1],Err,ctx);
if (M)
{
Module *module = M.get();
for (auto
func = module->begin();
func != module->end();
func++)
{
errs() << func->getName() << "\n";
// modify func's basic blocks ...
// and save with saveIRFile(module,"myOutputBC.bc");
}
}
return 0;
}
Любая помощь очень ценится, спасибо!
Нечто подобное должно сделать:
std::error_code ec;
ToolOutputFile result("myOutputBC.bc", ec, sys::fs::F_None);
WriteBitcodeToFile(*module, result.os());
result.keep();
Обратите внимание, что если вы используете старую версию LLVM ToolOutputFile
можно назвать tool_output_file
,
Других решений пока нет …