修改llvm IR的调试信息

use*_*ser 7 llvm debug-symbols llvm-ir

我想修改llvm指令的调试信息,以便随后将修改后的调试信息传递给可执行二进制文件.因此,如果我在二进制文件上使用"addr2line"实用程序,它将返回我修改的调试信息.

我尝试使用以下代码段进行更改:

MDNode *N = Inst->getMetadata("dbg");
DebugLoc Loc = DebugLoc::get(newLine, newCol, N);
Inst->setDebugLoc(Loc);
Run Code Online (Sandbox Code Playgroud)

我通过使用读回DebugLoc

const DebugLoc D = Inst->getDebugLoc();
unsigned Line = D.getLine();
outs() << Line <<"\n";
Run Code Online (Sandbox Code Playgroud)

但我无法正确设置调试信息.如何通过llvm pass正确更改调试信息?