diff options
authorGeoffrey Le GourriƩrec <>2021-01-26 21:54:57 (GMT)
committerWaldemar Brodkorb <>2021-01-27 04:33:39 (GMT)
commit94095933338f4803614285f882a1d927954468d7 (patch)
parenta1e920215e46c487c4f2dacb973d225a6a435914 (diff)
sh: Add 64-bit time types from kernel
Building uclibc 1.0.37 for SuperH architecture with linux-headers 5.10.7 fails at libpthread level due to missing time-related data structures, usually defined by the kernel. Define those missing data structures in SuperH-specific kernel_types.h. Context: building for sh4eb-r2d[1] and sh4-r2d[1] boards emulations for QEMU using the buildroot image generation tool. Regarding the issue, a patch[3] was already issued in the kernel some time ago, which aimed to solve precisely this problem. After coming up with a quick and dirty patch for buildroot modifying Linux headers[4], some discussion was sparked on the subject with Linux folks[5]. Some analyzing later, conclusion was that: 1) Previously mentioned patch[4] was fixing the symptom, not the ill 2) SuperH-specific code in uclibc could be patched instead, to solve the problem for other use cases (e.g. building just a toolchain) [1] [2] [3] [4] [5] Signed-off-by: Geoffrey Le GourriƩrec <>
1 files changed, 2 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/sh/bits/kernel_types.h b/libc/sysdeps/linux/sh/bits/kernel_types.h
index ac97261..90b2e66 100644
--- a/libc/sysdeps/linux/sh/bits/kernel_types.h
+++ b/libc/sysdeps/linux/sh/bits/kernel_types.h
@@ -21,6 +21,7 @@ typedef unsigned int __kernel_size_t;
typedef int __kernel_ssize_t;
typedef int __kernel_ptrdiff_t;
typedef long __kernel_time_t;
+typedef long long __kernel_time64_t;
typedef long __kernel_suseconds_t;
typedef long __kernel_clock_t;
typedef int __kernel_daddr_t;
@@ -33,6 +34,7 @@ typedef unsigned short __kernel_old_uid_t;
typedef unsigned short __kernel_old_gid_t;
typedef __kernel_dev_t __kernel_old_dev_t;
typedef long __kernel_long_t;
+typedef __kernel_long_t __kernel_old_time_t;
typedef unsigned long __kernel_ulong_t;
typedef long long __kernel_loff_t;