aboutsummaryrefslogtreecommitdiff
path: root/libc/config
diff options
context:
space:
mode:
authorFabian Keßler <fabian_kessler@gmx.de>2024-05-01 00:08:38 +0200
committerGitHub <noreply@github.com>2024-04-30 15:08:38 -0700
commitcd7a7a56fc73c73855036f77a4f69ea90c75c27a (patch)
tree198532b89e3bacd7eca2c9d6ad24349491c4e0ab /libc/config
parent89f833588e573b6b9762bb4eca5b08a5d7bad9c5 (diff)
downloadllvm-cd7a7a56fc73c73855036f77a4f69ea90c75c27a.zip
llvm-cd7a7a56fc73c73855036f77a4f69ea90c75c27a.tar.gz
llvm-cd7a7a56fc73c73855036f77a4f69ea90c75c27a.tar.bz2
Add basic char*_t support for libc (partial WG14 N2653) (#90360)
This PR implements a part of WG14 N2653: - Define C23 char8_t - Define C11 char16_t - Define C11 char32_t Missing goals are: - The type of UTF-8 character literals is changed from unsigned char to char8_t. (Since UTF-8 character literals already have type unsigned char, this is not a semantic change). - New mbrtoc8() and c8rtomb() functions declared in <uchar.h> enable conversions between multibyte characters and UTF-8. - A new ATOMIC_CHAR8_T_LOCK_FREE macro. - A new atomic_char8_t typedef name.
Diffstat (limited to 'libc/config')
-rw-r--r--libc/config/baremetal/api.td7
-rw-r--r--libc/config/linux/aarch64/headers.txt2
-rw-r--r--libc/config/linux/api.td9
-rw-r--r--libc/config/linux/arm/headers.txt2
-rw-r--r--libc/config/linux/riscv/headers.txt1
-rw-r--r--libc/config/linux/x86_64/headers.txt1
6 files changed, 21 insertions, 1 deletions
diff --git a/libc/config/baremetal/api.td b/libc/config/baremetal/api.td
index 25aa06a..a6547d8 100644
--- a/libc/config/baremetal/api.td
+++ b/libc/config/baremetal/api.td
@@ -85,5 +85,10 @@ def TimeAPI : PublicAPI<"time.h"> {
}
def UCharAPI : PublicAPI<"uchar.h"> {
- let Types = ["mbstate_t"];
+ let Types = [
+ "mbstate_t",
+ "char8_t",
+ "char16_t",
+ "char32_t",
+ ];
}
diff --git a/libc/config/linux/aarch64/headers.txt b/libc/config/linux/aarch64/headers.txt
index 47db443..7d25877 100644
--- a/libc/config/linux/aarch64/headers.txt
+++ b/libc/config/linux/aarch64/headers.txt
@@ -25,6 +25,8 @@ set(TARGET_PUBLIC_HEADERS
libc.include.threads
libc.include.time
libc.include.unistd
+ libc.include.wchar
+ libc.include.uchar
libc.include.sys_ioctl
# Disabled due to epoll_wait syscalls not being available on this platform.
diff --git a/libc/config/linux/api.td b/libc/config/linux/api.td
index 7843513..902839b 100644
--- a/libc/config/linux/api.td
+++ b/libc/config/linux/api.td
@@ -206,6 +206,15 @@ def WCharAPI : PublicAPI<"wchar.h"> {
];
}
+def UCharAPI : PublicAPI<"uchar.h"> {
+ let Types = [
+ "mbstate_t",
+ "char8_t",
+ "char16_t",
+ "char32_t",
+ ];
+}
+
def SysRandomAPI : PublicAPI<"sys/random.h"> {
let Types = ["size_t", "ssize_t"];
}
diff --git a/libc/config/linux/arm/headers.txt b/libc/config/linux/arm/headers.txt
index 307bb6b..1180564 100644
--- a/libc/config/linux/arm/headers.txt
+++ b/libc/config/linux/arm/headers.txt
@@ -12,6 +12,8 @@ set(TARGET_PUBLIC_HEADERS
libc.include.string
libc.include.strings
libc.include.search
+ libc.include.wchar
+ libc.include.uchar
# Disabled due to epoll_wait syscalls not being available on this platform.
# libc.include.sys_epoll
diff --git a/libc/config/linux/riscv/headers.txt b/libc/config/linux/riscv/headers.txt
index c858bcc..da203e98 100644
--- a/libc/config/linux/riscv/headers.txt
+++ b/libc/config/linux/riscv/headers.txt
@@ -28,6 +28,7 @@ set(TARGET_PUBLIC_HEADERS
libc.include.time
libc.include.unistd
libc.include.wchar
+ libc.include.uchar
libc.include.arpa_inet
diff --git a/libc/config/linux/x86_64/headers.txt b/libc/config/linux/x86_64/headers.txt
index e51c793..44d640b 100644
--- a/libc/config/linux/x86_64/headers.txt
+++ b/libc/config/linux/x86_64/headers.txt
@@ -29,6 +29,7 @@ set(TARGET_PUBLIC_HEADERS
libc.include.time
libc.include.unistd
libc.include.wchar
+ libc.include.uchar
libc.include.arpa_inet