summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Sonnenberger <joerg@bec.de>2014-01-24 14:33:42 +0000
committerJoerg Sonnenberger <joerg@bec.de>2014-01-24 14:33:42 +0000
commit7a46a761d72357c283b19c94780270b9be9c7b15 (patch)
tree68268a187208da1860aade5784fd4c9082a59d46
parentf7681d22fef1252177d55f107e35159cc60529ba (diff)
Mechanically add end-of-function markers.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@200005 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/arm/adddf3vfp.S1
-rw-r--r--lib/arm/addsf3vfp.S1
-rw-r--r--lib/arm/aeabi_dcmp.S3
-rw-r--r--lib/arm/aeabi_fcmp.S3
-rw-r--r--lib/arm/aeabi_idivmod.S1
-rw-r--r--lib/arm/aeabi_ldivmod.S1
-rw-r--r--lib/arm/aeabi_memcmp.S1
-rw-r--r--lib/arm/aeabi_memcpy.S1
-rw-r--r--lib/arm/aeabi_memmove.S1
-rw-r--r--lib/arm/aeabi_memset.S4
-rw-r--r--lib/arm/aeabi_uidivmod.S1
-rw-r--r--lib/arm/aeabi_uldivmod.S3
-rw-r--r--lib/arm/bswapdi2.S1
-rw-r--r--lib/arm/bswapsi2.S1
-rw-r--r--lib/arm/comparesf2.S31
-rw-r--r--lib/arm/divdf3vfp.S1
-rw-r--r--lib/arm/divmodsi4.S1
-rw-r--r--lib/arm/divsf3vfp.S1
-rw-r--r--lib/arm/divsi3.S1
-rw-r--r--lib/arm/eqdf2vfp.S1
-rw-r--r--lib/arm/eqsf2vfp.S2
-rw-r--r--lib/arm/extendsfdf2vfp.S1
-rw-r--r--lib/arm/fixdfsivfp.S1
-rw-r--r--lib/arm/fixsfsivfp.S1
-rw-r--r--lib/arm/fixunsdfsivfp.S1
-rw-r--r--lib/arm/fixunssfsivfp.S1
-rw-r--r--lib/arm/floatsidfvfp.S1
-rw-r--r--lib/arm/floatsisfvfp.S1
-rw-r--r--lib/arm/floatunssidfvfp.S1
-rw-r--r--lib/arm/floatunssisfvfp.S1
-rw-r--r--lib/arm/gedf2vfp.S1
-rw-r--r--lib/arm/gesf2vfp.S2
-rw-r--r--lib/arm/gtdf2vfp.S1
-rw-r--r--lib/arm/gtsf2vfp.S2
-rw-r--r--lib/arm/ledf2vfp.S1
-rw-r--r--lib/arm/lesf2vfp.S2
-rw-r--r--lib/arm/ltdf2vfp.S1
-rw-r--r--lib/arm/ltsf2vfp.S2
-rw-r--r--lib/arm/modsi3.S1
-rw-r--r--lib/arm/muldf3vfp.S1
-rw-r--r--lib/arm/mulsf3vfp.S1
-rw-r--r--lib/arm/nedf2vfp.S1
-rw-r--r--lib/arm/negdf2vfp.S1
-rw-r--r--lib/arm/negsf2vfp.S1
-rw-r--r--lib/arm/nesf2vfp.S2
-rw-r--r--lib/arm/restore_vfp_d8_d15_regs.S4
-rw-r--r--lib/arm/save_vfp_d8_d15_regs.S2
-rw-r--r--lib/arm/subdf3vfp.S1
-rw-r--r--lib/arm/subsf3vfp.S1
-rw-r--r--lib/arm/switch16.S1
-rw-r--r--lib/arm/switch32.S2
-rw-r--r--lib/arm/switch8.S1
-rw-r--r--lib/arm/switchu8.S1
-rw-r--r--lib/arm/sync_synchronize.S1
-rw-r--r--lib/arm/truncdfsf2vfp.S1
-rw-r--r--lib/arm/unorddf2vfp.S1
-rw-r--r--lib/arm/unordsf2vfp.S2
57 files changed, 78 insertions, 30 deletions
diff --git a/lib/arm/adddf3vfp.S b/lib/arm/adddf3vfp.S
index c90b0c2ea..4302b6ab3 100644
--- a/lib/arm/adddf3vfp.S
+++ b/lib/arm/adddf3vfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__adddf3vfp)
vadd.f64 d6, d6, d7
vmov r0, r1, d6 // move result back to r0/r1 pair
bx lr
+END_COMPILERRT_FUNCTION(__adddf3vfp)
diff --git a/lib/arm/addsf3vfp.S b/lib/arm/addsf3vfp.S
index 43653d526..316328abe 100644
--- a/lib/arm/addsf3vfp.S
+++ b/lib/arm/addsf3vfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__addsf3vfp)
vadd.f32 s14, s14, s15
vmov r0, s14 // move result back to r0
bx lr
+END_COMPILERRT_FUNCTION(__addsf3vfp)
diff --git a/lib/arm/aeabi_dcmp.S b/lib/arm/aeabi_dcmp.S
index c4d07727a..ee2946d2d 100644
--- a/lib/arm/aeabi_dcmp.S
+++ b/lib/arm/aeabi_dcmp.S
@@ -30,7 +30,8 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_dcmp ## cond) \
pop { r4, pc } SEPARATOR \
1: SEPARATOR \
mov r0, #1 SEPARATOR \
- pop { r4, pc }
+ pop { r4, pc } SEPARATOR \
+END_COMPILERRT_FUNCTION(__aeabi_dcmp ## cond)
DEFINE_AEABI_DCMP(eq)
DEFINE_AEABI_DCMP(lt)
diff --git a/lib/arm/aeabi_fcmp.S b/lib/arm/aeabi_fcmp.S
index 576a33f25..ac3f54721 100644
--- a/lib/arm/aeabi_fcmp.S
+++ b/lib/arm/aeabi_fcmp.S
@@ -30,7 +30,8 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_fcmp ## cond) \
pop { r4, pc } SEPARATOR \
1: SEPARATOR \
mov r0, #1 SEPARATOR \
- pop { r4, pc }
+ pop { r4, pc } SEPARATOR \
+END_COMPILERRT_FUNCTION(__aeabi_fcmp ## cond)
DEFINE_AEABI_FCMP(eq)
DEFINE_AEABI_FCMP(lt)
diff --git a/lib/arm/aeabi_idivmod.S b/lib/arm/aeabi_idivmod.S
index 0237f2221..ac5dfcc22 100644
--- a/lib/arm/aeabi_idivmod.S
+++ b/lib/arm/aeabi_idivmod.S
@@ -25,3 +25,4 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_idivmod)
ldr r1, [sp]
add sp, sp, #4
pop { pc }
+END_COMPILERRT_FUNCTION(__aeabi_idivmod)
diff --git a/lib/arm/aeabi_ldivmod.S b/lib/arm/aeabi_ldivmod.S
index 197c459eb..684252571 100644
--- a/lib/arm/aeabi_ldivmod.S
+++ b/lib/arm/aeabi_ldivmod.S
@@ -28,3 +28,4 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_ldivmod)
ldr r3, [sp, #12]
add sp, sp, #16
pop {r11, pc}
+END_COMPILERRT_FUNCTION(__aeabi_ldivmod)
diff --git a/lib/arm/aeabi_memcmp.S b/lib/arm/aeabi_memcmp.S
index ca29c10c6..fc20825f4 100644
--- a/lib/arm/aeabi_memcmp.S
+++ b/lib/arm/aeabi_memcmp.S
@@ -14,6 +14,7 @@
.align 2
DEFINE_COMPILERRT_FUNCTION(__aeabi_memcmp)
b memcmp
+END_COMPILERRT_FUNCTION(__aeabi_memcmp)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcmp4, __aeabi_memcmp)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcmp8, __aeabi_memcmp)
diff --git a/lib/arm/aeabi_memcpy.S b/lib/arm/aeabi_memcpy.S
index 8b9c7fdf5..f6184632e 100644
--- a/lib/arm/aeabi_memcpy.S
+++ b/lib/arm/aeabi_memcpy.S
@@ -14,6 +14,7 @@
.align 2
DEFINE_COMPILERRT_FUNCTION(__aeabi_memcpy)
b memcpy
+END_COMPILERRT_FUNCTION(__aeabi_memcpy)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcpy4, __aeabi_memcpy)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcpy8, __aeabi_memcpy)
diff --git a/lib/arm/aeabi_memmove.S b/lib/arm/aeabi_memmove.S
index c94ed2b21..f3d6b0e1a 100644
--- a/lib/arm/aeabi_memmove.S
+++ b/lib/arm/aeabi_memmove.S
@@ -14,6 +14,7 @@
.align 2
DEFINE_COMPILERRT_FUNCTION(__aeabi_memmove)
b memmove
+END_COMPILERRT_FUNCTION(__aeabi_memmove)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memmove4, __aeabi_memmove)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memmove8, __aeabi_memmove)
diff --git a/lib/arm/aeabi_memset.S b/lib/arm/aeabi_memset.S
index 30ab4bae5..43c085e26 100644
--- a/lib/arm/aeabi_memset.S
+++ b/lib/arm/aeabi_memset.S
@@ -18,14 +18,16 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_memset)
mov r1, r2
mov r2, r3
b memset
+END_COMPILERRT_FUNCTION(__aeabi_memset)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memset4, __aeabi_memset)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memset8, __aeabi_memset)
-
+
DEFINE_COMPILERRT_FUNCTION(__aeabi_memclr)
mov r2, r1
mov r1, #0
b memset
+END_COMPILERRT_FUNCTION(__aeabi_memclr)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memclr4, __aeabi_memclr)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memclr8, __aeabi_memclr)
diff --git a/lib/arm/aeabi_uidivmod.S b/lib/arm/aeabi_uidivmod.S
index f7e1d2ebe..4c1e818cb 100644
--- a/lib/arm/aeabi_uidivmod.S
+++ b/lib/arm/aeabi_uidivmod.S
@@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_uidivmod)
ldr r1, [sp]
add sp, sp, #4
pop { pc }
+END_COMPILERRT_FUNCTION(__aeabi_uidivmod)
diff --git a/lib/arm/aeabi_uldivmod.S b/lib/arm/aeabi_uldivmod.S
index 724049dd9..62a2113cc 100644
--- a/lib/arm/aeabi_uldivmod.S
+++ b/lib/arm/aeabi_uldivmod.S
@@ -27,4 +27,5 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_uldivmod)
ldr r2, [sp, #8]
ldr r3, [sp, #12]
add sp, sp, #16
- pop {r11, pc} \ No newline at end of file
+ pop {r11, pc}
+END_COMPILERRT_FUNCTION(__aeabi_uldivmod)
diff --git a/lib/arm/bswapdi2.S b/lib/arm/bswapdi2.S
index a0283e14e..7fae92920 100644
--- a/lib/arm/bswapdi2.S
+++ b/lib/arm/bswapdi2.S
@@ -34,3 +34,4 @@ DEFINE_COMPILERRT_FUNCTION(__bswapdi2)
#endif
mov r1, r2 // r1 = r2 = rev(r0)
bx lr
+END_COMPILERRT_FUNCTION(__bswapdi2)
diff --git a/lib/arm/bswapsi2.S b/lib/arm/bswapsi2.S
index 4c3af1f6d..139ae220e 100644
--- a/lib/arm/bswapsi2.S
+++ b/lib/arm/bswapsi2.S
@@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__bswapsi2)
rev r0, r0
#endif
bx lr
+END_COMPILERRT_FUNCTION(__bswapsi2)
diff --git a/lib/arm/comparesf2.S b/lib/arm/comparesf2.S
index 784a3466c..b8074118a 100644
--- a/lib/arm/comparesf2.S
+++ b/lib/arm/comparesf2.S
@@ -42,33 +42,30 @@
.align 2
DEFINE_COMPILERRT_FUNCTION(__eqsf2)
-DEFINE_COMPILERRT_FUNCTION(__lesf2)
-DEFINE_COMPILERRT_FUNCTION(__ltsf2)
-DEFINE_COMPILERRT_FUNCTION(__nesf2)
// Make copies of a and b with the sign bit shifted off the top. These will
// be used to detect zeros and NaNs.
mov r2, r0, lsl #1
mov r3, r1, lsl #1
-
+
// We do the comparison in three stages (ignoring NaN values for the time
// being). First, we orr the absolute values of a and b; this sets the Z
// flag if both a and b are zero (of either sign). The shift of r3 doesn't
// effect this at all, but it *does* make sure that the C flag is clear for
// the subsequent operations.
orrs r12, r2, r3, lsr #1
-
+
// Next, we check if a and b have the same or different signs. If they have
// opposite signs, this eor will set the N flag.
it ne
eorsne r12, r0, r1
-
+
// If a and b are equal (either both zeros or bit identical; again, we're
// ignoring NaNs for now), this subtract will zero out r0. If they have the
// same sign, the flags are updated as they would be for a comparison of the
// absolute values of a and b.
it pl
subspl r0, r2, r3
-
+
// If a is smaller in magnitude than b and both have the same sign, place
// the negation of the sign of b in r0. Thus, if both are negative and
// a > b, this sets r0 to 0; if both are positive and a < b, this sets
@@ -88,14 +85,14 @@ DEFINE_COMPILERRT_FUNCTION(__nesf2)
// and a > b, zero is placed in r0.
it hi
movhi r0, r1, asr #31
-
+
// If you've been keeping track, at this point r0 contains -1 if a < b and
// 0 if a >= b. All that remains to be done is to set it to 1 if a > b.
// If a == b, then the Z flag is set, so we can get the correct final value
// into r0 by simply or'ing with 1 if Z is clear.
it ne
- orrne r0, r0, #1
-
+ orrne r0, r0, #1
+
// Finally, we need to deal with NaNs. If either argument is NaN, replace
// the value in r0 with 1.
cmp r2, #0xff000000
@@ -103,9 +100,12 @@ DEFINE_COMPILERRT_FUNCTION(__nesf2)
cmpls r3, #0xff000000
movhi r0, #1
bx lr
-
+END_COMPILERRT_FUNCTION(__eqsf2)
+DEFINE_COMPILERRT_FUNCTION_ALIAS(__lesf2, __eqsf2)
+DEFINE_COMPILERRT_FUNCTION_ALIAS(__ltsf2, __eqsf2)
+DEFINE_COMPILERRT_FUNCTION_ALIAS(__nesf2, __eqsf2)
+
.align 2
-DEFINE_COMPILERRT_FUNCTION(__gesf2)
DEFINE_COMPILERRT_FUNCTION(__gtsf2)
// Identical to the preceeding except in that we return -1 for NaN values.
// Given that the two paths share so much code, one might be tempted to
@@ -123,13 +123,15 @@ DEFINE_COMPILERRT_FUNCTION(__gtsf2)
it hi
movhi r0, r1, asr #31
it ne
- orrne r0, r0, #1
+ orrne r0, r0, #1
cmp r2, #0xff000000
ite ls
cmpls r3, #0xff000000
movhi r0, #-1
bx lr
-
+END_COMPILERRT_FUNCTION(__gtsf2)
+DEFINE_COMPILERRT_FUNCTION_ALIAS(__gesf2, __gtsf2)
+
.align 2
DEFINE_COMPILERRT_FUNCTION(__unordsf2)
// Return 1 for NaN values, 0 otherwise.
@@ -141,5 +143,6 @@ DEFINE_COMPILERRT_FUNCTION(__unordsf2)
cmpls r3, #0xff000000
movhi r0, #1
bx lr
+END_COMPILERRT_FUNCTION(__unordsf2)
DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_fcmpun, __unordsf2)
diff --git a/lib/arm/divdf3vfp.S b/lib/arm/divdf3vfp.S
index 52de67f7f..ec2f99721 100644
--- a/lib/arm/divdf3vfp.S
+++ b/lib/arm/divdf3vfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__divdf3vfp)
vdiv.f64 d5, d6, d7
vmov r0, r1, d5 // move result back to r0/r1 pair
bx lr
+END_COMPILERRT_FUNCTION(__divdf3vfp)
diff --git a/lib/arm/divmodsi4.S b/lib/arm/divmodsi4.S
index 6495a8b4c..24e3657dd 100644
--- a/lib/arm/divmodsi4.S
+++ b/lib/arm/divmodsi4.S
@@ -58,3 +58,4 @@ LOCAL_LABEL(divzero):
str r1, [r6]
CLEAR_FRAME_AND_RETURN
#endif
+END_COMPILERRT_FUNCTION(__divmodsi4)
diff --git a/lib/arm/divsf3vfp.S b/lib/arm/divsf3vfp.S
index 81ba90307..a4e2f8148 100644
--- a/lib/arm/divsf3vfp.S
+++ b/lib/arm/divsf3vfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__divsf3vfp)
vdiv.f32 s13, s14, s15
vmov r0, s13 // move result back to r0
bx lr
+END_COMPILERRT_FUNCTION(__divsf3vfp)
diff --git a/lib/arm/divsi3.S b/lib/arm/divsi3.S
index b631db292..76b679352 100644
--- a/lib/arm/divsi3.S
+++ b/lib/arm/divsi3.S
@@ -49,3 +49,4 @@ ESTABLISH_FRAME
sub r0, r0, r4, asr #31
CLEAR_FRAME_AND_RETURN
#endif
+END_COMPILERRT_FUNCTION(__divsi3)
diff --git a/lib/arm/eqdf2vfp.S b/lib/arm/eqdf2vfp.S
index c41e55a34..198d42278 100644
--- a/lib/arm/eqdf2vfp.S
+++ b/lib/arm/eqdf2vfp.S
@@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__eqdf2vfp)
moveq r0, #1 // set result register to 1 if equal
movne r0, #0
bx lr
+END_COMPILERRT_FUNCTION(__eqdf2vfp)
diff --git a/lib/arm/eqsf2vfp.S b/lib/arm/eqsf2vfp.S
index 730ef88da..395187f47 100644
--- a/lib/arm/eqsf2vfp.S
+++ b/lib/arm/eqsf2vfp.S
@@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__eqsf2vfp)
moveq r0, #1 // set result register to 1 if equal
movne r0, #0
bx lr
-
+END_COMPILERRT_FUNCTION(__eqsf2vfp)
diff --git a/lib/arm/extendsfdf2vfp.S b/lib/arm/extendsfdf2vfp.S
index 17a146e02..ba31f3e0c 100644
--- a/lib/arm/extendsfdf2vfp.S
+++ b/lib/arm/extendsfdf2vfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__extendsfdf2vfp)
vcvt.f64.f32 d7, s15 // convert single to double
vmov r0, r1, d7 // return result in r0/r1 pair
bx lr
+END_COMPILERRT_FUNCTION(__extendsfdf2vfp)
diff --git a/lib/arm/fixdfsivfp.S b/lib/arm/fixdfsivfp.S
index b7c3299d1..26adbe389 100644
--- a/lib/arm/fixdfsivfp.S
+++ b/lib/arm/fixdfsivfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__fixdfsivfp)
vcvt.s32.f64 s15, d7 // convert double to 32-bit int into s15
vmov r0, s15 // move s15 to result register
bx lr
+END_COMPILERRT_FUNCTION(__fixdfsivfp)
diff --git a/lib/arm/fixsfsivfp.S b/lib/arm/fixsfsivfp.S
index 1cea6a486..c1e0dadb7 100644
--- a/lib/arm/fixsfsivfp.S
+++ b/lib/arm/fixsfsivfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__fixsfsivfp)
vcvt.s32.f32 s15, s15 // convert single to 32-bit int into s15
vmov r0, s15 // move s15 to result register
bx lr
+END_COMPILERRT_FUNCTION(__fixsfsivfp)
diff --git a/lib/arm/fixunsdfsivfp.S b/lib/arm/fixunsdfsivfp.S
index 54b03592b..fb91da752 100644
--- a/lib/arm/fixunsdfsivfp.S
+++ b/lib/arm/fixunsdfsivfp.S
@@ -24,3 +24,4 @@ DEFINE_COMPILERRT_FUNCTION(__fixunsdfsivfp)
vcvt.u32.f64 s15, d7 // convert double to 32-bit int into s15
vmov r0, s15 // move s15 to result register
bx lr
+END_COMPILERRT_FUNCTION(__fixunsdfsivfp)
diff --git a/lib/arm/fixunssfsivfp.S b/lib/arm/fixunssfsivfp.S
index 12adb529a..f12dff61a 100644
--- a/lib/arm/fixunssfsivfp.S
+++ b/lib/arm/fixunssfsivfp.S
@@ -24,3 +24,4 @@ DEFINE_COMPILERRT_FUNCTION(__fixunssfsivfp)
vcvt.u32.f32 s15, s15 // convert single to 32-bit unsigned into s15
vmov r0, s15 // move s15 to result register
bx lr
+END_COMPILERRT_FUNCTION(__fixunssfsivfp)
diff --git a/lib/arm/floatsidfvfp.S b/lib/arm/floatsidfvfp.S
index e6a1eb3e4..ab48933b9 100644
--- a/lib/arm/floatsidfvfp.S
+++ b/lib/arm/floatsidfvfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__floatsidfvfp)
vcvt.f64.s32 d7, s15 // convert 32-bit int in s15 to double in d7
vmov r0, r1, d7 // move d7 to result register pair r0/r1
bx lr
+END_COMPILERRT_FUNCTION(__floatsidfvfp)
diff --git a/lib/arm/floatsisfvfp.S b/lib/arm/floatsisfvfp.S
index 0d3a24fc1..eb265e990 100644
--- a/lib/arm/floatsisfvfp.S
+++ b/lib/arm/floatsisfvfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__floatsisfvfp)
vcvt.f32.s32 s15, s15 // convert 32-bit int in s15 to float in s15
vmov r0, s15 // move s15 to result register
bx lr
+END_COMPILERRT_FUNCTION(__floatsisfvfp)
diff --git a/lib/arm/floatunssidfvfp.S b/lib/arm/floatunssidfvfp.S
index 770b20292..96e2eb21e 100644
--- a/lib/arm/floatunssidfvfp.S
+++ b/lib/arm/floatunssidfvfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__floatunssidfvfp)
vcvt.f64.u32 d7, s15 // convert 32-bit int in s15 to double in d7
vmov r0, r1, d7 // move d7 to result register pair r0/r1
bx lr
+END_COMPILERRT_FUNCTION(__floatunssidfvfp)
diff --git a/lib/arm/floatunssisfvfp.S b/lib/arm/floatunssisfvfp.S
index 16b3ffb10..05471c4a5 100644
--- a/lib/arm/floatunssisfvfp.S
+++ b/lib/arm/floatunssisfvfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__floatunssisfvfp)
vcvt.f32.u32 s15, s15 // convert 32-bit int in s15 to float in s15
vmov r0, s15 // move s15 to result register
bx lr
+END_COMPILERRT_FUNCTION(__floatunssisfvfp)
diff --git a/lib/arm/gedf2vfp.S b/lib/arm/gedf2vfp.S
index 55603b83e..aa636aa14 100644
--- a/lib/arm/gedf2vfp.S
+++ b/lib/arm/gedf2vfp.S
@@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__gedf2vfp)
movge r0, #1 // set result register to 1 if greater than or equal
movlt r0, #0
bx lr
+END_COMPILERRT_FUNCTION(__gedf2vfp)
diff --git a/lib/arm/gesf2vfp.S b/lib/arm/gesf2vfp.S
index 02da35c02..087ce15f1 100644
--- a/lib/arm/gesf2vfp.S
+++ b/lib/arm/gesf2vfp.S
@@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__gesf2vfp)
movge r0, #1 // set result register to 1 if greater than or equal
movlt r0, #0
bx lr
-
+END_COMPILERRT_FUNCTION(__gesf2vfp)
diff --git a/lib/arm/gtdf2vfp.S b/lib/arm/gtdf2vfp.S
index b5b1e1482..230952a9f 100644
--- a/lib/arm/gtdf2vfp.S
+++ b/lib/arm/gtdf2vfp.S
@@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__gtdf2vfp)
movgt r0, #1 // set result register to 1 if equal
movle r0, #0
bx lr
+END_COMPILERRT_FUNCTION(__gtdf2vfp)
diff --git a/lib/arm/gtsf2vfp.S b/lib/arm/gtsf2vfp.S
index 685a9cec9..c1f5db053 100644
--- a/lib/arm/gtsf2vfp.S
+++ b/lib/arm/gtsf2vfp.S
@@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__gtsf2vfp)
movgt r0, #1 // set result register to 1 if equal
movle r0, #0
bx lr
-
+END_COMPILERRT_FUNCTION(__gtsf2vfp)
diff --git a/lib/arm/ledf2vfp.S b/lib/arm/ledf2vfp.S
index 6e140dde8..94980a2ef 100644
--- a/lib/arm/ledf2vfp.S
+++ b/lib/arm/ledf2vfp.S
@@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__ledf2vfp)
movls r0, #1 // set result register to 1 if equal
movhi r0, #0
bx lr
+END_COMPILERRT_FUNCTION(__ledf2vfp)
diff --git a/lib/arm/lesf2vfp.S b/lib/arm/lesf2vfp.S
index 7b2825097..362352a83 100644
--- a/lib/arm/lesf2vfp.S
+++ b/lib/arm/lesf2vfp.S
@@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__lesf2vfp)
movls r0, #1 // set result register to 1 if equal
movhi r0, #0
bx lr
-
+END_COMPILERRT_FUNCTION(__lesf2vfp)
diff --git a/lib/arm/ltdf2vfp.S b/lib/arm/ltdf2vfp.S
index a09e67a2f..391ff2924 100644
--- a/lib/arm/ltdf2vfp.S
+++ b/lib/arm/ltdf2vfp.S
@@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__ltdf2vfp)
movmi r0, #1 // set result register to 1 if equal
movpl r0, #0
bx lr
+END_COMPILERRT_FUNCTION(__ltdf2vfp)
diff --git a/lib/arm/ltsf2vfp.S b/lib/arm/ltsf2vfp.S
index 8c7f9a863..dcaa03561 100644
--- a/lib/arm/ltsf2vfp.S
+++ b/lib/arm/ltsf2vfp.S
@@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__ltsf2vfp)
movmi r0, #1 // set result register to 1 if equal
movpl r0, #0
bx lr
-
+END_COMPILERRT_FUNCTION(__ltsf2vfp)
diff --git a/lib/arm/modsi3.S b/lib/arm/modsi3.S
index fe75b41b1..07c5f9381 100644
--- a/lib/arm/modsi3.S
+++ b/lib/arm/modsi3.S
@@ -48,3 +48,4 @@ LOCAL_LABEL(divzero):
sub r0, r0, r4, asr #31
CLEAR_FRAME_AND_RETURN
#endif
+END_COMPILERRT_FUNCTION(__modsi3)
diff --git a/lib/arm/muldf3vfp.S b/lib/arm/muldf3vfp.S
index 838581eb1..2c1d70377 100644
--- a/lib/arm/muldf3vfp.S
+++ b/lib/arm/muldf3vfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__muldf3vfp)
vmul.f64 d6, d6, d7
vmov r0, r1, d6 // move result back to r0/r1 pair
bx lr
+END_COMPILERRT_FUNCTION(__muldf3vfp)
diff --git a/lib/arm/mulsf3vfp.S b/lib/arm/mulsf3vfp.S
index ea25913cc..98af81d23 100644
--- a/lib/arm/mulsf3vfp.S
+++ b/lib/arm/mulsf3vfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__mulsf3vfp)
vmul.f32 s13, s14, s15
vmov r0, s13 // move result back to r0
bx lr
+END_COMPILERRT_FUNCTION(__mulsf3vfp)
diff --git a/lib/arm/nedf2vfp.S b/lib/arm/nedf2vfp.S
index 21670816c..c1a832e1a 100644
--- a/lib/arm/nedf2vfp.S
+++ b/lib/arm/nedf2vfp.S
@@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__nedf2vfp)
movne r0, #1 // set result register to 0 if unequal
moveq r0, #0
bx lr
+END_COMPILERRT_FUNCTION(__nedf2vfp)
diff --git a/lib/arm/negdf2vfp.S b/lib/arm/negdf2vfp.S
index 64c9b692f..ad9b87418 100644
--- a/lib/arm/negdf2vfp.S
+++ b/lib/arm/negdf2vfp.S
@@ -20,3 +20,4 @@
DEFINE_COMPILERRT_FUNCTION(__negdf2vfp)
eor r1, r1, #-2147483648 // flip sign bit on double in r0/r1 pair
bx lr
+END_COMPILERRT_FUNCTION(__negdf2vfp)
diff --git a/lib/arm/negsf2vfp.S b/lib/arm/negsf2vfp.S
index b883b733d..482eb2640 100644
--- a/lib/arm/negsf2vfp.S
+++ b/lib/arm/negsf2vfp.S
@@ -20,3 +20,4 @@
DEFINE_COMPILERRT_FUNCTION(__negsf2vfp)
eor r0, r0, #-2147483648 // flip sign bit on float in r0
bx lr
+END_COMPILERRT_FUNCTION(__negsf2vfp)
diff --git a/lib/arm/nesf2vfp.S b/lib/arm/nesf2vfp.S
index fa7aa80e1..127145ec4 100644
--- a/lib/arm/nesf2vfp.S
+++ b/lib/arm/nesf2vfp.S
@@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__nesf2vfp)
movne r0, #1 // set result register to 1 if unequal
moveq r0, #0
bx lr
-
+END_COMPILERRT_FUNCTION(__nesf2vfp)
diff --git a/lib/arm/restore_vfp_d8_d15_regs.S b/lib/arm/restore_vfp_d8_d15_regs.S
index 7f441db53..5d5547415 100644
--- a/lib/arm/restore_vfp_d8_d15_regs.S
+++ b/lib/arm/restore_vfp_d8_d15_regs.S
@@ -29,9 +29,7 @@
DEFINE_COMPILERRT_PRIVATE_FUNCTION(__restore_vfp_d8_d15_regs)
vldmia sp!, {d8-d15} // pop registers d8-d15 off stack
bx lr // return to prolog
-
-
+END_COMPILERRT_FUNCTION(__restore_vfp_d8_d15_regs)
// tell linker it can break up file at label boundaries
.subsections_via_symbols
-
diff --git a/lib/arm/save_vfp_d8_d15_regs.S b/lib/arm/save_vfp_d8_d15_regs.S
index fbd21ba38..4be3ff3a5 100644
--- a/lib/arm/save_vfp_d8_d15_regs.S
+++ b/lib/arm/save_vfp_d8_d15_regs.S
@@ -29,7 +29,7 @@
DEFINE_COMPILERRT_PRIVATE_FUNCTION(__save_vfp_d8_d15_regs)
vstmdb sp!, {d8-d15} // push registers d8-d15 onto stack
bx lr // return to prolog
+END_COMPILERRT_FUNCTION(__save_vfp_d8_d15_regs)
// tell linker it can break up file at label boundaries
.subsections_via_symbols
-
diff --git a/lib/arm/subdf3vfp.S b/lib/arm/subdf3vfp.S
index 3f88baacd..747d6596c 100644
--- a/lib/arm/subdf3vfp.S
+++ b/lib/arm/subdf3vfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__subdf3vfp)
vsub.f64 d6, d6, d7
vmov r0, r1, d6 // move result back to r0/r1 pair
bx lr
+END_COMPILERRT_FUNCTION(__subdf3vfp)
diff --git a/lib/arm/subsf3vfp.S b/lib/arm/subsf3vfp.S
index ed02ba921..7cc63cccc 100644
--- a/lib/arm/subsf3vfp.S
+++ b/lib/arm/subsf3vfp.S
@@ -24,3 +24,4 @@ DEFINE_COMPILERRT_FUNCTION(__subsf3vfp)
vsub.f32 s14, s14, s15
vmov r0, s14 // move result back to r0
bx lr
+END_COMPILERRT_FUNCTION(__subsf3vfp)
diff --git a/lib/arm/switch16.S b/lib/arm/switch16.S
index 9c3f0cf99..0dedc598a 100644
--- a/lib/arm/switch16.S
+++ b/lib/arm/switch16.S
@@ -40,6 +40,7 @@ DEFINE_COMPILERRT_PRIVATE_FUNCTION(__switch16)
ldrshhs r0, [ip, #1] // load 16-bit element if r0 out of range
add ip, lr, r0, lsl #1 // compute label = lr + element*2
bx ip // jump to computed label
+END_COMPILERRT_FUNCTION(__switch16)
// tell linker it can break up file at label boundaries
.subsections_via_symbols
diff --git a/lib/arm/switch32.S b/lib/arm/switch32.S
index 3152dfa1d..64d558eb8 100644
--- a/lib/arm/switch32.S
+++ b/lib/arm/switch32.S
@@ -40,7 +40,7 @@ DEFINE_COMPILERRT_PRIVATE_FUNCTION(__switch32)
ldrhs r0, [ip, #3] // load 32-bit element if r0 out of range
add ip, lr, r0 // compute label = lr + element
bx ip // jump to computed label
-
+END_COMPILERRT_FUNCTION(__switch32)
// tell linker it can break up file at label boundaries
.subsections_via_symbols
diff --git a/lib/arm/switch8.S b/lib/arm/switch8.S
index 15729ebc3..b5008849a 100644
--- a/lib/arm/switch8.S
+++ b/lib/arm/switch8.S
@@ -38,6 +38,7 @@ DEFINE_COMPILERRT_PRIVATE_FUNCTION(__switch8)
ldrsbhs r0, [lr, ip] // if out of range, use last entry in table
add ip, lr, r0, lsl #1 // compute label = lr + element*2
bx ip // jump to computed label
+END_COMPILERRT_FUNCTION(__switch8)
// tell linker it can break up file at label boundaries
.subsections_via_symbols
diff --git a/lib/arm/switchu8.S b/lib/arm/switchu8.S
index 0a4efac88..488d4e74e 100644
--- a/lib/arm/switchu8.S
+++ b/lib/arm/switchu8.S
@@ -38,6 +38,7 @@ DEFINE_COMPILERRT_PRIVATE_FUNCTION(__switchu8)
ldrbhs r0, [lr, ip] // if out of range, use last entry in table
add ip, lr, r0, lsl #1 // compute label = lr + element*2
bx ip // jump to computed label
+END_COMPILERRT_FUNCTION(__switchu8)
// tell linker it can break up file at label boundaries
.subsections_via_symbols
diff --git a/lib/arm/sync_synchronize.S b/lib/arm/sync_synchronize.S
index 06dade964..aa18f04fb 100644
--- a/lib/arm/sync_synchronize.S
+++ b/lib/arm/sync_synchronize.S
@@ -27,6 +27,7 @@ DEFINE_COMPILERRT_PRIVATE_FUNCTION(__sync_synchronize)
add r7, sp, #0
bl _OSMemoryBarrier
ldmfd sp!, {r7, pc}
+END_COMPILERRT_FUNCTION(__sync_synchronize)
// tell linker it can break up file at label boundaries
.subsections_via_symbols
diff --git a/lib/arm/truncdfsf2vfp.S b/lib/arm/truncdfsf2vfp.S
index 371aee94b..55bf324cc 100644
--- a/lib/arm/truncdfsf2vfp.S
+++ b/lib/arm/truncdfsf2vfp.S
@@ -23,3 +23,4 @@ DEFINE_COMPILERRT_FUNCTION(__truncdfsf2vfp)
vcvt.f32.f64 s15, d7 // convert double to single (trucate precision)
vmov r0, s15 // return result in r0
bx lr
+END_COMPILERRT_FUNCTION(__truncdfsf2vfp)
diff --git a/lib/arm/unorddf2vfp.S b/lib/arm/unorddf2vfp.S
index c49e55f29..ee7de4025 100644
--- a/lib/arm/unorddf2vfp.S
+++ b/lib/arm/unorddf2vfp.S
@@ -26,3 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__unorddf2vfp)
movvs r0, #1 // set result register to 1 if "overflow" (any NaNs)
movvc r0, #0
bx lr
+END_COMPILERRT_FUNCTION(__unorddf2vfp)
diff --git a/lib/arm/unordsf2vfp.S b/lib/arm/unordsf2vfp.S
index 0ab27edf5..eb419a541 100644
--- a/lib/arm/unordsf2vfp.S
+++ b/lib/arm/unordsf2vfp.S
@@ -26,4 +26,4 @@ DEFINE_COMPILERRT_FUNCTION(__unordsf2vfp)
movvs r0, #1 // set result register to 1 if "overflow" (any NaNs)
movvc r0, #0
bx lr
-
+END_COMPILERRT_FUNCTION(__unordsf2vfp)