Как сохранить модифицированный битовый код llvm в заданном имени файла?

Я успешно удалось изменить заданный входной битовый код, который
был прочитан из файла
как описано в этом так посте.
Теперь хочу сохранить его в какой-нибудь выходной файл с битовым кодом, с
что-то похожее 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;
}

Любая помощь очень ценится, спасибо!

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,

3

Другие решения

Других решений пока нет …