(original) (raw)

diff --git a/libc/docs/dev/code_style.rst b/libc/docs/dev/code_style.rst index 22a18b7a4cc1d..ee4e4257c9fa8 100644 --- a/libc/docs/dev/code_style.rst +++ b/libc/docs/dev/code_style.rst @@ -186,3 +186,36 @@ We expect contributions to be free of warnings from the `minimum supported compiler versions`__ (and newer). .. __: https://libc.llvm.org/compiler\_support.html#minimum-supported-versions + +Header Inclusion Policy +======================= + +Because llvm-libc supports +`Overlay Mode `__ and +`Fullbuild Mode `__ care must be +taken when ``#include``'ing certain headers. + +The ``include/`` directory contains public facing headers that users must +consume for fullbuild mode. As such, types defined here will have ABI +implications as these definitions may differ from the underlying system for +overlay mode and are NEVER appropriate to include in ``libc/src/`` without +preprocessor guards for ``LLVM_LIBC_FULL_BUILD``. + +Consider the case where an implementation in ``libc/src/`` may wish to refer to +a ``sigset_t``, what header should be included? ````, ````, +````? + +None of the above. Instead, code under ``src/`` should ``#include +"hdr/types/sigset_t.h"`` which contains preprocessor guards on +``LLVM_LIBC_FULL_BUILD`` to either include the public type (fullbuild mode) or +the underlying system header (overlay mode). + +Implementations in ``libc/src/`` should NOT be ``#include``'ing using ``<>`` or +``"include/*``, except for these "proxy" headers that first check for +``LLVM_LIBC_FULL_BUILD``. + +These "proxy" headers are similarly used when referring to preprocessor +defines. Code under ``libc/src/`` should ``#include`` a proxy header from +``hdr/``, which contains a guard on ``LLVM_LIBC_FULL_BUILD`` to either include +our header from ``libc/include/`` (fullbuild) or the corresponding underlying +system header (overlay). diff --git a/libc/docs/usage_modes.rst b/libc/docs/usage_modes.rst index 11c10623b61db..8e5dcca6e0a75 100644 --- a/libc/docs/usage_modes.rst +++ b/libc/docs/usage_modes.rst @@ -6,6 +6,10 @@ The libc can used in two different modes: #. The **overlay** mode: In this mode, the link order semantics are exploited to overlay implementations from LLVM's libc over the system libc. See - :ref:`overlay_mode` for more information about this mode. + :ref:`overlay_mode` for more information about this mode. In this mode, libc + uses the ABI of the system it's being overlayed onto. Headers are NOT + generated. libllvmlibc.a is the only build artifact. #. The **fullbuild** mode: In this mode, LLVM's libc is used as the only libc for the binary. See :ref:`fullbuild_mode` for information about this mode. + In this mode, libc uses its own ABI. Headers are generated along with a + libc.a. diff --git a/libc/hdr/CMakeLists.txt b/libc/hdr/CMakeLists.txt index 5a1acd9d17ab4..38ef56e3f04c0 100644 --- a/libc/hdr/CMakeLists.txt +++ b/libc/hdr/CMakeLists.txt @@ -40,3 +40,5 @@ add_proxy_header_library( libc.include.llvm-libc-macros.fenv_macros libc.include.fenv ) + +add_subdirectory(types) diff --git a/libc/hdr/types/CMakeLists.txt b/libc/hdr/types/CMakeLists.txt new file mode 100644 index 0000000000000..b685d82fd8cc8 --- /dev/null +++ b/libc/hdr/types/CMakeLists.txt @@ -0,0 +1,23 @@ +add_proxy_header_library( + sigset_t + HDRS + sigset_t.h + FULL_BUILD_DEPENDS + libc.include.llvm-libc-types.sigset_t +) + +add_proxy_header_library( + struct_epoll_event + HDRS + struct_epoll_event.h + FULL_BUILD_DEPENDS + libc.include.llvm-libc-types.struct_epoll_event +) + +add_proxy_header_library( + struct_timespec + HDRS + struct_timespec.h + FULL_BUILD_DEPENDS + libc.include.llvm-libc-types.struct_timespec +) diff --git a/libc/hdr/types/sigset_t.h b/libc/hdr/types/sigset_t.h new file mode 100644 index 0000000000000..695ec3029f686 --- /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 + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_SIGSET_T_H diff --git a/libc/hdr/types/struct_epoll_event.h b/libc/hdr/types/struct_epoll_event.h new file mode 100644 index 0000000000000..5bb98ce05bb28 --- /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 + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_EPOLL_EVENT_H diff --git a/libc/hdr/types/struct_timespec.h b/libc/hdr/types/struct_timespec.h new file mode 100644 index 0000000000000..1f121f3d24d82 --- /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 + +#endif // LIBC_FULL_BUILD + +#endif // LLVM_LIBC_HDR_TYPES_STRUCT_TIMESPEC_H diff --git a/libc/src/signal/linux/CMakeLists.txt b/libc/src/signal/linux/CMakeLists.txt index 77a2453b25a0a..7606b4b21d3dd 100644 --- a/libc/src/signal/linux/CMakeLists.txt +++ b/libc/src/signal/linux/CMakeLists.txt @@ -3,6 +3,8 @@ add_header_library( HDRS signal_utils.h DEPENDS + libc.hdr.types.sigset_t + libc.include.signal libc.include.sys_syscall libc.src.__support.OSUtil.osutil ) @@ -28,7 +30,7 @@ add_entrypoint_object( ../raise.h DEPENDS .signal_utils - libc.include.signal + libc.hdr.types.sigset_t libc.include.sys_syscall libc.src.__support.OSUtil.osutil ) @@ -57,7 +59,7 @@ add_entrypoint_object( ../sigaction.h DEPENDS .__restore - libc.include.signal + libc.hdr.types.sigset_t libc.include.sys_syscall libc.src.__support.OSUtil.osutil libc.src.errno.errno @@ -84,7 +86,7 @@ add_entrypoint_object( ../sigprocmask.h DEPENDS .signal_utils - libc.include.signal + libc.hdr.types.sigset_t libc.include.sys_syscall libc.src.__support.OSUtil.osutil libc.src.errno.errno @@ -98,7 +100,7 @@ add_entrypoint_object( ../sigemptyset.h DEPENDS .signal_utils - libc.include.signal + libc.hdr.types.sigset_t libc.src.errno.errno ) @@ -110,7 +112,7 @@ add_entrypoint_object( ../sigaddset.h DEPENDS .signal_utils - libc.include.signal + libc.hdr.types.sigset_t libc.src.errno.errno ) @@ -133,7 +135,7 @@ add_entrypoint_object( ../sigfillset.h DEPENDS .signal_utils - libc.include.signal + libc.hdr.types.sigset_t libc.src.errno.errno ) @@ -145,6 +147,6 @@ add_entrypoint_object( ../sigdelset.h DEPENDS .signal_utils - libc.include.signal + libc.hdr.types.sigset_t libc.src.errno.errno ) diff --git a/libc/src/signal/linux/raise.cpp b/libc/src/signal/linux/raise.cpp index dd6f5eb4b3575..2250df5478444 100644 --- a/libc/src/signal/linux/raise.cpp +++ b/libc/src/signal/linux/raise.cpp @@ -7,14 +7,15 @@ //===----------------------------------------------------------------------===// #include "src/signal/raise.h" -#include "src/signal/linux/signal_utils.h" +#include "hdr/types/sigset_t.h" #include "src/__support/common.h" +#include "src/signal/linux/signal_utils.h" namespace LIBC_NAMESPACE { LLVM_LIBC_FUNCTION(int, raise, (int sig)) { - ::sigset_t sigset; + sigset_t sigset; block_all_signals(sigset); long pid = LIBC_NAMESPACE::syscall_impl(SYS_getpid); long tid = LIBC_NAMESPACE::syscall_impl(SYS_gettid); diff --git a/libc/src/signal/linux/sigaction.cpp b/libc/src/signal/linux/sigaction.cpp index 7ddc2dc5cbcc7..7b220e5c37f6f 100644 --- a/libc/src/signal/linux/sigaction.cpp +++ b/libc/src/signal/linux/sigaction.cpp @@ -7,12 +7,11 @@ //===----------------------------------------------------------------------===// #include "src/signal/sigaction.h" -#include "src/errno/libc_errno.h" -#include "src/signal/linux/signal_utils.h" +#include "hdr/types/sigset_t.h" #include "src/__support/common.h" - -#include +#include "src/errno/libc_errno.h" +#include "src/signal/linux/signal_utils.h" namespace LIBC_NAMESPACE { diff --git a/libc/src/signal/linux/sigaddset.cpp b/libc/src/signal/linux/sigaddset.cpp index 536391734e058..8fc5d43180e28 100644 --- a/libc/src/signal/linux/sigaddset.cpp +++ b/libc/src/signal/linux/sigaddset.cpp @@ -7,12 +7,12 @@ //===----------------------------------------------------------------------===// #include "src/signal/sigaddset.h" + +#include "hdr/types/sigset_t.h" #include "src/__support/common.h" #include "src/errno/libc_errno.h" #include "src/signal/linux/signal_utils.h" -#include - namespace LIBC_NAMESPACE { LLVM_LIBC_FUNCTION(int, sigaddset, (sigset_t * set, int signum)) { diff --git a/libc/src/signal/linux/sigdelset.cpp b/libc/src/signal/linux/sigdelset.cpp index 5cb645e461cf8..997f4574c05d0 100644 --- a/libc/src/signal/linux/sigdelset.cpp +++ b/libc/src/signal/linux/sigdelset.cpp @@ -7,12 +7,12 @@ //===----------------------------------------------------------------------===// #include "src/signal/sigdelset.h" + +#include "hdr/types/sigset_t.h" #include "src/__support/common.h" #include "src/errno/libc_errno.h" #include "src/signal/linux/signal_utils.h" -#include - namespace LIBC_NAMESPACE { LLVM_LIBC_FUNCTION(int, sigdelset, (sigset_t * set, int signum)) { diff --git a/libc/src/signal/linux/sigfillset.cpp b/libc/src/signal/linux/sigfillset.cpp index e17c85a897ce7..d98bbf7f619cc 100644 --- a/libc/src/signal/linux/sigfillset.cpp +++ b/libc/src/signal/linux/sigfillset.cpp @@ -7,12 +7,12 @@ //===----------------------------------------------------------------------===// #include "src/signal/sigfillset.h" + +#include "hdr/types/sigset_t.h" #include "src/__support/common.h" #include "src/errno/libc_errno.h" #include "src/signal/linux/signal_utils.h" -#include - namespace LIBC_NAMESPACE { LLVM_LIBC_FUNCTION(int, sigfillset, (sigset_t * set)) { diff --git a/libc/src/signal/linux/signal_utils.h b/libc/src/signal/linux/signal_utils.h index 5e9dd9a5c53ab..3fd0cc0b7b459 100644 --- a/libc/src/signal/linux/signal_utils.h +++ b/libc/src/signal/linux/signal_utils.h @@ -9,10 +9,11 @@ #ifndef LLVM_LIBC_SRC_SIGNAL_LINUX_SIGNAL_UTILS_H #define LLVM_LIBC_SRC_SIGNAL_LINUX_SIGNAL_UTILS_H +#include "hdr/types/sigset_t.h" #include "src/__support/OSUtil/syscall.h" // For internal syscall function. #include "src/__support/common.h" -#include +#include // sigaction #include #include // For syscall numbers. diff --git a/libc/src/signal/linux/sigprocmask.cpp b/libc/src/signal/linux/sigprocmask.cpp index 79a35dd59d75c..0e94efb6400c0 100644 --- a/libc/src/signal/linux/sigprocmask.cpp +++ b/libc/src/signal/linux/sigprocmask.cpp @@ -7,13 +7,13 @@ //===----------------------------------------------------------------------===// #include "src/signal/sigprocmask.h" + +#include "hdr/types/sigset_t.h" #include "src/__support/OSUtil/syscall.h" // For internal syscall function. +#include "src/__support/common.h" #include "src/errno/libc_errno.h" #include "src/signal/linux/signal_utils.h" -#include "src/__support/common.h" - -#include #include // For syscall numbers. namespace LIBC_NAMESPACE { diff --git a/libc/src/signal/sigaddset.h b/libc/src/signal/sigaddset.h index 626eb20a295c8..c703b46bc6059 100644 --- a/libc/src/signal/sigaddset.h +++ b/libc/src/signal/sigaddset.h @@ -9,7 +9,7 @@ #ifndef LLVM_LIBC_SRC_SIGNAL_SIGADDSET_H #define LLVM_LIBC_SRC_SIGNAL_SIGADDSET_H -#include +#include "hdr/types/sigset_t.h" namespace LIBC_NAMESPACE { diff --git a/libc/src/signal/sigdelset.h b/libc/src/signal/sigdelset.h index c4fdb9975fa3d..7bdb6e6d18fdd 100644 --- a/libc/src/signal/sigdelset.h +++ b/libc/src/signal/sigdelset.h @@ -9,7 +9,7 @@ #ifndef LLVM_LIBC_SRC_SIGNAL_SIGDELSET_H #define LLVM_LIBC_SRC_SIGNAL_SIGDELSET_H -#include +#include "hdr/types/sigset_t.h" namespace LIBC_NAMESPACE { diff --git a/libc/src/signal/sigemptyset.h b/libc/src/signal/sigemptyset.h index f3763d1f4f3d4..661fd33b888e0 100644 --- a/libc/src/signal/sigemptyset.h +++ b/libc/src/signal/sigemptyset.h @@ -9,7 +9,7 @@ #ifndef LLVM_LIBC_SRC_SIGNAL_SIGEMPTYSET_H #define LLVM_LIBC_SRC_SIGNAL_SIGEMPTYSET_H -#include +#include "hdr/types/sigset_t.h" namespace LIBC_NAMESPACE { diff --git a/libc/src/signal/sigfillset.h b/libc/src/signal/sigfillset.h index d8e3168871ea8..2849aacf953b1 100644 --- a/libc/src/signal/sigfillset.h +++ b/libc/src/signal/sigfillset.h @@ -9,7 +9,7 @@ #ifndef LLVM_LIBC_SRC_SIGNAL_SIGFILLSET_H #define LLVM_LIBC_SRC_SIGNAL_SIGFILLSET_H -#include +#include "hdr/types/sigset_t.h" namespace LIBC_NAMESPACE { diff --git a/libc/src/signal/sigprocmask.h b/libc/src/signal/sigprocmask.h index e0658860579e4..8569578eb68ca 100644 --- a/libc/src/signal/sigprocmask.h +++ b/libc/src/signal/sigprocmask.h @@ -9,7 +9,7 @@ #ifndef LLVM_LIBC_SRC_SIGNAL_SIGPROCMASK_H #define LLVM_LIBC_SRC_SIGNAL_SIGPROCMASK_H -#include +#include "hdr/types/sigset_t.h" namespace LIBC_NAMESPACE { diff --git a/libc/src/sys/epoll/epoll_pwait.h b/libc/src/sys/epoll/epoll_pwait.h index 9dcb55533009f..801aa97610001 100644 --- a/libc/src/sys/epoll/epoll_pwait.h +++ b/libc/src/sys/epoll/epoll_pwait.h @@ -9,11 +9,8 @@ #ifndef LLVM_LIBC_SRC_SYS_EPOLL_EPOLL_PWAIT_H #define LLVM_LIBC_SRC_SYS_EPOLL_EPOLL_PWAIT_H -// TODO: Use this include once the include headers are also using quotes. -// #include "include/llvm-libc-types/sigset_t.h" -// #include "include/llvm-libc-types/struct_epoll_event.h" - -#include +#include "hdr/types/sigset_t.h" +#include "hdr/types/struct_epoll_event.h" namespace LIBC_NAMESPACE { diff --git a/libc/src/sys/epoll/epoll_pwait2.h b/libc/src/sys/epoll/epoll_pwait2.h index 622ede6a0f9f9..7fc528b2fd25d 100644 --- a/libc/src/sys/epoll/epoll_pwait2.h +++ b/libc/src/sys/epoll/epoll_pwait2.h @@ -9,12 +9,9 @@ #ifndef LLVM_LIBC_SRC_SYS_EPOLL_EPOLL_PWAIT2_H #define LLVM_LIBC_SRC_SYS_EPOLL_EPOLL_PWAIT2_H -// TODO: Use this include once the include headers are also using quotes. -// #include "include/llvm-libc-types/sigset_t.h" -// #include "include/llvm-libc-types/struct_epoll_event.h" -// #include "include/llvm-libc-types/struct_timespec.h" - -#include +#include "hdr/types/sigset_t.h" +#include "hdr/types/struct_epoll_event.h" +#include "hdr/types/struct_timespec.h" namespace LIBC_NAMESPACE { diff --git a/libc/src/sys/epoll/epoll_wait.h b/libc/src/sys/epoll/epoll_wait.h index d51c9100846ce..b546e91e4c2ee 100644 --- a/libc/src/sys/epoll/epoll_wait.h +++ b/libc/src/sys/epoll/epoll_wait.h @@ -9,10 +9,7 @@ #ifndef LLVM_LIBC_SRC_SYS_EPOLL_EPOLL_WAIT_H #define LLVM_LIBC_SRC_SYS_EPOLL_EPOLL_WAIT_H -// TODO: Use this include once the include headers are also using quotes. -// #include "include/llvm-libc-types/struct_epoll_event.h" - -#include +#include "hdr/types/struct_epoll_event.h" namespace LIBC_NAMESPACE { diff --git a/libc/src/sys/epoll/linux/CMakeLists.txt b/libc/src/sys/epoll/linux/CMakeLists.txt index a27905d962dc5..586aac7055dc1 100644 --- a/libc/src/sys/epoll/linux/CMakeLists.txt +++ b/libc/src/sys/epoll/linux/CMakeLists.txt @@ -5,7 +5,9 @@ add_entrypoint_object( HDRS ../epoll_wait.h DEPENDS - libc.include.sys_epoll + libc.hdr.types.sigset_t + libc.hdr.types.struct_epoll_event + libc.hdr.types.struct_timespec libc.include.sys_syscall libc.src.__support.OSUtil.osutil libc.src.errno.errno @@ -18,7 +20,9 @@ add_entrypoint_object( HDRS ../epoll_pwait.h DEPENDS - libc.include.sys_epoll + libc.hdr.types.sigset_t + libc.hdr.types.struct_epoll_event + libc.hdr.types.struct_timespec libc.include.signal libc.include.sys_syscall libc.src.__support.OSUtil.osutil @@ -32,10 +36,12 @@ add_entrypoint_object( HDRS ../epoll_pwait2.h DEPENDS - libc.include.sys_epoll + libc.hdr.types.sigset_t + libc.hdr.types.struct_epoll_event + libc.hdr.types.struct_timespec libc.include.signal - libc.include.time libc.include.sys_syscall + libc.include.time libc.src.__support.OSUtil.osutil libc.src.errno.errno ) diff --git a/libc/src/sys/epoll/linux/epoll_pwait.cpp b/libc/src/sys/epoll/linux/epoll_pwait.cpp index ee1b4e66e9844..ac012944a9577 100644 --- a/libc/src/sys/epoll/linux/epoll_pwait.cpp +++ b/libc/src/sys/epoll/linux/epoll_pwait.cpp @@ -8,17 +8,13 @@ #include "src/sys/epoll/epoll_pwait.h" +#include "hdr/types/sigset_t.h" +#include "hdr/types/struct_epoll_event.h" #include "src/__support/OSUtil/syscall.h" // For internal syscall function. #include "src/__support/common.h" - #include "src/errno/libc_errno.h" -#include // For syscall numbers. -// TODO: Use this include once the include headers are also using quotes. -// #include "include/llvm-libc-types/sigset_t.h" -// #include "include/llvm-libc-types/struct_epoll_event.h" - -#include +#include // For syscall numbers. namespace LIBC_NAMESPACE { diff --git a/libc/src/sys/epoll/linux/epoll_pwait2.cpp b/libc/src/sys/epoll/linux/epoll_pwait2.cpp index 671dede2a1058..3c42e38deb22b 100644 --- a/libc/src/sys/epoll/linux/epoll_pwait2.cpp +++ b/libc/src/sys/epoll/linux/epoll_pwait2.cpp @@ -8,18 +8,14 @@ #include "src/sys/epoll/epoll_pwait2.h" +#include "hdr/types/sigset_t.h" +#include "hdr/types/struct_epoll_event.h" +#include "hdr/types/struct_timespec.h" #include "src/__support/OSUtil/syscall.h" // For internal syscall function. #include "src/__support/common.h" - #include "src/errno/libc_errno.h" -#include // For syscall numbers. -// TODO: Use this include once the include headers are also using quotes. -// #include "include/llvm-libc-types/sigset_t.h" -// #include "include/llvm-libc-types/struct_epoll_event.h" -// #include "include/llvm-libc-types/struct_timespec.h" - -#include +#include // For syscall numbers. namespace LIBC_NAMESPACE { diff --git a/libc/src/sys/epoll/linux/epoll_wait.cpp b/libc/src/sys/epoll/linux/epoll_wait.cpp index 0c43edf764545..18dd6e2b83543 100644 --- a/libc/src/sys/epoll/linux/epoll_wait.cpp +++ b/libc/src/sys/epoll/linux/epoll_wait.cpp @@ -8,16 +8,13 @@ #include "src/sys/epoll/epoll_wait.h" +#include "hdr/types/sigset_t.h" +#include "hdr/types/struct_epoll_event.h" #include "src/__support/OSUtil/syscall.h" // For internal syscall function. #include "src/__support/common.h" #include "src/errno/libc_errno.h" -#include // For syscall numbers. - -// TODO: Use this include once the include headers are also using quotes. -// #include "include/llvm-libc-types/sigset_t.h" -// #include "include/llvm-libc-types/struct_epoll_event.h" -#include +#include // For syscall numbers. namespace LIBC_NAMESPACE { diff --git a/libc/src/sys/select/linux/select.cpp b/libc/src/sys/select/linux/select.cpp index 3f387c14ec560..9034b75e5c29e 100644 --- a/libc/src/sys/select/linux/select.cpp +++ b/libc/src/sys/select/linux/select.cpp @@ -8,14 +8,14 @@ #include "src/sys/select/select.h" +#include "hdr/types/sigset_t.h" +#include "hdr/types/struct_timespec.h" #include "src/__support/CPP/limits.h" #include "src/__support/OSUtil/syscall.h" // For internal syscall function. #include "src/__support/common.h" - #include "src/errno/libc_errno.h" -#include -#include // For size_t -#include + +#include // For size_t #include // For syscall numbers. namespace LIBC_NAMESPACE { diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel index d38dc3029f74f..c61904a967117 100644 --- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel @@ -3417,6 +3417,15 @@ libc_function( ############################## sys/epoll targets ############################### +libc_support_library( + name = "types_sigset_t", + hdrs = ["hdr/types/sigset_t.h"], +) +libc_support_library( + name = "types_struct_epoll_event", + hdrs = ["hdr/types/struct_epoll_event.h"], +) + libc_function( name = "epoll_wait", srcs = ["src/sys/epoll/linux/epoll_wait.cpp"], @@ -3429,6 +3438,8 @@ libc_function( deps = [ ":__support_osutil_syscall", ":errno", + ":types_sigset_t", + ":types_struct_epoll_event", ], ) @@ -3444,6 +3455,8 @@ libc_function( deps = [ ":__support_osutil_syscall", ":errno", + ":types_sigset_t", + ":types_struct_epoll_event", ], )