Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Jun 2011 20:02:43 +0000 (UTC)
From:      Ed Schouten <ed@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r222625 - in vendor/compiler-rt/dist: lib lib/arm make make/platform test/Unit
Message-ID:  <201106022002.p52K2hJn031880@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ed
Date: Thu Jun  2 20:02:42 2011
New Revision: 222625
URL: http://svn.freebsd.org/changeset/base/222625

Log:
  Import compiler-rt r132478.

Added:
  vendor/compiler-rt/dist/lib/abi.h
  vendor/compiler-rt/dist/lib/arm/divmodsi4.S
  vendor/compiler-rt/dist/lib/arm/divsi3.S
  vendor/compiler-rt/dist/lib/arm/udivmodsi4.S
  vendor/compiler-rt/dist/lib/arm/udivsi3.S
  vendor/compiler-rt/dist/lib/arm/umodsi3.S
  vendor/compiler-rt/dist/lib/divmoddi4.c
  vendor/compiler-rt/dist/lib/subdf3.c
  vendor/compiler-rt/dist/lib/subsf3.c
Modified:
  vendor/compiler-rt/dist/lib/absvdi2.c
  vendor/compiler-rt/dist/lib/absvsi2.c
  vendor/compiler-rt/dist/lib/adddf3.c
  vendor/compiler-rt/dist/lib/addsf3.c
  vendor/compiler-rt/dist/lib/addvdi3.c
  vendor/compiler-rt/dist/lib/addvsi3.c
  vendor/compiler-rt/dist/lib/apple_versioning.c
  vendor/compiler-rt/dist/lib/arm/modsi3.S
  vendor/compiler-rt/dist/lib/ashldi3.c
  vendor/compiler-rt/dist/lib/ashrdi3.c
  vendor/compiler-rt/dist/lib/assembly.h
  vendor/compiler-rt/dist/lib/clzdi2.c
  vendor/compiler-rt/dist/lib/clzsi2.c
  vendor/compiler-rt/dist/lib/cmpdi2.c
  vendor/compiler-rt/dist/lib/ctzdi2.c
  vendor/compiler-rt/dist/lib/ctzsi2.c
  vendor/compiler-rt/dist/lib/divdf3.c
  vendor/compiler-rt/dist/lib/divdi3.c
  vendor/compiler-rt/dist/lib/divmodsi4.c
  vendor/compiler-rt/dist/lib/divsf3.c
  vendor/compiler-rt/dist/lib/divsi3.c
  vendor/compiler-rt/dist/lib/extendsfdf2.c
  vendor/compiler-rt/dist/lib/ffsdi2.c
  vendor/compiler-rt/dist/lib/fixdfdi.c
  vendor/compiler-rt/dist/lib/fixdfsi.c
  vendor/compiler-rt/dist/lib/fixsfdi.c
  vendor/compiler-rt/dist/lib/fixsfsi.c
  vendor/compiler-rt/dist/lib/fixunsdfdi.c
  vendor/compiler-rt/dist/lib/fixunsdfsi.c
  vendor/compiler-rt/dist/lib/fixunssfdi.c
  vendor/compiler-rt/dist/lib/fixunssfsi.c
  vendor/compiler-rt/dist/lib/floatdidf.c
  vendor/compiler-rt/dist/lib/floatdisf.c
  vendor/compiler-rt/dist/lib/floatsidf.c
  vendor/compiler-rt/dist/lib/floatsisf.c
  vendor/compiler-rt/dist/lib/floatundidf.c
  vendor/compiler-rt/dist/lib/floatundisf.c
  vendor/compiler-rt/dist/lib/floatunsidf.c
  vendor/compiler-rt/dist/lib/floatunsisf.c
  vendor/compiler-rt/dist/lib/lshrdi3.c
  vendor/compiler-rt/dist/lib/moddi3.c
  vendor/compiler-rt/dist/lib/modsi3.c
  vendor/compiler-rt/dist/lib/muldf3.c
  vendor/compiler-rt/dist/lib/muldi3.c
  vendor/compiler-rt/dist/lib/mulsf3.c
  vendor/compiler-rt/dist/lib/negdf2.c
  vendor/compiler-rt/dist/lib/negsf2.c
  vendor/compiler-rt/dist/lib/negvdi2.c
  vendor/compiler-rt/dist/lib/negvsi2.c
  vendor/compiler-rt/dist/lib/paritydi2.c
  vendor/compiler-rt/dist/lib/paritysi2.c
  vendor/compiler-rt/dist/lib/popcountdi2.c
  vendor/compiler-rt/dist/lib/popcountsi2.c
  vendor/compiler-rt/dist/lib/powidf2.c
  vendor/compiler-rt/dist/lib/powisf2.c
  vendor/compiler-rt/dist/lib/subvdi3.c
  vendor/compiler-rt/dist/lib/subvsi3.c
  vendor/compiler-rt/dist/lib/truncdfsf2.c
  vendor/compiler-rt/dist/lib/ucmpdi2.c
  vendor/compiler-rt/dist/lib/udivdi3.c
  vendor/compiler-rt/dist/lib/udivmoddi4.c
  vendor/compiler-rt/dist/lib/udivmodsi4.c
  vendor/compiler-rt/dist/lib/udivsi3.c
  vendor/compiler-rt/dist/lib/umoddi3.c
  vendor/compiler-rt/dist/lib/umodsi3.c
  vendor/compiler-rt/dist/make/AppleBI.mk
  vendor/compiler-rt/dist/make/platform/clang_darwin.mk
  vendor/compiler-rt/dist/make/platform/darwin_bni.mk
  vendor/compiler-rt/dist/test/Unit/absvti2_test.c
  vendor/compiler-rt/dist/test/Unit/adddf3vfp_test.c
  vendor/compiler-rt/dist/test/Unit/addsf3vfp_test.c
  vendor/compiler-rt/dist/test/Unit/addvti3_test.c
  vendor/compiler-rt/dist/test/Unit/ashlti3_test.c
  vendor/compiler-rt/dist/test/Unit/ashrti3_test.c
  vendor/compiler-rt/dist/test/Unit/bswapdi2_test.c
  vendor/compiler-rt/dist/test/Unit/bswapsi2_test.c
  vendor/compiler-rt/dist/test/Unit/clzti2_test.c
  vendor/compiler-rt/dist/test/Unit/cmpti2_test.c
  vendor/compiler-rt/dist/test/Unit/ctzti2_test.c
  vendor/compiler-rt/dist/test/Unit/divdf3vfp_test.c
  vendor/compiler-rt/dist/test/Unit/divsf3vfp_test.c
  vendor/compiler-rt/dist/test/Unit/divtc3_test.c
  vendor/compiler-rt/dist/test/Unit/divti3_test.c
  vendor/compiler-rt/dist/test/Unit/divxc3_test.c
  vendor/compiler-rt/dist/test/Unit/eqdf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/eqsf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/extebdsfdf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/ffsti2_test.c
  vendor/compiler-rt/dist/test/Unit/fixdfsivfp_test.c
  vendor/compiler-rt/dist/test/Unit/fixdfti_test.c
  vendor/compiler-rt/dist/test/Unit/fixsfsivfp_test.c
  vendor/compiler-rt/dist/test/Unit/fixsfti_test.c
  vendor/compiler-rt/dist/test/Unit/fixunsdfsivfp_test.c
  vendor/compiler-rt/dist/test/Unit/fixunssfsivfp_test.c
  vendor/compiler-rt/dist/test/Unit/fixunstfdi_test.c
  vendor/compiler-rt/dist/test/Unit/fixunsxfdi_test.c
  vendor/compiler-rt/dist/test/Unit/fixunsxfti_test.c
  vendor/compiler-rt/dist/test/Unit/fixxfdi_test.c
  vendor/compiler-rt/dist/test/Unit/fixxfti_test.c
  vendor/compiler-rt/dist/test/Unit/floatdixf_test.c
  vendor/compiler-rt/dist/test/Unit/floatsidfvfp_test.c
  vendor/compiler-rt/dist/test/Unit/floatsisfvfp_test.c
  vendor/compiler-rt/dist/test/Unit/floattidf_test.c
  vendor/compiler-rt/dist/test/Unit/floattisf_test.c
  vendor/compiler-rt/dist/test/Unit/floattixf_test.c
  vendor/compiler-rt/dist/test/Unit/floatundixf_test.c
  vendor/compiler-rt/dist/test/Unit/floatunssidfvfp_test.c
  vendor/compiler-rt/dist/test/Unit/floatunssisfvfp_test.c
  vendor/compiler-rt/dist/test/Unit/floatuntidf_test.c
  vendor/compiler-rt/dist/test/Unit/floatuntisf_test.c
  vendor/compiler-rt/dist/test/Unit/floatuntixf_test.c
  vendor/compiler-rt/dist/test/Unit/gedf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/gesf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/gtdf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/gtsf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/ledf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/lesf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/lshrti3_test.c
  vendor/compiler-rt/dist/test/Unit/ltdf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/ltsf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/modti3_test.c
  vendor/compiler-rt/dist/test/Unit/muldf3vfp_test.c
  vendor/compiler-rt/dist/test/Unit/mulsf3vfp_test.c
  vendor/compiler-rt/dist/test/Unit/multc3_test.c
  vendor/compiler-rt/dist/test/Unit/multi3_test.c
  vendor/compiler-rt/dist/test/Unit/mulvti3_test.c
  vendor/compiler-rt/dist/test/Unit/mulxc3_test.c
  vendor/compiler-rt/dist/test/Unit/nedf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/negdf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/negsf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/negti2_test.c
  vendor/compiler-rt/dist/test/Unit/negvti2_test.c
  vendor/compiler-rt/dist/test/Unit/nesf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/parityti2_test.c
  vendor/compiler-rt/dist/test/Unit/popcountti2_test.c
  vendor/compiler-rt/dist/test/Unit/powitf2_test.c
  vendor/compiler-rt/dist/test/Unit/powixf2_test.c
  vendor/compiler-rt/dist/test/Unit/subdf3vfp_test.c
  vendor/compiler-rt/dist/test/Unit/subsf3vfp_test.c
  vendor/compiler-rt/dist/test/Unit/subvti3_test.c
  vendor/compiler-rt/dist/test/Unit/trampoline_setup_test.c
  vendor/compiler-rt/dist/test/Unit/truncdfsf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/ucmpti2_test.c
  vendor/compiler-rt/dist/test/Unit/udivmodti4_test.c
  vendor/compiler-rt/dist/test/Unit/udivti3_test.c
  vendor/compiler-rt/dist/test/Unit/umodti3_test.c
  vendor/compiler-rt/dist/test/Unit/unorddf2vfp_test.c
  vendor/compiler-rt/dist/test/Unit/unordsf2vfp_test.c

