diff options
| author | Tim Northover <tnorthover@apple.com> | 2014-10-08 17:28:37 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2014-10-08 17:28:37 +0000 |
| commit | a5a06ad6fcc5a730febe51d2c15f608a3173c0d6 (patch) | |
| tree | 14d8673901cac61a3d2acccecc63c547dcc82b69 /compiler-rt | |
| parent | 42924431012107c78d77af227020757b371c4e2f (diff) | |
| download | bcm5719-llvm-a5a06ad6fcc5a730febe51d2c15f608a3173c0d6.tar.gz bcm5719-llvm-a5a06ad6fcc5a730febe51d2c15f608a3173c0d6.zip | |
AArch64: add support for ARM64 iOS versions of compiler-rt.
Just a dummy directory and a few sane choices in the Darwin SDK.
rdar://problem/18575597
llvm-svn: 219323
Diffstat (limited to 'compiler-rt')
| -rw-r--r-- | compiler-rt/SDKs/darwin/usr/include/stdio.h | 4 | ||||
| -rw-r--r-- | compiler-rt/SDKs/darwin/usr/include/string.h | 4 | ||||
| -rw-r--r-- | compiler-rt/SDKs/darwin/usr/include/sys/fcntl.h | 4 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/Makefile.mk | 3 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/arm64/Makefile.mk | 20 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/arm64/dummy.c | 13 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/gcc_personality_v0.c | 2 | ||||
| -rw-r--r-- | compiler-rt/make/platform/clang_darwin.mk | 14 | ||||
| -rw-r--r-- | compiler-rt/make/platform/darwin_bni.mk | 10 |
9 files changed, 67 insertions, 7 deletions
diff --git a/compiler-rt/SDKs/darwin/usr/include/stdio.h b/compiler-rt/SDKs/darwin/usr/include/stdio.h index 629b45015dc..1a8781f2074 100644 --- a/compiler-rt/SDKs/darwin/usr/include/stdio.h +++ b/compiler-rt/SDKs/darwin/usr/include/stdio.h @@ -34,7 +34,7 @@ typedef __SIZE_TYPE__ size_t; # define __FDOPEN_NAME "_fdopen" # define __FOPEN_NAME "_fopen" # define __FWRITE_NAME "_fwrite" -# elif defined(__arm) +# elif defined(__arm) || defined(__arm64) # define __FDOPEN_NAME "_fdopen" # define __FOPEN_NAME "_fopen" # define __FWRITE_NAME "_fwrite" @@ -46,7 +46,7 @@ typedef __SIZE_TYPE__ size_t; # define __FDOPEN_NAME "_fdopen" # define __FOPEN_NAME "_fopen" # define __FWRITE_NAME "_fwrite" -# elif defined(__arm) +# elif defined(__arm) || defined(__arm64) # define __FDOPEN_NAME "_fdopen" # define __FOPEN_NAME "_fopen" # define __FWRITE_NAME "_fwrite" diff --git a/compiler-rt/SDKs/darwin/usr/include/string.h b/compiler-rt/SDKs/darwin/usr/include/string.h index 1a00574cf2b..048fdba8f6d 100644 --- a/compiler-rt/SDKs/darwin/usr/include/string.h +++ b/compiler-rt/SDKs/darwin/usr/include/string.h @@ -32,13 +32,13 @@ char *strncpy(char *, const char *, size_t); #if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) # if defined(__i386) # define __STRERROR_NAME "_strerror$UNIX2003" -# elif defined(__x86_64__) || defined(__arm) +# elif defined(__x86_64__) || defined(__arm) || defined(__arm64) # define __STRERROR_NAME "_strerror" # else # error "unrecognized architecture for targeting OS X" # endif #elif defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) -# if defined(__i386) || defined (__x86_64) || defined(__arm) +# if defined(__i386) || defined (__x86_64) || defined(__arm) || defined(__arm64) # define __STRERROR_NAME "_strerror" # else # error "unrecognized architecture for targeting iOS" diff --git a/compiler-rt/SDKs/darwin/usr/include/sys/fcntl.h b/compiler-rt/SDKs/darwin/usr/include/sys/fcntl.h index e121949a416..96b24384aa6 100644 --- a/compiler-rt/SDKs/darwin/usr/include/sys/fcntl.h +++ b/compiler-rt/SDKs/darwin/usr/include/sys/fcntl.h @@ -23,7 +23,7 @@ # define __OPEN_NAME "_open$UNIX2003" # elif defined(__x86_64__) # define __OPEN_NAME "_open" -# elif defined(__arm) +# elif defined(__arm) || defined(__arm64) # define __OPEN_NAME "_open" # else # error "unrecognized architecture for targeting OS X" @@ -31,7 +31,7 @@ #elif defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) # if defined(__i386) || defined (__x86_64) # define __OPEN_NAME "_open" -# elif defined(__arm) +# elif defined(__arm) || defined(__arm64) # define __OPEN_NAME "_open" # else # error "unrecognized architecture for targeting iOS" diff --git a/compiler-rt/lib/builtins/Makefile.mk b/compiler-rt/lib/builtins/Makefile.mk index 4dbadd0bf20..00e2f53fc40 100644 --- a/compiler-rt/lib/builtins/Makefile.mk +++ b/compiler-rt/lib/builtins/Makefile.mk @@ -13,6 +13,9 @@ SubDirs := # Add arch specific optimized implementations. SubDirs += i386 ppc x86_64 arm armv6m +# Add ARM64 dir. +SubDirs += arm64 + # Define the variables for this specific directory. Sources := $(foreach file,$(wildcard $(Dir)/*.c),$(notdir $(file))) ObjNames := $(Sources:%.c=%.o) diff --git a/compiler-rt/lib/builtins/arm64/Makefile.mk b/compiler-rt/lib/builtins/arm64/Makefile.mk new file mode 100644 index 00000000000..7f7e3866130 --- /dev/null +++ b/compiler-rt/lib/builtins/arm64/Makefile.mk @@ -0,0 +1,20 @@ +#===- lib/builtins/arm64/Makefile.mk -----------------------*- Makefile -*--===# +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +#===------------------------------------------------------------------------===# + +ModuleName := builtins +SubDirs := +OnlyArchs := arm64 + +AsmSources := $(foreach file,$(wildcard $(Dir)/*.S),$(notdir $(file))) +Sources := $(foreach file,$(wildcard $(Dir)/*.c),$(notdir $(file))) +ObjNames := $(Sources:%.c=%.o) $(AsmSources:%.S=%.o) +Implementation := Optimized + +# FIXME: use automatic dependencies? +Dependencies := $(wildcard lib/*.h $(Dir)/*.h) diff --git a/compiler-rt/lib/builtins/arm64/dummy.c b/compiler-rt/lib/builtins/arm64/dummy.c new file mode 100644 index 00000000000..76bec30486f --- /dev/null +++ b/compiler-rt/lib/builtins/arm64/dummy.c @@ -0,0 +1,13 @@ +/* ===---------- dummy.c - Implements dummy function, for bringup -----------=== + * + * The LLVM Compiler Infrastructure + * + * This file is dual licensed under the MIT and the University of Illinois Open + * Source Licenses. See LICENSE.TXT for details. + * + * ===----------------------------------------------------------------------=== + */ + +static void dummy(void) __attribute__((used)); + +static void dummy(void) {} diff --git a/compiler-rt/lib/builtins/gcc_personality_v0.c b/compiler-rt/lib/builtins/gcc_personality_v0.c index 91a77f44414..869f4178e85 100644 --- a/compiler-rt/lib/builtins/gcc_personality_v0.c +++ b/compiler-rt/lib/builtins/gcc_personality_v0.c @@ -180,7 +180,7 @@ static uintptr_t readEncodedPointer(const uint8_t** data, uint8_t encoding) * on each frame as the stack is unwound during a C++ exception * throw through a C function compiled with -fexceptions. */ -#if __arm__ +#if __USING_SJLJ_EXCEPTIONS__ // the setjump-longjump based exceptions personality routine has a different name COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_sj0(int version, _Unwind_Action actions, diff --git a/compiler-rt/make/platform/clang_darwin.mk b/compiler-rt/make/platform/clang_darwin.mk index 5a1b0cb062f..4d051e263c8 100644 --- a/compiler-rt/make/platform/clang_darwin.mk +++ b/compiler-rt/make/platform/clang_darwin.mk @@ -117,6 +117,13 @@ UniversalArchs.cc_kext_ios5 := $(filter-out armv7, $(UniversalArchs.cc_kext_ios5 UniversalArchs.profile_ios := $(filter-out armv7, $(UniversalArchs.profile_ios)) endif +### ARM64 Support ### +# Explicitly add these, to workaround CheckArches function not including the +# CFLAGS, and not wanting to require an ARM64 assembler be installed. +UniversalArchs.ios += arm64 +UniversalArchs.cc_kext += arm64 +UniversalArchs.profile_ios += arm64 + # If RC_SUPPORTED_ARCHS is defined, treat it as a list of the architectures we # are intended to support and limit what we try to build to that. # @@ -176,6 +183,7 @@ CFLAGS.ios.x86_64h := $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS) CFLAGS.ios.armv7 := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS) CFLAGS.ios.armv7k := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS) CFLAGS.ios.armv7s := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS) +CFLAGS.ios.arm64 := $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS) CFLAGS.osx.i386 := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS) CFLAGS.osx.x86_64 := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS) CFLAGS.osx.x86_64h := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS) @@ -185,6 +193,7 @@ CFLAGS.cc_kext.x86_64h := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS) CFLAGS.cc_kext.armv7 := $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS) CFLAGS.cc_kext.armv7k := $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS) CFLAGS.cc_kext.armv7s := $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS) +CFLAGS.cc_kext.arm64 := $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS) CFLAGS.cc_kext_ios5.armv7 := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS) CFLAGS.cc_kext_ios5.armv7k := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS) CFLAGS.cc_kext_ios5.armv7s := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS) @@ -197,6 +206,7 @@ CFLAGS.profile_ios.x86_64h := $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS) CFLAGS.profile_ios.armv7 := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS) CFLAGS.profile_ios.armv7k := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS) CFLAGS.profile_ios.armv7s := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS) +CFLAGS.profile_ios.arm64 := $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS) # Configure the asan_osx_dynamic library to be built shared. SHARED_LIBRARY.asan_osx_dynamic := 1 @@ -219,6 +229,7 @@ FUNCTIONS.ios.i386 := $(FUNCTIONS.ios) \ divsi3 udivsi3 FUNCTIONS.ios.x86_64 := $(FUNCTIONS.ios.i386) FUNCTIONS.ios.x86_64h := $(FUNCTIONS.ios.x86_64) +FUNCTIONS.ios.arm64 := dummy FUNCTIONS.osx := mulosi4 mulodi4 muloti4 @@ -388,6 +399,7 @@ CCKEXT_ARMVFP_FUNCTIONS := $(CCKEXT_ARM_FUNCTIONS) \ FUNCTIONS.cc_kext.armv7 := $(CCKEXT_ARMVFP_FUNCTIONS) FUNCTIONS.cc_kext.armv7k := $(CCKEXT_ARMVFP_FUNCTIONS) FUNCTIONS.cc_kext.armv7s := $(CCKEXT_ARMVFP_FUNCTIONS) +FUNCTIONS.cc_kext.arm64 := dummy FUNCTIONS.cc_kext_ios5.armv7 := $(CCKEXT_ARMVFP_FUNCTIONS) FUNCTIONS.cc_kext_ios5.armv7k := $(CCKEXT_ARMVFP_FUNCTIONS) FUNCTIONS.cc_kext_ios5.armv7s := $(CCKEXT_ARMVFP_FUNCTIONS) @@ -473,6 +485,8 @@ FUNCTIONS.cc_kext.armv7k := \ $(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.armv7k)) FUNCTIONS.cc_kext.armv7s := \ $(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.armv7s)) +FUNCTIONS.cc_kext.arm64 := \ + $(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.arm64)) FUNCTIONS.cc_kext_ios5.armv7 := \ $(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext_ios5.armv7)) FUNCTIONS.cc_kext_ios5.armv7k := \ diff --git a/compiler-rt/make/platform/darwin_bni.mk b/compiler-rt/make/platform/darwin_bni.mk index 03e8d290cff..229609a185d 100644 --- a/compiler-rt/make/platform/darwin_bni.mk +++ b/compiler-rt/make/platform/darwin_bni.mk @@ -115,3 +115,13 @@ FUNCTIONS.armv7 := $(FUNCTIONS) \ FUNCTIONS.armv7s := $(FUNCTIONS.armv7) +FUNCTIONS.arm64 := divti3 modti3 \ + udivmodti4 \ + udivti3 umodti3 \ + powisf2 powidf2 \ + clzti2 \ + fixdfti fixsfti \ + fixunsdfti fixunssfti fixunssfti \ + floattidf floattisf floatuntidf floatuntisf \ + gcc_personality_v0 atomic + |

