[libc-commits] [libc] [libc][test] split exit tests into two separate tests (PR #166355)

via libc-commits libc-commits at lists.llvm.org
Tue Nov 4 03:56:34 PST 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libc

Author: Shreeyash Pandey (bojle)

<details>
<summary>Changes</summary>

_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)

---
Full diff: https://github.com/llvm/llvm-project/pull/166355.diff


6 Files Affected:

- (modified) libc/src/__support/OSUtil/darwin/aarch64/syscall.h (+561) 
- (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
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/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/CMakeLists.txt b/libc/test/src/stdlib/CMakeLists.txt
index 0eb373c3fa061..9765e42095aa5 100644
--- a/libc/test/src/stdlib/CMakeLists.txt
+++ b/libc/test/src/stdlib/CMakeLists.txt
@@ -397,6 +397,19 @@ if(LLVM_LIBC_FULL_BUILD)
       libc-stdlib-tests
     SRCS
       _Exit_test.cpp
+    DEPENDS
+      libc.src.__support.OSUtil.osutil
+      libc.src.stdlib._Exit
+  )
+
+  add_libc_test(
+    exit_test
+    # The EXPECT_EXITS test is only availible for unit tests.
+    UNIT_TEST_ONLY
+    SUITE
+      libc-stdlib-tests
+    SRCS
+      exit_test.cpp
     DEPENDS
       libc.src.stdlib._Exit
       libc.src.stdlib.exit
diff --git a/libc/test/src/stdlib/_Exit_test.cpp b/libc/test/src/stdlib/_Exit_test.cpp
index 333277dc01dca..57c432828c2f3 100644
--- a/libc/test/src/stdlib/_Exit_test.cpp
+++ b/libc/test/src/stdlib/_Exit_test.cpp
@@ -7,13 +7,9 @@
 //===----------------------------------------------------------------------===//
 
 #include "src/stdlib/_Exit.h"
-#include "src/stdlib/exit.h"
 #include "test/UnitTest/Test.h"
 
 TEST(LlvmLibcStdlib, _Exit) {
   EXPECT_EXITS([] { LIBC_NAMESPACE::_Exit(1); }, 1);
   EXPECT_EXITS([] { LIBC_NAMESPACE::_Exit(65); }, 65);
-
-  EXPECT_EXITS([] { LIBC_NAMESPACE::exit(1); }, 1);
-  EXPECT_EXITS([] { LIBC_NAMESPACE::exit(65); }, 65);
 }
diff --git a/libc/test/src/stdlib/exit_test.cpp b/libc/test/src/stdlib/exit_test.cpp
new file mode 100644
index 0000000000000..333277dc01dca
--- /dev/null
+++ b/libc/test/src/stdlib/exit_test.cpp
@@ -0,0 +1,19 @@
+//===-- Unittests for _Exit -----------------------------------------------===//
+//
+// 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/stdlib/_Exit.h"
+#include "src/stdlib/exit.h"
+#include "test/UnitTest/Test.h"
+
+TEST(LlvmLibcStdlib, _Exit) {
+  EXPECT_EXITS([] { LIBC_NAMESPACE::_Exit(1); }, 1);
+  EXPECT_EXITS([] { LIBC_NAMESPACE::_Exit(65); }, 65);
+
+  EXPECT_EXITS([] { LIBC_NAMESPACE::exit(1); }, 1);
+  EXPECT_EXITS([] { LIBC_NAMESPACE::exit(65); }, 65);
+}

``````````

</details>


https://github.com/llvm/llvm-project/pull/166355


More information about the libc-commits mailing list