[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 01:16:26 PDT 2026


https://github.com/labath created https://github.com/llvm/llvm-project/pull/214429

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.

>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] [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
 )



More information about the libc-commits mailing list