mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-25 07:07:52 +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>
|
#include <sys/time.h>
|
||||||
#endif
|
#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
|
#ifndef timeradd
|
||||||
/** Replacement for timeradd on platforms that do not have it: sets tvout to
|
/** Replacement for timeradd on platforms that do not have it: sets tvout to
|
||||||
* the sum of tv1 and tv2. */
|
* the sum of tv1 and tv2. */
|
||||||
|
|
Loading…
Add table
Reference in a new issue