Added: vendor/compiler-rt/dist/lib/abi.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/lib/abi.h	Thu Jun  2 20:02:42 2011	(r222625)
@@ -0,0 +1,23 @@
+/* ===------ abi.h - configuration header for compiler-rt  -----------------===
+ *
+ *                     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.
+ *
+ * ===----------------------------------------------------------------------===
+ *
+ * This file is a configuration header for compiler-rt.
+ * This file is not part of the interface of this library.
+ *
+ * ===----------------------------------------------------------------------===
+ */
+
+#if __ARM_EABI__
+# define ARM_EABI_FNALIAS(aeabi_name, name)         \
+  void __aeabi_##aeabi_name() __attribute__((alias("__" #name)));
+# define COMPILER_RT_ABI __attribute__((pcs("aapcs")))
+#else
+# define ARM_EABI_FNALIAS(aeabi_name, name)
+# define COMPILER_RT_ABI
+#endif

Modified: vendor/compiler-rt/dist/lib/absvdi2.c
==============================================================================
--- vendor/compiler-rt/dist/lib/absvdi2.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/absvdi2.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -11,6 +11,7 @@
  *
  *===----------------------------------------------------------------------===
  */
+#include "abi.h"
 
 #include "int_lib.h"
 #include <stdlib.h>
@@ -19,7 +20,7 @@
 
 /* Effects: aborts if abs(x) < 0 */
 
