[libc-commits] [libc] [libc][RISC-V] Enable additional entrypoints and headers (PR #208927)
Mikhail R. Gadelha via libc-commits
libc-commits at lists.llvm.org
Sat Jul 11 10:00:23 PDT 2026
https://github.com/mikhailramalho created https://github.com/llvm/llvm-project/pull/208927
Bring most of the enabled libs already enabled for x86_64 to riscv.
Also, move two libs in x86_64 entrypoints.txt to keep the file sorted alphabetically.
>From c08ef71828098ff5e96956efd25970d793c6589a Mon Sep 17 00:00:00 2001
From: "Mikhail R. Gadelha" <mikhail at igalia.com>
Date: Tue, 7 Jul 2026 14:29:17 -0300
Subject: [PATCH 1/2] [libc][RISC-V] Enable additional entrypoints and headers
Sync the riscv config closer to x86_64: enable the arpa/inet, wchar,
float16 math, pkey, search, nl_types, localtime, pthread_barrier,
sched_getcpu, dladdr and realpath entrypoints, and move the network
entrypoints out of the full-build-only section. Also fix the sort
order of daddl/ddivl in the x86_64 entrypoint list.
---
libc/config/linux/riscv/entrypoints.txt | 128 +++++++++++++++++++----
libc/config/linux/riscv/headers.txt | 2 +
libc/config/linux/x86_64/entrypoints.txt | 4 +-
3 files changed, 112 insertions(+), 22 deletions(-)
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 90a93715b5d1e..81a3ef9526dbb 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -1,4 +1,13 @@
set(TARGET_LIBC_ENTRYPOINTS
+ # arpa/inet.h entrypoints
+ libc.src.arpa.inet.htonl
+ libc.src.arpa.inet.htons
+ libc.src.arpa.inet.inet_addr
+ libc.src.arpa.inet.inet_aton
+ libc.src.arpa.inet.inet_ntop
+ libc.src.arpa.inet.ntohl
+ libc.src.arpa.inet.ntohs
+
# ctype.h entrypoints
libc.src.ctype.isalnum
libc.src.ctype.isalpha
@@ -18,6 +27,7 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.ctype.toupper
# dlfcn.h entrypoints
+ libc.src.dlfcn.dladdr
libc.src.dlfcn.dlclose
libc.src.dlfcn.dlerror
libc.src.dlfcn.dlopen
@@ -42,10 +52,19 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.fcntl.open
libc.src.fcntl.openat
+ # net/if.h entrypoints
+ libc.src.net.if_indextoname
+ libc.src.net.if_nametoindex
+
+ # netinet/in.h entrypoints
+ libc.src.netinet.in6addr_any
+ libc.src.netinet.in6addr_loopback
+
# poll.h entrypoints
libc.src.poll.poll
# sched.h entrypoints
+ libc.src.sched.getcpu
libc.src.sched.sched_get_priority_max
libc.src.sched.sched_get_priority_min
libc.src.sched.sched_getaffinity
@@ -118,6 +137,8 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.inttypes.imaxdiv
libc.src.inttypes.strtoimax
libc.src.inttypes.strtoumax
+ libc.src.inttypes.wcstoimax
+ libc.src.inttypes.wcstoumax
# libgen.h entrypoints
libc.src.libgen.basename
@@ -231,6 +252,7 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.stdlib.calloc
libc.src.stdlib.free
libc.src.stdlib.malloc
+ libc.src.stdlib.posix_memalign
libc.src.stdlib.realloc
# stdio.h entrypoints
@@ -283,6 +305,11 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.sys.mman.munlock
libc.src.sys.mman.munlockall
libc.src.sys.mman.munmap
+ libc.src.sys.mman.pkey_alloc
+ libc.src.sys.mman.pkey_free
+ libc.src.sys.mman.pkey_get
+ libc.src.sys.mman.pkey_mprotect
+ libc.src.sys.mman.pkey_set
libc.src.sys.mman.remap_file_pages
libc.src.sys.mman.posix_madvise
libc.src.sys.mman.shm_open
@@ -383,6 +410,7 @@ set(TARGET_LIBC_ENTRYPOINTS
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
@@ -395,6 +423,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
@@ -421,7 +450,41 @@ set(TARGET_LIBC_ENTRYPOINTS
# wchar.h entrypoints
libc.src.wchar.btowc
libc.src.wchar.wcslen
+ libc.src.wchar.wcsnlen
libc.src.wchar.wctob
+ libc.src.wchar.wmemmove
+ libc.src.wchar.wmemset
+ libc.src.wchar.wcschr
+ libc.src.wchar.wcsncmp
+ libc.src.wchar.wcsxfrm
+ libc.src.wchar.wcscmp
+ libc.src.wchar.wcscoll
+ libc.src.wchar.wcspbrk
+ libc.src.wchar.wcsrchr
+ libc.src.wchar.wcsspn
+ libc.src.wchar.wcscspn
+ libc.src.wchar.wcsdup
+ libc.src.wchar.wmemcmp
+ libc.src.wchar.wmempcpy
+ libc.src.wchar.wmemcpy
+ libc.src.wchar.wcsncpy
+ libc.src.wchar.wcscat
+ libc.src.wchar.wcsstr
+ libc.src.wchar.wcsncat
+ libc.src.wchar.wcslcat
+ libc.src.wchar.wcscpy
+ libc.src.wchar.wcslcpy
+ libc.src.wchar.wmemchr
+ libc.src.wchar.wcpcpy
+ libc.src.wchar.wcpncpy
+ libc.src.wchar.wcstod
+ libc.src.wchar.wcstof
+ libc.src.wchar.wcstok
+ libc.src.wchar.wcstol
+ libc.src.wchar.wcstold
+ libc.src.wchar.wcstoll
+ libc.src.wchar.wcstoul
+ libc.src.wchar.wcstoull
# wctype.h entrypoints
libc.src.wctype.iswalpha
@@ -734,6 +797,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ufromfpxf
libc.src.math.ufromfpxl
)
+
if(LIBC_TYPES_HAS_CFLOAT16)
list(APPEND TARGET_LIBM_ENTRYPOINTS
# complex.h C23 _Complex _Float16 entrypoints
@@ -752,8 +816,11 @@ if(LIBC_TYPES_HAS_FLOAT16)
libc.src.math.acospif16
libc.src.math.asinf16
libc.src.math.asinhf16
+ libc.src.math.asinpif16
+ libc.src.math.atanf16
libc.src.math.atan2f16
libc.src.math.atanhf16
+ libc.src.math.atanpif16
libc.src.math.canonicalizef16
libc.src.math.cbrtf16
libc.src.math.ceilf16
@@ -882,6 +949,7 @@ if(LIBC_TYPES_HAS_FLOAT128)
list(APPEND TARGET_LIBM_ENTRYPOINTS
# math.h C23 _Float128 entrypoints
libc.src.math.atan2f128
+ libc.src.math.atan2l
libc.src.math.canonicalizef128
libc.src.math.ceilf128
libc.src.math.copysignf128
@@ -1167,23 +1235,6 @@ if(LLVM_LIBC_FULL_BUILD)
libc.src.dirent.readdir
libc.src.dirent.fdopendir
- # arpa/inet.h entrypoints
- libc.src.arpa.inet.htonl
- libc.src.arpa.inet.htons
- libc.src.arpa.inet.inet_addr
- libc.src.arpa.inet.inet_aton
- libc.src.arpa.inet.inet_ntop
- libc.src.arpa.inet.ntohl
- libc.src.arpa.inet.ntohs
-
- # net/if.h entrypoints
- libc.src.net.if_indextoname
- libc.src.net.if_nametoindex
-
- # netinet/in.h entrypoints
- libc.src.netinet.in6addr_any
- libc.src.netinet.in6addr_loopback
-
# pthread.h entrypoints
libc.src.pthread.pthread_atfork
libc.src.pthread.pthread_attr_destroy
@@ -1220,6 +1271,9 @@ if(LLVM_LIBC_FULL_BUILD)
libc.src.pthread.pthread_join
libc.src.pthread.pthread_key_create
libc.src.pthread.pthread_key_delete
+ libc.src.pthread.pthread_barrier_init
+ libc.src.pthread.pthread_barrier_wait
+ libc.src.pthread.pthread_barrier_destroy
libc.src.pthread.pthread_mutex_destroy
libc.src.pthread.pthread_mutex_init
libc.src.pthread.pthread_mutex_lock
@@ -1332,10 +1386,16 @@ if(LLVM_LIBC_FULL_BUILD)
libc.src.stdlib.getenv
libc.src.stdlib.setenv
libc.src.stdlib.unsetenv
+ libc.src.stdlib.mbstowcs
+ libc.src.stdlib.mbtowc
+ libc.src.stdlib.mblen
libc.src.stdlib.quick_exit
+ libc.src.stdlib.wcstombs
+ libc.src.stdlib.wctomb
# signal.h entrypoints
libc.src.signal.kill
+ libc.src.signal.pthread_sigmask
libc.src.signal.raise
libc.src.signal.sigaction
libc.src.signal.sigaddset
@@ -1365,6 +1425,12 @@ if(LLVM_LIBC_FULL_BUILD)
libc.src.search.lfind
libc.src.search.lsearch
libc.src.search.remque
+ libc.src.search.tdelete
+ libc.src.search.tdestroy
+ libc.src.search.tfind
+ libc.src.search.tsearch
+ libc.src.search.twalk
+ libc.src.search.twalk_r
# threads.h entrypoints
libc.src.threads.call_once
@@ -1402,6 +1468,8 @@ if(LLVM_LIBC_FULL_BUILD)
libc.src.time.gettimeofday
libc.src.time.gmtime
libc.src.time.gmtime_r
+ libc.src.time.localtime
+ libc.src.time.localtime_r
libc.src.time.mktime
libc.src.time.nanosleep
libc.src.time.strftime
@@ -1434,10 +1502,15 @@ if(LLVM_LIBC_FULL_BUILD)
# sys/select.h entrypoints
libc.src.sys.select.select
- # link.h entrypoints
- libc.src.link.dl_iterate_phdr
-
# wchar.h entrypoints
+ libc.src.wchar.mbrlen
+ libc.src.wchar.mbsinit
+ libc.src.wchar.mbrtowc
+ libc.src.wchar.mbsrtowcs
+ libc.src.wchar.mbsnrtowcs
+ libc.src.wchar.wcrtomb
+ libc.src.wchar.wcsrtombs
+ libc.src.wchar.wcsnrtombs
libc.src.wchar.fgetwc
libc.src.wchar.fgetws
libc.src.wchar.fputwc
@@ -1448,10 +1521,22 @@ if(LLVM_LIBC_FULL_BUILD)
libc.src.wchar.putwc
libc.src.wchar.putwchar
libc.src.wchar.ungetwc
+
+ # nl_types.h entrypoints
+ libc.src.nl_types.catopen
+ libc.src.nl_types.catclose
+ libc.src.nl_types.catgets
+
+ # link.h entrypoints
+ libc.src.link.dl_iterate_phdr
)
endif()
if(LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS)
+ list(APPEND TARGET_LIBC_ENTRYPOINTS
+ libc.src.stdlib.realpath
+ )
+
if(LLVM_LIBC_FULL_BUILD)
list(APPEND TARGET_LIBC_ENTRYPOINTS
# regex.h entrypoints
@@ -1462,6 +1547,9 @@ if(LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS)
# sys/ptrace.h entrypoints
libc.src.sys.ptrace.ptrace
+
+ # wchar.h entrypoints
+ libc.src.wchar.swprintf
)
endif()
endif()
diff --git a/libc/config/linux/riscv/headers.txt b/libc/config/linux/riscv/headers.txt
index 03bc2abd9ddea..52a213054cf84 100644
--- a/libc/config/linux/riscv/headers.txt
+++ b/libc/config/linux/riscv/headers.txt
@@ -24,6 +24,7 @@ set(TARGET_PUBLIC_HEADERS
libc.include.netinet_in
libc.include.netinet_tcp
libc.include.netinet_udp
+ libc.include.nl_types
libc.include.poll
libc.include.pthread
libc.include.sched
@@ -58,6 +59,7 @@ set(TARGET_PUBLIC_HEADERS
libc.include.sys_time
libc.include.sys_types
libc.include.sys_uio
+ libc.include.sys_un
libc.include.sys_utsname
libc.include.sys_wait
libc.include.syscall
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index bac62464a6c45..1d00b995c85d7 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -596,11 +596,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.cosf
libc.src.math.coshf
libc.src.math.cospif
+ libc.src.math.daddl
+ libc.src.math.ddivl
libc.src.math.dfmal
libc.src.math.dmull
libc.src.math.dsqrtl
- libc.src.math.daddl
- libc.src.math.ddivl
libc.src.math.dsubl
libc.src.math.erff
libc.src.math.exp
>From 1581dee4df226c51f40bab13cdaf3d72e885d2f2 Mon Sep 17 00:00:00 2001
From: "Mikhail R. Gadelha" <mikhail at igalia.com>
Date: Sat, 11 Jul 2026 13:33:52 -0300
Subject: [PATCH 2/2] Add ftok
Signed-off-by: Mikhail R. Gadelha <mikhail at igalia.com>
---
libc/config/linux/riscv/entrypoints.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 81a3ef9526dbb..4395484968baa 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -291,6 +291,9 @@ set(TARGET_LIBC_ENTRYPOINTS
# sys/ioctl.h entrypoints
libc.src.sys.ioctl.ioctl
+ # sys/ipc.h entrypoints
+ libc.src.sys.ipc.ftok
+
# sys/mman.h entrypoints
libc.src.sys.mman.madvise
libc.src.sys.mman.memfd_create
More information about the libc-commits
mailing list