summaryrefslogtreecommitdiffstats
path: root/libc/config/linux/x86_64/entrypoints.txt
blob: cc7671cab08184dab3829cb6fb4dffbc29e1dd4c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
set(TARGET_LIBC_ENTRYPOINTS
    # ctype.h entrypoints
    libc.src.ctype.isalnum
    libc.src.ctype.isalpha
    libc.src.ctype.isascii
    libc.src.ctype.isblank
    libc.src.ctype.iscntrl
    libc.src.ctype.isdigit
    libc.src.ctype.isgraph
    libc.src.ctype.islower
    libc.src.ctype.isprint
    libc.src.ctype.ispunct
    libc.src.ctype.isspace
    libc.src.ctype.isupper
    libc.src.ctype.isxdigit
    libc.src.ctype.toascii
    libc.src.ctype.tolower
    libc.src.ctype.toupper

    # errno.h entrypoints
    libc.src.errno.errno

    # fcntl.h entrypoints
    libc.src.fcntl.creat
    libc.src.fcntl.open
    libc.src.fcntl.openat

    # sched.h entrypoints
    libc.src.sched.sched_get_priority_max
    libc.src.sched.sched_get_priority_min
    libc.src.sched.sched_getaffinity
    libc.src.sched.sched_getparam
    libc.src.sched.sched_getscheduler
    libc.src.sched.sched_rr_get_interval
    libc.src.sched.sched_setaffinity
    libc.src.sched.sched_setparam
    libc.src.sched.sched_setscheduler
    libc.src.sched.sched_yield

    # string.h entrypoints
    libc.src.string.bcmp
    libc.src.string.bcopy
    libc.src.string.bzero
    libc.src.string.index
    libc.src.string.memccpy
    libc.src.string.memchr
    libc.src.string.memcmp
    libc.src.string.memcpy
    libc.src.string.memmem
    libc.src.string.memmove
    libc.src.string.mempcpy
    libc.src.string.memrchr
    libc.src.string.memset
    libc.src.string.memset_explicit
    libc.src.string.rindex
    libc.src.string.stpcpy
    libc.src.string.stpncpy
    libc.src.string.strcasecmp
    libc.src.string.strcasestr
    libc.src.string.strcat
    libc.src.string.strchr
    libc.src.string.strchrnul
    libc.src.string.strcmp
    libc.src.string.strcoll
    libc.src.string.strcpy
    libc.src.string.strcspn
    libc.src.string.strdup
    libc.src.string.strerror
    libc.src.string.strerror_r
    libc.src.string.strlcat
    libc.src.string.strlcpy
    libc.src.string.strlen
    libc.src.string.strncasecmp
    libc.src.string.strncat
    libc.src.string.strncmp
    libc.src.string.strncpy
    libc.src.string.strndup
    libc.src.string.strnlen
    libc.src.string.strpbrk
    libc.src.string.strrchr
    libc.src.string.strsep
    libc.src.string.strsignal
    libc.src.string.strspn
    libc.src.string.strstr
    libc.src.string.strtok
    libc.src.string.strtok_r
    libc.src.string.strxfrm

    # inttypes.h entrypoints
    libc.src.inttypes.imaxabs
    libc.src.inttypes.imaxdiv
    libc.src.inttypes.strtoimax
    libc.src.inttypes.strtoumax

    # stdbit.h entrypoints
    libc.src.stdbit.stdc_leading_zeros_uc
    libc.src.stdbit.stdc_leading_zeros_us
    libc.src.stdbit.stdc_leading_zeros_ui
    libc.src.stdbit.stdc_leading_zeros_ul
    libc.src.stdbit.stdc_leading_zeros_ull
    libc.src.stdbit.stdc_leading_ones_uc
    libc.src.stdbit.stdc_leading_ones_us
    libc.src.stdbit.stdc_leading_ones_ui
    libc.src.stdbit.stdc_leading_ones_ul
    libc.src.stdbit.stdc_leading_ones_ull
    libc.src.stdbit.stdc_trailing_zeros_uc
    libc.src.stdbit.stdc_trailing_zeros_us
    libc.src.stdbit.stdc_trailing_zeros_ui
    libc.src.stdbit.stdc_trailing_zeros_ul
    libc.src.stdbit.stdc_trailing_zeros_ull
    libc.src.stdbit.stdc_trailing_ones_uc
    libc.src.stdbit.stdc_trailing_ones_us
    libc.src.stdbit.stdc_trailing_ones_ui
    libc.src.stdbit.stdc_trailing_ones_ul
    libc.src.stdbit.stdc_trailing_ones_ull
    libc.src.stdbit.stdc_first_leading_zero_uc
    libc.src.stdbit.stdc_first_leading_zero_us
    libc.src.stdbit.stdc_first_leading_zero_ui
    libc.src.stdbit.stdc_first_leading_zero_ul
    libc.src.stdbit.stdc_first_leading_zero_ull
    libc.src.stdbit.stdc_first_leading_one_uc
    libc.src.stdbit.stdc_first_leading_one_us
    libc.src.stdbit.stdc_first_leading_one_ui
    libc.src.stdbit.stdc_first_leading_one_ul
    libc.src.stdbit.stdc_first_leading_one_ull
    libc.src.stdbit.stdc_first_trailing_zero_uc
    libc.src.stdbit.stdc_first_trailing_zero_us
    libc.src.stdbit.stdc_first_trailing_zero_ui
    libc.src.stdbit.stdc_first_trailing_zero_ul
    libc.src.stdbit.stdc_first_trailing_zero_ull
    libc.src.stdbit.stdc_first_trailing_one_uc
    libc.src.stdbit.stdc_first_trailing_one_us
    libc.src.stdbit.stdc_first_trailing_one_ui
    libc.src.stdbit.stdc_first_trailing_one_ul
    libc.src.stdbit.stdc_first_trailing_one_ull
    libc.src.stdbit.stdc_count_zeros_uc
    libc.src.stdbit.stdc_count_zeros_us
    libc.src.stdbit.stdc_count_zeros_ui
    libc.src.stdbit.stdc_count_zeros_ul
    libc.src.stdbit.stdc_count_zeros_ull
    libc.src.stdbit.stdc_count_ones_uc
    libc.src.stdbit.stdc_count_ones_us
    libc.src.stdbit.stdc_count_ones_ui
    libc.src.stdbit.stdc_count_ones_ul
    libc.src.stdbit.stdc_count_ones_ull
    libc.src.stdbit.stdc_has_single_bit_uc
    libc.src.stdbit.stdc_has_single_bit_us
    libc.src.stdbit.stdc_has_single_bit_ui
    libc.src.stdbit.stdc_has_single_bit_ul
    libc.src.stdbit.stdc_has_single_bit_ull
    libc.src.stdbit.stdc_bit_width_uc
    libc.src.stdbit.stdc_bit_width_us
    libc.src.stdbit.stdc_bit_width_ui
    libc.src.stdbit.stdc_bit_width_ul
    libc.src.stdbit.stdc_bit_width_ull
    libc.src.stdbit.stdc_bit_floor_uc
    libc.src.stdbit.stdc_bit_floor_us
    libc.src.stdbit.stdc_bit_floor_ui
    libc.src.stdbit.stdc_bit_floor_ul
    libc.src.stdbit.stdc_bit_floor_ull
    libc.src.stdbit.stdc_bit_ceil_uc
    libc.src.stdbit.stdc_bit_ceil_us
    libc.src.stdbit.stdc_bit_ceil_ui
    libc.src.stdbit.stdc_bit_ceil_ul
    libc.src.stdbit.stdc_bit_ceil_ull

    # stdlib.h entrypoints
    libc.src.stdlib.abs
    libc.src.stdlib.atoi
    libc.src.stdlib.atof
    libc.src.stdlib.atol
    libc.src.stdlib.atoll
    libc.src.stdlib.bsearch
    libc.src.stdlib.div
    libc.src.stdlib.labs
    libc.src.stdlib.ldiv
    libc.src.stdlib.llabs
    libc.src.stdlib.lldiv
    libc.src.stdlib.qsort
    libc.src.stdlib.qsort_r
    libc.src.stdlib.rand
    libc.src.stdlib.srand
    libc.src.stdlib.strfromd
    libc.src.stdlib.strfromf
    libc.src.stdlib.strfroml
    libc.src.stdlib.strtod
    libc.src.stdlib.strtof
    libc.src.stdlib.strtol
    libc.src.stdlib.strtold
    libc.src.stdlib.strtoll
    libc.src.stdlib.strtoul
    libc.src.stdlib.strtoull

    # stdlib.h external entrypoints
    libc.src.stdlib.malloc
    libc.src.stdlib.calloc
    libc.src.stdlib.realloc
    libc.src.stdlib.aligned_alloc
    libc.src.stdlib.free

    # stdio.h entrypoints
    libc.src.stdio.remove
    libc.src.stdio.rename
    libc.src.stdio.sprintf
    libc.src.stdio.snprintf
    libc.src.stdio.fprintf
    libc.src.stdio.printf
    libc.src.stdio.vsprintf
    libc.src.stdio.vsnprintf
    libc.src.stdio.vfprintf
    libc.src.stdio.vprintf
    libc.src.stdio.sscanf
    libc.src.stdio.scanf
    libc.src.stdio.fscanf
    libc.src.stdio.fileno

    # sys/epoll.h entrypoints
    libc.src.sys.epoll.epoll_wait
    libc.src.sys.epoll.epoll_pwait
    # TODO: Need to check if pwait2 is available before providing.
    # https://github.com/llvm/llvm-project/issues/80060
    # libc.src.sys.epoll.epoll_pwait2

    # sys/mman.h entrypoints
    libc.src.sys.mman.madvise
    libc.src.sys.mman.mmap
    libc.src.sys.mman.mprotect
    libc.src.sys.mman.munmap
    libc.src.sys.mman.posix_madvise
    libc.src.sys.mman.mincore
    libc.src.sys.mman.mlock
    libc.src.sys.mman.mlock2
    libc.src.sys.mman.munlock
    libc.src.sys.mman.mlockall
    libc.src.sys.mman.munlockall
    libc.src.sys.mman.msync
    libc.src.sys.mman.shm_open
    libc.src.sys.mman.shm_unlink

    # sys/random.h entrypoints
    libc.src.sys.random.getrandom

    # sys/resource.h entrypoints
    libc.src.sys.resource.getrlimit
    libc.src.sys.resource.setrlimit

    # sys/sendfile entrypoints
    libc.src.sys.sendfile.sendfile

    # sys/stat.h entrypoints
    libc.src.sys.stat.chmod
    libc.src.sys.stat.fchmod
    libc.src.sys.stat.fchmodat
    libc.src.sys.stat.fstat
    libc.src.sys.stat.lstat
    libc.src.sys.stat.mkdir
    libc.src.sys.stat.mkdirat
    libc.src.sys.stat.stat

    # sys/statvfs.h
    libc.src.sys.statvfs.statvfs
    libc.src.sys.statvfs.fstatvfs

    # sys/utsname.h entrypoints
    libc.src.sys.utsname.uname

    # sys/wait.h entrypoints
    libc.src.sys.wait.wait
    libc.src.sys.wait.wait4
    libc.src.sys.wait.waitpid

    # sys/prctl.h entrypoints
    libc.src.sys.prctl.prctl

    # sys/auxv.h entrypoints
    libc.src.sys.auxv.getauxval

    # termios.h entrypoints
    libc.src.termios.cfgetispeed
    libc.src.termios.cfgetospeed
    libc.src.termios.cfsetispeed
    libc.src.termios.cfsetospeed
    libc.src.termios.tcgetattr
    libc.src.termios.tcgetsid
    libc.src.termios.tcdrain
    libc.src.termios.tcflow
    libc.src.termios.tcflush
    libc.src.termios.tcsendbreak
    libc.src.termios.tcsetattr

    # unistd.h entrypoints
    libc.src.unistd.access
    libc.src.unistd.chdir
    libc.src.unistd.close
    libc.src.unistd.dup
    libc.src.unistd.dup2
    libc.src.unistd.dup3
    libc.src.unistd.execve
    libc.src.unistd.fchdir
    libc.src.unistd.fsync
    libc.src.unistd.ftruncate
    libc.src.unistd.getcwd
    libc.src.unistd.geteuid
    libc.src.unistd.getpid
    libc.src.unistd.getppid
    libc.src.unistd.getuid
    libc.src.unistd.isatty
    libc.src.unistd.link
    libc.src.unistd.linkat
    libc.src.unistd.lseek
    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.symlink
    libc.src.unistd.symlinkat
    libc.src.unistd.sysconf
    libc.src.unistd.truncate
    libc.src.unistd.unlink
    libc.src.unistd.unlinkat
    libc.src.unistd.write

    # wchar.h entrypoints
    libc.src.wchar.wctob
)

