Skip to content

Conversation

@bojle
Copy link
Contributor

@bojle bojle commented Nov 4, 2025

No description provided.

@llvmbot llvmbot added the libc label Nov 4, 2025
@llvmbot
Copy link
Member

llvmbot commented Nov 4, 2025

@llvm/pr-subscribers-libc

Author: Shreeyash Pandey (bojle)

Changes

Patch is 22.17 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/166357.diff

11 Files Affected:

  • (modified) libc/config/darwin/aarch64/entrypoints.txt (+1)
  • (modified) libc/include/sys/syscall.h.def (+2-3)
  • (modified) libc/src/__support/OSUtil/darwin/CMakeLists.txt (+5-2)
  • (modified) libc/src/__support/OSUtil/darwin/aarch64/CMakeLists.txt (+1-1)
  • (modified) libc/src/__support/OSUtil/darwin/aarch64/syscall.h (+561)
  • (added) libc/src/__support/OSUtil/darwin/exit.cpp (+24)
  • (modified) libc/test/UnitTest/CMakeLists.txt (+1-1)
  • (modified) libc/test/UnitTest/ExecuteFunctionUnix.cpp (+1-3)
  • (modified) libc/test/src/stdlib/CMakeLists.txt (+13)
  • (modified) libc/test/src/stdlib/_Exit_test.cpp (-4)
  • (added) libc/test/src/stdlib/exit_test.cpp (+19)
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt index e3c6c2b30c415..3909417f9730d 100644 --- a/libc/config/darwin/aarch64/entrypoints.txt +++ b/libc/config/darwin/aarch64/entrypoints.txt @@ -111,6 +111,7 @@ if(LLVM_LIBC_FULL_BUILD) libc.src.setjmp.setjmp libc.src.setjmp.siglongjmp libc.src.setjmp.sigsetjmp + libc.src.stdlib._Exit ) endif() diff --git a/libc/include/sys/syscall.h.def b/libc/include/sys/syscall.h.def index 60e5024e500e3..bb55c4fd1efea 100644 --- a/libc/include/sys/syscall.h.def +++ b/libc/include/sys/syscall.h.def @@ -9,8 +9,7 @@ #ifndef LLVM_LIBC_SYS_SYSCALL_H #define LLVM_LIBC_SYS_SYSCALL_H -//TODO: Handle non-linux syscalls - +#if defined(__linux__) #include <asm/unistd.h> #ifdef __NR_FAST_atomic_update @@ -2361,5 +2360,5 @@ #define SYS_writev __NR_writev #endif - +#endif #endif // LLVM_LIBC_SYS_SYSCALL_H diff --git a/libc/src/__support/OSUtil/darwin/CMakeLists.txt b/libc/src/__support/OSUtil/darwin/CMakeLists.txt index 4241bb37684f7..9e69bf7d0cbab 100644 --- a/libc/src/__support/OSUtil/darwin/CMakeLists.txt +++ b/libc/src/__support/OSUtil/darwin/CMakeLists.txt @@ -4,13 +4,16 @@ endif() add_subdirectory(${LIBC_TARGET_ARCHITECTURE}) -add_header_library( +add_object_library( darwin_util + SRCS + exit.cpp HDRS io.h syscall.h DEPENDS - .${LIBC_TARGET_ARCHITECTURE}.darwin_util + .${LIBC_TARGET_ARCHITECTURE}.darwin_${LIBC_TARGET_ARCHITECTURE}_util libc.src.__support.common libc.src.__support.CPP.string_view + libc.include.sys_syscall ) diff --git a/libc/src/__support/OSUtil/darwin/aarch64/CMakeLists.txt b/libc/src/__support/OSUtil/darwin/aarch64/CMakeLists.txt index 5ab95b01758c8..b36fe22017f34 100644 --- a/libc/src/__support/OSUtil/darwin/aarch64/CMakeLists.txt +++ b/libc/src/__support/OSUtil/darwin/aarch64/CMakeLists.txt @@ -1,5 +1,5 @@ add_header_library( - darwin_util + darwin_aarch64_util HDRS syscall.h DEPENDS diff --git a/libc/src/__support/OSUtil/darwin/aarch64/syscall.h b/libc/src/__support/OSUtil/darwin/aarch64/syscall.h index dc98c07a8ba33..6cbbd11a79ae3 100644 --- a/libc/src/__support/OSUtil/darwin/aarch64/syscall.h +++ b/libc/src/__support/OSUtil/darwin/aarch64/syscall.h @@ -110,4 +110,565 @@ LIBC_INLINE long syscall_impl(long number, long arg1, long arg2, long arg3, #undef REGISTER_CONSTRAINT_5 #undef REGISTER_CONSTRAINT_6 +#define SYS_syscall 0 +#define SYS_exit 1 +#define SYS_fork 2 +#define SYS_read 3 +#define SYS_write 4 +#define SYS_open 5 +#define SYS_close 6 +#define SYS_wait4 7 +/* 8 old creat */ +#define SYS_link 9 +#define SYS_unlink 10 +/* 11 old execv */ +#define SYS_chdir 12 +#define SYS_fchdir 13 +#define SYS_mknod 14 +#define SYS_chmod 15 +#define SYS_chown 16 +/* 17 old break */ +#define SYS_getfsstat 18 +/* 19 old lseek */ +#define SYS_getpid 20 +/* 21 old mount */ +/* 22 old umount */ +#define SYS_setuid 23 +#define SYS_getuid 24 +#define SYS_geteuid 25 +#define SYS_ptrace 26 +#define SYS_recvmsg 27 +#define SYS_sendmsg 28 +#define SYS_recvfrom 29 +#define SYS_accept 30 +#define SYS_getpeername 31 +#define SYS_getsockname 32 +#define SYS_access 33 +#define SYS_chflags 34 +#define SYS_fchflags 35 +#define SYS_sync 36 +#define SYS_kill 37 +#define SYS_crossarch_trap 38 +#define SYS_getppid 39 +/* 40 old lstat */ +#define SYS_dup 41 +#define SYS_pipe 42 +#define SYS_getegid 43 +/* 44 old profil */ +/* 45 old ktrace */ +#define SYS_sigaction 46 +#define SYS_getgid 47 +#define SYS_sigprocmask 48 +#define SYS_getlogin 49 +#define SYS_setlogin 50 +#define SYS_acct 51 +#define SYS_sigpending 52 +#define SYS_sigaltstack 53 +#define SYS_ioctl 54 +#define SYS_reboot 55 +#define SYS_revoke 56 +#define SYS_symlink 57 +#define SYS_readlink 58 +#define SYS_execve 59 +#define SYS_umask 60 +#define SYS_chroot 61 +/* 62 old fstat */ +/* 63 used internally and reserved */ +/* 64 old getpagesize */ +#define SYS_msync 65 +#define SYS_vfork 66 +#define SYS_oslog_coproc_reg 67 +#define SYS_oslog_coproc 68 +/* 69 old sbrk */ +/* 70 old sstk */ +/* 71 old mmap */ +/* 72 old vadvise */ +#define SYS_munmap 73 +#define SYS_mprotect 74 +#define SYS_madvise 75 +/* 76 old vhangup */ +/* 77 old vlimit */ +#define SYS_mincore 78 +#define SYS_getgroups 79 +#define SYS_setgroups 80 +#define SYS_getpgrp 81 +#define SYS_setpgid 82 +#define SYS_setitimer 83 +/* 84 old wait */ +#define SYS_swapon 85 +#define SYS_getitimer 86 +/* 87 old gethostname */ +/* 88 old sethostname */ +#define SYS_getdtablesize 89 +#define SYS_dup2 90 +/* 91 old getdopt */ +#define SYS_fcntl 92 +#define SYS_select 93 +/* 94 old setdopt */ +#define SYS_fsync 95 +#define SYS_setpriority 96 +#define SYS_socket 97 +#define SYS_connect 98 +/* 99 old accept */ +#define SYS_getpriority 100 +/* 101 old send */ +/* 102 old recv */ +/* 103 old sigreturn */ +#define SYS_bind 104 +#define SYS_setsockopt 105 +#define SYS_listen 106 +/* 107 old vtimes */ +/* 108 old sigvec */ +/* 109 old sigblock */ +/* 110 old sigsetmask */ +#define SYS_sigsuspend 111 +/* 112 old sigstack */ +/* 113 old recvmsg */ +/* 114 old sendmsg */ +/* 115 old vtrace */ +#define SYS_gettimeofday 116 +#define SYS_getrusage 117 +#define SYS_getsockopt 118 +/* 119 old resuba */ +#define SYS_readv 120 +#define SYS_writev 121 +#define SYS_settimeofday 122 +#define SYS_fchown 123 +#define SYS_fchmod 124 +/* 125 old recvfrom */ +#define SYS_setreuid 126 +#define SYS_setregid 127 +#define SYS_rename 128 +/* 129 old truncate */ +/* 130 old ftruncate */ +#define SYS_flock 131 +#define SYS_mkfifo 132 +#define SYS_sendto 133 +#define SYS_shutdown 134 +#define SYS_socketpair 135 +#define SYS_mkdir 136 +#define SYS_rmdir 137 +#define SYS_utimes 138 +#define SYS_futimes 139 +#define SYS_adjtime 140 +/* 141 old getpeername */ +#define SYS_gethostuuid 142 +/* 143 old sethostid */ +/* 144 old getrlimit */ +/* 145 old setrlimit */ +/* 146 old killpg */ +#define SYS_setsid 147 +/* 148 old setquota */ +/* 149 old qquota */ +/* 150 old getsockname */ +#define SYS_getpgid 151 +#define SYS_setprivexec 152 +#define SYS_pread 153 +#define SYS_pwrite 154 +#define SYS_nfssvc 155 +/* 156 old getdirentries */ +#define SYS_statfs 157 +#define SYS_fstatfs 158 +#define SYS_unmount 159 +/* 160 old async_daemon */ +#define SYS_getfh 161 +/* 162 old getdomainname */ +/* 163 old setdomainname */ +/* 164 */ +#define SYS_quotactl 165 +/* 166 old exportfs */ +#define SYS_mount 167 +/* 168 old ustat */ +#define SYS_csops 169 +#define SYS_csops_audittoken 170 +/* 171 old wait3 */ +/* 172 old rpause */ +#define SYS_waitid 173 +/* 174 old getdents */ +/* 175 old gc_control */ +/* 176 old add_profil */ +#define SYS_kdebug_typefilter 177 +#define SYS_kdebug_trace_string 178 +#define SYS_kdebug_trace64 179 +#define SYS_kdebug_trace 180 +#define SYS_setgid 181 +#define SYS_setegid 182 +#define SYS_seteuid 183 +#define SYS_sigreturn 184 +#define SYS_panic_with_data 185 +#define SYS_thread_selfcounts 186 +#define SYS_fdatasync 187 +#define SYS_stat 188 +#define SYS_fstat 189 +#define SYS_lstat 190 +#define SYS_pathconf 191 +#define SYS_fpathconf 192 +/* 193 old getfsstat */ +#define SYS_getrlimit 194 +#define SYS_setrlimit 195 +#define SYS_getdirentries 196 +#define SYS_mmap 197 +/* 198 old __syscall */ +#define SYS_lseek 199 +#define SYS_truncate 200 +#define SYS_ftruncate 201 +#define SYS_sysctl 202 +#define SYS_mlock 203 +#define SYS_munlock 204 +#define SYS_undelete 205 +/* 206 old ATsocket */ +/* 207 old ATgetmsg */ +/* 208 old ATputmsg */ +/* 209 old ATsndreq */ +/* 210 old ATsndrsp */ +/* 211 old ATgetreq */ +/* 212 old ATgetrsp */ +/* 213 Reserved for AppleTalk */ +/* 214 */ +/* 215 */ +#define SYS_open_dprotected_np 216 +#define SYS_fsgetpath_ext 217 +#define SYS_openat_dprotected_np 218 +/* 219 old fstatv */ +#define SYS_getattrlist 220 +#define SYS_setattrlist 221 +#define SYS_getdirentriesattr 222 +#define SYS_exchangedata 223 +/* 224 old checkuseraccess or fsgetpath */ +#define SYS_searchfs 225 +#define SYS_delete 226 +#define SYS_copyfile 227 +#define SYS_fgetattrlist 228 +#define SYS_fsetattrlist 229 +#define SYS_poll 230 +/* 231 old watchevent */ +/* 232 old waitevent */ +/* 233 old modwatch */ +#define SYS_getxattr 234 +#define SYS_fgetxattr 235 +#define SYS_setxattr 236 +#define SYS_fsetxattr 237 +#define SYS_removexattr 238 +#define SYS_fremovexattr 239 +#define SYS_listxattr 240 +#define SYS_flistxattr 241 +#define SYS_fsctl 242 +#define SYS_initgroups 243 +#define SYS_posix_spawn 244 +#define SYS_ffsctl 245 +/* 246 */ +/* 247 old nfsclnt */ +#define SYS_fhopen 248 +/* 249 */ +#define SYS_minherit 250 +#define SYS_semsys 251 +#define SYS_msgsys 252 +#define SYS_shmsys 253 +#define SYS_semctl 254 +#define SYS_semget 255 +#define SYS_semop 256 +/* 257 old semconfig */ +#define SYS_msgctl 258 +#define SYS_msgget 259 +#define SYS_msgsnd 260 +#define SYS_msgrcv 261 +#define SYS_shmat 262 +#define SYS_shmctl 263 +#define SYS_shmdt 264 +#define SYS_shmget 265 +#define SYS_shm_open 266 +#define SYS_shm_unlink 267 +#define SYS_sem_open 268 +#define SYS_sem_close 269 +#define SYS_sem_unlink 270 +#define SYS_sem_wait 271 +#define SYS_sem_trywait 272 +#define SYS_sem_post 273 +#define SYS_sysctlbyname 274 +/* 275 old sem_init */ +/* 276 old sem_destroy */ +#define SYS_open_extended 277 +#define SYS_umask_extended 278 +#define SYS_stat_extended 279 +#define SYS_lstat_extended 280 +#define SYS_fstat_extended 281 +#define SYS_chmod_extended 282 +#define SYS_fchmod_extended 283 +#define SYS_access_extended 284 +#define SYS_settid 285 +#define SYS_gettid 286 +#define SYS_setsgroups 287 +#define SYS_getsgroups 288 +#define SYS_setwgroups 289 +#define SYS_getwgroups 290 +#define SYS_mkfifo_extended 291 +#define SYS_mkdir_extended 292 +#define SYS_identitysvc 293 +#define SYS_shared_region_check_np 294 +/* 295 old shared_region_map_np */ +#define SYS_vm_pressure_monitor 296 +#define SYS_psynch_rw_longrdlock 297 +#define SYS_psynch_rw_yieldwrlock 298 +#define SYS_psynch_rw_downgrade 299 +#define SYS_psynch_rw_upgrade 300 +#define SYS_psynch_mutexwait 301 +#define SYS_psynch_mutexdrop 302 +#define SYS_psynch_cvbroad 303 +#define SYS_psynch_cvsignal 304 +#define SYS_psynch_cvwait 305 +#define SYS_psynch_rw_rdlock 306 +#define SYS_psynch_rw_wrlock 307 +#define SYS_psynch_rw_unlock 308 +#define SYS_psynch_rw_unlock2 309 +#define SYS_getsid 310 +#define SYS_settid_with_pid 311 +#define SYS_psynch_cvclrprepost 312 +#define SYS_aio_fsync 313 +#define SYS_aio_return 314 +#define SYS_aio_suspend 315 +#define SYS_aio_cancel 316 +#define SYS_aio_error 317 +#define SYS_aio_read 318 +#define SYS_aio_write 319 +#define SYS_lio_listio 320 +/* 321 old __pthread_cond_wait */ +#define SYS_iopolicysys 322 +#define SYS_process_policy 323 +#define SYS_mlockall 324 +#define SYS_munlockall 325 +/* 326 */ +#define SYS_issetugid 327 +#define SYS___pthread_kill 328 +#define SYS___pthread_sigmask 329 +#define SYS___sigwait 330 +#define SYS___disable_threadsignal 331 +#define SYS___pthread_markcancel 332 +#define SYS___pthread_canceled 333 +#define SYS___semwait_signal 334 +/* 335 old utrace */ +#define SYS_proc_info 336 +#define SYS_sendfile 337 +#define SYS_stat64 338 +#define SYS_fstat64 339 +#define SYS_lstat64 340 +#define SYS_stat64_extended 341 +#define SYS_lstat64_extended 342 +#define SYS_fstat64_extended 343 +#define SYS_getdirentries64 344 +#define SYS_statfs64 345 +#define SYS_fstatfs64 346 +#define SYS_getfsstat64 347 +#define SYS___pthread_chdir 348 +#define SYS___pthread_fchdir 349 +#define SYS_audit 350 +#define SYS_auditon 351 +/* 352 */ +#define SYS_getauid 353 +#define SYS_setauid 354 +/* 355 old getaudit */ +/* 356 old setaudit */ +#define SYS_getaudit_addr 357 +#define SYS_setaudit_addr 358 +#define SYS_auditctl 359 +#define SYS_bsdthread_create 360 +#define SYS_bsdthread_terminate 361 +#define SYS_kqueue 362 +#define SYS_kevent 363 +#define SYS_lchown 364 +/* 365 old stack_snapshot */ +#define SYS_bsdthread_register 366 +#define SYS_workq_open 367 +#define SYS_workq_kernreturn 368 +#define SYS_kevent64 369 +/* 370 old __semwait_signal */ +/* 371 old __semwait_signal */ +#define SYS_thread_selfid 372 +#define SYS_ledger 373 +#define SYS_kevent_qos 374 +#define SYS_kevent_id 375 +/* 376 */ +/* 377 */ +/* 378 */ +/* 379 */ +#define SYS___mac_execve 380 +#define SYS___mac_syscall 381 +#define SYS___mac_get_file 382 +#define SYS___mac_set_file 383 +#define SYS___mac_get_link 384 +#define SYS___mac_set_link 385 +#define SYS___mac_get_proc 386 +#define SYS___mac_set_proc 387 +#define SYS___mac_get_fd 388 +#define SYS___mac_set_fd 389 +#define SYS___mac_get_pid 390 +/* 391 */ +/* 392 */ +/* 393 */ +#define SYS_pselect 394 +#define SYS_pselect_nocancel 395 +#define SYS_read_nocancel 396 +#define SYS_write_nocancel 397 +#define SYS_open_nocancel 398 +#define SYS_close_nocancel 399 +#define SYS_wait4_nocancel 400 +#define SYS_recvmsg_nocancel 401 +#define SYS_sendmsg_nocancel 402 +#define SYS_recvfrom_nocancel 403 +#define SYS_accept_nocancel 404 +#define SYS_msync_nocancel 405 +#define SYS_fcntl_nocancel 406 +#define SYS_select_nocancel 407 +#define SYS_fsync_nocancel 408 +#define SYS_connect_nocancel 409 +#define SYS_sigsuspend_nocancel 410 +#define SYS_readv_nocancel 411 +#define SYS_writev_nocancel 412 +#define SYS_sendto_nocancel 413 +#define SYS_pread_nocancel 414 +#define SYS_pwrite_nocancel 415 +#define SYS_waitid_nocancel 416 +#define SYS_poll_nocancel 417 +#define SYS_msgsnd_nocancel 418 +#define SYS_msgrcv_nocancel 419 +#define SYS_sem_wait_nocancel 420 +#define SYS_aio_suspend_nocancel 421 +#define SYS___sigwait_nocancel 422 +#define SYS___semwait_signal_nocancel 423 +#define SYS___mac_mount 424 +#define SYS___mac_get_mount 425 +#define SYS___mac_getfsstat 426 +#define SYS_fsgetpath 427 +#define SYS_audit_session_self 428 +#define SYS_audit_session_join 429 +#define SYS_fileport_makeport 430 +#define SYS_fileport_makefd 431 +#define SYS_audit_session_port 432 +#define SYS_pid_suspend 433 +#define SYS_pid_resume 434 +#define SYS_pid_hibernate 435 +#define SYS_pid_shutdown_sockets 436 +/* 437 old shared_region_slide_np */ +/* 438 old shared_region_map_and_slide_np */ +#define SYS_kas_info 439 +#define SYS_memorystatus_control 440 +#define SYS_guarded_open_np 441 +#define SYS_guarded_close_np 442 +#define SYS_guarded_kqueue_np 443 +#define SYS_change_fdguard_np 444 +#define SYS_usrctl 445 +#define SYS_proc_rlimit_control 446 +#define SYS_connectx 447 +#define SYS_disconnectx 448 +#define SYS_peeloff 449 +#define SYS_socket_delegate 450 +#define SYS_telemetry 451 +#define SYS_proc_uuid_policy 452 +#define SYS_memorystatus_get_level 453 +#define SYS_system_override 454 +#define SYS_vfs_purge 455 +#define SYS_sfi_ctl 456 +#define SYS_sfi_pidctl 457 +#define SYS_coalition 458 +#define SYS_coalition_info 459 +#define SYS_necp_match_policy 460 +#define SYS_getattrlistbulk 461 +#define SYS_clonefileat 462 +#define SYS_openat 463 +#define SYS_openat_nocancel 464 +#define SYS_renameat 465 +#define SYS_faccessat 466 +#define SYS_fchmodat 467 +#define SYS_fchownat 468 +#define SYS_fstatat 469 +#define SYS_fstatat64 470 +#define SYS_linkat 471 +#define SYS_unlinkat 472 +#define SYS_readlinkat 473 +#define SYS_symlinkat 474 +#define SYS_mkdirat 475 +#define SYS_getattrlistat 476 +#define SYS_proc_trace_log 477 +#define SYS_bsdthread_ctl 478 +#define SYS_openbyid_np 479 +#define SYS_recvmsg_x 480 +#define SYS_sendmsg_x 481 +#define SYS_thread_selfusage 482 +#define SYS_csrctl 483 +#define SYS_guarded_open_dprotected_np 484 +#define SYS_guarded_write_np 485 +#define SYS_guarded_pwrite_np 486 +#define SYS_guarded_writev_np 487 +#define SYS_renameatx_np 488 +#define SYS_mremap_encrypted 489 +#define SYS_netagent_trigger 490 +#define SYS_stack_snapshot_with_config 491 +#define SYS_microstackshot 492 +#define SYS_grab_pgo_data 493 +#define SYS_persona 494 +/* 495 */ +#define SYS_mach_eventlink_signal 496 +#define SYS_mach_eventlink_wait_until 497 +#define SYS_mach_eventlink_signal_wait_until 498 +#define SYS_work_interval_ctl 499 +#define SYS_getentropy 500 +#define SYS_necp_open 501 +#define SYS_necp_client_action 502 +#define SYS___nexus_open 503 +#define SYS___nexus_register 504 +#define SYS___nexus_deregister 505 +#define SYS___nexus_create 506 +#define SYS___nexus_destroy 507 +#define SYS___nexus_get_opt 508 +#define SYS___nexus_set_opt 509 +#define SYS___channel_open 510 +#define SYS___channel_get_info 511 +#define SYS___channel_sync 512 +#define SYS___channel_get_opt 513 +#define SYS___channel_set_opt 514 +#define SYS_ulock_wait 515 +#define SYS_ulock_wake 516 +#define SYS_fclonefileat 517 +#define SYS_fs_snapshot 518 +#define SYS_register_uexc_handler 519 +#define SYS_terminate_with_payload 520 +#define SYS_abort_with_payload 521 +#define SYS_necp_session_open 522 +#define SYS_necp_session_action 523 +#define SYS_setattrlistat 524 +#define SYS_net_qos_guideline 525 +#define SYS_fmount 526 +#define SYS_ntp_adjtime 527 +#define SYS_ntp_gettime 528 +#define SYS_os_fault_with_payload 529 +#define SYS_kqueue_workloop_ctl 530 +#define SYS___mach_bridge_remote_time 531 +#define SYS_coalition_ledger 532 +#define SYS_log_data 533 +#define SYS_memorystatus_available_memory 534 +#define SYS_objc_bp_assist_cfg_np 535 +#define SYS_shared_region_map_and_slide_2_np 536 +#define SYS_pivot_root 537 +#define SYS_task_inspect_for_pid 538 +#define SYS_task_read_for_pid 539 +#define SYS_preadv 540 +#define SYS_pwritev 541 +#define SYS_preadv_nocancel 542 +#define SYS_pwritev_nocancel 543 +#define SYS_ulock_wait2 544 +#define SYS_proc_info_extended_id 545 +#define SYS_tracker_action 546 +#define SYS_debug_syscall_reject 547 +#define SYS_debug_syscall_reject_config 548 +#define SYS_graftdmg 549 +#define SYS_map_with_linking_np 550 +#define SYS_freadlink 551 +#define SYS_record_system_event 552 +#define SYS_mkfifoat 553 +#define SYS_mknodat 554 +#define SYS_ungraftdmg 555 +#define SYS_coalition_policy_set 556 +#define SYS_coalition_policy_get 557 +#define SYS_MAXSYSCALL 558 +#define SYS_invalid 63 + #endif // LLVM_LIBC_SRC___SUPPORT_OSUTIL_DARWIN_ARM_SYSCALL_H diff --git a/libc/src/__support/OSUtil/darwin/exit.cpp b/libc/src/__support/OSUtil/darwin/exit.cpp new file mode 100644 index 0000000000000..032000bd7b0cc --- /dev/null +++ b/libc/src/__support/OSUtil/darwin/exit.cpp @@ -0,0 +1,24 @@ +//===------------ MacOS implementation of an exit function ------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "src/__support/OSUtil/darwin/syscall.h" // syscall_impl +#include "src/__support/common.h" +#include "src/__support/macros/config.h" +#include "sys/syscall.h" // For syscall numbers. + +namespace LIBC_NAMESPACE_DECL { +namespace internal { + +__attribute__((noreturn)) void exit(int status) { + for (;;) { + LIBC_NAMESPACE::syscall_impl<long>(SYS_exit, status); + } +} + +} // namespace internal +} // namespace LIBC_NAMESPACE_DECL diff --git a/libc/test/UnitTest/CMakeLists.txt b/libc/test/UnitTest/CMakeLists.txt index 31d1e9dce8204..028e8e3a2ea67 100644 --- a/libc/test/UnitTest/CMakeLists.txt +++ b/libc/test/UnitTest/CMakeLists.txt @@ -83,7 +83,7 @@ add_unittest_framework_library( ) set(libc_death_test_srcs LibcDeathTestExecutors.cpp) -if(${LIBC_TARGET_OS} STREQUAL "linux") +if(${LIBC_TARGET_OS} STREQUAL "linux" OR ${LIBC_TARGET_OS} STREQUAL "darwin") list(APPEND libc_death_test_srcs ExecuteFunctionUnix.cpp) endif() diff --git a/libc/test/UnitTest/ExecuteFunctionUnix.cpp b/libc/test/UnitTest/ExecuteFunctionUnix.cpp index c0e85c2144005..7c2eb7c6e887c 100644 --- a/libc/test/UnitTest/ExecuteFunctionUnix.cpp +++ b/libc/test/UnitTest/ExecuteFunctionUnix.cpp @@ -57,9 +57,7 @@ ProcessStatus invoke_in_subprocess(FunctionCaller *func, int timeout_ms) { } ::close(pipe_fds[1]); - struct pollfd poll_fd { - pipe_fds[0], 0, 0 - }; + struct pollfd poll_fd{pipe_fds[0], POLLIN, 0}; // No events requested so this call will only return after the timeout or if // the pipes peer was closed, signaling the process exited. if (::poll(&poll_fd, 1, timeout_ms) == -1) { diff --git a/libc/test/src/stdlib/CMakeLi... [truncated] 
@bojle
Copy link
Contributor Author

