<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Hi folks,</div><div><br></div><div>I am trying to implement the C bindings API for DebugInfo::DWARF::DWARFDie. My goal is to have a C library that reads and parses DWARF debugging format (just like how llvm-dwarfdump does, but maybe more than just dumping debug info)</div><div><br></div><div>I've started with creating C structure for DebugInfo::DWARF::DWARFContext which contains all DWARF DIEs in the object file. For this I used</div><div>```<br></div><div>DEFINE_SIMPLE_CONVERSION_FUNCTIONS(DWARFContext, LLVMDWARFContextRef)</div><div>```</div><div>then defined some C functions</div><div>```<br></div><div>LLVMDWARFContextRef LLVMCreateDWARFContext(LLVMBinaryRef Bin) {</div><div>  std::unique_ptr<DWARFContext> DICtx = DWARFContext::create(*unwrap(Bin));</div><div>  return wrap(DICtx.release());</div><div>}</div><div><br></div><div>void LLVMPrintDWARFContext(LLVMDWARFContextRef C) {</div><div>  DIDumpOptions DumpOpts;</div><div>  DumpOpts.DumpType = DIDT_DebugInfo; // I only care about the .debug_info section<br></div><div>  unwrap(C)->dump(outs(), DumpOpts);</div><div>}</div><div>```</div><div>However, I got a segfault when trying to dump the LLVMDWARFContextRef using the second function. More precisely, it segfaulted when dumping the attribute of the DWARFDie.</div><div><br></div><div>I tried to do this instead to see if the wrapping/unwrapping has bugs<br></div><div>```</div><div><div>LLVMDWARFContextRef LLVMCreateDWARFContext(LLVMBinaryRef Bin) {</div><div>  std::unique_ptr<DWARFContext> DICtx = DWARFContext::create(*unwrap(Bin));</div><div>  LLVMDWARFContextRef C = wrap(DICtx.release());</div><div>  LLVMPrintDWARFContext(C);</div><div>  return C;<br></div><div>}</div><div>```</div><div>and the call to LLVMPrintDWARFContext did not segfault this time.</div><div><br></div><div>Can anybody who knows about DWARFContext and DWARFDie tell me what I did wrong? Or is it a bug in DWARFDie::dump() method?</div><div><br></div><div>Thank you very much for your help,</div><div><br></div></div><div><div dir="ltr" class="gmail_signature"><div dir="ltr">Son Tuan Vu</div></div></div></div></div></div></div></div></div></div>