set(TARGET_LIBM_ENTRYPOINTS
    # fenv.h entrypoints
    libc.src.fenv.feclearexcept
    libc.src.fenv.fedisableexcept
    libc.src.fenv.feenableexcept
    libc.src.fenv.fegetenv
    libc.src.fenv.fegetexcept
    libc.src.fenv.fegetexceptflag
    libc.src.fenv.fegetround
    libc.src.fenv.feholdexcept
    libc.src.fenv.fesetenv
    libc.src.fenv.fesetexceptflag
    libc.src.fenv.fesetround
    libc.src.fenv.feraiseexcept
    libc.src.fenv.fetestexcept
    libc.src.fenv.feupdateenv

    # math.h entrypoints
    libc.src.math.acosf
    libc.src.math.acoshf
    libc.src.math.asinf
    libc.src.math.asinhf
    libc.src.math.atan2f
    libc.src.math.atanf
    libc.src.math.atanhf
    libc.src.math.canonicalize
    libc.src.math.canonicalizef
    libc.src.math.canonicalizel
    libc.src.math.copysign
    libc.src.math.copysignf
    libc.src.math.copysignl
    libc.src.math.ceil
    libc.src.math.ceilf
    libc.src.math.ceill
    libc.src.math.cos
    libc.src.math.coshf
    libc.src.math.cosf
    libc.src.math.erff
    libc.src.math.exp
    libc.src.math.expf
    libc.src.math.exp10
    libc.src.math.exp10f
    libc.src.math.exp2
    libc.src.math.exp2f
    libc.src.math.expm1
    libc.src.math.expm1f
    libc.src.math.fabs
    libc.src.math.fabsf
    libc.src.math.fabsl
    libc.src.math.fdim
    libc.src.math.fdimf
    libc.src.math.fdiml
    libc.src.math.floor
    libc.src.math.floorf
    libc.src.math.floorl
    libc.src.math.fma
    libc.src.math.fmaf
    libc.src.math.fmin
    libc.src.math.fminf
    libc.src.math.fminl
    libc.src.math.fmax
    libc.src.math.fmaxf
    libc.src.math.fmaxl
    libc.src.math.fmaximum
    libc.src.math.fmaximumf
    libc.src.math.fmaximuml
    libc.src.math.fmaximum_num
    libc.src.math.fmaximum_numf
    libc.src.math.fmaximum_numl
    libc.src.math.fmaximum_mag
    libc.src.math.fmaximum_magf
    libc.src.math.fmaximum_magl
    libc.src.math.fmaximum_mag_num
    libc.src.math.fmaximum_mag_numf
    libc.src.math.fmaximum_mag_numl
    libc.src.math.fminimum
    libc.src.math.fminimumf
    libc.src.math.fminimuml
    libc.src.math.fminimum_num
    libc.src.math.fminimum_numf
    libc.src.math.fminimum_numl
    libc.src.math.fminimum_mag
    libc.src.math.fminimum_magf
    libc.src.math.fminimum_magl
    libc.src.math.fminimum_mag_num
    libc.src.math.fminimum_mag_numf
    libc.src.math.fminimum_mag_numl
    libc.src.math.fmod
    libc.src.math.fmodf
    libc.src.math.fmodl
    libc.src.math.frexp
    libc.src.math.frexpf
    libc.src.math.frexpl
    libc.src.math.fromfp
    libc.src.math.fromfpf
    libc.src.math.fromfpl
    libc.src.math.fromfpx
    libc.src.math.fromfpxf
    libc.src.math.fromfpxl
    libc.src.math.hypot
    libc.src.math.hypotf
    libc.src.math.ilogb
    libc.src.math.ilogbf
    libc.src.math.ilogbl
    libc.src.math.ldexp
    libc.src.math.ldexpf
    libc.src.math.ldexpl
    libc.src.math.llogb
    libc.src.math.llogbf
    libc.src.math.llogbl
    libc.src.math.llrint
    libc.src.math.llrintf
    libc.src.math.llrintl
    libc.src.math.llround
    libc.src.math.llroundf
    libc.src.math.llroundl
    libc.src.math.log10
    libc.src.math.log10f
    libc.src.math.log1p
    libc.src.math.log1pf
    libc.src.math.log2
    libc.src.math.log2f
    libc.src.math.log
    libc.src.math.logf
    libc.src.math.logb
    libc.src.math.logbf
    libc.src.math.logbl
    libc.src.math.lrint
    libc.src.math.lrintf
    libc.src.math.lrintl
    libc.src.math.lround
    libc.src.math.lroundf
    libc.src.math.lroundl
    libc.src.math.modf
    libc.src.math.modff
    libc.src.math.modfl
    libc.src.math.nan
    libc.src.math.nanf
    libc.src.math.nanl
    libc.src.math.nearbyint
    libc.src.math.nearbyintf
    libc.src.math.nearbyintl
    libc.src.math.nextafter
    libc.src.math.nextafterf
    libc.src.math.nextafterl
    libc.src.math.nextdown
    libc.src.math.nextdownf
    libc.src.math.nextdownl
    libc.src.math.nexttoward
    libc.src.math.nexttowardf
    libc.src.math.nexttowardl
    libc.src.math.nextup
    libc.src.math.nextupf
    libc.src.math.nextupl
    libc.src.math.powf
    libc.src.math.remainderf
    libc.src.math.remainder
    libc.src.math.remainderl
    libc.src.math.remquof
    libc.src.math.remquo
    libc.src.math.remquol
    libc.src.math.rint
    libc.src.math.rintf
    libc.src.math.rintl
    libc.src.math.round
    libc.src.math.roundf
    libc.src.math.roundl
    libc.src.math.scalbn
    libc.src.math.scalbnf
    libc.src.math.scalbnl
    libc.src.math.sin
    libc.src.math.sincosf
    libc.src.math.sinhf
    libc.src.math.sinf
    libc.src.math.sqrt
    libc.src.math.sqrtf
    libc.src.math.sqrtl
    libc.src.math.tan
    libc.src.math.tanf
    libc.src.math.tanhf
    libc.src.math.trunc
    libc.src.math.truncf
    libc.src.math.truncl
    libc.src.math.ufromfp
    libc.src.math.ufromfpf
    libc.src.math.ufromfpl
    libc.src.math.ufromfpx
    libc.src.math.ufromfpxf
    libc.src.math.ufromfpxl
)

