to screw up is to use VALGRIND_MALLOCLIKE_BLOCK for stack
locations; again nonsensical. */
for (i = 0; i < lc_n_shadows-1; i++) {
- tl_assert( /* normal case - no overlap */
- (lc_shadows[i]->data + lc_shadows[i]->szB
- <= lc_shadows[i+1]->data )
- ||
- /* degenerate case: exact duplicates */
- (lc_shadows[i]->data == lc_shadows[i+1]->data
- && lc_shadows[i]->szB == lc_shadows[i+1]->szB)
- );
+ Bool nonsense_overlap = ! (
+ /* normal case - no overlap */
+ (lc_shadows[i]->data + lc_shadows[i]->szB <= lc_shadows[i+1]->data)
+ ||
+ /* degenerate case: exact duplicates */
+ (lc_shadows[i]->data == lc_shadows[i+1]->data
+ && lc_shadows[i]->szB == lc_shadows[i+1]->szB)
+ );
+ if (nonsense_overlap) {
+ VG_(message)(Vg_UserMsg, "Block [0x%lx, 0x%lx) overlaps with block [0x%lx, 0x%lx)",
+ lc_shadows[ i]->data, (lc_shadows[ i]->data + lc_shadows[ i]->szB),
+ lc_shadows[1+ i]->data, (lc_shadows[1+ i]->data + lc_shadows[1+ i]->szB) );
+ }
+ tl_assert (!nonsense_overlap);
}
if (lc_n_shadows == 0) {