aboutsummaryrefslogtreecommitdiff
path: root/devel/libfaketime/files/patch-src_libfaketime.c
diff options
context:
space:
mode:
Diffstat (limited to 'devel/libfaketime/files/patch-src_libfaketime.c')
-rw-r--r--devel/libfaketime/files/patch-src_libfaketime.c109
1 files changed, 93 insertions, 16 deletions
diff --git a/devel/libfaketime/files/patch-src_libfaketime.c b/devel/libfaketime/files/patch-src_libfaketime.c
index 69334d3542b1..2ad8db4c58fd 100644
--- a/devel/libfaketime/files/patch-src_libfaketime.c
+++ b/devel/libfaketime/files/patch-src_libfaketime.c
@@ -1,20 +1,97 @@
---- src/libfaketime.c.orig 2016-06-27 06:54:00 UTC
+--- src/libfaketime.c.orig 2025-06-09 12:31:15 UTC
+++ src/libfaketime.c
-@@ -23,6 +23,17 @@
-
- #define _GNU_SOURCE /* required to get RTLD_NEXT defined */
-
-+/*
-+ * libfaketime.c:1246:5: error: conflicting types for 'gettimeofday'
-+ * int gettimeofday(struct timeval *tv, void *tz)
-+ * vs
-+ * int gettimeofday(struct timeval *, struct timezone *);
-+ */
-+
+@@ -41,9 +41,15 @@
+ #endif
+ #endif
+ #include <time.h>
+-#ifdef MACOS_DYLD_INTERPOSE
++#if defined (MACOS_DYLD_INTERPOSE) || defined (__FreeBSD__)
+ #include <pthread.h>
++#ifdef __FreeBSD__
+#define gettimeofday bsd_gettimeofday
-+#include <sys/time.h>
++#endif
+ #include <sys/time.h>
++#ifdef __FreeBSD__
+#undef gettimeofday
++#endif
+ #include <utime.h>
+ #endif
+ #include <math.h>
+@@ -151,6 +157,14 @@ void do_macos_dyld_interpose(void);
+ #define CLOCK_MONOTONIC_RAW (CLOCK_MONOTONIC + 1)
+ #endif
+
++/* On some platforms (e.g. FreeBSD 15) CLOCK_BOOTTIME is an alias of another clock.
++ * Only treat BOOTTIME as distinct if its value differs from MONOTONIC and MONOTONIC_RAW. */
++#if defined(CLOCK_BOOTTIME) && \
++ (CLOCK_BOOTTIME != CLOCK_MONOTONIC) && \
++ (CLOCK_BOOTTIME != CLOCK_MONOTONIC_RAW)
++#define HAVE_DISTINCT_CLOCK_BOOTTIME 1
++#endif
+
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdint.h>
+ #if defined FAKE_UTIME && !defined FAKE_FILE_TIMESTAMPS
+ #define FAKE_FILE_TIMESTAMPS
+ #endif
+@@ -718,7 +732,7 @@ static void system_time_from_system (struct system_tim
+ ;
+ DONT_FAKE_TIME((*real_clock_gettime)(CLOCK_MONOTONIC_RAW, &systime->mon_raw))
+ ;
+-#ifdef CLOCK_BOOTTIME
++#ifdef HAVE_DISTINCT_CLOCK_BOOTTIME
+ DONT_FAKE_TIME((*real_clock_gettime)(CLOCK_BOOTTIME, &systime->boot))
+ ;
+ #endif
+@@ -2384,7 +2398,7 @@ int clock_gettime(clockid_t clk_id, struct timespec *t
+ #ifdef CLOCK_MONOTONIC_COARSE
+ && clk_id != CLOCK_MONOTONIC_COARSE
+ #endif
+-#ifdef CLOCK_BOOTTIME
++#ifdef HAVE_DISTINCT_CLOCK_BOOTTIME
+ && clk_id != CLOCK_BOOTTIME
+ #endif
+ ))
+@@ -2619,7 +2633,7 @@ parse_modifiers:
+ ftpl_starttime.mon.tv_nsec = ftpl_timecache.mon.tv_nsec;
+ ftpl_starttime.mon_raw.tv_sec = ftpl_timecache.mon_raw.tv_sec;
+ ftpl_starttime.mon_raw.tv_nsec = ftpl_timecache.mon_raw.tv_nsec;
+-#ifdef CLOCK_BOOTTIME
++#ifdef HAVE_DISTINCT_CLOCK_BOOTTIME
+ ftpl_starttime.boot.tv_sec = ftpl_timecache.boot.tv_sec;
+ ftpl_starttime.boot.tv_nsec = ftpl_timecache.boot.tv_nsec;
+ #endif
+@@ -3302,7 +3316,7 @@ int fake_clock_gettime(clockid_t clk_id, struct timesp
+ case CLOCK_MONOTONIC_RAW:
+ timespecsub(tp, &ftpl_starttime.mon_raw, &tmp_ts);
+ break;
+-#ifdef CLOCK_BOOTTIME
++#ifdef HAVE_DISTINCT_CLOCK_BOOTTIME
+ case CLOCK_BOOTTIME:
+ timespecsub(tp, &ftpl_starttime.boot, &tmp_ts);
+ break;
+@@ -3447,7 +3461,7 @@ int fake_clock_gettime(clockid_t clk_id, struct timesp
+ case CLOCK_MONOTONIC_RAW:
+ timespecsub(tp, &ftpl_starttime.mon_raw, &tdiff);
+ break;
+-#ifdef CLOCK_BOOTTIME
++#ifdef HAVE_DISTINCT_CLOCK_BOOTTIME
+ case CLOCK_BOOTTIME:
+ timespecsub(tp, &ftpl_starttime.boot, &tdiff);
+ break;
+@@ -3503,7 +3517,7 @@ abort:
+ ftpl_faketimecache.mon_raw.tv_sec = tp->tv_sec;
+ ftpl_faketimecache.mon_raw.tv_nsec = tp->tv_nsec;
+ }
+-#ifdef CLOCK_BOOTTIME
++#ifdef HAVE_DISTINCT_CLOCK_BOOTTIME
+ else if (clk_id == CLOCK_BOOTTIME)
+ {
+ ftpl_timecache.boot.tv_sec = tp_save.tv_sec;
+@@ -3632,7 +3646,7 @@ int __clock_gettime(clockid_t clk_id, struct timespec
+ #ifdef CLOCK_MONOTONIC_COARSE
+ && clk_id != CLOCK_MONOTONIC_COARSE
+ #endif
+-#ifdef CLOCK_BOOTTIME
++#ifdef HAVE_DISTINCT_CLOCK_BOOTTIME
+ && clk_id != CLOCK_BOOTTIME
+ #endif
+ ))