-di_int
+COMPILER_RT_ABI di_int
 __absvdi2(di_int a)
 {
     const int N = (int)(sizeof(di_int) * CHAR_BIT);

Modified: vendor/compiler-rt/dist/lib/absvsi2.c
==============================================================================
--- vendor/compiler-rt/dist/lib/absvsi2.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/absvsi2.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -10,7 +10,8 @@
  * This file implements __absvsi2 for the compiler_rt library.
  *
  * ===----------------------------------------------------------------------===
- */ 
+ */
+#include "abi.h"
 
 #include "int_lib.h"
 #include <stdlib.h>
@@ -19,7 +20,7 @@
 
 /* Effects: aborts if abs(x) < 0 */
 
-si_int
+COMPILER_RT_ABI si_int
 __absvsi2(si_int a)
 {
     const int N = (int)(sizeof(si_int) * CHAR_BIT);

Modified: vendor/compiler-rt/dist/lib/adddf3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/adddf3.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/adddf3.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -1,4 +1,4 @@
-//===-- lib/adddf3.c - Double-precision addition and subtraction --*- C -*-===//
+//===-- lib/adddf3.c - Double-precision addition ------------------*- C -*-===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -7,15 +7,20 @@
 //
 //===----------------------------------------------------------------------===//
 //
-// This file implements double-precision soft-float addition and subtraction
-// with the IEEE-754 default rounding (to nearest, ties to even).
+// This file implements double-precision soft-float addition with the IEEE-754
+// default rounding (to nearest, ties to even).
 //
 //===----------------------------------------------------------------------===//
 
+#include "abi.h"
+
 #define DOUBLE_PRECISION
 #include "fp_lib.h"
 
-fp_t __adddf3(fp_t a, fp_t b) {
+ARM_EABI_FNALIAS(dadd, adddf3);
+
+COMPILER_RT_ABI fp_t
+__adddf3(fp_t a, fp_t b) {
     
     rep_t aRep = toRep(a);
     rep_t bRep = toRep(b);
@@ -147,8 +152,3 @@ fp_t __adddf3(fp_t a, fp_t b) {
     if (roundGuardSticky == 0x4) result += result & 1;
     return fromRep(result);
 }
-
-// Subtraction; flip the sign bit of b and add.
-fp_t __subdf3(fp_t a, fp_t b) {
-    return __adddf3(a, fromRep(toRep(b) ^ signBit));
-}

Modified: vendor/compiler-rt/dist/lib/addsf3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/addsf3.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/addsf3.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -1,4 +1,4 @@
-//===-- lib/addsf3.c - Single-precision addition and subtraction --*- C -*-===//
+//===-- lib/addsf3.c - Single-precision addition ------------------*- C -*-===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -7,14 +7,18 @@
 //
 //===----------------------------------------------------------------------===//
 //
-// This file implements single-precision soft-float addition and subtraction
-// with the IEEE-754 default rounding (to nearest, ties to even).
+// This file implements single-precision soft-float addition with the IEEE-754
+// default rounding (to nearest, ties to even).
 //
 //===----------------------------------------------------------------------===//
 
+#include "abi.h"
+
 #define SINGLE_PRECISION
 #include "fp_lib.h"
 
+ARM_EABI_FNALIAS(fadd, addsf3);
+
 fp_t __addsf3(fp_t a, fp_t b) {
 
     rep_t aRep = toRep(a);
@@ -147,18 +151,3 @@ fp_t __addsf3(fp_t a, fp_t b) {
     if (roundGuardSticky == 0x4) result += result & 1;
     return fromRep(result);
 }
-
-// Subtraction; flip the sign bit of b and add.
-fp_t __subsf3(fp_t a, fp_t b) {
-    return __addsf3(a, fromRep(toRep(b) ^ signBit));
-}
-
-
-
-
-
-
-
-
-
-

Modified: vendor/compiler-rt/dist/lib/addvdi3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/addvdi3.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/addvdi3.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -11,6 +11,7 @@
  *
  * ===----------------------------------------------------------------------===
  */
+#include "abi.h"
 
 #include "int_lib.h"
 #include <stdlib.h>
@@ -19,7 +20,7 @@
 
 /* Effects: aborts if a + b overflows */
 
-di_int
+COMPILER_RT_ABI di_int
 __addvdi3(di_int a, di_int b)
 {
     di_int s = a + b;

Modified: vendor/compiler-rt/dist/lib/addvsi3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/addvsi3.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/addvsi3.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -11,6 +11,7 @@
  *
  * ===----------------------------------------------------------------------===
  */
+#include "abi.h"
 
 #include "int_lib.h"
 #include <stdlib.h>
@@ -19,7 +20,7 @@
 
 /* Effects: aborts if a + b overflows */
 
-si_int
+COMPILER_RT_ABI si_int
 __addvsi3(si_int a, si_int b)
 {
     si_int s = a + b;

Modified: vendor/compiler-rt/dist/lib/apple_versioning.c
==============================================================================
--- vendor/compiler-rt/dist/lib/apple_versioning.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/apple_versioning.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -143,6 +143,147 @@ NOT_HERE_BEFORE_10_6(__gcc_qsub)
 NOT_HERE_BEFORE_10_6(__trampoline_setup)
 #endif /* __ppc__ */
 
+#if __arm__ && __DYNAMIC__
+   #define NOT_HERE_UNTIL_AFTER_4_3(sym) \
+        extern const char sym##_tmp1 __asm("$ld$hide$os3.0$_" #sym ); \
+            __attribute__((visibility("default"))) const char sym##_tmp1 = 0; \
+        extern const char sym##_tmp2 __asm("$ld$hide$os3.1$_" #sym ); \
+            __attribute__((visibility("default"))) const char sym##_tmp2 = 0; \
+        extern const char sym##_tmp3 __asm("$ld$hide$os3.2$_" #sym ); \
+            __attribute__((visibility("default"))) const char sym##_tmp3 = 0; \
+        extern const char sym##_tmp4 __asm("$ld$hide$os4.0$_" #sym ); \
+            __attribute__((visibility("default"))) const char sym##_tmp4 = 0; \
+        extern const char sym##_tmp5 __asm("$ld$hide$os4.1$_" #sym ); \
+            __attribute__((visibility("default"))) const char sym##_tmp5 = 0; \
+        extern const char sym##_tmp6 __asm("$ld$hide$os4.2$_" #sym ); \
+            __attribute__((visibility("default"))) const char sym##_tmp6 = 0; \
+        extern const char sym##_tmp7 __asm("$ld$hide$os4.3$_" #sym ); \
+            __attribute__((visibility("default"))) const char sym##_tmp7 = 0; 
+            
+NOT_HERE_UNTIL_AFTER_4_3(__absvdi2)
+NOT_HERE_UNTIL_AFTER_4_3(__absvsi2)
+NOT_HERE_UNTIL_AFTER_4_3(__adddf3)
+NOT_HERE_UNTIL_AFTER_4_3(__adddf3vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__addsf3)
+NOT_HERE_UNTIL_AFTER_4_3(__addsf3vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__addvdi3)
+NOT_HERE_UNTIL_AFTER_4_3(__addvsi3)
+NOT_HERE_UNTIL_AFTER_4_3(__ashldi3)
+NOT_HERE_UNTIL_AFTER_4_3(__ashrdi3)
+NOT_HERE_UNTIL_AFTER_4_3(__bswapdi2)
+NOT_HERE_UNTIL_AFTER_4_3(__bswapsi2)
+NOT_HERE_UNTIL_AFTER_4_3(__clzdi2)
+NOT_HERE_UNTIL_AFTER_4_3(__clzsi2)
+NOT_HERE_UNTIL_AFTER_4_3(__cmpdi2)
+NOT_HERE_UNTIL_AFTER_4_3(__ctzdi2)
+NOT_HERE_UNTIL_AFTER_4_3(__ctzsi2)
+NOT_HERE_UNTIL_AFTER_4_3(__divdc3)
+NOT_HERE_UNTIL_AFTER_4_3(__divdf3)
+NOT_HERE_UNTIL_AFTER_4_3(__divdf3vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__divdi3)
+NOT_HERE_UNTIL_AFTER_4_3(__divsc3)
+NOT_HERE_UNTIL_AFTER_4_3(__divsf3)
+NOT_HERE_UNTIL_AFTER_4_3(__divsf3vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__divsi3)
+NOT_HERE_UNTIL_AFTER_4_3(__eqdf2)
+NOT_HERE_UNTIL_AFTER_4_3(__eqdf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__eqsf2)
+NOT_HERE_UNTIL_AFTER_4_3(__eqsf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__extendsfdf2)
+NOT_HERE_UNTIL_AFTER_4_3(__extendsfdf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__ffsdi2)
+NOT_HERE_UNTIL_AFTER_4_3(__fixdfdi)
+NOT_HERE_UNTIL_AFTER_4_3(__fixdfsi)
+NOT_HERE_UNTIL_AFTER_4_3(__fixdfsivfp)
+NOT_HERE_UNTIL_AFTER_4_3(__fixsfdi)
+NOT_HERE_UNTIL_AFTER_4_3(__fixsfsi)
+NOT_HERE_UNTIL_AFTER_4_3(__fixsfsivfp)
+NOT_HERE_UNTIL_AFTER_4_3(__fixunsdfdi)
+NOT_HERE_UNTIL_AFTER_4_3(__fixunsdfsi)
+NOT_HERE_UNTIL_AFTER_4_3(__fixunsdfsivfp)
+NOT_HERE_UNTIL_AFTER_4_3(__fixunssfdi)
+NOT_HERE_UNTIL_AFTER_4_3(__fixunssfsi)
+NOT_HERE_UNTIL_AFTER_4_3(__fixunssfsivfp)
+NOT_HERE_UNTIL_AFTER_4_3(__floatdidf)
+NOT_HERE_UNTIL_AFTER_4_3(__floatdisf)
+NOT_HERE_UNTIL_AFTER_4_3(__floatsidf)
+NOT_HERE_UNTIL_AFTER_4_3(__floatsidfvfp)
+NOT_HERE_UNTIL_AFTER_4_3(__floatsisf)
+NOT_HERE_UNTIL_AFTER_4_3(__floatsisfvfp)
+NOT_HERE_UNTIL_AFTER_4_3(__floatundidf)
+NOT_HERE_UNTIL_AFTER_4_3(__floatundisf)
+NOT_HERE_UNTIL_AFTER_4_3(__floatunsidf)
+NOT_HERE_UNTIL_AFTER_4_3(__floatunsisf)
+NOT_HERE_UNTIL_AFTER_4_3(__floatunssidfvfp)
+NOT_HERE_UNTIL_AFTER_4_3(__floatunssisfvfp)
+NOT_HERE_UNTIL_AFTER_4_3(__gedf2)
+NOT_HERE_UNTIL_AFTER_4_3(__gedf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__gesf2)
+NOT_HERE_UNTIL_AFTER_4_3(__gesf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__gtdf2)
+NOT_HERE_UNTIL_AFTER_4_3(__gtdf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__gtsf2)
+NOT_HERE_UNTIL_AFTER_4_3(__gtsf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__ledf2)
+NOT_HERE_UNTIL_AFTER_4_3(__ledf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__lesf2)
+NOT_HERE_UNTIL_AFTER_4_3(__lesf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__lshrdi3)
+NOT_HERE_UNTIL_AFTER_4_3(__ltdf2)
+NOT_HERE_UNTIL_AFTER_4_3(__ltdf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__ltsf2)
+NOT_HERE_UNTIL_AFTER_4_3(__ltsf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__moddi3)
+NOT_HERE_UNTIL_AFTER_4_3(__modsi3)
+NOT_HERE_UNTIL_AFTER_4_3(__muldc3)
+NOT_HERE_UNTIL_AFTER_4_3(__muldf3)
+NOT_HERE_UNTIL_AFTER_4_3(__muldf3vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__muldi3)
+NOT_HERE_UNTIL_AFTER_4_3(__mulsc3)
+NOT_HERE_UNTIL_AFTER_4_3(__mulsf3)
+NOT_HERE_UNTIL_AFTER_4_3(__mulsf3vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__mulvdi3)
+NOT_HERE_UNTIL_AFTER_4_3(__mulvsi3)
+NOT_HERE_UNTIL_AFTER_4_3(__nedf2)
+NOT_HERE_UNTIL_AFTER_4_3(__nedf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__negdi2)
+NOT_HERE_UNTIL_AFTER_4_3(__negvdi2)
+NOT_HERE_UNTIL_AFTER_4_3(__negvsi2)
+NOT_HERE_UNTIL_AFTER_4_3(__nesf2)
+NOT_HERE_UNTIL_AFTER_4_3(__nesf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__paritydi2)
+NOT_HERE_UNTIL_AFTER_4_3(__paritysi2)
+NOT_HERE_UNTIL_AFTER_4_3(__popcountdi2)
+NOT_HERE_UNTIL_AFTER_4_3(__popcountsi2)
+NOT_HERE_UNTIL_AFTER_4_3(__powidf2)
+NOT_HERE_UNTIL_AFTER_4_3(__powisf2)
+NOT_HERE_UNTIL_AFTER_4_3(__subdf3)
+NOT_HERE_UNTIL_AFTER_4_3(__subdf3vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__subsf3)
+NOT_HERE_UNTIL_AFTER_4_3(__subsf3vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__subvdi3)
+NOT_HERE_UNTIL_AFTER_4_3(__subvsi3)
+NOT_HERE_UNTIL_AFTER_4_3(__truncdfsf2)
+NOT_HERE_UNTIL_AFTER_4_3(__truncdfsf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__ucmpdi2)
+NOT_HERE_UNTIL_AFTER_4_3(__udivdi3)
+NOT_HERE_UNTIL_AFTER_4_3(__udivmoddi4)
+NOT_HERE_UNTIL_AFTER_4_3(__udivsi3)
+NOT_HERE_UNTIL_AFTER_4_3(__umoddi3)
+NOT_HERE_UNTIL_AFTER_4_3(__umodsi3)
+NOT_HERE_UNTIL_AFTER_4_3(__unorddf2)
+NOT_HERE_UNTIL_AFTER_4_3(__unorddf2vfp)
+NOT_HERE_UNTIL_AFTER_4_3(__unordsf2)
+NOT_HERE_UNTIL_AFTER_4_3(__unordsf2vfp)
+
+NOT_HERE_UNTIL_AFTER_4_3(__divmodsi4)
+NOT_HERE_UNTIL_AFTER_4_3(__udivmodsi4)
+#endif // __arm__ && __DYNAMIC__
+
+       
+       
+
+
 #else /* !__APPLE__ */
 
 extern int avoid_empty_file;

Added: vendor/compiler-rt/dist/lib/arm/divmodsi4.S
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/lib/arm/divmodsi4.S	Thu Jun  2 20:02:42 2011	(r222625)
@@ -0,0 +1,47 @@
+/*===-- divmodsi4.S - 32-bit signed integer divide and modulus ------------===//
+ *
+ *                     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.
+ *
+ *===----------------------------------------------------------------------===//
+ *
+ * This file implements the __divmodsi4 (32-bit signed integer divide and
+ * modulus) function for the ARM architecture.  A naive digit-by-digit
+ * computation is employed for simplicity.
+ *
+ *===----------------------------------------------------------------------===*/
+
+#include "../assembly.h"
+
+#define ESTABLISH_FRAME    \
+    push   {r4-r7, lr}   ;\
+    add     r7,     sp, #12
+#define CLEAR_FRAME_AND_RETURN \
+    pop    {r4-r7, pc}
+
+.syntax unified
+.align 3
+DEFINE_COMPILERRT_FUNCTION(__divmodsi4)
+    ESTABLISH_FRAME
+//  Set aside the sign of the quotient and modulus, and the address for the
+//  modulus.
+    eor     r4,     r0, r1
+    mov     r5,     r0
+    mov     r6,     r2
+//  Take the absolute value of a and b via abs(x) = (x^(x >> 31)) - (x >> 31).
+    eor     ip,     r0, r0, asr #31
+    eor     lr,     r1, r1, asr #31
+    sub     r0,     ip, r0, asr #31
+    sub     r1,     lr, r1, asr #31
+//  Unsigned divmod:
+    bl      SYMBOL_NAME(__udivmodsi4)
+//  Apply the sign of quotient and modulus
+    ldr     r1,    [r6]
+    eor     r0,     r0, r4, asr #31
+    eor     r1,     r1, r5, asr #31
+    sub     r0,     r0, r4, asr #31
+    sub     r1,     r1, r5, asr #31
+    str     r1,    [r6]
+    CLEAR_FRAME_AND_RETURN

Added: vendor/compiler-rt/dist/lib/arm/divsi3.S
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/lib/arm/divsi3.S	Thu Jun  2 20:02:42 2011	(r222625)
@@ -0,0 +1,41 @@
+/*===-- divsi3.S - 32-bit signed integer divide ---------------------------===//
+ *
+ *                     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.
+ *
+ *===----------------------------------------------------------------------===//
+ *
+ * This file implements the __divsi3 (32-bit signed integer divide) function
+ * for the ARM architecture as a wrapper around the unsigned routine.
+ *
+ *===----------------------------------------------------------------------===*/
+
+#include "../assembly.h"
+
+#define ESTABLISH_FRAME \
+    push   {r4, r7, lr}    ;\
+    add     r7,     sp, #4
+#define CLEAR_FRAME_AND_RETURN \
+    pop    {r4, r7, pc}
+
+.syntax unified
+.align 3
+// Ok, APCS and AAPCS agree on 32 bit args, so it's safe to use the same routine.
+DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_idiv, __divsi3)
+DEFINE_COMPILERRT_FUNCTION(__divsi3)
+    ESTABLISH_FRAME
+//  Set aside the sign of the quotient.
+    eor     r4,     r0, r1
+//  Take absolute value of a and b via abs(x) = (x^(x >> 31)) - (x >> 31).
+    eor     r2,     r0, r0, asr #31
+    eor     r3,     r1, r1, asr #31
+    sub     r0,     r2, r0, asr #31
+    sub     r1,     r3, r1, asr #31
+//  abs(a) / abs(b)
+    bl      SYMBOL_NAME(__udivsi3)
+//  Apply sign of quotient to result and return.
+    eor     r0,     r0, r4, asr #31
+    sub     r0,     r0, r4, asr #31
+    CLEAR_FRAME_AND_RETURN

Modified: vendor/compiler-rt/dist/lib/arm/modsi3.S
==============================================================================
--- vendor/compiler-rt/dist/lib/arm/modsi3.S	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/arm/modsi3.S	Thu Jun  2 20:02:42 2011	(r222625)
@@ -1,36 +1,39 @@
-//===-------- modsi3.S - Implement modsi3 ---------------------------------===//
-//
-//                     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.
-//
-//===----------------------------------------------------------------------===//
+/*===-- modsi3.S - 32-bit signed integer modulus --------------------------===//
+ *
+ *                     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.
+ *
+ *===----------------------------------------------------------------------===//
+ *
+ * This file implements the __modsi3 (32-bit signed integer modulus) function
+ * for the ARM architecture as a wrapper around the unsigned routine.
+ *
+ *===----------------------------------------------------------------------===*/
 
 #include "../assembly.h"
 
-//
-// extern int32_t __modsi3(int32_t a, int32_t b);
-//
-// Returns the remainder when dividing two 32-bit signed integers.
-// Conceptually, the function is: { return a - (a / b) * b; }
-// But if you write that in C, llvm compiles it to a call to __modsi3...
-//
-	.align 2
-DEFINE_COMPILERRT_FUNCTION(__modsi3)
-	push	{r4, r5, r7, lr}
-	add	r7, sp, #8	// set stack frame
-	mov	r5, r0		// save a
-	mov	r4, r1		// save b
-	bl      ___divsi3	// compute a/b
-#if __ARM_ARCH_7A__
-	mls     r0, r4, r0, r5  // mulitple result * b and subtract from a
-#else	
-	// before armv7, does not have "mls" instruction
-	mul	r3, r0, r4	// multiple result * b
-	sub     r0, r5, r3      // a - result
-#endif
-	pop     {r4, r5, r7, pc}
-	
-
+#define ESTABLISH_FRAME \
+    push   {r4, r7, lr}    ;\
+    add     r7,     sp, #4
+#define CLEAR_FRAME_AND_RETURN \
+    pop    {r4, r7, pc}
 
+.syntax unified
+.align 3
+DEFINE_COMPILERRT_FUNCTION(__modsi3)
+    ESTABLISH_FRAME
+    //  Set aside the sign of the dividend.
+    mov     r4,     r0
+    //  Take absolute value of a and b via abs(x) = (x^(x >> 31)) - (x >> 31).
+    eor     r2,     r0, r0, asr #31
+    eor     r3,     r1, r1, asr #31
+    sub     r0,     r2, r0, asr #31
+    sub     r1,     r3, r1, asr #31
+    //  abs(a) % abs(b)
+    bl     SYMBOL_NAME(__umodsi3)
+    //  Apply sign of dividend to result and return.
+    eor     r0,     r0, r4, asr #31
+    sub     r0,     r0, r4, asr #31
+    CLEAR_FRAME_AND_RETURN

Added: vendor/compiler-rt/dist/lib/arm/udivmodsi4.S
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/lib/arm/udivmodsi4.S	Thu Jun  2 20:02:42 2011	(r222625)
@@ -0,0 +1,80 @@
+/*===-- udivmodsi4.S - 32-bit unsigned integer divide and modulus ---------===//
+ *
+ *                     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.
+ *
+ *===----------------------------------------------------------------------===//
+ *
+ * This file implements the __udivmodsi4 (32-bit unsigned integer divide and
+ * modulus) function for the ARM architecture.  A naive digit-by-digit
+ * computation is employed for simplicity.
+ *
+ *===----------------------------------------------------------------------===*/
+
+#include "../assembly.h"
+
+#define ESTABLISH_FRAME    \
+    push   {r4, r7, lr}   ;\
+    add     r7,     sp, #4
+#define CLEAR_FRAME_AND_RETURN \
+    pop    {r4, r7, pc}
+    
+#define a r0
+#define b r1
+#define i r3
+#define r r4
+#define q ip
+#define one lr
+
+.syntax unified
+.align 3
+DEFINE_COMPILERRT_FUNCTION(__udivmodsi4)
+//  We use a simple digit by digit algorithm; before we get into the actual 
+//  divide loop, we must calculate the left-shift amount necessary to align
+//  the MSB of the divisor with that of the dividend (If this shift is
+//  negative, then the result is zero, and we early out). We also conjure a
+//  bit mask of 1 to use in constructing the quotient, and initialize the
+//  quotient to zero.
+    ESTABLISH_FRAME
+    clz     r4,     a
+    tst     b,      b   // detect divide-by-zero
+    clz     r3,     b
+    mov     q,      #0
+    beq     LOCAL_LABEL(return)    // return 0 if b is zero.
+    mov     one,    #1
+    subs    i,      r3, r4
+    blt     LOCAL_LABEL(return)    // return 0 if MSB(a) < MSB(b)
+
+LOCAL_LABEL(mainLoop):
+//  This loop basically implements the following:
+//
+//  do {
+//      if (a >= b << i) {
+//          a -= b << i;
+//          q |= 1 << i;
+//          if (a == 0) break;
+//      }
+//  } while (--i)
+//
+//  Note that this does not perform the final iteration (i == 0); by doing it
+//  this way, we can merge the two branches which is a substantial win for
+//  such a tight loop on current ARM architectures.
+    subs    r,      a,  b, lsl i
+    orrhs   q,      q,one, lsl i
+    movhs   a,      r
+    subsne  i,      i, #1
+    bhi     LOCAL_LABEL(mainLoop)
+
+//  Do the final test subtraction and update of quotient (i == 0), as it is
+//  not performed in the main loop.
+    subs    r,      a,  b
+    orrhs   q,      #1
+    movhs   a,      r
+
+LOCAL_LABEL(return):
+//  Store the remainder, and move the quotient to r0, then return.
+    str     a,     [r2]
+    mov     r0,     q
+    CLEAR_FRAME_AND_RETURN

Added: vendor/compiler-rt/dist/lib/arm/udivsi3.S
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/lib/arm/udivsi3.S	Thu Jun  2 20:02:42 2011	(r222625)
@@ -0,0 +1,80 @@
+/*===-- udivsi3.S - 32-bit unsigned integer divide ------------------------===//
+ *
+ *                     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.
+ *
+ *===----------------------------------------------------------------------===//
+ *
+ * This file implements the __udivsi3 (32-bit unsigned integer divide) 
+ * function for the ARM architecture.  A naive digit-by-digit computation is
+ * employed for simplicity.
+ *
+ *===----------------------------------------------------------------------===*/
+
+#include "../assembly.h"
+
+#define ESTABLISH_FRAME \
+    push   {r7, lr}    ;\
+    mov     r7,     sp
+#define CLEAR_FRAME_AND_RETURN \
+    pop    {r7, pc}
+
+#define a r0
+#define b r1
+#define r r2
+#define i r3
+#define q ip
+#define one lr
+
+.syntax unified
+.align 3
+// Ok, APCS and AAPCS agree on 32 bit args, so it's safe to use the same routine.
+DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_uidiv, __udivsi3)
+DEFINE_COMPILERRT_FUNCTION(__udivsi3)
+//  We use a simple digit by digit algorithm; before we get into the actual 
+//  divide loop, we must calculate the left-shift amount necessary to align
+//  the MSB of the divisor with that of the dividend (If this shift is
+//  negative, then the result is zero, and we early out). We also conjure a
+//  bit mask of 1 to use in constructing the quotient, and initialize the
+//  quotient to zero.
+    ESTABLISH_FRAME
+    clz     r2,     a
+    tst     b,      b   // detect divide-by-zero
+    clz     r3,     b
+    mov     q,      #0
+    beq     LOCAL_LABEL(return)    // return 0 if b is zero.
+    mov     one,    #1
+    subs    i,      r3, r2
+    blt     LOCAL_LABEL(return)    // return 0 if MSB(a) < MSB(b)
+
+LOCAL_LABEL(mainLoop):
+//  This loop basically implements the following:
+//
+//  do {
+//      if (a >= b << i) {
+//          a -= b << i;
+//          q |= 1 << i;
+//          if (a == 0) break;
+//      }
+//  } while (--i)
+//
+//  Note that this does not perform the final iteration (i == 0); by doing it
+//  this way, we can merge the two branches which is a substantial win for
+//  such a tight loop on current ARM architectures.
+    subs    r,      a,  b, lsl i
+    orrhs   q,      q,one, lsl i
+    movhs   a,      r
+    subsne  i,      i, #1
+    bhi     LOCAL_LABEL(mainLoop)
+
+//  Do the final test subtraction and update of quotient (i == 0), as it is
+//  not performed in the main loop.
+    subs    r,      a,  b
+    orrhs   q,      #1
+
+LOCAL_LABEL(return):
+//  Move the quotient to r0 and return.
+    mov     r0,     q
+    CLEAR_FRAME_AND_RETURN

Added: vendor/compiler-rt/dist/lib/arm/umodsi3.S
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/lib/arm/umodsi3.S	Thu Jun  2 20:02:42 2011	(r222625)
@@ -0,0 +1,58 @@
+/*===-- umodsi3.S - 32-bit unsigned integer modulus -----------------------===//
+ *
+ *                     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.
+ *
+ *===----------------------------------------------------------------------===//
+ *
+ * This file implements the __umodsi3 (32-bit unsigned integer modulus) 
+ * function for the ARM architecture.  A naive digit-by-digit computation is
+ * employed for simplicity.
+ *
+ *===----------------------------------------------------------------------===*/
+
+#include "../assembly.h"
+
+#define a r0
+#define b r1
+#define r r2
+#define i r3
+
+.syntax unified
+.align 3
+DEFINE_COMPILERRT_FUNCTION(__umodsi3)
+//  We use a simple digit by digit algorithm; before we get into the actual 
+//  divide loop, we must calculate the left-shift amount necessary to align
+//  the MSB of the divisor with that of the dividend.
+    clz     r2,     a
+    tst     b,      b       // detect b == 0
+    clz     r3,     b
+    bxeq    lr              // return a if b == 0
+    subs    i,      r3, r2
+    bxlt    lr              // return a if MSB(a) < MSB(b)
+
+LOCAL_LABEL(mainLoop):
+//  This loop basically implements the following:
+//
+//  do {
+//      if (a >= b << i) {
+//          a -= b << i;
+//          if (a == 0) break;
+//      }
+//  } while (--i)
+//
+//  Note that this does not perform the final iteration (i == 0); by doing it
+//  this way, we can merge the two branches which is a substantial win for
+//  such a tight loop on current ARM architectures.
+    subs    r,      a,  b, lsl i
+    movhs   a,      r
+    subsne  i,      i, #1
+    bhi     LOCAL_LABEL(mainLoop)
+
+//  Do the final test subtraction and update of remainder (i == 0), as it is
+//  not performed in the main loop.
+    subs    r,      a,  b
+    movhs   a,      r
+    bx      lr

Modified: vendor/compiler-rt/dist/lib/ashldi3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/ashldi3.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/ashldi3.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -11,6 +11,7 @@
  *
  * ===----------------------------------------------------------------------===
  */
+#include "abi.h"
 
 #include "int_lib.h"
 
@@ -18,7 +19,9 @@
 
 /* Precondition:  0 <= b < bits_in_dword */
 
-di_int
+ARM_EABI_FNALIAS(llsl, ashldi3);
+
+COMPILER_RT_ABI di_int
 __ashldi3(di_int a, si_int b)
 {
     const int bits_in_word = (int)(sizeof(si_int) * CHAR_BIT);

Modified: vendor/compiler-rt/dist/lib/ashrdi3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/ashrdi3.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/ashrdi3.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -11,6 +11,7 @@
  *
  * ===----------------------------------------------------------------------===
  */
+#include "abi.h"
 
 #include "int_lib.h"
 
@@ -18,7 +19,9 @@
 
 /* Precondition:  0 <= b < bits_in_dword */
 
-di_int
+ARM_EABI_FNALIAS(lasr, ashrdi3);
+
+COMPILER_RT_ABI di_int
 __ashrdi3(di_int a, si_int b)
 {
     const int bits_in_word = (int)(sizeof(si_int) * CHAR_BIT);

Modified: vendor/compiler-rt/dist/lib/assembly.h
==============================================================================
--- vendor/compiler-rt/dist/lib/assembly.h	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/assembly.h	Thu Jun  2 20:02:42 2011	(r222625)
@@ -22,33 +22,48 @@
 #define SEPARATOR ;
 #endif
 
-/* We can't use __USER_LABEL_PREFIX__ here, it isn't possible to concatenate the
-   *values* of two macros. This is quite brittle, though. */
 #if defined(__APPLE__)
-#define SYMBOL_NAME(name) _##name
+#define HIDDEN_DIRECTIVE .private_extern
+#define LOCAL_LABEL(name) L_##name
 #else
-#define SYMBOL_NAME(name) name
+#define HIDDEN_DIRECTIVE .hidden
+#define LOCAL_LABEL(name) .L_##name
 #endif
 
+#define GLUE2(a, b) a ## b
+#define GLUE(a, b) GLUE2(a, b)
+#define SYMBOL_NAME(name) GLUE(__USER_LABEL_PREFIX__, name)
+
 #ifdef VISIBILITY_HIDDEN
-#define DEFINE_COMPILERRT_FUNCTION(name) \
-  .globl SYMBOL_NAME(name) SEPARATOR     \
-  .private_extern SYMBOL_NAME(name) SEPARATOR    \
+#define DEFINE_COMPILERRT_FUNCTION(name)                   \
+  .globl SYMBOL_NAME(name) SEPARATOR                       \
+  HIDDEN_DIRECTIVE SYMBOL_NAME(name) SEPARATOR             \
   SYMBOL_NAME(name):
 #else
-#define DEFINE_COMPILERRT_FUNCTION(name) \
-  .globl SYMBOL_NAME(name) SEPARATOR     \
+#define DEFINE_COMPILERRT_FUNCTION(name)                   \
+  .globl SYMBOL_NAME(name) SEPARATOR                       \
   SYMBOL_NAME(name):
 #endif
 
-#define DEFINE_COMPILERRT_PRIVATE_FUNCTION(name) \
-  .globl SYMBOL_NAME(name) SEPARATOR             \
-  .private_extern SYMBOL_NAME(name) SEPARATOR    \
+#define DEFINE_COMPILERRT_PRIVATE_FUNCTION(name)           \
+  .globl SYMBOL_NAME(name) SEPARATOR                       \
+  HIDDEN_DIRECTIVE SYMBOL_NAME(name) SEPARATOR             \
   SYMBOL_NAME(name):
 
 #define DEFINE_COMPILERRT_PRIVATE_FUNCTION_UNMANGLED(name) \
-  .globl name SEPARATOR             \
-  .private_extern name SEPARATOR    \
+  .globl name SEPARATOR                                    \
+  HIDDEN_DIRECTIVE name SEPARATOR                          \
   name:
 
+#define DEFINE_COMPILERRT_FUNCTION_ALIAS(name, target)     \
+  .globl SYMBOL_NAME(name) SEPARATOR                       \
+  .set SYMBOL_NAME(name), SYMBOL_NAME(target) SEPARATOR
+
+#if defined (__ARM_EABI__)
+# define DEFINE_AEABI_FUNCTION_ALIAS(aeabi_name, name)      \
+  DEFINE_COMPILERRT_FUNCTION_ALIAS(aeabi_name, name)
+#else
+# define DEFINE_AEABI_FUNCTION_ALIAS(aeabi_name, name)
+#endif
+
 #endif /* COMPILERRT_ASSEMBLY_H */

Modified: vendor/compiler-rt/dist/lib/clzdi2.c
==============================================================================
--- vendor/compiler-rt/dist/lib/clzdi2.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/clzdi2.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -1,6 +1,6 @@
 /* ===-- clzdi2.c - Implement __clzdi2 -------------------------------------===
  *
- *      	       The LLVM Compiler Infrastructure
+ *               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.
@@ -11,6 +11,7 @@
  *
  * ===----------------------------------------------------------------------===
  */
+#include "abi.h"
 
 #include "int_lib.h"
 
@@ -18,7 +19,7 @@
 
 /* Precondition: a != 0 */
 
-si_int
+COMPILER_RT_ABI si_int
 __clzdi2(di_int a)
 {
     dwords x;

Modified: vendor/compiler-rt/dist/lib/clzsi2.c
==============================================================================
--- vendor/compiler-rt/dist/lib/clzsi2.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/clzsi2.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -1,6 +1,6 @@
 /* ===-- clzsi2.c - Implement __clzsi2 -------------------------------------===
  *
- *      	       The LLVM Compiler Infrastructure
+ *               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.
@@ -11,6 +11,7 @@
  *
  * ===----------------------------------------------------------------------===
  */
+#include "abi.h"
 
 #include "int_lib.h"
 
@@ -18,7 +19,7 @@
 
 /* Precondition: a != 0 */
 
-si_int
+COMPILER_RT_ABI si_int
 __clzsi2(si_int a)
 {
     su_int x = (su_int)a;

Modified: vendor/compiler-rt/dist/lib/cmpdi2.c
==============================================================================
--- vendor/compiler-rt/dist/lib/cmpdi2.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/cmpdi2.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -6,20 +6,21 @@
  * Source Licenses. See LICENSE.TXT for details.
  *
  * ===----------------------------------------------------------------------===
- * 
+ *
  * This file implements __cmpdi2 for the compiler_rt library.
  *
  * ===----------------------------------------------------------------------===
  */
+#include "abi.h"
 
 #include "int_lib.h"
 
-/* Returns:  if (a <  b) returns 0
+/* Returns: if (a <  b) returns 0
 *           if (a == b) returns 1
 *           if (a >  b) returns 2
 */
 
-si_int
+COMPILER_RT_ABI si_int
 __cmpdi2(di_int a, di_int b)
 {
     dwords x;

Modified: vendor/compiler-rt/dist/lib/ctzdi2.c
==============================================================================
--- vendor/compiler-rt/dist/lib/ctzdi2.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/ctzdi2.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -11,6 +11,7 @@
  *
  * ===----------------------------------------------------------------------===
  */
+#include "abi.h"
 
 #include "int_lib.h"
 
@@ -18,7 +19,7 @@
 
 /* Precondition: a != 0 */
 
-si_int
+COMPILER_RT_ABI si_int
 __ctzdi2(di_int a)
 {
     dwords x;

Modified: vendor/compiler-rt/dist/lib/ctzsi2.c
==============================================================================
--- vendor/compiler-rt/dist/lib/ctzsi2.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/ctzsi2.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -11,6 +11,7 @@
  *
  * ===----------------------------------------------------------------------===
  */
+#include "abi.h"
 
 #include "int_lib.h"
 
@@ -18,7 +19,7 @@
 
 /* Precondition: a != 0 */
 
-si_int
+COMPILER_RT_ABI si_int
 __ctzsi2(si_int a)
 {
     su_int x = (su_int)a;

Modified: vendor/compiler-rt/dist/lib/divdf3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/divdf3.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/divdf3.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -15,10 +15,13 @@
 // underflow with correct rounding.
 //
 //===----------------------------------------------------------------------===//
+#include "abi.h"
 
 #define DOUBLE_PRECISION
 #include "fp_lib.h"
 
+ARM_EABI_FNALIAS(ddiv, divdf3);
+
 fp_t __divdf3(fp_t a, fp_t b) {
     
     const unsigned int aExponent = toRep(a) >> significandBits & maxExponent;

Modified: vendor/compiler-rt/dist/lib/divdi3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/divdi3.c	Thu Jun  2 19:49:47 2011	(r222624)
+++ vendor/compiler-rt/dist/lib/divdi3.c	Thu Jun  2 20:02:42 2011	(r222625)
@@ -11,14 +11,15 @@
  *
  * ===----------------------------------------------------------------------===
  */
+#include "abi.h"
 
 #include "int_lib.h"
 
-du_int __udivmoddi4(du_int a, du_int b, du_int* rem);
+du_int COMPILER_RT_ABI __udivmoddi4(du_int a, du_int b, du_int* rem);
 
 /* Returns: a / b */
 
-di_int
+COMPILER_RT_ABI di_int
 __divdi3(di_int a, di_int b)
 {
     const int bits_in_dword_m1 = (int)(sizeof(di_int) * CHAR_BIT) - 1;

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201106022002.p52K2hJn031880>