summaryrefslogtreecommitdiffstats
path: root/compiler-rt
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2014-10-08 17:28:37 +0000
committerTim Northover <tnorthover@apple.com>2014-10-08 17:28:37 +0000
commita5a06ad6fcc5a730febe51d2c15f608a3173c0d6 (patch)
tree14d8673901cac61a3d2acccecc63c547dcc82b69 /compiler-rt
parent42924431012107c78d77af227020757b371c4e2f (diff)
downloadbcm5719-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.h4
-rw-r--r--compiler-rt/SDKs/darwin/usr/include/string.h4
-rw-r--r--compiler-rt/SDKs/darwin/usr/include/sys/fcntl.h4
-rw-r--r--compiler-rt/lib/builtins/Makefile.mk3
-rw-r--r--compiler-rt/lib/builtins/arm64/Makefile.mk20
-rw-r--r--compiler-rt/lib/builtins/arm64/dummy.c13
-rw-r--r--compiler-rt/lib/builtins/gcc_personality_v0.c2
-rw-r--r--compiler-rt/make/platform/clang_darwin.mk14
-rw-r--r--compiler-rt/make/platform/darwin_bni.mk10
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
+
OpenPOWER on IntegriCloud