瀏覽代碼

time64_helpers.h: error out when attempting to compile with TIME64 for 32bit targets on Linux versions prior to 5.1.0

Using 64bit time on 32bit targets was only introduced in Linux 5.1.0.
On versions prior to that, compiling uClibc-ng produces incorrect headers
that cause the `clock_nanosleep` syscall to receive incorrect arguments.

This change was previously introduced in `features.h`, but was reverted due to inclusion errors when compiling other
projects.

Signed-off-by: Nadav Tasher <tashernadav@gmail.com>
Nadav Tasher 4 月之前
父節點
當前提交
5896cb551c
共有 1 個文件被更改,包括 5 次插入0 次删除
  1. 5 0
      include/internal/time64_helpers.h

+ 5 - 0
include/internal/time64_helpers.h

@@ -1,10 +1,15 @@
 #ifndef _TIME64_HELPERS_H
 #define _TIME64_HELPERS_H
 
+#include <linux/version.h>
 #include <bits/types.h>
 #include <time.h>
 #include <stddef.h>
 
+#if defined(__UCLIBC_USE_TIME64__) && __TARGET_ARCH_BITS__ == 32 && LINUX_VERSION_CODE < KERNEL_VERSION(5,1,0)
+#error 64bit time on 32bit targets is not supported on Linux < 5.1.0
+#endif
+
 struct __ts64_struct {
    __S64_TYPE tv_sec;
    __S64_TYPE tv_nsec;