diff options
author | Jason Evans <jasone@canonware.com> | 2015-07-23 20:56:25 (GMT) |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2015-07-23 20:56:25 (GMT) |
commit | 5fae7dc1b316d0e93aa20cc3aaf050f509aec705 (patch) | |
tree | e17384be2f44b4cdffa4748f50f4f30dc7dd9c12 /test/unit | |
parent | e475ff16004d9a7c76a01a71e6a52323e6bf1485 (diff) | |
download | jemalloc-5fae7dc1b316d0e93aa20cc3aaf050f509aec705.zip jemalloc-5fae7dc1b316d0e93aa20cc3aaf050f509aec705.tar.gz jemalloc-5fae7dc1b316d0e93aa20cc3aaf050f509aec705.tar.bz2 |
Fix MinGW-related portability issues.
Create and use FMT* macros that are equivalent to the PRI* macros that
inttypes.h defines. This allows uniform use of the Unix-specific format
specifiers, e.g. "%zu", as well as avoiding Windows-specific definitions
of e.g. PRIu64.
Add ffs()/ffsl() support for compiling with gcc.
Extract compatibility definitions of ENOENT, EINVAL, EAGAIN, EPERM,
ENOMEM, and ENORANGE into include/msvc_compat/windows_extra.h and
use the file for tests as well as for core jemalloc code.
Diffstat (limited to 'test/unit')
-rw-r--r-- | test/unit/SFMT.c | 8 | ||||
-rw-r--r-- | test/unit/atomic.c | 12 | ||||
-rw-r--r-- | test/unit/ckh.c | 43 | ||||
-rw-r--r-- | test/unit/junk.c | 26 | ||||
-rw-r--r-- | test/unit/rtree.c | 2 |
5 files changed, 44 insertions, 47 deletions
diff --git a/test/unit/SFMT.c b/test/unit/SFMT.c index 88b31f6..ba4be87 100644 --- a/test/unit/SFMT.c +++ b/test/unit/SFMT.c @@ -1543,13 +1543,13 @@ TEST_BEGIN(test_gen_rand_64) } r = gen_rand64(ctx); assert_u64_eq(r, array64[i], - "Mismatch at array64[%d]=%"PRIx64", gen=%"PRIx64, i, + "Mismatch at array64[%d]=%"FMTx64", gen=%"FMTx64, i, array64[i], r); } for (i = 0; i < COUNT_2; i++) { r = gen_rand64(ctx); assert_u64_eq(r, array64_2[i], - "Mismatch at array64_2[%d]=%"PRIx64" gen=%"PRIx64"", i, + "Mismatch at array64_2[%d]=%"FMTx64" gen=%"FMTx64"", i, array64_2[i], r); } fini_gen_rand(ctx); @@ -1580,13 +1580,13 @@ TEST_BEGIN(test_by_array_64) } r = gen_rand64(ctx); assert_u64_eq(r, array64[i], - "Mismatch at array64[%d]=%"PRIx64" gen=%"PRIx64, i, + "Mismatch at array64[%d]=%"FMTx64" gen=%"FMTx64, i, array64[i], r); } for (i = 0; i < COUNT_2; i++) { r = gen_rand64(ctx); assert_u64_eq(r, array64_2[i], - "Mismatch at array64_2[%d]=%"PRIx64" gen=%"PRIx64, i, + "Mismatch at array64_2[%d]=%"FMTx64" gen=%"FMTx64, i, array64_2[i], r); } fini_gen_rand(ctx); diff --git a/test/unit/atomic.c b/test/unit/atomic.c index 9217ca9..bdd74f6 100644 --- a/test/unit/atomic.c +++ b/test/unit/atomic.c @@ -8,7 +8,7 @@ struct p##_test_s { \ }; \ typedef struct p##_test_s p##_test_t; -#define TEST_BODY(p, t, tc, ta, PRI) do { \ +#define TEST_BODY(p, t, tc, ta, FMT) do { \ const p##_test_t tests[] = { \ {(t)-1, (t)-1, (t)-2}, \ {(t)-1, (t) 0, (t)-2}, \ @@ -38,7 +38,7 @@ typedef struct p##_test_s p##_test_t; \ assert_##ta##_eq(atomic_add_##p(&accum, tests[i].x), \ (t)((tc)tests[i].accum0 + (tc)tests[i].x), \ - "i=%u, accum=%"PRI", x=%"PRI, \ + "i=%u, accum=%"FMT", x=%"FMT, \ i, tests[i].accum0, tests[i].x); \ assert_##ta##_eq(atomic_read_##p(&accum), accum, \ "Erroneous add, i=%u", i); \ @@ -46,7 +46,7 @@ typedef struct p##_test_s p##_test_t; accum = tests[i].accum0; \ assert_##ta##_eq(atomic_sub_##p(&accum, tests[i].x), \ (t)((tc)tests[i].accum0 - (tc)tests[i].x), \ - "i=%u, accum=%"PRI", x=%"PRI, \ + "i=%u, accum=%"FMT", x=%"FMT, \ i, tests[i].accum0, tests[i].x); \ assert_##ta##_eq(atomic_read_##p(&accum), accum, \ "Erroneous sub, i=%u", i); \ @@ -72,7 +72,7 @@ TEST_BEGIN(test_atomic_uint64) #if !(LG_SIZEOF_PTR == 3 || LG_SIZEOF_INT == 3) test_skip("64-bit atomic operations not supported"); #else - TEST_BODY(uint64, uint64_t, uint64_t, u64, PRIx64); + TEST_BODY(uint64, uint64_t, uint64_t, u64, FMTx64); #endif } TEST_END @@ -81,7 +81,7 @@ TEST_STRUCT(uint32, uint32_t) TEST_BEGIN(test_atomic_uint32) { - TEST_BODY(uint32, uint32_t, uint32_t, u32, "#"PRIx32); + TEST_BODY(uint32, uint32_t, uint32_t, u32, "#"FMTx32); } TEST_END @@ -97,7 +97,7 @@ TEST_STRUCT(z, size_t) TEST_BEGIN(test_atomic_z) { - TEST_BODY(z, size_t, size_t, zu, "#"PRIzx); + TEST_BODY(z, size_t, size_t, zu, "#zx"); } TEST_END diff --git a/test/unit/ckh.c b/test/unit/ckh.c index 1f22baf..b117595 100644 --- a/test/unit/ckh.c +++ b/test/unit/ckh.c @@ -35,15 +35,15 @@ TEST_BEGIN(test_count_insert_search_remove) assert_false(ckh_new(tsd, &ckh, 2, ckh_string_hash, ckh_string_keycomp), "Unexpected ckh_new() error"); assert_zu_eq(ckh_count(&ckh), 0, - "ckh_count() should return %"PRIzu", but it returned %"PRIzu, ZU(0), + "ckh_count() should return %zu, but it returned %zu", ZU(0), ckh_count(&ckh)); /* Insert. */ for (i = 0; i < sizeof(strs)/sizeof(const char *); i++) { ckh_insert(tsd, &ckh, strs[i], strs[i]); assert_zu_eq(ckh_count(&ckh), i+1, - "ckh_count() should return %"PRIzu", but it returned " - "%"PRIzu, i+1, ckh_count(&ckh)); + "ckh_count() should return %zu, but it returned %zu", i+1, + ckh_count(&ckh)); } /* Search. */ @@ -64,10 +64,10 @@ TEST_BEGIN(test_count_insert_search_remove) ks = (i & 1) ? strs[i] : (const char *)NULL; vs = (i & 2) ? strs[i] : (const char *)NULL; - assert_ptr_eq((void *)ks, (void *)k.s, - "Key mismatch, i=%"PRIzu, i); - assert_ptr_eq((void *)vs, (void *)v.s, - "Value mismatch, i=%"PRIzu, i); + assert_ptr_eq((void *)ks, (void *)k.s, "Key mismatch, i=%zu", + i); + assert_ptr_eq((void *)vs, (void *)v.s, "Value mismatch, i=%zu", + i); } assert_true(ckh_search(&ckh, missing, NULL, NULL), "Unexpected ckh_search() success"); @@ -90,14 +90,14 @@ TEST_BEGIN(test_count_insert_search_remove) ks = (i & 1) ? strs[i] : (const char *)NULL; vs = (i & 2) ? strs[i] : (const char *)NULL; - assert_ptr_eq((void *)ks, (void *)k.s, - "Key mismatch, i=%"PRIzu, i); - assert_ptr_eq((void *)vs, (void *)v.s, - "Value mismatch, i=%"PRIzu, i); + assert_ptr_eq((void *)ks, (void *)k.s, "Key mismatch, i=%zu", + i); + assert_ptr_eq((void *)vs, (void *)v.s, "Value mismatch, i=%zu", + i); assert_zu_eq(ckh_count(&ckh), sizeof(strs)/sizeof(const char *) - i - 1, - "ckh_count() should return %"PRIzu", but it returned " - "%"PRIzu, sizeof(strs)/sizeof(const char *) - i - 1, + "ckh_count() should return %zu, but it returned %zu", + sizeof(strs)/sizeof(const char *) - i - 1, ckh_count(&ckh)); } @@ -137,8 +137,8 @@ TEST_BEGIN(test_insert_iter_remove) } assert_zu_eq(ckh_count(&ckh), NITEMS, - "ckh_count() should return %"PRIzu", but it returned " - "%"PRIzu, NITEMS, ckh_count(&ckh)); + "ckh_count() should return %zu, but it returned %zu", + NITEMS, ckh_count(&ckh)); for (j = i + 1; j < NITEMS; j++) { assert_false(ckh_search(&ckh, p[j], NULL, NULL), @@ -167,20 +167,17 @@ TEST_BEGIN(test_insert_iter_remove) for (k = 0; k < NITEMS; k++) { if (p[k] == q) { assert_false(seen[k], - "Item %"PRIzu" already " - "seen", k); + "Item %zu already seen", k); seen[k] = true; break; } } } - for (j = 0; j < i + 1; j++) { - assert_true(seen[j], "Item %"PRIzu" not seen", - j); - } + for (j = 0; j < i + 1; j++) + assert_true(seen[j], "Item %zu not seen", j); for (; j < NITEMS; j++) - assert_false(seen[j], "Item %"PRIzu" seen", j); + assert_false(seen[j], "Item %zu seen", j); } } @@ -199,7 +196,7 @@ TEST_BEGIN(test_insert_iter_remove) } assert_zu_eq(ckh_count(&ckh), 0, - "ckh_count() should return %"PRIzu", but it returned %"PRIzu, + "ckh_count() should return %zu, but it returned %zu", ZU(0), ckh_count(&ckh)); ckh_delete(tsd, &ckh); #undef NITEMS diff --git a/test/unit/junk.c b/test/unit/junk.c index 8499d06..733f661 100644 --- a/test/unit/junk.c +++ b/test/unit/junk.c @@ -30,8 +30,8 @@ arena_dalloc_junk_small_intercept(void *ptr, arena_bin_info_t *bin_info) arena_dalloc_junk_small_orig(ptr, bin_info); for (i = 0; i < bin_info->reg_size; i++) { assert_c_eq(((char *)ptr)[i], 0x5a, - "Missing junk fill for byte %"PRIzu"/%"PRIzu" of " - "deallocated region", i, bin_info->reg_size); + "Missing junk fill for byte %zu/%zu of deallocated region", + i, bin_info->reg_size); } if (ptr == watch_for_junking) saw_junking = true; @@ -45,8 +45,8 @@ arena_dalloc_junk_large_intercept(void *ptr, size_t usize) arena_dalloc_junk_large_orig(ptr, usize); for (i = 0; i < usize; i++) { assert_c_eq(((char *)ptr)[i], 0x5a, - "Missing junk fill for byte %"PRIzu"/%"PRIzu" of " - "deallocated region", i, usize); + "Missing junk fill for byte %zu/%zu of deallocated region", + i, usize); } if (ptr == watch_for_junking) saw_junking = true; @@ -89,18 +89,18 @@ test_junk(size_t sz_min, size_t sz_max) sz_prev = sz, sz = sallocx(s, 0)) { if (sz_prev > 0) { assert_c_eq(s[0], 'a', - "Previously allocated byte %"PRIzu"/%"PRIzu" is " - "corrupted", ZU(0), sz_prev); + "Previously allocated byte %zu/%zu is corrupted", + ZU(0), sz_prev); assert_c_eq(s[sz_prev-1], 'a', - "Previously allocated byte %"PRIzu"/%"PRIzu" is " - "corrupted", sz_prev-1, sz_prev); + "Previously allocated byte %zu/%zu is corrupted", + sz_prev-1, sz_prev); } for (i = sz_prev; i < sz; i++) { if (opt_junk_alloc) { assert_c_eq(s[i], 0xa5, - "Newly allocated byte %"PRIzu"/%"PRIzu - " isn't junk-filled", i, sz); + "Newly allocated byte %zu/%zu isn't " + "junk-filled", i, sz); } s[i] = 'a'; } @@ -111,15 +111,15 @@ test_junk(size_t sz_min, size_t sz_max) assert_ptr_not_null((void *)s, "Unexpected rallocx() failure"); assert_true(!opt_junk_free || saw_junking, - "Expected region of size %"PRIzu" to be " - "junk-filled", sz); + "Expected region of size %zu to be junk-filled", + sz); } } watch_junking(s); dallocx(s, 0); assert_true(!opt_junk_free || saw_junking, - "Expected region of size %"PRIzu" to be junk-filled", sz); + "Expected region of size %zu to be junk-filled", sz); if (opt_junk_free) { arena_dalloc_junk_small = arena_dalloc_junk_small_orig; diff --git a/test/unit/rtree.c b/test/unit/rtree.c index 3d75bd0..305c08a 100644 --- a/test/unit/rtree.c +++ b/test/unit/rtree.c @@ -72,7 +72,7 @@ TEST_BEGIN(test_rtree_bits) &node, "rtree_get() should return " "previously set value and ignore " "insignificant key bits; i=%u, j=%u, k=%u, " - "set key=%#"PRIxPTR", get key=%#"PRIxPTR, i, + "set key=%#"FMTxPTR", get key=%#"FMTxPTR, i, j, k, keys[j], keys[k]); } assert_ptr_null(rtree_get(&rtree, |