[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