Thanks Bill.

I have more questions:

Wrt slicing and flow of values through memory (stack/heap) what kind of
assumptions does dataflowAPI make wrt multi-threading?
Are heap locations that are targets of an atomic instructions assumed to
contain UNKNOW values even if a known value was written to the location?

In fact, in my use case, I am looking for ignoring multi-threading. That
is, I am expecting the dataflowAPI to assume that a value written to a
location will be same when read later even if in real executions another
thread could change the value.


-Milind

On Tue, Jun 4, 2013 at 4:40 PM, Bill Williams <[email protected]> wrote:

> On 06/04/2013 02:24 PM, Milind Chabbi wrote:
>
>> Thanks Bill.
>>
>> Is there a documentation for DataflowAPI or should I browse the source
>> code?
>>
>>  Unfortunately, the thing standing between DataflowAPI and removal of the
> "beta" tag is documentation. Browse the source and ask for help as you need
> it; we've got several people on-list who've used the slicer (and other
> DataflowAPI stuff) and any of us can help you out.
>
> --bw
>
>  -Milind
>>
>> On Tue, Jun 4, 2013 at 1:09 PM, Bill Williams <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>>     On 06/03/2013 10:38 PM, Milind Chabbi wrote:
>>
>>         I am considering using Dyninst for a binary analysis (not
>>         rewriting).
>>            My particular use case involves answering questions such as:
>>         1. Is the memory address accessed by this instruction loop
>>         invariant or not?
>>         2. Is the value read/written in this instruction loop invariant
>>         or not?
>>         3. May/Must given two memory accesses alias?
>>
>>         Does Dyninst have facilities for such data flow analysis on x86_64
>>         binaries?
>>
>>     Depends on how much effort you're willing to add to our existing
>>     tools and what quality of results you need; as you know, these are
>>     not necessarily simple data flow problems.
>>
>>     Our slicer in dataflowAPI will help with all of these, but slicing
>>     in general is a tricky problem both with respect to how to bound the
>>     slice and how to handle stack/heap accesses. We make a best effort
>>     at tracking dependencies through stack slots and punt on the heap;
>>     that's a long-standing "would be nice if we have time" feature.
>>
>>     General outline of approach:
>>
>>     1) Get effective address expression from InstructionAPI, slice on
>>     that expression within the loop, verify that all data dependencies
>>     are external (or on expressions that are themselves loop invariants).
>>     2) As per 1 but for the other operand.
>>     3) Tricky. In cases that can be broken into (base + index), you can
>>     use slicing to prove that index1 == index2 and base1 == base2; from
>>     our package of slicing + symbolic evaluation + instruction semantics
>>     you *could* do pretty much any analysis you wanted. Not going to be
>>     easy though.
>>
>>
>>         -Milind
>>
>>
>>         ______________________________**___________________
>>         Dyninst-api mailing list
>>         [email protected] 
>> <mailto:[email protected].**edu<[email protected]>
>> >
>>         
>> https://lists.cs.wisc.edu/__**mailman/listinfo/dyninst-api<https://lists.cs.wisc.edu/__mailman/listinfo/dyninst-api>
>>
>>         
>> <https://lists.cs.wisc.edu/**mailman/listinfo/dyninst-api<https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api>
>> >
>>
>>
>>
>>     --
>>     --bw
>>
>>     Bill Williams
>>     Paradyn Project
>>     [email protected] <mailto:[email protected]>
>>     ______________________________**___________________
>>     Dyninst-api mailing list
>>     [email protected] 
>> <mailto:[email protected].**edu<[email protected]>
>> >
>>     
>> https://lists.cs.wisc.edu/__**mailman/listinfo/dyninst-api<https://lists.cs.wisc.edu/__mailman/listinfo/dyninst-api>
>>     
>> <https://lists.cs.wisc.edu/**mailman/listinfo/dyninst-api<https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api>
>> >
>>
>>
>>
>
> --
> --bw
>
> Bill Williams
> Paradyn Project
> [email protected]
>
>
_______________________________________________
Dyninst-api mailing list
[email protected]
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api

Reply via email to