From 360fc9f412f1f60a4644228d9b6d386161aad406 Mon Sep 17 00:00:00 2001 From: Pauli Date: Tue, 6 Feb 2018 07:16:26 +1000 Subject: [PATCH] Make OPENSSL_rdtsc universally available. If such a timer/counter register is not available, the return value is always zero. This matches the assembly implementations' behaviour. Reviewed-by: Richard Levitte Reviewed-by: Matthias St. Pierre (Merged from https://github.com/openssl/openssl/pull/5231) --- crypto/cryptlib.c | 8 ++++++++ include/internal/cryptlib.h | 6 ++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c index a4f2fb8035..a4d96d868e 100644 --- a/crypto/cryptlib.c +++ b/crypto/cryptlib.c @@ -355,4 +355,12 @@ int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len) return x; } + +/* + * For systems that don't provide an instruction counter register or equivalent. + */ +uint32_t OPENSSL_rdtsc(void) +{ + return 0; +} #endif diff --git a/include/internal/cryptlib.h b/include/internal/cryptlib.h index 25ccdb1001..8a96de9847 100644 --- a/include/internal/cryptlib.h +++ b/include/internal/cryptlib.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -94,9 +94,7 @@ FILE *openssl_fopen(const char *filename, const char *mode); void *openssl_fopen(const char *filename, const char *mode); # endif -#ifdef OPENSSL_CPUID_OBJ -uint32_t OPENSSL_rdtsc(); -#endif +uint32_t OPENSSL_rdtsc(void); #ifdef __cplusplus } -- 2.34.1