static void do_one_test(char *dstp, char *srcp, unsigned long len) { unsigned long got, expected; got = COPY_LOOP(dstp, srcp, len); expected = test_copy_tofrom_user_reference(dstp, srcp, len); if (got != expected) { total_failed++; printf("FAIL from=%p to=%p len=%ld returned %ld, expected %ld\n", srcp, dstp, len, got, expected); //abort(); } else total_passed++; }
static void do_one(char *src, char *dst, unsigned long src_off, unsigned long dst_off, unsigned long len, void *redzone, void *fill) { char *srcp, *dstp; unsigned long ret; unsigned long i; srcp = src + MIN_REDZONE + src_off; dstp = dst + MIN_REDZONE + dst_off; memset(src, POISON, BUFLEN); memset(dst, POISON, BUFLEN); memcpy(srcp, fill, len); ret = COPY_LOOP(dstp, srcp, len); if (ret && ret != (unsigned long)dstp) { printf("(%p,%p,%ld) returned %ld\n", dstp, srcp, len, ret); abort(); } if (memcmp(dstp, srcp, len)) { printf("(%p,%p,%ld) miscompare\n", dstp, srcp, len); printf("src: "); for (i = 0; i < len; i++) printf("%02x ", srcp[i]); printf("\ndst: "); for (i = 0; i < len; i++) printf("%02x ", dstp[i]); printf("\n"); abort(); } if (memcmp(dst, redzone, dstp - dst)) { printf("(%p,%p,%ld) redzone before corrupted\n", dstp, srcp, len); abort(); } if (memcmp(dstp+len, redzone, dst+BUFLEN-(dstp+len))) { printf("(%p,%p,%ld) redzone after corrupted\n", dstp, srcp, len); abort(); } }