[llvm-commits] [llvm-gcc-4.2] r125803 - in /llvm-gcc-4.2/trunk: build_gcc gcc/Makefile.in gcc/mklibgcc.in

Bob Wilson bob.wilson at apple.com
Thu Feb 17 16:39:11 PST 2011


Author: bwilson
Date: Thu Feb 17 18:39:11 2011
New Revision: 125803

URL: http://llvm.org/viewvc/llvm-project?rev=125803&view=rev
Log:
Radar 8710868: Build a separate version of libcc_kext.a for each ARM slice.
Combine them together into a single fat library, as is already done for x86.

Modified:
    llvm-gcc-4.2/trunk/build_gcc
    llvm-gcc-4.2/trunk/gcc/Makefile.in
    llvm-gcc-4.2/trunk/gcc/mklibgcc.in

Modified: llvm-gcc-4.2/trunk/build_gcc
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/build_gcc?rev=125803&r1=125802&r2=125803&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/build_gcc (original)
+++ llvm-gcc-4.2/trunk/build_gcc Thu Feb 17 18:39:11 2011
@@ -397,14 +397,25 @@
   # LLVM LOCAL Support for non /usr $DEST_ROOT
   D=`echo $DT/$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS`
   mv $D/static/libgcc.a $D/libgcc_static.a || exit 1
-  mv $D/kext/libgcc.a $D/libcc_kext.a || exit 1
-  rm -r $D/static $D/kext || exit 1
+  # LLVM LOCAL begin ARM slice-specific kext libraries
+  rm -r $D/static || exit 1
+  if [ -e $D/kext/libgcc.a ]; then 
+    mv $D/kext/libgcc.a $D/libcc_kext.a || exit 1
+    rm -r $D/kext || exit 1
+  fi
+  # LLVM LOCAL end ARM slice-specific kext libraries
   # glue together kext64 stuff
   if [ -e $D/kext64/libgcc.a ]; then
     libtool -static $D/{kext64/libgcc.a,libcc_kext.a} -o $D/libcc_kext1.a 2>&1 | grep -v 'has no symbols'
     mv $D/libcc_kext1.a $D/libcc_kext.a
     rm -rf $D/kext64
   fi
+  # LLVM LOCAL begin ARM slice-specific kext libraries
+  if [ $t = 'arm' ]; then
+    libtool -static $D/kext*/libgcc.a -o $D/libcc_kext.a 2>&1 | grep -v 'has no symbols'
+    rm -rf $D/kext* || exit 1
+  fi
+  # LLVM LOCAL end ARM slice-specific kext libraries
 done
 
 # Build the cross-hosted compilers.

Modified: llvm-gcc-4.2/trunk/gcc/Makefile.in
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/Makefile.in?rev=125803&r1=125802&r2=125803&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/Makefile.in (original)
+++ llvm-gcc-4.2/trunk/gcc/Makefile.in Thu Feb 17 18:39:11 2011
@@ -1689,12 +1689,27 @@
 
 # LLVM LOCAL begin libcc_kext
 ifneq (,$(findstring darwin,$(target)))
-APPLE_EXTRA_MULTI := static;@static at fno-pic kext;@Dmalloc=kern_os_malloc at Dfree=kern_os_free at DLIBCC_KEXT@static at fno-pic@fno-exceptions at fno-non-call-exceptions$(KEXT_EXTRA_FLAGS) $(if $(findstring i686,$(target)),kext64;@mkernel at m64@Dmalloc=kern_os_malloc at Dfree=kern_os_free at DLIBCC_KEXT$(KEXT_EXTRA_FLAGS))
+APPLE_KEXT_FLAGS := Dmalloc=kern_os_malloc at Dfree=kern_os_free at DLIBCC_KEXT@static at fno-pic@fno-exceptions at fno-non-call-exceptions$(KEXT_EXTRA_FLAGS)
+APPLE_KEXT64_FLAGS := mkernel at m64@Dmalloc=kern_os_malloc at Dfree=kern_os_free at DLIBCC_KEXT$(KEXT_EXTRA_FLAGS)
+APPLE_EXTRA_MULTI := \
+  static;@static at fno-pic \
+  $(if $(findstring arm,$(target)),,kext;@$(APPLE_KEXT_FLAGS)) \
+  $(if $(findstring i686,$(target)),kext64;@$(APPLE_KEXT64_FLAGS))
 endif
 # LLVM LOCAL end libcc_kext
 
