Commit d5094bcb authored by Thomas Weißschuh's avatar Thomas Weißschuh
Browse files

tools/nolibc: define time_t in terms of __kernel_old_time_t



Nolibc assumes that the kernel ABI is using a time values that are as
large as a long integer. For most ABIs this holds true.
But for x32 this is not correct, as it uses 32bit longs but 64bit times.

Also the 'struct stat' implementation of nolibc relies on timespec::tv_sec
and time_t being the same type. While timespec::tv_sec comes from the
kernel and is of type __kernel_old_time_t, time_t is defined within nolibc.

Switch to the __kernel_old_time_t to always get the correct type.

Signed-off-by: default avatarThomas Weißschuh <linux@weissschuh.net>
Link: https://lore.kernel.org/r/20250712-nolibc-x32-v1-1-6d81cb798710@weissschuh.net


Acked-by: default avatarWilly Tarreau <w@1wt.eu>
parent 750aef51
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@
#include "stdint.h"
#include "stddef.h"

#include <linux/types.h>

/* those are commonly provided by sys/types.h */
typedef unsigned int          dev_t;
typedef unsigned long         ino_t;
@@ -27,6 +29,6 @@ typedef unsigned long nlink_t;
typedef   signed long         off_t;
typedef   signed long     blksize_t;
typedef   signed long      blkcnt_t;
typedef   signed long        time_t;
typedef __kernel_old_time_t  time_t;

#endif /* _NOLIBC_STD_H */