diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2025-12-09 14:03:29 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2025-12-09 14:03:29 +0000 |
| commit | 7f920884cd004f9e2e60b3efda5bd75f287faa9d (patch) | |
| tree | f1fcdd4e1d2a9180ed3ab3a9e669b165e15a8120 /libc/hdr | |
| parent | e6df1a75c40c410b33796cc07a1cc91f49fa3a07 (diff) | |
Diffstat (limited to 'libc/hdr')
77 files changed, 2002 insertions, 0 deletions
diff --git a/libc/hdr/errno_macros.h b/libc/hdr/errno_macros.h new file mode 100644 index 000000000000..27ea49977d8c --- /dev/null +++ b/libc/hdr/errno_macros.h @@ -0,0 +1,28 @@ +//===-- Definition of macros from errno.h ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_ERRNO_MACROS_H +#define LLVM_LIBC_HDR_ERRNO_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#ifdef __linux__ +#include <linux/errno.h> + +#include "include/llvm-libc-macros/error-number-macros.h" +#else // __linux__ +#include "include/llvm-libc-macros/generic-error-number-macros.h" +#endif + +#else // Overlay mode + +#include <errno.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_ERRNO_MACROS_H diff --git a/libc/hdr/fcntl_macros.h b/libc/hdr/fcntl_macros.h new file mode 100644 index 000000000000..3a1ddeb0a2da --- /dev/null +++ b/libc/hdr/fcntl_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from fcntl/fcntl.h ---------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_FCNTL_MACROS_H +#define LLVM_LIBC_HDR_FCNTL_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/fcntl-macros.h" + +#else // Overlay mode + +#include "hdr/fcntl_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_FCNTL_MACROS_H diff --git a/libc/hdr/fcntl_overlay.h b/libc/hdr/fcntl_overlay.h new file mode 100644 index 000000000000..17ae78b3d0ec --- /dev/null +++ b/libc/hdr/fcntl_overlay.h @@ -0,0 +1,47 @@ +//===-- Including fcntl.h in overlay mode ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_FCNTL_OVERLAY_H +#define LLVM_LIBC_HDR_FCNTL_OVERLAY_H + +#ifdef LIBC_FULL_BUILD +#error "This header should only be included in overlay mode" +#endif + +// Overlay mode + +// glibc <fcntl.h> header might provide extern inline definitions for few +// functions, causing external alias errors. They are guarded by +// `__USE_FORTIFY_LEVEL`, which will be temporarily disabled +// with `_FORTIFY_SOURCE`. + +#ifdef _FORTIFY_SOURCE +#define LIBC_OLD_FORTIFY_SOURCE _FORTIFY_SOURCE +#undef _FORTIFY_SOURCE +#endif + +#ifdef __USE_FORTIFY_LEVEL +#define LIBC_OLD_USE_FORTIFY_LEVEL __USE_FORTIFY_LEVEL +#undef __USE_FORTIFY_LEVEL +#define __USE_FORTIFY_LEVEL 0 +#endif + +#include <fcntl.h> + +#ifdef LIBC_OLD_FORTIFY_SOURCE +#define _FORTIFY_SOURCE LIBC_OLD_FORTIFY_SOURCE +#undef LIBC_OLD_FORTIFY_SOURCE +#endif + +#ifdef LIBC_OLD_USE_FORTIFY_LEVEL +#undef __USE_FORTIFY_LEVEL +#define __USE_FORTIFY_LEVEL LIBC_OLD_USE_FORTIFY_LEVEL +#undef LIBC_OLD_USE_FORTIFY_LEVEL +#endif + +#endif // LLVM_LIBC_HDR_FCNTL_OVERLAY_H diff --git a/libc/hdr/fenv_macros.h b/libc/hdr/fenv_macros.h new file mode 100644 index 000000000000..3f0bd89a6ea3 --- /dev/null +++ b/libc/hdr/fenv_macros.h @@ -0,0 +1,61 @@ +//===-- Definition of macros from fenv.h ----------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_FENV_MACROS_H +#define LLVM_LIBC_HDR_FENV_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/fenv-macros.h" + +#else // Overlay mode + +#include <fenv.h> + +// In some environment, FE_ALL_EXCEPT is set to 0 and the remaining exceptions +// FE_* are missing. +#ifndef FE_DIVBYZERO +#define FE_DIVBYZERO 0 +#endif // FE_DIVBYZERO + +#ifndef FE_INEXACT +#define FE_INEXACT 0 +#endif // FE_INEXACT + +#ifndef FE_INVALID +#define FE_INVALID 0 +#endif // FE_INVALID + +#ifndef FE_OVERFLOW +#define FE_OVERFLOW 0 +#endif // FE_OVERFLOW + +#ifndef FE_UNDERFLOW +#define FE_UNDERFLOW 0 +#endif // FE_UNDERFLOW + +// Rounding mode macros might be missing. +#ifndef FE_DOWNWARD +#define FE_DOWNWARD 0x400 +#endif // FE_DOWNWARD + +#ifndef FE_TONEAREST +#define FE_TONEAREST 0 +#endif // FE_TONEAREST + +#ifndef FE_TOWARDZERO +#define FE_TOWARDZERO 0xC00 +#endif // FE_TOWARDZERO + +#ifndef FE_UPWARD +#define FE_UPWARD 0x800 +#endif // FE_UPWARD + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_FENV_MACROS_H diff --git a/libc/hdr/float_macros.h b/libc/hdr/float_macros.h new file mode 100644 index 000000000000..a0ef5e29b986 --- /dev/null +++ b/libc/hdr/float_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from math.h ----------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_FLOAT_MACROS_H +#define LLVM_LIBC_HDR_FLOAT_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/float-macros.h" + +#else // Overlay mode + +#include <float.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_FLOAT_MACROS_H diff --git a/libc/hdr/func/aligned_alloc.h b/libc/hdr/func/aligned_alloc.h new file mode 100644 index 000000000000..b3436dfee1f2 --- /dev/null +++ b/libc/hdr/func/aligned_alloc.h @@ -0,0 +1,22 @@ +//===-- Definition of the aligned_alloc.h proxy ---------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_FUNC_ALIGNED_ALLOC_H +#define LLVM_LIBC_HDR_FUNC_ALIGNED_ALLOC_H + +#ifdef LIBC_FULL_BUILD +#include "hdr/types/size_t.h" +extern "C" void *aligned_alloc(size_t, size_t); + +#else // Overlay mode + +#include "hdr/stdlib_overlay.h" + +#endif + +#endif diff --git a/libc/hdr/func/free.h b/libc/hdr/func/free.h new file mode 100644 index 000000000000..316556b21e3b --- /dev/null +++ b/libc/hdr/func/free.h @@ -0,0 +1,22 @@ +//===-- Definition of the free.h proxy ------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_FUNC_FREE_H +#define LLVM_LIBC_HDR_FUNC_FREE_H + +#ifdef LIBC_FULL_BUILD + +extern "C" void free(void *) noexcept; + +#else // Overlay mode + +#include "hdr/stdlib_overlay.h" + +#endif + +#endif diff --git a/libc/hdr/func/malloc.h b/libc/hdr/func/malloc.h new file mode 100644 index 000000000000..8281021f7996 --- /dev/null +++ b/libc/hdr/func/malloc.h @@ -0,0 +1,24 @@ +//===-- Definition of the malloc.h proxy ----------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_FUNC_MALLOC_H +#define LLVM_LIBC_HDR_FUNC_MALLOC_H + +#ifdef LIBC_FULL_BUILD + +#include "hdr/types/size_t.h" + +extern "C" void *malloc(size_t) noexcept; + +#else // Overlay mode + +#include "hdr/stdlib_overlay.h" + +#endif + +#endif diff --git a/libc/hdr/func/realloc.h b/libc/hdr/func/realloc.h new file mode 100644 index 000000000000..ecb29541fe34 --- /dev/null +++ b/libc/hdr/func/realloc.h @@ -0,0 +1,24 @@ +//===-- Definition of the realloc.h proxy ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_FUNC_REALLOC_H +#define LLVM_LIBC_HDR_FUNC_REALLOC_H + +#ifdef LIBC_FULL_BUILD + +#include "hdr/types/size_t.h" + +extern "C" void *realloc(void *ptr, size_t new_size) noexcept; + +#else // Overlay mode + +#include "hdr/stdlib_overlay.h" + +#endif + +#endif diff --git a/libc/hdr/limits_macros.h b/libc/hdr/limits_macros.h new file mode 100644 index 000000000000..2dc13b0cca60 --- /dev/null +++ b/libc/hdr/limits_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from limits.h --------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_LIMITS_MACROS_H +#define LLVM_LIBC_HDR_LIMITS_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/limits-macros.h" + +#else // Overlay mode + +#include <limits.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_LIMITS_MACROS_H diff --git a/libc/hdr/link_macros.h b/libc/hdr/link_macros.h new file mode 100644 index 000000000000..8a78a864e6ce --- /dev/null +++ b/libc/hdr/link_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from link.h ----------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_LINK_MACROS_H +#define LLVM_LIBC_HDR_LINK_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/link-macros.h" + +#else // Overlay mode + +#include <link.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_LINK_MACROS_H diff --git a/libc/hdr/locale_macros.h b/libc/hdr/locale_macros.h new file mode 100644 index 000000000000..7d94f6ddabe4 --- /dev/null +++ b/libc/hdr/locale_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from locale.h --------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_LOCALE_MACROS_H +#define LLVM_LIBC_HDR_LOCALE_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/locale-macros.h" + +#else // Overlay mode + +#error "macros not available in overlay mode" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_LOCALE_MACROS_H diff --git a/libc/hdr/math_function_macros.h b/libc/hdr/math_function_macros.h new file mode 100644 index 000000000000..48dec8260ef8 --- /dev/null +++ b/libc/hdr/math_function_macros.h @@ -0,0 +1,27 @@ +//===-- Definition of macros from math.h ----------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_MATH_FUNCTION_MACROS_H +#define LLVM_LIBC_HDR_MATH_FUNCTION_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/math-function-macros.h" + +#else // Overlay mode + +// GCC will include CXX headers when __cplusplus is defined. This behavior +// can be suppressed by defining _GLIBCXX_INCLUDE_NEXT_C_HEADERS. +#if defined(__GNUC__) && !defined(__clang__) +#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS +#endif +#include <math.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_MATH_MACROS_H diff --git a/libc/hdr/math_macros.h b/libc/hdr/math_macros.h new file mode 100644 index 000000000000..863451123f3f --- /dev/null +++ b/libc/hdr/math_macros.h @@ -0,0 +1,48 @@ +//===-- Definition of macros from math.h ----------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_MATH_MACROS_H +#define LLVM_LIBC_HDR_MATH_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/math-macros.h" + +#else // Overlay mode + +// GCC will include CXX headers when __cplusplus is defined. This behavior +// can be suppressed by defining _GLIBCXX_INCLUDE_NEXT_C_HEADERS. +#if defined(__GNUC__) && !defined(__clang__) +#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS +#endif +#include <math.h> + +// Some older math.h header does not have FP_INT_* constants yet. +#ifndef FP_INT_UPWARD +#define FP_INT_UPWARD 0 +#endif // FP_INT_UPWARD + +#ifndef FP_INT_DOWNWARD +#define FP_INT_DOWNWARD 1 +#endif // FP_INT_DOWNWARD + +#ifndef FP_INT_TOWARDZERO +#define FP_INT_TOWARDZERO 2 +#endif // FP_INT_TOWARDZERO + +#ifndef FP_INT_TONEARESTFROMZERO +#define FP_INT_TONEARESTFROMZERO 3 +#endif // FP_INT_TONEARESTFROMZERO + +#ifndef FP_INT_TONEAREST +#define FP_INT_TONEAREST 4 +#endif // FP_INT_TONEAREST + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_MATH_MACROS_H diff --git a/libc/hdr/offsetof_macros.h b/libc/hdr/offsetof_macros.h new file mode 100644 index 000000000000..42e853ffa92e --- /dev/null +++ b/libc/hdr/offsetof_macros.h @@ -0,0 +1,23 @@ +//===-- Definition of macros for offsetof ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_OFFSETOF_MACROS_H +#define LLVM_LIBC_HDR_OFFSETOF_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/offsetof-macro.h" + +#else // Overlay mode + +#define __need_offsetof +#include <stddef.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_OFFSETOF_MACROS_H diff --git a/libc/hdr/sched_macros.h b/libc/hdr/sched_macros.h new file mode 100644 index 000000000000..cfeaa9979678 --- /dev/null +++ b/libc/hdr/sched_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from sched.h ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_SCHED_MACROS_H +#define LLVM_LIBC_HDR_SCHED_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/sched-macros.h" + +#else // Overlay mode + +#include <sched.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_SCHED_MACROS_H diff --git a/libc/hdr/signal_macros.h b/libc/hdr/signal_macros.h new file mode 100644 index 000000000000..867d17a4ca8c --- /dev/null +++ b/libc/hdr/signal_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from signal.h --------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_SIGNAL_MACROS_H +#define LLVM_LIBC_HDR_SIGNAL_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/signal-macros.h" + +#else // Overlay mode + +#include <signal.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_SIGNAL_MACROS_H diff --git a/libc/hdr/stdio_macros.h b/libc/hdr/stdio_macros.h new file mode 100644 index 000000000000..a4d6a972ec9a --- /dev/null +++ b/libc/hdr/stdio_macros.h @@ -0,0 +1,23 @@ +//===-- Definition of macros from stdio.h --------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_STDIO_MACROS_H +#define LLVM_LIBC_HDR_STDIO_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/file-seek-macros.h" +#include "include/llvm-libc-macros/stdio-macros.h" + +#else // Overlay mode + +#include "stdio_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_STDIO_MACROS_H diff --git a/libc/hdr/stdio_overlay.h b/libc/hdr/stdio_overlay.h new file mode 100644 index 000000000000..aef8c448fe49 --- /dev/null +++ b/libc/hdr/stdio_overlay.h @@ -0,0 +1,69 @@ +//===-- Including stdio.h in overlay mode ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_STDIO_OVERLAY_H +#define LLVM_LIBC_HDR_STDIO_OVERLAY_H + +#ifdef LIBC_FULL_BUILD +#error "This header should only be included in overlay mode" +#endif + +// Overlay mode + +// glibc <stdio.h> header might provide extern inline definitions for few +// functions, causing external alias errors. They are guarded by +// `__USE_EXTERN_INLINES` macro. We temporarily disable `__USE_EXTERN_INLINES` +// macro by defining `__NO_INLINE__` before including <stdio.h>. +// And the same with `__USE_FORTIFY_LEVEL`, which will be temporarily disabled +// with `_FORTIFY_SOURCE`. + +#ifdef _FORTIFY_SOURCE +#define LIBC_OLD_FORTIFY_SOURCE _FORTIFY_SOURCE +#undef _FORTIFY_SOURCE +#endif + +#ifdef __USE_EXTERN_INLINES +#define LIBC_OLD_USE_EXTERN_INLINES +#undef __USE_EXTERN_INLINES +#endif + +#ifdef __USE_FORTIFY_LEVEL +#define LIBC_OLD_USE_FORTIFY_LEVEL __USE_FORTIFY_LEVEL +#undef __USE_FORTIFY_LEVEL +#define __USE_FORTIFY_LEVEL 0 +#endif + +#ifndef __NO_INLINE__ +#define __NO_INLINE__ 1 +#define LIBC_SET_NO_INLINE +#endif + +#include <stdio.h> + +#ifdef LIBC_OLD_FORTIFY_SOURCE +#define _FORTIFY_SOURCE LIBC_OLD_FORTIFY_SOURCE +#undef LIBC_OLD_FORTIFY_SOURCE +#endif + +#ifdef LIBC_SET_NO_INLINE +#undef __NO_INLINE__ +#undef LIBC_SET_NO_INLINE +#endif + +#ifdef LIBC_OLD_USE_FORTIFY_LEVEL +#undef __USE_FORTIFY_LEVEL +#define __USE_FORTIFY_LEVEL LIBC_OLD_USE_FORTIFY_LEVEL +#undef LIBC_OLD_USE_FORTIFY_LEVEL +#endif + +#ifdef LIBC_OLD_USE_EXTERN_INLINES +#define __USE_EXTERN_INLINES +#undef LIBC_OLD_USE_EXTERN_INLINES +#endif + +#endif // LLVM_LIBC_HDR_STDIO_OVERLAY_H diff --git a/libc/hdr/stdlib_macros.h b/libc/hdr/stdlib_macros.h new file mode 100644 index 000000000000..3faeb3a8fe36 --- /dev/null +++ b/libc/hdr/stdlib_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from stdlib.h --------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_STDLIB_MACROS_H +#define LLVM_LIBC_HDR_STDLIB_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/stdlib-macros.h" + +#else // Overlay mode + +#include "stdlib_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_STDLIB_MACROS_H diff --git a/libc/hdr/stdlib_overlay.h b/libc/hdr/stdlib_overlay.h new file mode 100644 index 000000000000..53c32ec0ae33 --- /dev/null +++ b/libc/hdr/stdlib_overlay.h @@ -0,0 +1,46 @@ +//===-- Including stdlib.h in overlay mode --------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_STDLIB_OVERLAY_H +#define LLVM_LIBC_HDR_STDLIB_OVERLAY_H + +#ifdef LIBC_FULL_BUILD +#error "This header should only be included in overlay mode" +#endif + +// Overlay mode + +// glibc <stdlib.h> header might provide extern inline definitions for few +// functions, causing external alias errors. They are guarded by +// `__USE_FORTIFY_LEVEL`, which will be temporarily disabled. + +#ifdef _FORTIFY_SOURCE +#define LIBC_OLD_FORTIFY_SOURCE _FORTIFY_SOURCE +#undef _FORTIFY_SOURCE +#endif + +#ifdef __USE_FORTIFY_LEVEL +#define LIBC_OLD_USE_FORTIFY_LEVEL __USE_FORTIFY_LEVEL +#undef __USE_FORTIFY_LEVEL +#define __USE_FORTIFY_LEVEL 0 +#endif + +#include <stdlib.h> + +#ifdef LIBC_OLD_FORTIFY_SOURCE +#define _FORTIFY_SOURCE LIBC_OLD_FORTIFY_SOURCE +#undef LIBC_OLD_FORTIFY_SOURCE +#endif + +#ifdef LIBC_OLD_USE_FORTIFY_LEVEL +#undef __USE_FORTIFY_LEVEL +#define __USE_FORTIFY_LEVEL LIBC_OLD_USE_FORTIFY_LEVEL +#undef LIBC_OLD_USE_FORTIFY_LEVEL +#endif + +#endif diff --git a/libc/hdr/sys_auxv_macros.h b/libc/hdr/sys_auxv_macros.h new file mode 100644 index 000000000000..c04011baedb8 --- /dev/null +++ b/libc/hdr/sys_auxv_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from sys/auxv.h ------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_SYS_AUXV_MACROS_H +#define LLVM_LIBC_HDR_SYS_AUXV_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/sys-auxv-macros.h" + +#else // Overlay mode + +#include <sys/auxv.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_SYS_AUXV_MACROS_H diff --git a/libc/hdr/sys_epoll_macros.h b/libc/hdr/sys_epoll_macros.h new file mode 100644 index 000000000000..db047f161634 --- /dev/null +++ b/libc/hdr/sys_epoll_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from sys/epoll.h -----------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_SYS_EPOLL_MACROS_H +#define LLVM_LIBC_HDR_SYS_EPOLL_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/sys-epoll-macros.h" + +#else // Overlay mode + +#include <sys/epoll.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_SYS/EPOLL_MACROS_H diff --git a/libc/hdr/sys_ioctl_macros.h b/libc/hdr/sys_ioctl_macros.h new file mode 100644 index 000000000000..935d43627346 --- /dev/null +++ b/libc/hdr/sys_ioctl_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from sys/ioctl.h -----------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_SYS_IOCTL_MACROS_H +#define LLVM_LIBC_HDR_SYS_IOCTL_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/sys-ioctl-macros.h" + +#else // Overlay mode + +#include <sys/ioctl.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_SYS_IOCTL_MACROS_H diff --git a/libc/hdr/sys_stat_macros.h b/libc/hdr/sys_stat_macros.h new file mode 100644 index 000000000000..cb58d62e1ffb --- /dev/null +++ b/libc/hdr/sys_stat_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from sys/stat.h ------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_SYS_STAT_MACROS_H +#define LLVM_LIBC_HDR_SYS_STAT_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/sys-stat-macros.h" + +#else // Overlay mode + +#include <sys/stat.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_SYS_STAT_MACROS_H diff --git a/libc/hdr/time_macros.h b/libc/hdr/time_macros.h new file mode 100644 index 000000000000..4488a24848c3 --- /dev/null +++ b/libc/hdr/time_macros.h @@ -0,0 +1,28 @@ +//===-- Definition of macros from time.h ----------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TIME_MACROS_H +#define LLVM_LIBC_HDR_TIME_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/time-macros.h" + +#else // Overlay mode + +#include <time.h> + +#endif // LLVM_LIBC_FULL_BUILD + +// TODO: For now, on windows, let's always include the extension header. +// We will need to decide how to export this header. +#ifdef _WIN32 +#include "include/llvm-libc-macros/windows/time-macros-ext.h" +#endif // _WIN32 + +#endif // LLVM_LIBC_HDR_TIME_MACROS_H diff --git a/libc/hdr/types/ACTION.h b/libc/hdr/types/ACTION.h new file mode 100644 index 000000000000..0b63521dff64 --- /dev/null +++ b/libc/hdr/types/ACTION.h @@ -0,0 +1,22 @@ +//===-- Proxy header for ACTION -------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_ACTION_H +#define LLVM_LIBC_HDR_TYPES_ACTION_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/ACTION.h" + +#else // Overlay mode + +#include <search.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_ACTION_H diff --git a/libc/hdr/types/ENTRY.h b/libc/hdr/types/ENTRY.h new file mode 100644 index 000000000000..5f4aee4b30fe --- /dev/null +++ b/libc/hdr/types/ENTRY.h @@ -0,0 +1,22 @@ +//===-- Proxy header for ENTRY --------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_ENTRY_H +#define LLVM_LIBC_HDR_TYPES_ENTRY_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/ENTRY.h" + +#else // Overlay mode + +#include <search.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_ENTRY_H diff --git a/libc/hdr/types/FILE.h b/libc/hdr/types/FILE.h new file mode 100644 index 000000000000..ecb52b7102cb --- /dev/null +++ b/libc/hdr/types/FILE.h @@ -0,0 +1,22 @@ +//===-- Proxy for FILE ----------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_FILE_H +#define LLVM_LIBC_HDR_TYPES_FILE_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/FILE.h" + +#else // Overlay mode + +#include "hdr/stdio_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_FILE_H diff --git a/libc/hdr/types/atexithandler_t.h b/libc/hdr/types/atexithandler_t.h new file mode 100644 index 000000000000..6d829fe60d27 --- /dev/null +++ b/libc/hdr/types/atexithandler_t.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from atexithandler_t.h -----------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_ATEXITHANDLER_T_H +#define LLVM_LIBC_HDR_TYPES_ATEXITHANDLER_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/__atexithandler_t.h" + +#else // overlay mode + +#error // type not available in overlay mode + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_ATEXITHANDLER_T_H diff --git a/libc/hdr/types/char32_t.h b/libc/hdr/types/char32_t.h new file mode 100644 index 000000000000..94fe5747d341 --- /dev/null +++ b/libc/hdr/types/char32_t.h @@ -0,0 +1,22 @@ +//===-- Definition of char32_t.h ------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_CHAR32_T_H +#define LLVM_LIBC_HDR_TYPES_CHAR32_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/char32_t.h" + +#else // overlay mode + +#include "hdr/uchar_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_CHAR32_T_H diff --git a/libc/hdr/types/char8_t.h b/libc/hdr/types/char8_t.h new file mode 100644 index 000000000000..4d71e3dd8909 --- /dev/null +++ b/libc/hdr/types/char8_t.h @@ -0,0 +1,14 @@ +//===-- Definition of char8_t.h -------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_CHAR8_T_H +#define LLVM_LIBC_HDR_TYPES_CHAR8_T_H + +#include "include/llvm-libc-types/char8_t.h" + +#endif // LLVM_LIBC_HDR_TYPES_CHAR8_T_H diff --git a/libc/hdr/types/clock_t.h b/libc/hdr/types/clock_t.h new file mode 100644 index 000000000000..b0b658e96c3d --- /dev/null +++ b/libc/hdr/types/clock_t.h @@ -0,0 +1,22 @@ +//===-- Proxy for clock_t -------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_CLOCK_T_H +#define LLVM_LIBC_HDR_TYPES_CLOCK_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/clock_t.h" + +#else // Overlay mode + +#include <sys/types.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_CLOCK_T_H diff --git a/libc/hdr/types/clockid_t.h b/libc/hdr/types/clockid_t.h new file mode 100644 index 000000000000..729e580aba43 --- /dev/null +++ b/libc/hdr/types/clockid_t.h @@ -0,0 +1,23 @@ +//===-- Proxy for clockid_t -----------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_CLOCKID_T_H +#define LLVM_LIBC_HDR_TYPES_CLOCKID_T_H + +// TODO: we will need to decide how to export extension to windows. +#if defined(LIBC_FULL_BUILD) || defined(_WIN32) + +#include "include/llvm-libc-types/clockid_t.h" + +#else // Overlay mode + +#include <sys/types.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_CLOCKID_T_H diff --git a/libc/hdr/types/cookie_io_functions_t.h b/libc/hdr/types/cookie_io_functions_t.h new file mode 100644 index 000000000000..7323a05001c4 --- /dev/null +++ b/libc/hdr/types/cookie_io_functions_t.h @@ -0,0 +1,22 @@ +//===-- Proxy for cookie_io_functions_t -----------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_COOKIE_IO_FUNCTIONS_T_H +#define LLVM_LIBC_HDR_TYPES_COOKIE_IO_FUNCTIONS_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/cookie_io_functions_t.h" + +#else // Overlay mode + +#include "hdr/stdio_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_COOKIE_IO_FUNCTIONS_T_H diff --git a/libc/hdr/types/cpu_set_t.h b/libc/hdr/types/cpu_set_t.h new file mode 100644 index 000000000000..26aed7592fa2 --- /dev/null +++ b/libc/hdr/types/cpu_set_t.h @@ -0,0 +1,22 @@ +//===-- Proxy for cpu_set_t -----------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_CPU_SET_T_H +#define LLVM_LIBC_HDR_TYPES_CPU_SET_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/cpu_set_t.h" + +#else // Overlay mode + +#include <sched.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_CPU_SET_T_H diff --git a/libc/hdr/types/div_t.h b/libc/hdr/types/div_t.h new file mode 100644 index 000000000000..29c355f079e1 --- /dev/null +++ b/libc/hdr/types/div_t.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from div_t.h ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_DIV_T_H +#define LLVM_LIBC_HDR_TYPES_DIV_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/div_t.h" + +#else // Overlay mode + +#include "hdr/stdlib_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_DIV_T_H diff --git a/libc/hdr/types/fenv_t.h b/libc/hdr/types/fenv_t.h new file mode 100644 index 000000000000..ddfb08c027bf --- /dev/null +++ b/libc/hdr/types/fenv_t.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from fenv_t.h --------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_FENV_T_H +#define LLVM_LIBC_HDR_TYPES_FENV_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/fenv_t.h" + +#else // Overlay mode + +#include <fenv.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_FENV_T_H diff --git a/libc/hdr/types/fexcept_t.h b/libc/hdr/types/fexcept_t.h new file mode 100644 index 000000000000..761f125ae8cf --- /dev/null +++ b/libc/hdr/types/fexcept_t.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from fexcept_t.h -----------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_FEXCEPT_T_H +#define LLVM_LIBC_HDR_TYPES_FEXCEPT_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/fexcept_t.h" + +#else // Overlay mode + +#include <fenv.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_FEXCEPT_T_H diff --git a/libc/hdr/types/jmp_buf.h b/libc/hdr/types/jmp_buf.h new file mode 100644 index 000000000000..3fa1de816d70 --- /dev/null +++ b/libc/hdr/types/jmp_buf.h @@ -0,0 +1,22 @@ +//===-- Definition of jmp_buf.h ------------------------------------------===// +// +// Part of the LLVM Project, under the Apahce License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_JMP_BUF_H +#define LLVM_LIBC_HDR_TYPES_JMP_BUF_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/jmp_buf.h" + +#else // overlay mode + +#include <setjmp.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_JMP_BUF_H diff --git a/libc/hdr/types/ldiv_t.h b/libc/hdr/types/ldiv_t.h new file mode 100644 index 000000000000..c7023f5077bd --- /dev/null +++ b/libc/hdr/types/ldiv_t.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from ldiv_t.h --------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_LDIV_T_H +#define LLVM_LIBC_HDR_TYPES_LDIV_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/ldiv_t.h" + +#else // Overlay mode + +#include "hdr/stdlib_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_LDIV_T_H diff --git a/libc/hdr/types/lldiv_t.h b/libc/hdr/types/lldiv_t.h new file mode 100644 index 000000000000..cd41886674a1 --- /dev/null +++ b/libc/hdr/types/lldiv_t.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from lldiv_t.h -------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_LLDIV_T_H +#define LLVM_LIBC_HDR_TYPES_LLDIV_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/lldiv_t.h" + +#else // Overlay mode + +#include "hdr/stdlib_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_LLDIV_T_H diff --git a/libc/hdr/types/locale_t.h b/libc/hdr/types/locale_t.h new file mode 100644 index 000000000000..be12d12b4070 --- /dev/null +++ b/libc/hdr/types/locale_t.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from locale_t.h ------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_LOCALE_T_H +#define LLVM_LIBC_HDR_TYPES_LOCALE_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/locale_t.h" + +#else // overlay mode + +#error "type not available in overlay mode" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_LOCALE_T_H diff --git a/libc/hdr/types/mbstate_t.h b/libc/hdr/types/mbstate_t.h new file mode 100644 index 000000000000..d8fadceaaac8 --- /dev/null +++ b/libc/hdr/types/mbstate_t.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from mbstate_t.h -----------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_MBSTATE_T_H +#define LLVM_LIBC_HDR_TYPES_MBSTATE_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/mbstate_t.h" + +#else // Overlay mode + +#error "Cannot overlay mbstate_t" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_MBSTATE_T_H diff --git a/libc/hdr/types/mode_t.h b/libc/hdr/types/mode_t.h new file mode 100644 index 000000000000..3f36a1961e62 --- /dev/null +++ b/libc/hdr/types/mode_t.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from mode_t.h --------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_MODE_T_H +#define LLVM_LIBC_HDR_TYPES_MODE_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/mode_t.h" + +#else // Overlay mode + +#include "hdr/fcntl_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_MODE_T_H diff --git a/libc/hdr/types/nfds_t.h b/libc/hdr/types/nfds_t.h new file mode 100644 index 000000000000..9143564c2333 --- /dev/null +++ b/libc/hdr/types/nfds_t.h @@ -0,0 +1,23 @@ +//===-- Definition of nfds_t ----------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_NFDS_T_H +#define LLVM_LIBC_HDR_TYPES_NFDS_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/nfds_t.h" + +#else // overlay mode + +#include <poll.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_NFDS_T_H diff --git a/libc/hdr/types/off_t.h b/libc/hdr/types/off_t.h new file mode 100644 index 000000000000..52337e5b63e2 --- /dev/null +++ b/libc/hdr/types/off_t.h @@ -0,0 +1,22 @@ +//===-- Proxy for off_t ---------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_OFF_T_H +#define LLVM_LIBC_HDR_TYPES_OFF_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/off_t.h" + +#else // Overlay mode + +#include "hdr/stdio_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_OFF_T_H diff --git a/libc/hdr/types/pid_t.h b/libc/hdr/types/pid_t.h new file mode 100644 index 000000000000..34306fc4118c --- /dev/null +++ b/libc/hdr/types/pid_t.h @@ -0,0 +1,22 @@ +//===-- Proxy for pid_t ---------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_PID_T_H +#define LLVM_LIBC_HDR_TYPES_PID_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/pid_t.h" + +#else // Overlay mode + +#include <sys/types.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_PID_T_H diff --git a/libc/hdr/types/sigset_t.h b/libc/hdr/types/sigset_t.h new file mode 100644 index 000000000000..695ec3029f68 --- /dev/null +++ b/libc/hdr/types/sigset_t.h @@ -0,0 +1,21 @@ +//===-- Proxy for sigset_t ------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_SIGSET_T_H +#define LLVM_LIBC_HDR_TYPES_SIGSET_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/sigset_t.h" + +#else + +#include <signal.h> + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_SIGSET_T_H diff --git a/libc/hdr/types/size_t.h b/libc/hdr/types/size_t.h new file mode 100644 index 000000000000..1d9f26db3bbb --- /dev/null +++ b/libc/hdr/types/size_t.h @@ -0,0 +1,23 @@ +//===-- Proxy for size_t --------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_SIZE_T_H +#define LLVM_LIBC_HDR_TYPES_SIZE_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/size_t.h" + +#else + +#define __need_size_t +#include <stddef.h> +#undef __need_size_t + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_SIZE_T_H diff --git a/libc/hdr/types/socklen_t.h b/libc/hdr/types/socklen_t.h new file mode 100644 index 000000000000..79a6b9c7dead --- /dev/null +++ b/libc/hdr/types/socklen_t.h @@ -0,0 +1,21 @@ +//===-- Proxy for socklen_t -----------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_SOCKLEN_T_H +#define LLVM_LIBC_HDR_TYPES_SOCKLEN_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/socklen_t.h" + +#else + +#include <signal.h> + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_SOCKLEN_T_H diff --git a/libc/hdr/types/ssize_t.h b/libc/hdr/types/ssize_t.h new file mode 100644 index 000000000000..7eff98f33c2b --- /dev/null +++ b/libc/hdr/types/ssize_t.h @@ -0,0 +1,21 @@ +//===-- Proxy for ssize_t -------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_SSIZE_T_H +#define LLVM_LIBC_HDR_TYPES_SSIZE_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/ssize_t.h" + +#else + +#include <sys/types.h> + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_SSIZE_T_H diff --git a/libc/hdr/types/stack_t.h b/libc/hdr/types/stack_t.h new file mode 100644 index 000000000000..42dad3aa80c1 --- /dev/null +++ b/libc/hdr/types/stack_t.h @@ -0,0 +1,23 @@ +//===-- Definition of stack_t.h -------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_STACK_T_H +#define LLVM_LIBC_HDR_TYPES_STACK_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/stack_t.h" + +#else // overlay mode + +#include <signal.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STACK_T_H diff --git a/libc/hdr/types/struct_dl_phdr_info.h b/libc/hdr/types/struct_dl_phdr_info.h new file mode 100644 index 000000000000..0cfb3c1309bd --- /dev/null +++ b/libc/hdr/types/struct_dl_phdr_info.h @@ -0,0 +1,21 @@ +//===-- Proxy for struct dl_phdr_info -----------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===---------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_DL_PHDR_INFO_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_DL_PHDR_INFO_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_dl_phdr_info.h" + +#else + +#include <link.h> + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_DL_PHDR_INFO_H diff --git a/libc/hdr/types/struct_epoll_event.h b/libc/hdr/types/struct_epoll_event.h new file mode 100644 index 000000000000..5bb98ce05bb2 --- /dev/null +++ b/libc/hdr/types/struct_epoll_event.h @@ -0,0 +1,21 @@ +//===-- Proxy for struct epoll_event --------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_EPOLL_EVENT_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_EPOLL_EVENT_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_epoll_event.h" + +#else + +#include <sys/epoll.h> + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_EPOLL_EVENT_H diff --git a/libc/hdr/types/struct_f_owner_ex.h b/libc/hdr/types/struct_f_owner_ex.h new file mode 100644 index 000000000000..6e37cea6df84 --- /dev/null +++ b/libc/hdr/types/struct_f_owner_ex.h @@ -0,0 +1,21 @@ +//===-- Proxy for struct f_owner_ex --------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_F_OWNER_EX_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_F_OWNER_EX_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_f_owner_ex.h" + +#else + +#include "hdr/fcntl_overlay.h" + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_F_OWNER_EX_H diff --git a/libc/hdr/types/struct_flock.h b/libc/hdr/types/struct_flock.h new file mode 100644 index 000000000000..6a6c928e6fa6 --- /dev/null +++ b/libc/hdr/types/struct_flock.h @@ -0,0 +1,21 @@ +//===-- Proxy for struct flock -------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_FLOCK_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_FLOCK_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_flock.h" + +#else + +#include "hdr/fcntl_overlay.h" + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_FLOCK_H diff --git a/libc/hdr/types/struct_flock64.h b/libc/hdr/types/struct_flock64.h new file mode 100644 index 000000000000..fcfda59479a2 --- /dev/null +++ b/libc/hdr/types/struct_flock64.h @@ -0,0 +1,21 @@ +//===-- Proxy for struct flock64 -----------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_FLOCK64_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_FLOCK64_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_flock64.h" + +#else + +#include "hdr/fcntl_overlay.h" + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_FLOCK64_H diff --git a/libc/hdr/types/struct_iovec.h b/libc/hdr/types/struct_iovec.h new file mode 100644 index 000000000000..fc6174c6d487 --- /dev/null +++ b/libc/hdr/types/struct_iovec.h @@ -0,0 +1,21 @@ +//===-- Proxy for struct iovec -------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_IOVEC_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_IOVEC_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_iovec.h" + +#else + +#include <sys/uio.h> + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_IOVEC_H diff --git a/libc/hdr/types/struct_itimerval.h b/libc/hdr/types/struct_itimerval.h new file mode 100644 index 000000000000..b2281675b802 --- /dev/null +++ b/libc/hdr/types/struct_itimerval.h @@ -0,0 +1,21 @@ +//===-- Proxy for struct itimerval ----------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_ITIMERVAL_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_ITIMERVAL_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_itimerval.h" + +#else + +#include <sys/time.h> + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_ITIMERVAL_H diff --git a/libc/hdr/types/struct_msghdr.h b/libc/hdr/types/struct_msghdr.h new file mode 100644 index 000000000000..6a36af791e21 --- /dev/null +++ b/libc/hdr/types/struct_msghdr.h @@ -0,0 +1,21 @@ +//===-- Proxy for struct msghdr ------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_MSGHDR_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_MSGHDR_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_msghdr.h" + +#else + +#include <sys/socket.h> + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_MSGHDR_H diff --git a/libc/hdr/types/struct_pollfd.h b/libc/hdr/types/struct_pollfd.h new file mode 100644 index 000000000000..efec6fc80ac1 --- /dev/null +++ b/libc/hdr/types/struct_pollfd.h @@ -0,0 +1,23 @@ +//===-- Definition of struct pollfd ---------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_POLLFD_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_POLLFD_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_pollfd.h" + +#else // overlay mode + +#include <poll.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_POLLFD_H diff --git a/libc/hdr/types/struct_sigaction.h b/libc/hdr/types/struct_sigaction.h new file mode 100644 index 000000000000..60f6caeb4af1 --- /dev/null +++ b/libc/hdr/types/struct_sigaction.h @@ -0,0 +1,21 @@ +//===-- Proxy for struct sigaction ---------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_SIGACTION_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_SIGACTION_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_sigaction.h" + +#else + +#include <signal.h> + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_SIGACTION_H diff --git a/libc/hdr/types/struct_sockaddr.h b/libc/hdr/types/struct_sockaddr.h new file mode 100644 index 000000000000..0fc31d537485 --- /dev/null +++ b/libc/hdr/types/struct_sockaddr.h @@ -0,0 +1,21 @@ +//===-- Proxy for struct sockaddr ----------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_SOCKADDR_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_SOCKADDR_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_sockaddr.h" + +#else + +#include <sys/socket.h> + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_SOCKADDR_H diff --git a/libc/hdr/types/struct_timespec.h b/libc/hdr/types/struct_timespec.h new file mode 100644 index 000000000000..1f121f3d24d8 --- /dev/null +++ b/libc/hdr/types/struct_timespec.h @@ -0,0 +1,21 @@ +//===-- Proxy for struct timespec ----------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_TIMESPEC_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_TIMESPEC_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_timespec.h" + +#else + +#include <time.h> + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_TIMESPEC_H diff --git a/libc/hdr/types/struct_timeval.h b/libc/hdr/types/struct_timeval.h new file mode 100644 index 000000000000..8fc321a52d71 --- /dev/null +++ b/libc/hdr/types/struct_timeval.h @@ -0,0 +1,21 @@ +//===-- Proxy for struct timeval ----------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_TIMEVAL_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_TIMEVAL_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_timeval.h" + +#else + +#include <sys/time.h> + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_TIMEVAL_H diff --git a/libc/hdr/types/struct_tm.h b/libc/hdr/types/struct_tm.h new file mode 100644 index 000000000000..96c23e2ce054 --- /dev/null +++ b/libc/hdr/types/struct_tm.h @@ -0,0 +1,21 @@ +//===-- Proxy for struct tm ----------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_TM_H +#define LLVM_LIBC_HDR_TYPES_STRUCT_TM_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/struct_tm.h" + +#else + +#include <time.h> + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_TM_H diff --git a/libc/hdr/types/suseconds_t.h b/libc/hdr/types/suseconds_t.h new file mode 100644 index 000000000000..f60168c59fb8 --- /dev/null +++ b/libc/hdr/types/suseconds_t.h @@ -0,0 +1,22 @@ +//===-- Proxy for suseconds_t ---------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_SUSECONDS_T_H +#define LLVM_LIBC_HDR_TYPES_SUSECONDS_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/suseconds_t.h" + +#else // Overlay mode + +#include <sys/types.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // #ifndef LLVM_LIBC_HDR_TYPES_SUSECONDS_T_H diff --git a/libc/hdr/types/time_t.h b/libc/hdr/types/time_t.h new file mode 100644 index 000000000000..fc9a1506a2cd --- /dev/null +++ b/libc/hdr/types/time_t.h @@ -0,0 +1,22 @@ +//===-- Proxy for time_t --------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_TIME_T_H +#define LLVM_LIBC_HDR_TYPES_TIME_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/time_t.h" + +#else // Overlay mode + +#include <time.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_TIME_T_H diff --git a/libc/hdr/types/uid_t.h b/libc/hdr/types/uid_t.h new file mode 100644 index 000000000000..a1eefb03228c --- /dev/null +++ b/libc/hdr/types/uid_t.h @@ -0,0 +1,22 @@ +//===-- Proxy for uid_t ---------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_UID_T_H +#define LLVM_LIBC_HDR_TYPES_UID_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/uid_t.h" + +#else // Overlay mode + +#include <sys/types.h> + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_UID_T_H diff --git a/libc/hdr/types/wchar_t.h b/libc/hdr/types/wchar_t.h new file mode 100644 index 000000000000..75e945239119 --- /dev/null +++ b/libc/hdr/types/wchar_t.h @@ -0,0 +1,23 @@ +//===-- Definition of wchar_t.h -------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_WCHAR_T_H +#define LLVM_LIBC_HDR_TYPES_WCHAR_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/wchar_t.h" + +#else // overlay mode + +#include "hdr/wchar_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_WCHAR_T_H diff --git a/libc/hdr/types/wint_t.h b/libc/hdr/types/wint_t.h new file mode 100644 index 000000000000..6b91859d35be --- /dev/null +++ b/libc/hdr/types/wint_t.h @@ -0,0 +1,23 @@ +//===-- Definition of wint_t.h --------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_TYPES_WINT_T_H +#define LLVM_LIBC_HDR_TYPES_WINT_T_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-types/wint_t.h" + +#else // overlay mode + +#include "hdr/wchar_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_WINT_T_H diff --git a/libc/hdr/uchar_overlay.h b/libc/hdr/uchar_overlay.h new file mode 100644 index 000000000000..44ed3d48c6c1 --- /dev/null +++ b/libc/hdr/uchar_overlay.h @@ -0,0 +1,69 @@ +//===-- Including uchar.h in overlay mode ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_UCHAR_OVERLAY_H +#define LLVM_LIBC_HDR_UCHAR_OVERLAY_H + +#ifdef LIBC_FULL_BUILD +#error "This header should only be included in overlay mode" +#endif + +// Overlay mode + +// glibc <uchar.h> header might provide extern inline definitions for few +// functions, causing external alias errors. They are guarded by +// `__USE_EXTERN_INLINES` macro. We temporarily disable `__USE_EXTERN_INLINES` +// macro by defining `__NO_INLINE__` before including <uchar.h>. +// And the same with `__USE_FORTIFY_LEVEL`, which will be temporarily disabled +// with `_FORTIFY_SOURCE`. + +#ifdef _FORTIFY_SOURCE +#define LIBC_OLD_FORTIFY_SOURCE _FORTIFY_SOURCE +#undef _FORTIFY_SOURCE +#endif + +#ifndef __NO_INLINE__ +#define __NO_INLINE__ 1 +#define LIBC_SET_NO_INLINE +#endif + +#ifdef __USE_EXTERN_INLINES +#define LIBC_OLD_USE_EXTERN_INLINES +#undef __USE_EXTERN_INLINES +#endif + +#ifdef __USE_FORTIFY_LEVEL +#define LIBC_OLD_USE_FORTIFY_LEVEL __USE_FORTIFY_LEVEL +#undef __USE_FORTIFY_LEVEL +#define __USE_FORTIFY_LEVEL 0 +#endif + +#include <uchar.h> + +#ifdef LIBC_OLD_FORTIFY_SOURCE +#define _FORTIFY_SOURCE LIBC_OLD_FORTIFY_SOURCE +#undef LIBC_OLD_FORTIFY_SOURCE +#endif + +#ifdef LIBC_SET_NO_INLINE +#undef __NO_INLINE__ +#undef LIBC_SET_NO_INLINE +#endif + +#ifdef LIBC_OLD_USE_FORTIFY_LEVEL +#undef __USE_FORTIFY_LEVEL +#define __USE_FORTIFY_LEVEL LIBC_OLD_USE_FORTIFY_LEVEL +#undef LIBC_OLD_USE_FORTIFY_LEVEL +#endif + +#ifdef LIBC_OLD_USE_EXTERN_INLINES +#define __USE_EXTERN_INLINES +#undef LIBC_OLD_USE_EXTERN_INLINES +#endif + +#endif // LLVM_LIBC_HDR_UCHAR_OVERLAY_H diff --git a/libc/hdr/unistd_macros.h b/libc/hdr/unistd_macros.h new file mode 100644 index 000000000000..5c2b24354dd3 --- /dev/null +++ b/libc/hdr/unistd_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from unistd.h --------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_UNISTD_MACROS_H +#define LLVM_LIBC_HDR_UNISTD_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/unistd-macros.h" + +#else // Overlay mode + +#include "unistd_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_UNISTD_MACROS_H diff --git a/libc/hdr/unistd_overlay.h b/libc/hdr/unistd_overlay.h new file mode 100644 index 000000000000..e3001e0cda08 --- /dev/null +++ b/libc/hdr/unistd_overlay.h @@ -0,0 +1,69 @@ +//===-- Including unistd.h in overlay mode -------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_UNISTD_OVERLAY_H +#define LLVM_LIBC_HDR_UNISTD_OVERLAY_H + +#ifdef LIBC_FULL_BUILD +#error "This header should only be included in overlay mode" +#endif + +// Overlay mode + +// glibc <unistd.h> header might provide extern inline definitions for few +// functions, causing external alias errors. They are guarded by +// `__USE_EXTERN_INLINES` macro. We temporarily disable `__USE_EXTERN_INLINES` +// macro by defining `__NO_INLINE__` before including <stdio.h>. +// And the same with `__USE_FORTIFY_LEVEL`, which will be temporarily disabled +// with `_FORTIFY_SOURCE`. + +#ifdef _FORTIFY_SOURCE +#define LIBC_OLD_FORTIFY_SOURCE _FORTIFY_SOURCE +#undef _FORTIFY_SOURCE +#endif + +#ifdef __USE_EXTERN_INLINES +#define LIBC_OLD_USE_EXTERN_INLINES +#undef __USE_EXTERN_INLINES +#endif + +#ifdef __USE_FORTIFY_LEVEL +#define LIBC_OLD_USE_FORTIFY_LEVEL __USE_FORTIFY_LEVEL +#undef __USE_FORTIFY_LEVEL +#define __USE_FORTIFY_LEVEL 0 +#endif + +#ifndef __NO_INLINE__ +#define __NO_INLINE__ 1 +#define LIBC_SET_NO_INLINE +#endif + +#include <unistd.h> + +#ifdef LIBC_OLD_FORTIFY_SOURCE +#define _FORTIFY_SOURCE LIBC_OLD_FORTIFY_SOURCE +#undef LIBC_OLD_FORTIFY_SOURCE +#endif + +#ifdef LIBC_SET_NO_INLINE +#undef __NO_INLINE__ +#undef LIBC_SET_NO_INLINE +#endif + +#ifdef LIBC_OLD_USE_FORTIFY_LEVEL +#undef __USE_FORTIFY_LEVEL +#define __USE_FORTIFY_LEVEL LIBC_OLD_USE_FORTIFY_LEVEL +#undef LIBC_OLD_USE_FORTIFY_LEVEL +#endif + +#ifdef LIBC_OLD_USE_EXTERN_INLINES +#define __USE_EXTERN_INLINES +#undef LIBC_OLD_USE_EXTERN_INLINES +#endif + +#endif // LLVM_LIBC_HDR_UNISTD_OVERLAY_H diff --git a/libc/hdr/wchar_macros.h b/libc/hdr/wchar_macros.h new file mode 100644 index 000000000000..8b90768fc3ad --- /dev/null +++ b/libc/hdr/wchar_macros.h @@ -0,0 +1,22 @@ +//===-- Definition of macros from wchar.h ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_WCHAR_MACROS_H +#define LLVM_LIBC_HDR_WCHAR_MACROS_H + +#ifdef LIBC_FULL_BUILD + +#include "include/llvm-libc-macros/wchar-macros.h" + +#else // Overlay mode + +#include "hdr/wchar_overlay.h" + +#endif // LLVM_LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_WCHAR_MACROS_H diff --git a/libc/hdr/wchar_overlay.h b/libc/hdr/wchar_overlay.h new file mode 100644 index 000000000000..52d3a0cc6596 --- /dev/null +++ b/libc/hdr/wchar_overlay.h @@ -0,0 +1,69 @@ +//===-- Including wchar.h in overlay mode ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_HDR_WCHAR_OVERLAY_H +#define LLVM_LIBC_HDR_WCHAR_OVERLAY_H + +#ifdef LIBC_FULL_BUILD +#error "This header should only be included in overlay mode" +#endif + +// Overlay mode + +// glibc <wchar.h> header might provide extern inline definitions for few +// functions, causing external alias errors. They are guarded by +// `__USE_EXTERN_INLINES` macro. We temporarily disable `__USE_EXTERN_INLINES` +// macro by defining `__NO_INLINE__` before including <wchar.h>. +// And the same with `__USE_FORTIFY_LEVEL`, which will be temporarily disabled +// with `_FORTIFY_SOURCE`. + +#ifdef _FORTIFY_SOURCE +#define LIBC_OLD_FORTIFY_SOURCE _FORTIFY_SOURCE +#undef _FORTIFY_SOURCE +#endif + +#ifndef __NO_INLINE__ +#define __NO_INLINE__ 1 +#define LIBC_SET_NO_INLINE +#endif + +#ifdef __USE_EXTERN_INLINES +#define LIBC_OLD_USE_EXTERN_INLINES +#undef __USE_EXTERN_INLINES +#endif + +#ifdef __USE_FORTIFY_LEVEL +#define LIBC_OLD_USE_FORTIFY_LEVEL __USE_FORTIFY_LEVEL +#undef __USE_FORTIFY_LEVEL +#define __USE_FORTIFY_LEVEL 0 +#endif + +#include <wchar.h> + +#ifdef LIBC_OLD_FORTIFY_SOURCE +#define _FORTIFY_SOURCE LIBC_OLD_FORTIFY_SOURCE +#undef LIBC_OLD_FORTIFY_SOURCE +#endif + +#ifdef LIBC_SET_NO_INLINE +#undef __NO_INLINE__ +#undef LIBC_SET_NO_INLINE +#endif + +#ifdef LIBC_OLD_USE_FORTIFY_LEVEL +#undef __USE_FORTIFY_LEVEL +#define __USE_FORTIFY_LEVEL LIBC_OLD_USE_FORTIFY_LEVEL +#undef LIBC_OLD_USE_FORTIFY_LEVEL +#endif + +#ifdef LIBC_OLD_USE_EXTERN_INLINES +#define __USE_EXTERN_INLINES +#undef LIBC_OLD_USE_EXTERN_INLINES +#endif + +#endif // LLVM_LIBC_HDR_WCHAR_OVERLAY_H |
