Make OPENSSL_rdtsc universally available.
authorPauli <paul.dale@oracle.com>
Mon, 5 Feb 2018 21:16:26 +0000 (07:16 +1000)
committerPauli <paul.dale@oracle.com>
Wed, 7 Feb 2018 00:08:15 +0000 (10:08 +1000)
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 <levitte@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/5231)

crypto/cryptlib.c
include/internal/cryptlib.h

index a4f2fb8035a166ce08fd60209fdd9c51bf7f0423..a4d96d868e4657545f857d784a876d9b1e88f6e8 100644 (file)
@@ -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
index 25ccdb1001a835b0de6a5025d0ac045f3908aae4..8a96de9847aaac545854d54c63a8606b6928b9b9 100644 (file)
@@ -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
 }