if(LIBC_TYPES_HAS_FLOAT128)
  list(APPEND TARGET_LIBM_ENTRYPOINTS
    # math.h C23 _Float128 entrypoints
    libc.src.math.canonicalizef128
    libc.src.math.ceilf128
    libc.src.math.copysignf128
    libc.src.math.fabsf128
    libc.src.math.fdimf128
    libc.src.math.floorf128
    libc.src.math.fmaxf128
    libc.src.math.fminf128
    libc.src.math.fmaximumf128
    libc.src.math.fmaximum_numf128
    libc.src.math.fmaximum_magf128
    libc.src.math.fmaximum_mag_numf128
    libc.src.math.fminimumf128
    libc.src.math.fminimum_numf128
    libc.src.math.fminimum_magf128
    libc.src.math.fminimum_mag_numf128
    libc.src.math.fmodf128
    libc.src.math.frexpf128
    libc.src.math.fromfpf128
    libc.src.math.fromfpxf128
    libc.src.math.ilogbf128
    libc.src.math.ldexpf128
    libc.src.math.llogbf128
    libc.src.math.logbf128
    libc.src.math.llrintf128
    libc.src.math.llroundf128
    libc.src.math.lrintf128
    libc.src.math.lroundf128
    libc.src.math.modff128
    libc.src.math.nanf128
    libc.src.math.nextafterf128
    libc.src.math.nextdownf128
    libc.src.math.nextupf128
    libc.src.math.rintf128
    libc.src.math.roundf128
    libc.src.math.sqrtf128
    libc.src.math.truncf128
    libc.src.math.ufromfpf128
    libc.src.math.ufromfpxf128
  )
