Hi,<div><br></div><div>I would like to extend DebugInfo library for the purpose of using it in AddressSanitizer/ThreadSanitizer run-time libraries.</div><div><br></div><div>Current interface is:</div><br><font face="courier new, monospace">class DILineInfo {<br>
  const char *FileName;<br>  uint32_t Line;<br>  uint32_t Column;</font><div><font face="courier new, monospace">  ...</font></div><div><font face="courier new, monospace">};<br><br>class DIContext {<br>  ...</font></div>
<div><font face="courier new, monospace">  virtual DILineInfo getLineInfoForAddress(uint64_t address) = 0;</font></div><div><font face="courier new, monospace">};</font></div><div><br></div><div>First, I would like to get function name associated with the address.</div>
<div>Then, I would like to get inlined frames as well.</div><div>Then, I would like to be able to get the same info about global variables.</div><div>Finally, I would like to receive explicit failure indicator.</div><div>
<br></div><div>I see the resulting interface along the lines of:</div><div><br></div><div><font face="courier new, monospace">class DILineInfo {<br>  <b>const char *Name;</b><br>  const char *FileName;<br>  uint32_t Line;<br>
  uint32_t Column;</font><div><font face="courier new, monospace">  ...</font></div><div><font face="courier new, monospace">};<br><br>class DIContext {<br>  ...</font></div><div><font face="courier new, monospace">  virtual <b>bool</b> getLineInfoFor<b>Code</b>(uint64_t <b>pc, SmallVector<</b></font><span style="font-family:'courier new',monospace"><b>DILineInfo> *res</b></span><span style="font-family:'courier new',monospace">) = 0;</span></div>
<div><b><font face="courier new, monospace">  virtual bool getLineInfoForData(uint64_t address, </font></b><b style="font-family:'courier new',monospace">DILineInfo *res</b><b><font face="courier new, monospace">) = 0;</font></b></div>
<div><font face="courier new, monospace">};</font></div></div><div><br></div><div>Any comments/suggestions?</div><div><br></div>