Skip to content

Commit

Permalink
[libc] add basic Intel MacOS configuration
Browse files Browse the repository at this point in the history
The config is based on the ARM MacOS config, but with fenv and math
functions disabled.

This should unblock this bug: #60910

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D145099
  • Loading branch information
michaelrj-google committed Mar 1, 2023
1 parent 9cec2b2 commit effd56b
Show file tree
Hide file tree
Showing 3 changed files with 222 additions and 1 deletion.
207 changes: 207 additions & 0 deletions libc/config/darwin/x86_64/entrypoints.txt
@@ -0,0 +1,207 @@
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

# string.h entrypoints
libc.src.string.bcmp
libc.src.string.bzero
libc.src.string.memccpy
libc.src.string.memchr
libc.src.string.memcmp
libc.src.string.memcpy
libc.src.string.memmove
libc.src.string.mempcpy
libc.src.string.memrchr
libc.src.string.memset
libc.src.string.stpcpy
libc.src.string.stpncpy
libc.src.string.strcat
libc.src.string.strchr
libc.src.string.strcmp
libc.src.string.strcpy
libc.src.string.strcspn
libc.src.string.strlcat
libc.src.string.strlcpy
libc.src.string.strlen
libc.src.string.strncat
libc.src.string.strncmp
libc.src.string.strncpy
libc.src.string.strnlen
libc.src.string.strpbrk
libc.src.string.strrchr
libc.src.string.strspn
libc.src.string.strstr
libc.src.string.strtok
libc.src.string.strtok_r

# string.h entrypoints that depend on malloc
libc.src.string.strdup
libc.src.string.strndup

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

# 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.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.free
)

set(TARGET_LIBM_ENTRYPOINTS
# fenv disabled on x86_64 MacOS for now.
# # 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

## Currently disabled for failing tests.
# math.h entrypoints
#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.coshf
#libc.src.math.cosf
#libc.src.math.expf
#libc.src.math.exp2f
#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.fmax
#libc.src.math.fmaxf
#libc.src.math.fmaxl
#libc.src.math.fmin
#libc.src.math.fminf
#libc.src.math.fminl
#libc.src.math.fmod
#libc.src.math.fmodf
#libc.src.math.frexp
#libc.src.math.frexpf
#libc.src.math.frexpl
#libc.src.math.hypot
#libc.src.math.hypotf
#libc.src.math.ilogb
#libc.src.math.ilogbf
#libc.src.math.ilogbl
#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.lrint
#libc.src.math.lrintf
#libc.src.math.lrintl
#libc.src.math.lround
#libc.src.math.lroundf
#libc.src.math.lroundl
#libc.src.math.ldexp
#libc.src.math.ldexpf
#libc.src.math.ldexpl
#libc.src.math.log10f
#libc.src.math.log1pf
#libc.src.math.log2f
#libc.src.math.logf
#libc.src.math.logb
#libc.src.math.logbf
#libc.src.math.logbl
#libc.src.math.modf
#libc.src.math.modff
#libc.src.math.modfl
#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.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.sincosf
#libc.src.math.sinhf
#libc.src.math.sinf
#libc.src.math.sqrt
#libc.src.math.sqrtf
#libc.src.math.sqrtl
#libc.src.math.tanf
#libc.src.math.tanhf
#libc.src.math.trunc
#libc.src.math.truncf
#libc.src.math.truncl
)

set(TARGET_LLVMLIBC_ENTRYPOINTS
${TARGET_LIBC_ENTRYPOINTS}
${TARGET_LIBM_ENTRYPOINTS}
)
10 changes: 10 additions & 0 deletions libc/config/darwin/x86_64/headers.txt
@@ -0,0 +1,10 @@
set(TARGET_PUBLIC_HEADERS
libc.include.ctype
libc.include.errno
# Fenv is currently disabled.
#libc.include.fenv
libc.include.inttypes
libc.include.math
libc.include.stdlib
libc.include.string
)
6 changes: 5 additions & 1 deletion libc/src/__support/FPUtil/FEnvImpl.h
Expand Up @@ -22,7 +22,11 @@
#else
#include "aarch64/FEnvImpl.h"
#endif
#elif defined(LIBC_TARGET_ARCH_IS_X86)

// The extra !defined(APPLE) condition is to cause x86_64 MacOS builds to use
// the dummy implementations below. Once a proper x86_64 darwin fenv is set up,
// the apple condition here should be removed.
#elif defined(LIBC_TARGET_ARCH_IS_X86) && !defined(__APPLE__)
#include "x86_64/FEnvImpl.h"
#else

Expand Down

0 comments on commit effd56b

Please sign in to comment.