[compiler-rt] r199273 - Declare assembler functions as symbols of type function for ELF.

Joerg Sonnenberger joerg at bec.de
Tue Jan 14 15:31:24 PST 2014


Author: joerg
Date: Tue Jan 14 17:31:23 2014
New Revision: 199273

URL: http://llvm.org/viewvc/llvm-project?rev=199273&view=rev
Log:
Declare assembler functions as symbols of type function for ELF.
Fixes dynamically linked programs on NetBSD/i386.

Modified:
    compiler-rt/trunk/lib/assembly.h

Modified: compiler-rt/trunk/lib/assembly.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/assembly.h?rev=199273&r1=199272&r2=199273&view=diff
==============================================================================
--- compiler-rt/trunk/lib/assembly.h (original)
+++ compiler-rt/trunk/lib/assembly.h Tue Jan 14 17:31:23 2014
@@ -26,10 +26,12 @@
 #define HIDDEN_DIRECTIVE .private_extern
 #define LOCAL_LABEL(name) L_##name
 #define FILE_LEVEL_DIRECTIVE  .subsections_via_symbols
+#define SYMBOL_IS_FUNC(name)
 #else
 #define HIDDEN_DIRECTIVE .hidden
 #define LOCAL_LABEL(name) .L_##name
-#define FILE_LEVEL_DIRECTIVE  
+#define FILE_LEVEL_DIRECTIVE
+#define SYMBOL_IS_FUNC(name) .type name, @function
 #endif
 
 #define GLUE2(a, b) a ## b
@@ -46,21 +48,25 @@
 #define DEFINE_COMPILERRT_FUNCTION(name)                   \
   FILE_LEVEL_DIRECTIVE     SEPARATOR                       \
   .globl SYMBOL_NAME(name) SEPARATOR                       \
+  SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR              \
   DECLARE_SYMBOL_VISIBILITY(name)                          \
   SYMBOL_NAME(name):
 
 #define DEFINE_COMPILERRT_PRIVATE_FUNCTION(name)           \
   .globl SYMBOL_NAME(name) SEPARATOR                       \
+  SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR              \
   HIDDEN_DIRECTIVE SYMBOL_NAME(name) SEPARATOR             \
   SYMBOL_NAME(name):
 
 #define DEFINE_COMPILERRT_PRIVATE_FUNCTION_UNMANGLED(name) \
   .globl name SEPARATOR                                    \
+  SYMBOL_IS_FUNC(name) SEPARATOR                           \
   HIDDEN_DIRECTIVE name SEPARATOR                          \
   name:
 
 #define DEFINE_COMPILERRT_FUNCTION_ALIAS(name, target)     \
   .globl SYMBOL_NAME(name) SEPARATOR                       \
+  SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR              \
   .set SYMBOL_NAME(name), SYMBOL_NAME(target) SEPARATOR
 
 #if defined (__ARM_EABI__)





More information about the llvm-commits mailing list