endif()

if(LIBC_COMPILER_HAS_FIXED_POINT)
  list(APPEND TARGET_LIBM_ENTRYPOINTS
    # stdfix.h _Fract and _Accum entrypoints
    libc.src.stdfix.abshk
    libc.src.stdfix.abshr
    libc.src.stdfix.absk
    libc.src.stdfix.absr
    libc.src.stdfix.abslk
    libc.src.stdfix.abslr
    libc.src.stdfix.exphk
    libc.src.stdfix.expk
    libc.src.stdfix.roundhk
    libc.src.stdfix.roundhr
    libc.src.stdfix.roundk
    libc.src.stdfix.roundr
    libc.src.stdfix.roundlk
    libc.src.stdfix.roundlr
    libc.src.stdfix.rounduhk
    libc.src.stdfix.rounduhr
    libc.src.stdfix.rounduk
    libc.src.stdfix.roundur
    libc.src.stdfix.roundulk
    libc.src.stdfix.roundulr
    libc.src.stdfix.sqrtuhk
    libc.src.stdfix.sqrtuhr
    libc.src.stdfix.sqrtuk
    libc.src.stdfix.sqrtur
    # libc.src.stdfix.sqrtulk
    libc.src.stdfix.sqrtulr
    libc.src.stdfix.uhksqrtus
    libc.src.stdfix.uksqrtui
  )
