Re: [DynInst_API:] Is there any way to get the mapping information between rewrote function and original function


Date: Mon, 23 Mar 2015 12:02:11 -0500
From: Bill Williams <bill@xxxxxxxxxxx>
Subject: Re: [DynInst_API:] Is there any way to get the mapping information between rewrote function and original function
On 03/17/2015 12:45 PM, Xi Chen wrote:
Hi,
    Thank you for the helping, but the DYNINST_DEBUG_RELOC seems only
have the information of the BB need to be updated which still in the old
code space, and DEBUG_SPRINGBOARD only tell me the entry point of the
rewrote function (A jmp between the old function to the rewrote
function). However both of them do not contain the function boundary
information after rewriting. I mean I can get the rewrites function
boundary via sort the entry point of the rewrote function. However I
wonder if there are more clean way to do that. Also since in the code
generation phase, a adjustment of the offset need to be done, so I
wonder if there are any mapping information I can find to map the
instruction in the original function and the rewrote function.

There is indeed mapping information, but there is not a convenient environment variable to print it. AddressSpace::getAddrInfo I think does what you want, but is going to be verbose. DYNINST_DEBUG_RELOC's "dumping relocation buffers" section of output will give you all the relocated functions, but does not presently draw boundaries between them. It would not be hard to modify that output to add a delimiter at the boundaries between relocated functions, given that we're currently laying them out as non-overlapping.

What are you actually trying to do here?


2015-03-17 17:57 GMT+01:00 Bill Williams <bill@xxxxxxxxxxx
<mailto:bill@xxxxxxxxxxx>>:

    On 03/17/2015 11:45 AM, Xi Chen wrote:

        Hi,
            I wonder if there are any debug flag or run-time ENV can
        tell the
        mapping information between the original function and the copied
        function inside the dyninstInst section. Or even the instruction
        mapping
        information like how the instruction being adjust when certain
        trampoline code is added.
            Thanks in advance.

    DYNINST_DEBUG_RELOC (for relocated code) and
    DYNINST_DEBUG_SPRINGBOARD (for springboard branches) should tell you
    everything you need if you enable them during the rewriting process.
    There are no flags that will have the same effect on a rewritten
    binary when you run it, though.

        --
        Best Regards
        X.Chen




        _________________________________________________
        Dyninst-api mailing list
        Dyninst-api@xxxxxxxxxxx <mailto:Dyninst-api@xxxxxxxxxxx>
        https://lists.cs.wisc.edu/__mailman/listinfo/dyninst-api
        <https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api>



    --
    --bw

    Bill Williams
    Paradyn Project
    bill@xxxxxxxxxxx <mailto:bill@xxxxxxxxxxx>




--
Best Regards
X.Chen




--
--bw

Bill Williams
Paradyn Project
bill@xxxxxxxxxxx
[← Prev in Thread] Current Thread [Next in Thread→]