random-util: allow RDRAND to be used in 32-bit x86 binaries

Rename rdrand64 to rdrand, and switch from uint64_t to unsigned long.
This produces code that will compile/assemble on both x86-64 and x86-32.

This could be useful when running a 32-bit copy of systemd on a modern
Intel processor.

RDRAND is inherently arch-specific, so relying on the compiler-defined
'long' type seems reasonable.
This commit is contained in:
Mike Gilbert
2018-11-10 14:56:53 +01:00
committed by Lennart Poettering
parent e29a9fcb29
commit 33dbab6fde
3 changed files with 13 additions and 13 deletions
+5 -5
View File
@@ -35,19 +35,19 @@ static void test_pseudo_random_bytes(void) {
}
}
static void test_rdrand64(void) {
static void test_rdrand(void) {
int r, i;
for (i = 0; i < 10; i++) {
uint64_t x = 0;
unsigned long x = 0;
r = rdrand64(&x);
r = rdrand(&x);
if (r < 0) {
log_error_errno(r, "RDRAND failed: %m");
return;
}
printf("%" PRIx64 "\n", x);
printf("%lx\n", x);
}
}
@@ -61,7 +61,7 @@ int main(int argc, char **argv) {
test_pseudo_random_bytes();
test_rdrand64();
test_rdrand();
return 0;
}