[llvm-commits] [compiler-rt] r93790 - in /compiler-rt/trunk: Makefile lib/assembly.h make/lib_info.mk make/options.mk make/platform/darwin_bni.mk make/platform/darwin_fat.mk make/platform/multi_arch.mk

Daniel Dunbar daniel at zuster.org
Mon Jan 18 14:19:34 PST 2010


Author: ddunbar
Date: Mon Jan 18 16:19:34 2010
New Revision: 93790

URL: http://llvm.org/viewvc/llvm-project?rev=93790&view=rev
Log:
Add a VISIBILITY_HIDDEN option, which can be used to make all compiler-rt function definitions hidden/private extern.

Modified:
    compiler-rt/trunk/Makefile
    compiler-rt/trunk/lib/assembly.h
    compiler-rt/trunk/make/lib_info.mk
    compiler-rt/trunk/make/options.mk
    compiler-rt/trunk/make/platform/darwin_bni.mk
    compiler-rt/trunk/make/platform/darwin_fat.mk
    compiler-rt/trunk/make/platform/multi_arch.mk

Modified: compiler-rt/trunk/Makefile
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/Makefile?rev=93790&r1=93789&r2=93790&view=diff

==============================================================================
--- compiler-rt/trunk/Makefile (original)
+++ compiler-rt/trunk/Makefile Mon Jan 18 16:19:34 2010
@@ -205,19 +205,20 @@
 $(call Set,Tmp.CC,$(strip \
   $(call GetCNAVar,CC,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
 $(call Set,Tmp.CFLAGS,$(strip \
+  $(if $(call IsDefined,$(Tmp.Key).UniversalArchs),-arch $(Tmp.Arch),)\
+  $(if $(call streq,$($(Tmp.Key).VISIBILITY_HIDDEN),1),\
+       -fvisibility=hidden -DVISIBILITY_HIDDEN,)\
   $(call GetCNAVar,CFLAGS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
-$(call Set,Tmp.ArchFlag,$(strip \
-  $(if $(call IsDefined,$(Tmp.Key).UniversalArchs),-arch $(Tmp.Arch),)))
 
 $(Tmp.ObjPath)/%.o: $(Tmp.SrcPath)/%.s $(Tmp.Dependencies) $(Tmp.ObjPath)/.dir
 	$(Summary) "  ASSEMBLE:  $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$<"
-	$(Verb) $(Tmp.CC) $(Tmp.ArchFlag) $(Tmp.CFLAGS)  -c -o $$@ $$<
+	$(Verb) $(Tmp.CC) $(Tmp.CFLAGS)  -c -o $$@ $$<
 $(Tmp.ObjPath)/%.o: $(Tmp.SrcPath)/%.S $(Tmp.Dependencies) $(Tmp.ObjPath)/.dir
 	$(Summary) "  ASSEMBLE:  $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$<"
-	$(Verb) $(Tmp.CC) $(Tmp.ArchFlag) $(Tmp.CFLAGS) -c -o $$@ $$<
+	$(Verb) $(Tmp.CC) $(Tmp.CFLAGS) -c -o $$@ $$<
 $(Tmp.ObjPath)/%.o: $(Tmp.SrcPath)/%.c $(Tmp.Dependencies) $(Tmp.ObjPath)/.dir
 	$(Summary) "  COMPILE:   $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$<"
-	$(Verb) $(Tmp.CC) $(Tmp.ArchFlag) $(Tmp.CFLAGS) -c -o $$@ $$<
+	$(Verb) $(Tmp.CC) $(Tmp.CFLAGS) -c -o $$@ $$<
 .PRECIOUS: $(Tmp.ObjPath)/.dir
 
 endef

Modified: compiler-rt/trunk/lib/assembly.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/assembly.h?rev=93790&r1=93789&r2=93790&view=diff

==============================================================================
--- compiler-rt/trunk/lib/assembly.h (original)
+++ compiler-rt/trunk/lib/assembly.h Mon Jan 18 16:19:34 2010
@@ -30,9 +30,16 @@
 #define SYMBOL_NAME(name) name
 #endif
 
+#ifdef VISIBILITY_HIDDEN
 #define DEFINE_COMPILERRT_FUNCTION(name) \
   .globl SYMBOL_NAME(name) SEPARATOR     \
+  .private_extern SYMBOL_NAME(name) SEPARATOR    \
   SYMBOL_NAME(name):
+#else
+#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             \

Modified: compiler-rt/trunk/make/lib_info.mk
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/lib_info.mk?rev=93790&r1=93789&r2=93790&view=diff

==============================================================================
--- compiler-rt/trunk/make/lib_info.mk (original)
+++ compiler-rt/trunk/make/lib_info.mk Mon Jan 18 16:19:34 2010
@@ -46,4 +46,5 @@
 # The names of all the available options.
 AvailableOptions := AR ARFLAGS \
                     CC CFLAGS FUNCTIONS OPTIMIZED \
-                    RANLIB RANLIBFLAGS
+                    RANLIB RANLIBFLAGS \
+                    VISIBILITY_HIDDEN

Modified: compiler-rt/trunk/make/options.mk
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/options.mk?rev=93790&r1=93789&r2=93790&view=diff

==============================================================================
--- compiler-rt/trunk/make/options.mk (original)
+++ compiler-rt/trunk/make/options.mk Mon Jan 18 16:19:34 2010
@@ -15,6 +15,14 @@
 # Whether optimized function implementations should be used.
 OPTIMIZED := 1
 
+# Whether function definitions should use hidden visibility. This adds the
+# -fvisibility=hidden compiler option and uses .private_extern annotations in
+# assembly files.
+#
+# FIXME: Make this more portable. When that is done, it should probably be the
+# default.
+VISIBILITY_HIDDEN := 0
+
 # Miscellaneous tools.
 
 AR := ar

Modified: compiler-rt/trunk/make/platform/darwin_bni.mk
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/platform/darwin_bni.mk?rev=93790&r1=93789&r2=93790&view=diff

==============================================================================
--- compiler-rt/trunk/make/platform/darwin_bni.mk (original)
+++ compiler-rt/trunk/make/platform/darwin_bni.mk Mon Jan 18 16:19:34 2010
@@ -50,3 +50,4 @@
                 subdf3vfp subsf3vfp truncdfsf2vfp unorddf2vfp unordsf2vfp \
                 modsi3 umodsi3 udivsi3 divsi3 switch save_restore_d8_d15
 
+VISIBILITY_HIDDEN := 0

Modified: compiler-rt/trunk/make/platform/darwin_fat.mk
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/platform/darwin_fat.mk?rev=93790&r1=93789&r2=93790&view=diff

==============================================================================
--- compiler-rt/trunk/make/platform/darwin_fat.mk (original)
+++ compiler-rt/trunk/make/platform/darwin_fat.mk Mon Jan 18 16:19:34 2010
@@ -51,3 +51,5 @@
 FUNCTIONS.armv7 := $(CommonFunctions) $(ArchFunctions.armv7)
 
 OPTIMIZED.Debug := 0
+
+VISIBILITY_HIDDEN := 1

Modified: compiler-rt/trunk/make/platform/multi_arch.mk
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/platform/multi_arch.mk?rev=93790&r1=93789&r2=93790&view=diff

==============================================================================
--- compiler-rt/trunk/make/platform/multi_arch.mk (original)
+++ compiler-rt/trunk/make/platform/multi_arch.mk Mon Jan 18 16:19:34 2010
@@ -13,4 +13,4 @@
 CFLAGS.m64 := $(CFLAGS) -m64 -O3
 
 FUNCTIONS := moddi3 floatundixf udivdi3
-FUNCTIONS.m64 := $(FUNCTIONS) lshrdi3
\ No newline at end of file
+FUNCTIONS.m64 := $(FUNCTIONS) lshrdi3





More information about the llvm-commits mailing list