tools/nolibc: move NULL and offsetof() to sys/stddef.h

This is the location regular userspace expects these definitions.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Acked-by: Willy Tarreau <w@1wt.eu>
Link: https://lore.kernel.org/r/20250515-nolibc-sys-v1-8-74f82eea3b59@weissschuh.net
This commit is contained in:
Thomas Weißschuh 2025-05-15 21:57:54 +02:00
parent 0f971358dc
commit 2217abe09c
4 changed files with 26 additions and 9 deletions

View file

@ -44,6 +44,7 @@ all_files := \
std.h \
stdarg.h \
stdbool.h \
stddef.h \
stdint.h \
stdlib.h \
string.h \

View file

@ -13,12 +13,8 @@
* syscall-specific stuff, as this file is expected to be included very early.
*/
/* note: may already be defined */
#ifndef NULL
#define NULL ((void *)0)
#endif
#include "stdint.h"
#include "stddef.h"
/* those are commonly provided by sys/types.h */
typedef unsigned int dev_t;

View file

@ -0,0 +1,24 @@
/* SPDX-License-Identifier: LGPL-2.1 OR MIT */
/*
* Stddef definitions for NOLIBC
* Copyright (C) 2017-2021 Willy Tarreau <w@1wt.eu>
*/
/* make sure to include all global symbols */
#include "nolibc.h"
#ifndef _NOLIBC_STDDEF_H
#define _NOLIBC_STDDEF_H
#include "stdint.h"
/* note: may already be defined */
#ifndef NULL
#define NULL ((void *)0)
#endif
#ifndef offsetof
#define offsetof(TYPE, FIELD) ((size_t) &((TYPE *)0)->FIELD)
#endif
#endif /* _NOLIBC_STDDEF_H */

View file

@ -188,10 +188,6 @@ struct stat {
typedef __kernel_clockid_t clockid_t;
typedef int timer_t;
#ifndef offsetof
#define offsetof(TYPE, FIELD) ((size_t) &((TYPE *)0)->FIELD)
#endif
#ifndef container_of
#define container_of(PTR, TYPE, FIELD) ({ \
__typeof__(((TYPE *)0)->FIELD) *__FIELD_PTR = (PTR); \