[llvm-commits] PATCH: DebugInfo library: add methods to fetch function name for a given address

Alexey Samsonov samsonov at google.com
Mon Jun 25 06:58:52 PDT 2012


Hi!

This patch fixes minor issues in libLLVMDebugInfo and adds an interface its
clients can use to
fetch the function name for a given instruction address (analogue to
"addr2line -f").

The usage is illustrated by the additional flag to llvm-dwarfdump tool.

Currently the implementation is straightforward:
1) get the compile unit for a given address (using pre-built list of
address ranges).
2) re-extract all DIEs of this compile unit.
3) iterate over all DIEs and find a subprogram DIE, such that given address
lies in PC range of this subprogram.

If this patch is ok, I would like to go on further and add functionality to
fetch the
file/line info and function names for all the inlined frames. Hopefully,
this wouldn't require much code (the code which
builds a DIE tree for each compile unit is already present). However, the
clients of DebugInfo lib would
have to pass an additional section to DIContext ctor - .debug_ranges (in
fact, it is necessary even for the
current code, as compiling with -O2 often breaks PC range of functions into
multiple ranges).

Codereview: http://codereview.appspot.com/6342043/

-- 
Alexey Samsonov, MSK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120625/0f9d4c2b/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm-dwarfdump-function-name.diff
Type: application/octet-stream
Size: 12431 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120625/0f9d4c2b/attachment.obj>


More information about the llvm-commits mailing list