I’m working on a project where I need to add the addresses’s of specific instructions to the DWARF output.
I’ve been digging around for the last week or so trying to figure out exactly what I need to do, but this is my first list posting.
I came across this posting: http://lists.cs.uiuc.edu/pipermail/llvmdev/2010-September/034464.html
which seems to be doing almost exactly what I want to do, however it was created with LLVM 2.7 in mind. Since then, from what I can tell, the LLVM MC project has been created and blown away the usefulness of the descriptions contained in that thread. (Example: AsmPrinter::processDebugLoc() no longer exists). Does anyone have any pointers on how to update this for LLVM/clang 3.0?
To be more specific, I’ve added a special stack guard intrinsic similar to StackProtector.cpp which uses a per function random immediate instead of ___stack_chk_guard. What I am trying to accomplish is to get the offset into the final x86 object file of each one of these immediate values.
An example of the output in Assembly looks like:
movq $653406579, -8(%rbp) ## imm = 0x26F23173
In reality, I’d settle for a simple way to get the offset into the Obj file of the movq instruction that I could putput to a separate file, but It’d be better if I could get it into the DWARF tags.
Does anyone have any familiarity with this to give me some pointers?