[LLVMdev] Getting corresponding c-instruction line number along with ir-instruction in a function's CFG

patreek km patreek23 at hotmail.com
Tue Feb 28 09:27:04 PST 2012


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>


More information about the llvm-dev mailing list