+# LLVM LOCAL Set apple_extra_multi with a separate kext for each ARM slice.
 libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) $(LIB2ADD_ST) specs \
 		xgcc$(exeext) stamp-as stamp-collect-ld stamp-nm
+	apple_extra_multi="$(APPLE_EXTRA_MULTI)"; \
+	for multilib in `$(GCC_FOR_TARGET) --print-multi-lib`; do \
+	  multilib_dir=`echo $$multilib | sed -e "s/;.*//"`; \
+	  if [ "$$multilib_dir" != "." ]; then \
+	    if echo v5 v6 v7 | grep $$multilib_dir > /dev/null 2>&1; then \
+	      apple_extra_multi="$$apple_extra_multi kext$${multilib}@$(APPLE_KEXT_FLAGS)"; \
+	    fi; \
+	  fi; \
+	done; \
 	objext='$(objext)' \
 	LIB1ASMFUNCS='$(LIB1ASMFUNCS)' \
 	LIB2FUNCS_ST='$(LIB2FUNCS_ST)' \
@@ -1727,7 +1742,7 @@
 	D128PBIT='$(D128PBIT)' \
 	D128PBIT_FUNCS='$(D128PBIT_FUNCS)' \
 	APPLE_LOCAL='APPLE LOCAL libcc_kext' \
-	MULTILIBS="`$(GCC_FOR_TARGET) --print-multi-lib` $(APPLE_EXTRA_MULTI)" \
+	MULTILIBS="`$(GCC_FOR_TARGET) --print-multi-lib` $$apple_extra_multi" \
 	EXTRA_MULTILIB_PARTS='$(EXTRA_MULTILIB_PARTS)' \
 	SHLIB_LINK='$(SHLIB_LINK)' \
 	SHLIB_INSTALL='$(SHLIB_INSTALL)' \

Modified: llvm-gcc-4.2/trunk/gcc/mklibgcc.in
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/mklibgcc.in?rev=125803&r1=125802&r2=125803&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/mklibgcc.in (original)
+++ llvm-gcc-4.2/trunk/gcc/mklibgcc.in Thu Feb 17 18:39:11 2011
@@ -827,7 +827,13 @@
 
   # Shared libraries.
   # APPLE LOCAL libcc_kext
-  if [ "$libgcc_s_so" -a  "$dir" != "static" -a "$dir" != "kext" -a "$dir" != "kext64" ]; then
+  # LLVM LOCAL begin ARM slice-specific kext libraries
+  kextdir=
+  if echo "$dir" | grep kext > /dev/null 2>&1; then
+    kextdir=1
+  fi
+  # LLVM LOCAL end ARM slice-specific kext libraries
+  if [ "$libgcc_s_so" -a  "$dir" != "static" -a "X$kextdir" = "X" ]; then
     echo ""
     echo "$libgcc_s_so: stmp-dirs $libunwind_so"
     echo "	$SHLIB_LINK" \
@@ -908,7 +914,13 @@
       shlib_slibdir_qual="/$os_multilib_dir"
     fi
   # APPLE LOCAL libcc_kext
-  if [ "$dir" != "static" -a "$dir" != "kext" -a "$dir" != "kext64" ]; then
+  # LLVM LOCAL begin ARM slice-specific kext libraries
+  kextdir=
+  if echo "$dir" | grep kext > /dev/null 2>&1; then
+    kextdir=1
+  fi
+  # LLVM LOCAL end ARM slice-specific kext libraries
+  if [ "$dir" != "static" -a "X$kextdir" = "X" ]; then
     echo "	$SHLIB_INSTALL" \
       | sed -e "s%@multilib_dir@%$dir%g" \
 	    -e "s%@shlib_base_name@%libgcc_s%g" \





More information about the llvm-commits mailing list