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>