[libc-commits] [libc] [libc] Enable unistd.h on linux/arm and aarch64 (PR #214429)
Pavel Labath via libc-commits
libc-commits at lists.llvm.org
Thu Aug 6 03:35:22 PDT 2026
https://github.com/labath updated https://github.com/llvm/llvm-project/pull/214429
>From 7f322519ffc8e456f21234079052365dc0f3764e Mon Sep 17 00:00:00 2001
From: Pavel Labath <pavel at labath.sk>
Date: Thu, 6 Aug 2026 08:14:27 +0000
Subject: [PATCH 1/4] [libc] Enable unistd.h on linux/arm and aarch64
This enables the unistd.h header and all available entry points for linux/arm,
making it consistent with the existing linux/x86_64 and linux/riscv
configurations.
While comparing the unistd entry point lists across architectures, I noticed
that linux/aarch64 was missing chown and getgid. I've added those as well so all
four Linux targets now share the exact same set of unistd entry points.
Assisted by Gemini.
---
libc/config/linux/aarch64/entrypoints.txt | 2 +
libc/config/linux/arm/entrypoints.txt | 64 +++++++++++++++++++++++
libc/config/linux/arm/headers.txt | 2 +
3 files changed, 68 insertions(+)
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 1d5244b9c443e..cd83ce800d0fd 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -376,6 +376,7 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.unistd.alarm
libc.src.unistd.access
libc.src.unistd.chdir
+ libc.src.unistd.chown
libc.src.unistd.close
libc.src.unistd.dup
libc.src.unistd.dup2
@@ -396,6 +397,7 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.unistd.getppid
libc.src.unistd.getsid
libc.src.unistd.gettid
+ libc.src.unistd.getgid
libc.src.unistd.getuid
libc.src.unistd.isatty
libc.src.unistd.link
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index 1986d6a5347dc..ca777aa2b6cf3 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -211,6 +211,57 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.sys.time.setitimer
libc.src.sys.time.getitimer
+ # unistd.h entrypoints
+ libc.src.unistd.alarm
+ libc.src.unistd.access
+ libc.src.unistd.chdir
+ libc.src.unistd.chown
+ libc.src.unistd.close
+ libc.src.unistd.dup
+ libc.src.unistd.dup2
+ libc.src.unistd.dup3
+ libc.src.unistd.execve
+ libc.src.unistd.faccessat
+ libc.src.unistd.fchdir
+ libc.src.unistd.fchown
+ libc.src.unistd.fpathconf
+ libc.src.unistd.fsync
+ libc.src.unistd.ftruncate
+ libc.src.unistd.getcwd
+ libc.src.unistd.getentropy
+ libc.src.unistd.geteuid
+ libc.src.unistd.gethostname
+ libc.src.unistd.getpagesize
+ libc.src.unistd.getpid
+ libc.src.unistd.getppid
+ libc.src.unistd.getsid
+ libc.src.unistd.gettid
+ libc.src.unistd.getgid
+ libc.src.unistd.getuid
+ libc.src.unistd.isatty
+ libc.src.unistd.link
+ libc.src.unistd.linkat
+ libc.src.unistd.lseek
+ libc.src.unistd.pathconf
+ libc.src.unistd.pipe
+ libc.src.unistd.pipe2
+ libc.src.unistd.pread
+ libc.src.unistd.pwrite
+ libc.src.unistd.read
+ libc.src.unistd.readlink
+ libc.src.unistd.readlinkat
+ libc.src.unistd.rmdir
+ libc.src.unistd.setsid
+ libc.src.unistd.sleep
+ libc.src.unistd.symlink
+ libc.src.unistd.symlinkat
+ libc.src.unistd.sysconf
+ libc.src.unistd.truncate
+ libc.src.unistd.unlink
+ libc.src.unistd.unlinkat
+ libc.src.unistd.usleep
+ libc.src.unistd.write
+
# wctype.h entrypoints
libc.src.wctype.iswalpha
libc.src.wctype.iswgraph
@@ -245,6 +296,19 @@ if(LLVM_LIBC_FULL_BUILD)
libc.src.dirent.opendir
libc.src.dirent.readdir
libc.src.dirent.fdopendir
+
+ # unistd.h entrypoints
+ libc.src.unistd.__llvm_libc_syscall
+ libc.src.unistd._exit
+ libc.src.unistd.environ
+ libc.src.unistd.execv
+ libc.src.unistd.fork
+ libc.src.unistd.getopt
+ libc.src.unistd.optarg
+ libc.src.unistd.opterr
+ libc.src.unistd.optind
+ libc.src.unistd.optopt
+ libc.src.unistd.swab
)
endif()
diff --git a/libc/config/linux/arm/headers.txt b/libc/config/linux/arm/headers.txt
index 42580bfb10b2a..193229b266479 100644
--- a/libc/config/linux/arm/headers.txt
+++ b/libc/config/linux/arm/headers.txt
@@ -22,10 +22,12 @@ set(TARGET_PUBLIC_HEADERS
libc.include.strings
libc.include.pwd
libc.include.uchar
+ libc.include.unistd
libc.include.wchar
libc.include.wctype
libc.include.sys_param
libc.include.sys_personality
+ libc.include.sys_unistd
# Disabled due to epoll_wait syscalls not being available on this platform.
# libc.include.sys_epoll
)
>From b9ff2f0ffc130d34cccd79e8a0d1b85df616d34d Mon Sep 17 00:00:00 2001
From: Pavel Labath <pavel at labath.sk>
Date: Thu, 6 Aug 2026 09:24:41 +0000
Subject: [PATCH 2/4] remove fpathconf
---
libc/config/linux/arm/entrypoints.txt | 1 -
1 file changed, 1 deletion(-)
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index ca777aa2b6cf3..4b18b64b08a08 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -224,7 +224,6 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.unistd.faccessat
libc.src.unistd.fchdir
libc.src.unistd.fchown
- libc.src.unistd.fpathconf
libc.src.unistd.fsync
libc.src.unistd.ftruncate
libc.src.unistd.getcwd
>From 48f7f03c67f7ee8ec780087f871d6393d634a527 Mon Sep 17 00:00:00 2001
From: Pavel Labath <pavel at labath.sk>
Date: Thu, 6 Aug 2026 09:35:14 +0000
Subject: [PATCH 3/4] -pathconf, -pwread, -pwrite
---
libc/config/linux/arm/entrypoints.txt | 3 ---
1 file changed, 3 deletions(-)
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index 4b18b64b08a08..167f5050b3f9e 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -241,11 +241,8 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.unistd.link
libc.src.unistd.linkat
libc.src.unistd.lseek
- libc.src.unistd.pathconf
libc.src.unistd.pipe
libc.src.unistd.pipe2
- libc.src.unistd.pread
- libc.src.unistd.pwrite
libc.src.unistd.read
libc.src.unistd.readlink
libc.src.unistd.readlinkat
>From a8229a5b7607ade58efe51f97b96ba5f45fc1c38 Mon Sep 17 00:00:00 2001
From: Pavel Labath <pavel at labath.sk>
Date: Thu, 6 Aug 2026 10:34:51 +0000
Subject: [PATCH 4/4] -(u)sleep
---
libc/config/linux/arm/entrypoints.txt | 2 --
1 file changed, 2 deletions(-)
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index 167f5050b3f9e..4af6a814df5c6 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -248,14 +248,12 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.unistd.readlinkat
libc.src.unistd.rmdir
libc.src.unistd.setsid
- libc.src.unistd.sleep
libc.src.unistd.symlink
libc.src.unistd.symlinkat
libc.src.unistd.sysconf
libc.src.unistd.truncate
libc.src.unistd.unlink
libc.src.unistd.unlinkat
- libc.src.unistd.usleep
libc.src.unistd.write
# wctype.h entrypoints
More information about the libc-commits
mailing list