summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2011-04-19 17:50:09 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2011-04-19 17:50:09 +0000
commit647fc7336b2bc302bb51e50022b27bf9b929071c (patch)
treecca9587c10e12ec83fc4d6589c8840749e608e5a
parentd0dbbc4c9ac73e7a7de8a90408a4982819e1811b (diff)
downloadcompiler-rt-647fc7336b2bc302bb51e50022b27bf9b929071c.tar.gz
Get rid of darwin'isms. Provide convenient macro for assembler local lables.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@129766 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/arm/divmodsi4.S2
-rw-r--r--lib/arm/divsi3.S2
-rw-r--r--lib/arm/modsi3.S2
-rw-r--r--lib/assembly.h24
4 files changed, 17 insertions, 13 deletions
diff --git a/lib/arm/divmodsi4.S b/lib/arm/divmodsi4.S
index b11a4a8eb..cec39a792 100644
--- a/lib/arm/divmodsi4.S
+++ b/lib/arm/divmodsi4.S
@@ -36,7 +36,7 @@ DEFINE_COMPILERRT_FUNCTION(__divmodsi4)
sub r0, ip, r0, asr #31
sub r1, lr, r1, asr #31
// Unsigned divmod:
- bl ___udivmodsi4
+ bl SYMBOL_NAME(__udivmodsi4)
// Apply the sign of quotient and modulus
ldr r1, [r6]
eor r0, r0, r4, asr #31
diff --git a/lib/arm/divsi3.S b/lib/arm/divsi3.S
index 69ef20c4a..045ae4fdb 100644
--- a/lib/arm/divsi3.S
+++ b/lib/arm/divsi3.S
@@ -32,7 +32,7 @@ DEFINE_COMPILERRT_FUNCTION(__divsi3)
sub r0, r2, r0, asr #31
sub r1, r3, r1, asr #31
// abs(a) / abs(b)
- bl ___udivsi3
+ bl SYMBOL_NAME(__udivsi3)
// Apply sign of quotient to result and return.
eor r0, r0, r4, asr #31
sub r0, r0, r4, asr #31
diff --git a/lib/arm/modsi3.S b/lib/arm/modsi3.S
index 97573395d..a4cd2ee54 100644
--- a/lib/arm/modsi3.S
+++ b/lib/arm/modsi3.S
@@ -32,7 +32,7 @@ DEFINE_COMPILERRT_FUNCTION(__modsi3)
sub r0, r2, r0, asr #31
sub r1, r3, r1, asr #31
// abs(a) % abs(b)
- bl ___umodsi3
+ bl SYMBOL_NAME(__umodsi3)
// Apply sign of dividend to result and return.
eor r0, r0, r4, asr #31
sub r0, r0, r4, asr #31
diff --git a/lib/assembly.h b/lib/assembly.h
index 41c24d74e..928f5fd70 100644
--- a/lib/assembly.h
+++ b/lib/assembly.h
@@ -26,29 +26,33 @@
*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
#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:
#endif /* COMPILERRT_ASSEMBLY_H */