diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt index d7bdfe117d286..48b7ca45157a6 100644 --- a/libc/config/linux/aarch64/entrypoints.txt +++ b/libc/config/linux/aarch64/entrypoints.txt @@ -1080,6 +1080,7 @@ if(LLVM_LIBC_FULL_BUILD) libc.src.stdlib.atexit libc.src.stdlib.exit libc.src.stdlib.getenv + libc.src.stdlib.ignore_handler_s libc.src.stdlib.quick_exit # signal.h entrypoints diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt index 9064e7df400de..0d3ff77d29b74 100644 --- a/libc/config/linux/riscv/entrypoints.txt +++ b/libc/config/linux/riscv/entrypoints.txt @@ -1207,6 +1207,7 @@ if(LLVM_LIBC_FULL_BUILD) libc.src.stdlib.atexit libc.src.stdlib.exit libc.src.stdlib.getenv + libc.src.stdlib.ignore_handler_s libc.src.stdlib.quick_exit # signal.h entrypoints diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt index 0c825bdb19f35..dd94ffb30fa9a 100644 --- a/libc/config/linux/x86_64/entrypoints.txt +++ b/libc/config/linux/x86_64/entrypoints.txt @@ -1246,6 +1246,7 @@ if(LLVM_LIBC_FULL_BUILD) libc.src.stdlib.atexit libc.src.stdlib.exit libc.src.stdlib.getenv + libc.src.stdlib.ignore_handler_s libc.src.stdlib.quick_exit # signal.h entrypoints diff --git a/libc/include/CMakeLists.txt b/libc/include/CMakeLists.txt index 88ebd527a0a69..1834c2c687c99 100644 --- a/libc/include/CMakeLists.txt +++ b/libc/include/CMakeLists.txt @@ -360,6 +360,7 @@ add_header_macro( ../libc/include/stdlib.yaml stdlib.h DEPENDS + .llvm-libc-macros.annex_k_macros .llvm-libc-macros.null_macro .llvm-libc-macros.stdlib_macros .llvm-libc-types.__atexithandler_t diff --git a/libc/include/stdlib.yaml b/libc/include/stdlib.yaml index 050cf246decf6..7c3b113a62415 100644 --- a/libc/include/stdlib.yaml +++ b/libc/include/stdlib.yaml @@ -113,6 +113,15 @@ functions: return_type: char * arguments: - type: const char * + - name: ignore_handler_s + standards: + - stdc + return_type: void + arguments: + - type: const char *__restrict + - type: void *__restrict + - type: errno_t + guard: 'LIBC_HAS_ANNEX_K' - name: labs standards: - stdc diff --git a/libc/src/stdlib/CMakeLists.txt b/libc/src/stdlib/CMakeLists.txt index 8fd149880e2d5..5efd7f13ff3ee 100644 --- a/libc/src/stdlib/CMakeLists.txt +++ b/libc/src/stdlib/CMakeLists.txt @@ -663,3 +663,16 @@ add_entrypoint_object( DEPENDS .${LIBC_TARGET_OS}.system ) + +add_entrypoint_object( + ignore_handler_s + HDRS + ignore_handler_s.h + SRCS + ignore_handler_s.cpp + DEPENDS + libc.hdr.types.errno_t + libc.src.__support.libc_errno + libc.src.__support.macros.config + libc.src.__support.macros.attributes +) diff --git a/libc/src/stdlib/ignore_handler_s.cpp b/libc/src/stdlib/ignore_handler_s.cpp new file mode 100644 index 0000000000000..172b1bcdb7b30 --- /dev/null +++ b/libc/src/stdlib/ignore_handler_s.cpp @@ -0,0 +1,16 @@ +//===-- Implementation header for ignore_handler_s --------------*- C++ -*-===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +#include "src/stdlib/ignore_handler_s.h" + +namespace LIBC_NAMESPACE_DECL { + +LLVM_LIBC_FUNCTION(void, ignore_handler_s, + (const char *__restrict, void *__restrict, errno_t)) {} + +} // namespace LIBC_NAMESPACE_DECL diff --git a/libc/src/stdlib/ignore_handler_s.h b/libc/src/stdlib/ignore_handler_s.h new file mode 100644 index 0000000000000..07328d4be01ce --- /dev/null +++ b/libc/src/stdlib/ignore_handler_s.h @@ -0,0 +1,22 @@ +//===-- Implementation header for ignore_handler_s --------------*- C++ -*-===// +// +// 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_SRC_STDLIB_IGNORE_HANDLER_S_H +#define LLVM_LIBC_SRC_STDLIB_IGNORE_HANDLER_S_H + +#include "hdr/types/errno_t.h" +#include "src/__support/common.h" + +namespace LIBC_NAMESPACE_DECL { + +void ignore_handler_s(const char *__restrict msg, void *__restrict ptr, + errno_t error); + +} // namespace LIBC_NAMESPACE_DECL + +#endif // LLVM_LIBC_SRC_STDLIB_IGNORE_HANDLER_S_H