On 06/15/2012 06:35 AM, David Brockley wrote:
> ... (in lockstep, instruction by instruction) ...

> ... subtly different results with different optimisation settings ...

This requires at least as much intelligence as 'diff'.  It is necessary
to detect and ignore different instruction sequences which nevertheless
produce "isomorphic" results, including different use of temporary
storage locations, different register spilling, etc.  And if the
code is not numerically stable with regard to calculations done in
floating point arithmetic, then _all_ bets are off!  Even when stable,
one setting might have errors contained to the least-significant 10 bits,
while another setting might contain them only in the lowest 13 bits.

Suggestion: get the subroutine call graph, "cut off" some of the
"utility" subroutines that are leaf nodes (or close to leaf nodes),
then "do the diff" at entry+exit of the remaining routines.  This has
some hope of being able to apply "divide and conquer" instead of
"plod along", especially if applied in a somewhat top-down manner.
It might be possible to "script" gdbserver, or write a helper program
which talks to two instances of gdbserver, so as to automate the work.

-- 

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to