bojle commented Nov 4, 2025

This is a part of a stack of PRs. My tool is partially broken as I don't have write access to this repo. For convenience, please look at the diff of the latest commit in this PR to ignore rest of the stack: d8b196d

Copy link
Contributor

@lntue lntue left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM to me with a nit.

@bojle bojle force-pushed the internal_exit branch 5 times, most recently from d576c6a to 8b3ca96 Compare November 14, 2025 12:15
bojle added 13 commits November 27, 2025 20:59
Signed-off-by: Shreeyash Pandey <shreeyash335@gmail.com>
Signed-off-by: Shreeyash Pandey <shreeyash335@gmail.com>
Signed-off-by: Shreeyash Pandey <shreeyash335@gmail.com>
Signed-off-by: Shreeyash Pandey <shreeyash335@gmail.com>
_Exit(3) is a fairly simple syscall wrapper whereas exit(3) calls atexit-registered functions + whole lot of stuff that require support for sync primitives. Splitting the tests allows testing the former easily (especially for new port projects) Signed-off-by: Shreeyash Pandey <shreeyash335@gmail.com>
Signed-off-by: Shreeyash Pandey <shreeyash335@gmail.com>
Signed-off-by: Shreeyash Pandey <shreeyash335@gmail.com>
Signed-off-by: Shreeyash Pandey <shreeyash335@gmail.com>
@bojle bojle merged commit eb323d8 into llvm:main Nov 28, 2025
26 checks passed
aahrun pushed a commit to aahrun/llvm-project that referenced this pull request Dec 1, 2025
Add internal::exit for MacOS/Darwin
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3 participants