endif()

if(LLVM_LIBC_FULL_BUILD)
  list(APPEND TARGET_LIBC_ENTRYPOINTS
    # assert.h entrypoints
    libc.src.assert.__assert_fail

    # compiler entrypoints (no corresponding header)
    libc.src.compiler.__stack_chk_fail

    # dirent.h entrypoints
    libc.src.dirent.closedir
    libc.src.dirent.dirfd
    libc.src.dirent.opendir
    libc.src.dirent.readdir

    # network.h entrypoints
    libc.src.network.htonl
    libc.src.network.htons
    libc.src.network.ntohl
    libc.src.network.ntohs

    # pthread.h entrypoints
    libc.src.pthread.pthread_atfork
    libc.src.pthread.pthread_attr_destroy
    libc.src.pthread.pthread_attr_init
    libc.src.pthread.pthread_attr_getdetachstate
    libc.src.pthread.pthread_attr_getguardsize
    libc.src.pthread.pthread_attr_getstack
    libc.src.pthread.pthread_attr_getstacksize
    libc.src.pthread.pthread_attr_setdetachstate
    libc.src.pthread.pthread_attr_setguardsize
    libc.src.pthread.pthread_attr_setstack
    libc.src.pthread.pthread_attr_setstacksize
    libc.src.pthread.pthread_create
    libc.src.pthread.pthread_detach
    libc.src.pthread.pthread_equal
    libc.src.pthread.pthread_exit
    libc.src.pthread.pthread_getname_np
    libc.src.pthread.pthread_getspecific
    libc.src.pthread.pthread_join
    libc.src.pthread.pthread_key_create
    libc.src.pthread.pthread_key_delete
    libc.src.pthread.pthread_self
    libc.src.pthread.pthread_setname_np
    libc.src.pthread.pthread_mutex_destroy
    libc.src.pthread.pthread_mutex_init
    libc.src.pthread.pthread_mutex_lock
    libc.src.pthread.pthread_mutex_unlock
    libc.src.pthread.pthread_mutexattr_destroy
    libc.src.pthread.pthread_mutexattr_init
    libc.src.pthread.pthread_mutexattr_getpshared
    libc.src.pthread.pthread_mutexattr_getrobust
    libc.src.pthread.pthread_mutexattr_gettype
    libc.src.pthread.pthread_mutexattr_setpshared
    libc.src.pthread.pthread_mutexattr_setrobust
    libc.src.pthread.pthread_mutexattr_settype
    libc.src.pthread.pthread_once
    libc.src.pthread.pthread_setspecific

    # sched.h entrypoints
    libc.src.sched.__sched_getcpucount

    # setjmp.h entrypoints
    libc.src.setjmp.longjmp
    libc.src.setjmp.setjmp

    # stdio.h entrypoints
    libc.src.stdio.clearerr
    libc.src.stdio.clearerr_unlocked
    libc.src.stdio.fclose
    libc.src.stdio.flockfile
    libc.src.stdio.feof
    libc.src.stdio.feof_unlocked
    libc.src.stdio.ferror
    libc.src.stdio.ferror_unlocked
    libc.src.stdio.fgetc
    libc.src.stdio.fgetc_unlocked
    libc.src.stdio.fgets
    libc.src.stdio.fflush
    libc.src.stdio.fopen
    libc.src.stdio.fputc
    libc.src.stdio.fputs
    libc.src.stdio.fopencookie
    libc.src.stdio.fread
    libc.src.stdio.fread_unlocked
    libc.src.stdio.fseek
    libc.src.stdio.ftell
    libc.src.stdio.fseeko
    libc.src.stdio.ftello
    libc.src.stdio.funlockfile
    libc.src.stdio.fwrite
    libc.src.stdio.fwrite_unlocked
    libc.src.stdio.getc
    libc.src.stdio.getc_unlocked
    libc.src.stdio.getchar
    libc.src.stdio.getchar_unlocked
    libc.src.stdio.putc
    libc.src.stdio.putchar
    libc.src.stdio.puts
    libc.src.stdio.setbuf
    libc.src.stdio.setvbuf
    libc.src.stdio.stderr
    libc.src.stdio.stdin
    libc.src.stdio.stdout
    libc.src.stdio.ungetc

    # stdlib.h entrypoints
    libc.src.stdlib._Exit
    libc.src.stdlib.abort
    libc.src.stdlib.atexit
    libc.src.stdlib.exit
    libc.src.stdlib.getenv

    # signal.h entrypoints
    libc.src.signal.raise
    libc.src.signal.kill
    libc.src.signal.sigaction
    libc.src.signal.sigaltstack
    libc.src.signal.sigdelset
    libc.src.signal.sigaddset
    libc.src.signal.sigemptyset
    libc.src.signal.sigprocmask
    libc.src.signal.sigfillset
    libc.src.signal.signal

    # spawn.h entrypoints
    libc.src.spawn.posix_spawn
    libc.src.spawn.posix_spawn_file_actions_addclose
    libc.src.spawn.posix_spawn_file_actions_adddup2
    libc.src.spawn.posix_spawn_file_actions_addopen
    libc.src.spawn.posix_spawn_file_actions_destroy
    libc.src.spawn.posix_spawn_file_actions_init

    # search.h entrypoints
    libc.src.search.hcreate
    libc.src.search.hcreate_r
    libc.src.search.hsearch
    libc.src.search.hsearch_r
    libc.src.search.hdestroy
    libc.src.search.hdestroy_r
    libc.src.search.insque
    libc.src.search.remque

    # threads.h entrypoints
    libc.src.threads.call_once
    libc.src.threads.cnd_broadcast
    libc.src.threads.cnd_destroy
    libc.src.threads.cnd_init
    libc.src.threads.cnd_signal
    libc.src.threads.cnd_wait
    libc.src.threads.mtx_destroy
    libc.src.threads.mtx_init
    libc.src.threads.mtx_lock
    libc.src.threads.mtx_unlock
    libc.src.threads.thrd_create
    libc.src.threads.thrd_current
    libc.src.threads.thrd_detach
    libc.src.threads.thrd_equal
    libc.src.threads.thrd_exit
    libc.src.threads.thrd_join
    libc.src.threads.tss_create
    libc.src.threads.tss_delete
    libc.src.threads.tss_get
    libc.src.threads.tss_set

    # time.h entrypoints
    libc.src.time.asctime
    libc.src.time.asctime_r
    libc.src.time.clock_gettime
    libc.src.time.clock
    libc.src.time.difftime
    libc.src.time.gettimeofday
    libc.src.time.gmtime
    libc.src.time.gmtime_r
    libc.src.time.mktime
    libc.src.time.nanosleep
    libc.src.time.time

    # unistd.h entrypoints
    libc.src.unistd._exit
    libc.src.unistd.environ
    libc.src.unistd.execv
    libc.src.unistd.fork
    libc.src.unistd.__llvm_libc_syscall
    libc.src.unistd.getopt
    libc.src.unistd.optarg
    libc.src.unistd.optind
    libc.src.unistd.optopt
    libc.src.unistd.opterr
    libc.src.unistd.swab

    # sys/select.h entrypoints
    libc.src.sys.select.select

    # sys/socket.h entrypoints
    libc.src.sys.socket.socket
    libc.src.sys.socket.bind
  )
endif()

set(TARGET_LLVMLIBC_ENTRYPOINTS
  ${TARGET_LIBC_ENTRYPOINTS}
  ${TARGET_LIBM_ENTRYPOINTS}
)