LLVM IO错误-写入bc文件时出错

LLVM IO Error - Error writing to a bc file

本文关键字:文件 出错 bc 写入 IO 错误 LLVM      更新时间:2023-10-16

尝试删除raw_ostream 时发生错误

void LLVMGenerator::SaveModule(string path) {
    std::string ErrInfo = "";
    llvm::raw_ostream *out =
        new llvm::raw_fd_ostream(path.c_str(), ErrInfo, llvm::sys::fs::F_None);
    llvm::WriteBitcodeToFile(_mod, *out);
    out->flush();
    delete out; // LLVM ERROR: IO failure on output stream.
    return;
}

操作系统Ubuntu 13.10 x64,LLVM 3.4

raw_fd_ostream对象上发生了一些IO错误-可能底层writev调用遇到了不可恢复的错误。在这种情况下,raw_fd_ostream的行为是打开一个指示发生错误的标志,如果该标志在销毁过程中仍然打开,则会报告致命错误(=崩溃)。

如果你想避免这个崩溃,你可以在销毁对象之前对它调用clear_error();当然,建议您首先通过has_error()检查是否发生了错误,并尝试处理它。