From 1afe4130b4c43a3baac27c15c2974eb4e2c80a9b Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Thu, 17 Nov 2016 11:27:20 +0100 Subject: [PATCH] Bug 1318280 - Fix freebl_gtest on macOS r=franziskus Differential Revision: https://nss-review.dev.mozaws.net/D75 --- .../taskcluster/scripts/run_clang_format.sh | 1 + gtests/freebl_gtest/mpi_unittest.cc | 53 +++++++++++++++---- lib/freebl/freebl.gyp | 8 +-- 3 files changed, 50 insertions(+), 12 deletions(-) diff --git a/automation/taskcluster/scripts/run_clang_format.sh b/automation/taskcluster/scripts/run_clang_format.sh index c13a1553d8..c4b60290f6 100755 --- a/automation/taskcluster/scripts/run_clang_format.sh +++ b/automation/taskcluster/scripts/run_clang_format.sh @@ -42,6 +42,7 @@ else "$top/lib/util" \ "$top/gtests/common" \ "$top/gtests/der_gtest" \ + "$top/gtests/freebl_gtest" \ "$top/gtests/pk11_gtest" \ "$top/gtests/ssl_gtest" \ "$top/gtests/util_gtest" \ diff --git a/gtests/freebl_gtest/mpi_unittest.cc b/gtests/freebl_gtest/mpi_unittest.cc index fa05c49827..c6e1404923 100644 --- a/gtests/freebl_gtest/mpi_unittest.cc +++ b/gtests/freebl_gtest/mpi_unittest.cc @@ -12,9 +12,30 @@ #include #include +#ifdef __MACH__ +#include +#include +#endif + #include "mpi.h" namespace nss_test { +void gettime(struct timespec *tp) { +#ifdef __MACH__ + clock_serv_t cclock; + mach_timespec_t mts; + + host_get_clock_service(mach_host_self(), SYSTEM_CLOCK, &cclock); + clock_get_time(cclock, &mts); + mach_port_deallocate(mach_task_self(), cclock); + + tp->tv_sec = mts.tv_sec; + tp->tv_nsec = mts.tv_nsec; +#else + clock_gettime(CLOCK_MONOTONIC, tp); +#endif +} + class MPITest : public ::testing::Test { protected: void TestCmp(const std::string a_string, const std::string b_string, @@ -46,9 +67,21 @@ TEST_F(MPITest, MpiCmpConstTest) { ASSERT_EQ(MP_OKAY, mp_init(&b)); ASSERT_EQ(MP_OKAY, mp_init(&c)); - mp_read_radix(&a, const_cast("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"), 16); - mp_read_radix(&b, const_cast("FF0FFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"), 16); - mp_read_radix(&c, const_cast("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632550"), 16); + mp_read_radix( + &a, + const_cast( + "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"), + 16); + mp_read_radix( + &b, + const_cast( + "FF0FFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"), + 16); + mp_read_radix( + &c, + const_cast( + "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632550"), + 16); mp_taint(&b); mp_taint(&c); @@ -57,11 +90,12 @@ TEST_F(MPITest, MpiCmpConstTest) { uint32_t time_b = 0, time_c = 0; for (uint32_t i = 0; i < runs; ++i) { struct timespec start, end; - clock_gettime(CLOCK_MONOTONIC, &start); + gettime(&start); int r = mp_cmp(&a, &b); - clock_gettime(CLOCK_MONOTONIC, &end); + gettime(&end); unsigned long long used = end.tv_sec * 1000000000L + end.tv_nsec; - used -= (unsigned long long)start.tv_sec * 1000000000L + start.tv_nsec; + used -= static_cast(start.tv_sec * 1000000000L + + start.tv_nsec); time_b += used; ASSERT_EQ(1, r); } @@ -69,11 +103,12 @@ TEST_F(MPITest, MpiCmpConstTest) { for (uint32_t i = 0; i < runs; ++i) { struct timespec start, end; - clock_gettime(CLOCK_MONOTONIC, &start); + gettime(&start); int r = mp_cmp(&a, &c); - clock_gettime(CLOCK_MONOTONIC, &end); + gettime(&end); unsigned long long used = end.tv_sec * 1000000000L + end.tv_nsec; - used -= (unsigned long long)start.tv_sec * 1000000000L + start.tv_nsec; + used -= static_cast(start.tv_sec * 1000000000L + + start.tv_nsec); time_c += used; ASSERT_EQ(1, r); } diff --git a/lib/freebl/freebl.gyp b/lib/freebl/freebl.gyp index a3a49575e6..a830f21a99 100644 --- a/lib/freebl/freebl.gyp +++ b/lib/freebl/freebl.gyp @@ -103,9 +103,6 @@ 'dependencies': [ '<(DEPTH)/lib/util/util.gyp:nssutil3', ], - 'defines': [ - 'CT_VERIF', - ], }], [ 'target_arch=="x64"', { 'sources': [ @@ -224,6 +221,11 @@ 'UNSAFE_FUZZER_MODE', ], }], + [ 'test_build==1', { + 'defines': [ + 'CT_VERIF', + ], + }], [ 'OS=="mac"', { 'conditions': [ [ 'target_arch=="ia32"', {