-
Notifications
You must be signed in to change notification settings - Fork 14.9k
[libc][annex_k] Add errno_t. #163094
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
[libc][annex_k] Add errno_t. #163094
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
@llvm/pr-subscribers-libc Author: Muhammad Bassiouni (bassiounix) ChangesFull diff: https://github.com/llvm/llvm-project/pull/163094.diff 6 Files Affected:
diff --git a/libc/hdr/types/CMakeLists.txt b/libc/hdr/types/CMakeLists.txt
index 21971a4004760..89414f419a7f0 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 afa90e6c8b655..a6715392fe7a1 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 70da983be9090..670ab71468661 100644
--- a/libc/include/llvm-libc-types/CMakeLists.txt
+++ b/libc/include/llvm-libc-types/CMakeLists.txt
@@ -296,3 +296,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
|
d526d47
to
b00886e
Compare
b841bdd
to
0d3f72e
Compare
be83e0f
to
d405dd7
Compare
11870cc
to
2a3f07f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall LGTM
#ifndef LLVM_LIBC_HDR_TYPES_ERRNO_T_H | ||
#define LLVM_LIBC_HDR_TYPES_ERRNO_T_H | ||
|
||
#define LIBC_HAS_ANNEX_K |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think these guards are necessary since there are equivalent ones inside of the type header.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are not guards. I am defining this macro and undef it to use this type inside the code base to be able to build libc. That's what I understood about the hdr/
includes from the docs. Please correct me if I'm wrong.
9b69087
to
5c7b9a7
Compare
62b1efa
to
1d013b7
Compare
1d013b7
to
b16ae89
Compare
5c7b9a7
to
6442985
Compare
b16ae89
to
dff862b
Compare
6442985
to
8bcde7f
Compare
8bcde7f
to
370104d
Compare
RFC https://discourse.llvm.org/t/rfc-bounds-checking-interfaces-for-llvm-libc/87685
Add
errno_t
type required by Annex K interface in LLVM libc.