mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 22:58:50 +01:00
In coverage builds, use branch-free timeradd() and timersub()
The ordinary definitions of timeradd() and timersub() contain a branch. However, in coverage builds, this means that we get spurious complaints about partially covered basic blocks, in a way that makes our coverage determinism harder to check.
This commit is contained in:
parent
2bb5d8148b
commit
b882810245
1 changed files with 21 additions and 0 deletions
|
@ -20,6 +20,27 @@
|
|||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#ifdef TOR_COVERAGE
|
||||
/* For coverage builds, we use a slower definition of these macros without
|
||||
* branches, to make coverage consistent. */
|
||||
#undef timeradd
|
||||
#undef timersub
|
||||
#define timeradd(tv1,tv2,tvout) \
|
||||
do { \
|
||||
(tvout)->tv_sec = (tv1)->tv_sec + (tv2)->tv_sec; \
|
||||
(tvout)->tv_usec = (tv1)->tv_usec + (tv2)->tv_usec; \
|
||||
(tvout)->tv_sec += (tvout)->tv_usec / 1000000; \
|
||||
(tvout)->tv_usec %= 1000000; \
|
||||
} while (0)
|
||||
#define timersub(tv1,tv2,tvout) \
|
||||
do { \
|
||||
(tvout)->tv_sec = (tv1)->tv_sec - (tv2)->tv_sec - 1; \
|
||||
(tvout)->tv_usec = (tv1)->tv_usec - (tv2)->tv_usec + 1000000; \
|
||||
(tvout)->tv_sec += (tvout)->tv_usec / 1000000; \
|
||||
(tvout)->tv_usec %= 1000000; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#ifndef timeradd
|
||||
/** Replacement for timeradd on platforms that do not have it: sets tvout to
|
||||
* the sum of tv1 and tv2. */
|
||||
|
|
Loading…
Add table
Reference in a new issue