[LLVMdev] help converting llvm metadata into dwarf tags
Devang Patel
devang.patel at gmail.com
Mon Aug 23 17:46:08 PDT 2010
Hi Roger,
On Mon, Aug 23, 2010 at 4:01 PM, Roger Wang <innit42 at gmail.com> wrote:
> Dear all,
>
> I'd like to find the memory location of certain instructions in a
> compiled/linked binary. During the IR phase, I tag instructions I'm
> interested in with LLVM'-2.7's new metadata (MDNodes with an identifiable
> ID). I'd now like to propagate that data to the assembly via a custom DWARF
> tag I attach to each X86 instruction created from a tagged IR instruction.
> This will then find its way at assembly time into the binary from where I
> retrieve it (by locating my custom tags with a DWARF consumer and dumping
> the addresses of the instruction they're attached to).
>
> Does this sound reasonable?
>
> I've completed the first part, attaching the MDNodes to IR instructions but
> I'm a bit overwhelmed by all the backend stuff.
>
How can I identify which IR instruction an X86 instruction came from (with a
> view to attaching an identifying DW_TAG to it)?
>
1) LLVM IR instructions are converted into MachineInstr during instruction
selection time. At this point you need to transfer your custom metadata to
MachineInstr. See how DebugLoc is transfered (in CodeGen/SelectionDAG
directory).
2) At AsmPrint time, while emitting your assembly instructions you have
access to coresponding MachineInstr and any custom metadata attached with
it.
>
> I've found the tag definitions in include/llvm/Support/Dwarf.h and added my
> own.
> lib/CodeGen/AsmPrinter/DwarfDebug.cpp seems to be the only place that emits
> dwarf data into the assembly stream.
>
See have DwarfDebug.cpp handles DebugLoc attached with each instruction
(::beginScope() and ::endScope()).
> It also seems to create a DebugInfoFinder which accesses the IR
> instructions.
>
This path will allow you to browse entire function and collect info which
you can use later on.
-
Devang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100823/e552edcd/attachment.html>
More information about the llvm-dev
mailing list