https://github.com/bassiounix updated https://github.com/llvm/llvm-project/pull/163094
>From cbdd3a2a7488626bc483e278ebe72dbc6d164019 Mon Sep 17 00:00:00 2001 From: bassiounix <[email protected]> Date: Sun, 12 Oct 2025 22:18:17 +0300 Subject: [PATCH 1/5] [libc][annex_k] Add errno_t. --- libc/hdr/types/CMakeLists.txt | 9 +++++++++ libc/hdr/types/errno_t.h | 18 ++++++++++++++++++ libc/include/CMakeLists.txt | 1 + libc/include/errno.h.def | 2 ++ libc/include/llvm-libc-types/CMakeLists.txt | 2 ++ libc/include/llvm-libc-types/errno_t.h | 18 ++++++++++++++++++ 6 files changed, 50 insertions(+) create mode 100644 libc/hdr/types/errno_t.h create mode 100644 libc/include/llvm-libc-types/errno_t.h diff --git a/libc/hdr/types/CMakeLists.txt b/libc/hdr/types/CMakeLists.txt index 225843924c243..8ec2926ee16fc 100644 --- a/libc/hdr/types/CMakeLists.txt +++ b/libc/hdr/types/CMakeLists.txt @@ -162,6 +162,15 @@ add_proxy_header_library( libc.include.fcntl ) +add_proxy_header_library( + errno_t + HDRS + errno_t.h + FULL_BUILD_DEPENDS + libc.include.llvm-libc-types.errno_t + libc.include.errno +) + add_proxy_header_library( fenv_t HDRS diff --git a/libc/hdr/types/errno_t.h b/libc/hdr/types/errno_t.h new file mode 100644 index 0000000000000..91706b05c9155 --- /dev/null +++ b/libc/hdr/types/errno_t.h @@ -0,0 +1,18 @@ +//===-- Proxy for errno_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_ERRNO_T_H +#define LLVM_LIBC_HDR_TYPES_ERRNO_T_H + +#define LIBC_HAS_ANNEX_K + +#include "include/llvm-libc-types/errno_t.h" + +#undef LIBC_HAS_ANNEX_K + +#endif // LLVM_LIBC_HDR_TYPES_ERRNO_T_H diff --git a/libc/include/CMakeLists.txt b/libc/include/CMakeLists.txt index 81360aac984e0..c70d1190e8342 100644 --- a/libc/include/CMakeLists.txt +++ b/libc/include/CMakeLists.txt @@ -302,6 +302,7 @@ add_header_macro( DEPENDS .llvm-libc-macros.generic_error_number_macros .llvm-libc-macros.error_number_macros + .llvm-libc-types.errno_t ) add_header_macro( diff --git a/libc/include/errno.h.def b/libc/include/errno.h.def index aa1f6c9e48444..35341c60e38b2 100644 --- a/libc/include/errno.h.def +++ b/libc/include/errno.h.def @@ -33,4 +33,6 @@ __END_C_DECLS #define errno (*__llvm_libc_errno()) +#include "llvm-libc-types/errno_t.h" + #endif // LLVM_LIBC_ERRNO_H diff --git a/libc/include/llvm-libc-types/CMakeLists.txt b/libc/include/llvm-libc-types/CMakeLists.txt index 5f506c4d25c9b..cfd0eabc42d5e 100644 --- a/libc/include/llvm-libc-types/CMakeLists.txt +++ b/libc/include/llvm-libc-types/CMakeLists.txt @@ -298,3 +298,5 @@ add_header(EFI_SYSTEM_TABLE .EFI_TABLE_HEADER .char16_t ) + +add_header(errno_t HDR errno_t.h) diff --git a/libc/include/llvm-libc-types/errno_t.h b/libc/include/llvm-libc-types/errno_t.h new file mode 100644 index 0000000000000..f99fe1266ccd1 --- /dev/null +++ b/libc/include/llvm-libc-types/errno_t.h @@ -0,0 +1,18 @@ +//===-- Definition of type errno_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_INCLUDE_LLVM_LIBC_TYPES_ERRNO_T_H +#define LLVM_LIBC_INCLUDE_LLVM_LIBC_TYPES_ERRNO_T_H + +#ifdef LIBC_HAS_ANNEX_K + +typedef int errno_t; + +#endif // LIBC_HAS_ANNEX_K + +#endif // LLVM_LIBC_INCLUDE_LLVM_LIBC_TYPES_ERRNO_T_H >From 87b39d1ef40d82eb9371433b789444e328d83ba8 Mon Sep 17 00:00:00 2001 From: bassiounix <[email protected]> Date: Tue, 14 Oct 2025 00:44:08 +0300 Subject: [PATCH 2/5] change location of errno_t --- libc/include/llvm-libc-types/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libc/include/llvm-libc-types/CMakeLists.txt b/libc/include/llvm-libc-types/CMakeLists.txt index cfd0eabc42d5e..e8b3ae8c08a90 100644 --- a/libc/include/llvm-libc-types/CMakeLists.txt +++ b/libc/include/llvm-libc-types/CMakeLists.txt @@ -29,6 +29,7 @@ add_header(double_t HDR double_t.h) add_header(DIR HDR DIR.h) add_header(dev_t HDR dev_t.h) add_header(div_t HDR div_t.h) +add_header(errno_t HDR errno_t.h) add_header(ldiv_t HDR ldiv_t.h) add_header(lldiv_t HDR lldiv_t.h) add_header(FILE HDR FILE.h) @@ -298,5 +299,3 @@ add_header(EFI_SYSTEM_TABLE .EFI_TABLE_HEADER .char16_t ) - -add_header(errno_t HDR errno_t.h) >From b58b8913b25935288deb17ce347708196591c68b Mon Sep 17 00:00:00 2001 From: bassiounix <[email protected]> Date: Fri, 17 Oct 2025 01:17:20 +0300 Subject: [PATCH 3/5] add clarifying comment about LIBC_HAS_ANNEX_K --- libc/include/llvm-libc-types/errno_t.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libc/include/llvm-libc-types/errno_t.h b/libc/include/llvm-libc-types/errno_t.h index f99fe1266ccd1..a37b5dece2c35 100644 --- a/libc/include/llvm-libc-types/errno_t.h +++ b/libc/include/llvm-libc-types/errno_t.h @@ -9,6 +9,9 @@ #ifndef LLVM_LIBC_INCLUDE_LLVM_LIBC_TYPES_ERRNO_T_H #define LLVM_LIBC_INCLUDE_LLVM_LIBC_TYPES_ERRNO_T_H +// LIBC_HAS_ANNEX_K is a necessary check guard here because errno_t is only +// defined when Annex K is enabled. We use LIBC_HAS_ANNEX_K internally to +// indicate whether Annex K is enabled or not. #ifdef LIBC_HAS_ANNEX_K typedef int errno_t; >From 160069a79f2984a5eee2d1011eaa7a72181edb36 Mon Sep 17 00:00:00 2001 From: bassiounix <[email protected]> Date: Fri, 17 Oct 2025 01:57:02 +0300 Subject: [PATCH 4/5] add errno_t to hdrgen --- libc/include/errno.h.def | 2 -- libc/include/errno.yaml | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/libc/include/errno.h.def b/libc/include/errno.h.def index 35341c60e38b2..aa1f6c9e48444 100644 --- a/libc/include/errno.h.def +++ b/libc/include/errno.h.def @@ -33,6 +33,4 @@ __END_C_DECLS #define errno (*__llvm_libc_errno()) -#include "llvm-libc-types/errno_t.h" - #endif // LLVM_LIBC_ERRNO_H diff --git a/libc/include/errno.yaml b/libc/include/errno.yaml index 188a9fa1211a1..86afd2f03b20c 100644 --- a/libc/include/errno.yaml +++ b/libc/include/errno.yaml @@ -5,7 +5,8 @@ standards: - Linux - POSIX macros: [] -types: [] +types: + - type_name: errno_t enums: [] objects: [] functions: [] >From 5c7b9a77a96133fe2971bc548afef40072e85c4d Mon Sep 17 00:00:00 2001 From: bassiounix <[email protected]> Date: Fri, 17 Oct 2025 02:06:05 +0300 Subject: [PATCH 5/5] change clarifying comment --- libc/include/llvm-libc-types/errno_t.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libc/include/llvm-libc-types/errno_t.h b/libc/include/llvm-libc-types/errno_t.h index a37b5dece2c35..e2c544ad19532 100644 --- a/libc/include/llvm-libc-types/errno_t.h +++ b/libc/include/llvm-libc-types/errno_t.h @@ -9,9 +9,12 @@ #ifndef LLVM_LIBC_INCLUDE_LLVM_LIBC_TYPES_ERRNO_T_H #define LLVM_LIBC_INCLUDE_LLVM_LIBC_TYPES_ERRNO_T_H -// LIBC_HAS_ANNEX_K is a necessary check guard here because errno_t is only -// defined when Annex K is enabled. We use LIBC_HAS_ANNEX_K internally to -// indicate whether Annex K is enabled or not. +// LIBC_HAS_ANNEX_K is used to check whether C11 Annex K (the optional +// “Bounds-checking interfaces”) is enabled in this libc implementation. Annex K +// introduces additional types and functions, including `errno_t` (a typedef +// used by the *_s functions). Since `errno_t` is *not defined* in the standard +// library unless Annex K is enabled, we must guard any code that uses it with +// LIBC_HAS_ANNEX_K. #ifdef LIBC_HAS_ANNEX_K typedef int errno_t; _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
