mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-01 08:48:29 +00:00
Make improvements
- Make rand64() thread safe - Introduce lemur64 lcg prng - Improve strace on New Technology - Improve msync() on New Technology
This commit is contained in:
parent
43ba3009b2
commit
29bf8b1a30
73 changed files with 888 additions and 269 deletions
|
@ -42,7 +42,7 @@
|
|||
*/
|
||||
static uint64_t Rando(void) {
|
||||
uint64_t x;
|
||||
do x = vigna();
|
||||
do x = lemur64();
|
||||
while (((x ^ READ64LE("!!!!!!!!")) - 0x0101010101010101) &
|
||||
~(x ^ READ64LE("!!!!!!!!")) & 0x8080808080808080);
|
||||
return x;
|
||||
|
@ -225,7 +225,7 @@ TEST(ksnprintf, fuzzTheUnbreakable) {
|
|||
x = Rando();
|
||||
memcpy(f + 8, &x, sizeof(x));
|
||||
f[Rando() & 15] = '%';
|
||||
ksnprintf(b, sizeof(b), f, vigna(), vigna(), vigna());
|
||||
ksnprintf(b, sizeof(b), f, lemur64(), lemur64(), lemur64());
|
||||
}
|
||||
EXPECT_SYS(0, 0, mprotect(f, PAGESIZE, PROT_READ));
|
||||
}
|
||||
|
|
|
@ -121,17 +121,17 @@ BENCH(bcmp, bench) {
|
|||
EZBENCH_N("bcmp", 256, v = buncmp(a, b, 256));
|
||||
a = gc(malloc(16 * 1024));
|
||||
b = gc(malloc(16 * 1024));
|
||||
rngset(a, 16 * 1024, vigna, -1);
|
||||
rngset(a, 16 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 16 * 1024);
|
||||
EZBENCH_N("bcmp", 16384, v = buncmp(a, b, 16384));
|
||||
a = gc(malloc(32 * 1024));
|
||||
b = gc(malloc(32 * 1024));
|
||||
rngset(a, 32 * 1024, vigna, -1);
|
||||
rngset(a, 32 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 32 * 1024);
|
||||
EZBENCH_N("bcmp", 32768, v = buncmp(a, b, 32768));
|
||||
a = gc(malloc(128 * 1024));
|
||||
b = gc(malloc(128 * 1024));
|
||||
rngset(a, 128 * 1024, vigna, -1);
|
||||
rngset(a, 128 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 128 * 1024);
|
||||
EZBENCH_N("bcmp", 131072, v = buncmp(a, b, 131072));
|
||||
}
|
||||
|
@ -166,17 +166,17 @@ BENCH(memcmp, bench) {
|
|||
EZBENCH_N("memcmp", 256, v = funcmp(a, b, 256));
|
||||
a = gc(malloc(16 * 1024));
|
||||
b = gc(malloc(16 * 1024));
|
||||
rngset(a, 16 * 1024, vigna, -1);
|
||||
rngset(a, 16 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 16 * 1024);
|
||||
EZBENCH_N("memcmp", 16384, v = funcmp(a, b, 16384));
|
||||
a = gc(malloc(32 * 1024));
|
||||
b = gc(malloc(32 * 1024));
|
||||
rngset(a, 32 * 1024, vigna, -1);
|
||||
rngset(a, 32 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 32 * 1024);
|
||||
EZBENCH_N("memcmp", 32768, v = funcmp(a, b, 32768));
|
||||
a = gc(malloc(128 * 1024));
|
||||
b = gc(malloc(128 * 1024));
|
||||
rngset(a, 128 * 1024, vigna, -1);
|
||||
rngset(a, 128 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 128 * 1024);
|
||||
EZBENCH_N("memcmp", 131072, v = funcmp(a, b, 131072));
|
||||
}
|
||||
|
@ -211,17 +211,17 @@ BENCH(timingsafe_memcmp, bench) {
|
|||
EZBENCH_N("timingsafe_memcmp", 256, v = timingsafe_memcmp(a, b, 256));
|
||||
a = gc(malloc(16 * 1024));
|
||||
b = gc(malloc(16 * 1024));
|
||||
rngset(a, 16 * 1024, vigna, -1);
|
||||
rngset(a, 16 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 16 * 1024);
|
||||
EZBENCH_N("timingsafe_memcmp", 16384, v = timingsafe_memcmp(a, b, 16384));
|
||||
a = gc(malloc(32 * 1024));
|
||||
b = gc(malloc(32 * 1024));
|
||||
rngset(a, 32 * 1024, vigna, -1);
|
||||
rngset(a, 32 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 32 * 1024);
|
||||
EZBENCH_N("timingsafe_memcmp", 32768, v = timingsafe_memcmp(a, b, 32768));
|
||||
a = gc(malloc(128 * 1024));
|
||||
b = gc(malloc(128 * 1024));
|
||||
rngset(a, 128 * 1024, vigna, -1);
|
||||
rngset(a, 128 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 128 * 1024);
|
||||
EZBENCH_N("timingsafe_memcmp", 131072, v = timingsafe_memcmp(a, b, 131072));
|
||||
}
|
||||
|
@ -256,17 +256,17 @@ BENCH(timingsafe_bcmp, bench) {
|
|||
EZBENCH_N("timingsafe_bcmp", 256, v = timingsafe_bcmp(a, b, 256));
|
||||
a = gc(malloc(16 * 1024));
|
||||
b = gc(malloc(16 * 1024));
|
||||
rngset(a, 16 * 1024, vigna, -1);
|
||||
rngset(a, 16 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 16 * 1024);
|
||||
EZBENCH_N("timingsafe_bcmp", 16384, v = timingsafe_bcmp(a, b, 16384));
|
||||
a = gc(malloc(32 * 1024));
|
||||
b = gc(malloc(32 * 1024));
|
||||
rngset(a, 32 * 1024, vigna, -1);
|
||||
rngset(a, 32 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 32 * 1024);
|
||||
EZBENCH_N("timingsafe_bcmp", 32768, v = timingsafe_bcmp(a, b, 32768));
|
||||
a = gc(malloc(128 * 1024));
|
||||
b = gc(malloc(128 * 1024));
|
||||
rngset(a, 128 * 1024, vigna, -1);
|
||||
rngset(a, 128 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 128 * 1024);
|
||||
EZBENCH_N("timingsafe_bcmp", 131072, v = timingsafe_bcmp(a, b, 131072));
|
||||
}
|
||||
|
@ -301,17 +301,17 @@ BENCH(memcasecmp, bench) {
|
|||
EZBENCH_N("memcasecmp", 256, v = memcasecmp(a, b, 256));
|
||||
a = gc(malloc(16 * 1024));
|
||||
b = gc(malloc(16 * 1024));
|
||||
rngset(a, 16 * 1024, vigna, -1);
|
||||
rngset(a, 16 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 16 * 1024);
|
||||
EZBENCH_N("memcasecmp", 16384, v = memcasecmp(a, b, 16384));
|
||||
a = gc(malloc(32 * 1024));
|
||||
b = gc(malloc(32 * 1024));
|
||||
rngset(a, 32 * 1024, vigna, -1);
|
||||
rngset(a, 32 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 32 * 1024);
|
||||
EZBENCH_N("memcasecmp", 32768, v = memcasecmp(a, b, 32768));
|
||||
a = gc(malloc(128 * 1024));
|
||||
b = gc(malloc(128 * 1024));
|
||||
rngset(a, 128 * 1024, vigna, -1);
|
||||
rngset(a, 128 * 1024, lemur64, -1);
|
||||
memcpy(b, a, 128 * 1024);
|
||||
EZBENCH_N("memcasecmp", 131072, v = memcasecmp(a, b, 131072));
|
||||
}
|
||||
|
@ -320,7 +320,7 @@ BENCH(timingsafe_memcmp, demonstration) {
|
|||
int bcmp_(const void *, const void *, size_t) asm("bcmp");
|
||||
int memcmp_(const void *, const void *, size_t) asm("memcmp");
|
||||
char a[256], b[256];
|
||||
rngset(a, 256, vigna, -1);
|
||||
rngset(a, 256, lemur64, -1);
|
||||
memcpy(b, a, 256);
|
||||
++a[0];
|
||||
EZBENCH_N("bcmp ne", 256, bcmp_(a, b, 256));
|
||||
|
|
|
@ -39,7 +39,7 @@ TEST(memset, hug) {
|
|||
b = gc(malloc(1025 * 2));
|
||||
for (i = 0; i < 1025; ++i) {
|
||||
for (j = 0; j < 1025 - i; ++j) {
|
||||
c = vigna();
|
||||
c = lemur64();
|
||||
rngset(a, i + j, 0, 0);
|
||||
memcpy(b, a, i + j);
|
||||
ASSERT_EQ(a + i, golden(a + i, c, j));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue