[libc-commits] [libc] effd56b - [libc] add basic Intel MacOS configuration

Michael Jones via libc-commits libc-commits at lists.llvm.org
Wed Mar 1 15:33:21 PST 2023


Author: Michael Jones
Date: 2023-03-01T15:33:16-08:00
New Revision: effd56b0a03080d3d5460036efc425796bfc8882

URL: https://github.com/llvm/llvm-project/commit/effd56b0a03080d3d5460036efc425796bfc8882
DIFF: https://github.com/llvm/llvm-project/commit/effd56b0a03080d3d5460036efc425796bfc8882.diff

LOG: [libc] add basic Intel MacOS configuration

The config is based on the ARM MacOS config, but with fenv and math
functions disabled.

This should unblock this bug: https://github.com/llvm/llvm-project/issues/60910

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D145099

Added: 
    libc/config/darwin/x86_64/entrypoints.txt
    libc/config/darwin/x86_64/headers.txt

Modified: 
    libc/src/__support/FPUtil/FEnvImpl.h

Removed: 
    


################################################################################
diff  --git a/libc/config/darwin/x86_64/entrypoints.txt b/libc/config/darwin/x86_64/entrypoints.txt
new file mode 100644
index 0000000000000..42848c874d4dd
--- /dev/null
+++ b/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}
+)

diff  --git a/libc/config/darwin/x86_64/headers.txt b/libc/config/darwin/x86_64/headers.txt
new file mode 100644
index 0000000000000..039550e1bc572
--- /dev/null
+++ b/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
+)

diff  --git a/libc/src/__support/FPUtil/FEnvImpl.h b/libc/src/__support/FPUtil/FEnvImpl.h
index a31488d8fc8ce..cfee3ef8a996d 100644
--- a/libc/src/__support/FPUtil/FEnvImpl.h
+++ b/libc/src/__support/FPUtil/FEnvImpl.h
@@ -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
 


        


More information about the libc-commits mailing list