patreek km
2012-Feb-28 17:27 UTC
[LLVMdev] Getting corresponding c-instruction line number along with ir-instruction in a function's CFG
Hi
I am not a good programmer but for my project i have to use llvm to generate CFG
for c programs where i have a mapping from IR instruction in CFG to their
respective c instruction. After surfing a in source of llvm i did the following
change in printInstruction() function in llvm/lib/VMCore/AsmWriter.cpp file.
.....void AssemblyWriter::printInstruction(const Instruction &I) { if
(AnnotationWriter) AnnotationWriter->emitInstructionAnnot(&I, Out);
// Print out indentation for an instruction. Out << " ";
if (MDNode *N = I.getMetadata("dbg")) { // Code DILocation
Loc(N); // inserted unsigned Line =
Loc.getLineNumber(); // by Out<<"LN@"<<Line;
// me StringRef File = Loc.getFilename(); // to
Out<<"FN@"<<File; // get StringRef Dir =
Loc.getDirectory(); // the Out<<"DN@"<<Dir; //
mapping } //
// Print out name if it exists........Code compiles well but i get following
linking problem :(llvm[2]: Linking Debug+Asserts executable
llvm-as/home/rangi/llvm/build/Debug+Asserts/lib/libLLVMCore.a(AsmWriter.o): In
function `llvm::DIDescriptor::getUnsignedField(unsigned int)
const':/home/rangi/llvm/include/llvm/Analysis/DebugInfo.h:70: undefined
reference to `llvm::DIDescriptor::getUInt64Field(unsigned int)
const'/home/rangi/llvm/build/Debug+Asserts/lib/libLLVMCore.a(AsmWriter.o):
In function
`DIScope':/home/rangi/llvm/include/llvm/Analysis/DebugInfo.h:160: undefined
reference to `vtable for
llvm::DIScope'/home/rangi/llvm/build/Debug+Asserts/lib/libLLVMCore.a(AsmWriter.o):
In function
`~DIScope':/home/rangi/llvm/include/llvm/Analysis/DebugInfo.h:161: undefined
reference to `vtable for
llvm::DIScope'/home/rangi/llvm/build/Debug+Asserts/lib/libLLVMCore.a(AsmWriter.o):
In function `llvm::DILocation::getFilename()
const':/home/rangi/llvm/include/llvm/Analysis/DebugInfo.h:785: undefined
reference to `llvm::DIScope::getFilename()
const'/home/rangi/llvm/build/Debug+Asserts/lib/libLLVMCore.a(AsmWriter.o):
In function `llvm::DILocation::getDirectory()
const':/home/rangi/llvm/include/llvm/Analysis/DebugInfo.h:786: undefined
reference to `llvm::DIScope::getDirectory()
const'/home/rangi/llvm/build/Debug+Asserts/lib/libLLVMCore.a(AsmWriter.o):
In function `llvm::DIScope
llvm::DIDescriptor::getFieldAs<llvm::DIScope>(unsigned int)
const':/home/rangi/llvm/include/llvm/Analysis/DebugInfo.h:77: undefined
reference to `llvm::DIDescriptor::getDescriptorField(unsigned int) const'
Plese tell me if what is missing and if this the right way to achive
mapping.Thanks in advance Patreek
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20120228/1cbc562e/attachment.html>
