configure.in (libgcc_visibility): Substitute.
authorJakub Jelinek <jakub@redhat.com>
Tue, 26 Feb 2002 21:39:07 +0000 (22:39 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 26 Feb 2002 21:39:07 +0000 (22:39 +0100)
* configure.in (libgcc_visibility): Substitute.
* configure: Rebuilt.
* mklibgcc.in: If libgcc_visibility = yes, make libgcc.a global
defined symbols .hidden.

From-SVN: r50063

gcc/ChangeLog
gcc/configure
gcc/configure.in
gcc/mklibgcc.in

index 62283213c34b86b849f65fae254b28bfdc1a030c..30d2700aefe0199406fdda03bdc9645d32bc7302 100644 (file)
@@ -1,3 +1,10 @@
+2002-02-26  Jakub Jelinek  <jakub@redhat.com>
+
+       * configure.in (libgcc_visibility): Substitute.
+       * configure: Rebuilt.
+       * mklibgcc.in: If libgcc_visibility = yes, make libgcc.a global
+       defined symbols .hidden.
+
 2002-02-26  Jakub Jelinek  <jakub@redhat.com>
 
        * attribs.c (c_common_attribute_table): Add visibility.
index 99d1f337c64a8c3794783cc2a2067767af29cc38..10fed033979a7772b9fa7e1cb99bb4f546fc14eb 100755 (executable)
@@ -7147,6 +7147,8 @@ EOF
 
 fi
 echo "$ac_t""$gcc_cv_as_hidden" 1>&6
+libgcc_visibility=$gcc_cv_as_hidden
+
 
 echo $ac_n "checking assembler leb128 support""... $ac_c" 1>&6
 echo "configure:7153: checking assembler leb128 support" >&5
@@ -8394,6 +8396,7 @@ s%@HOST_CC@%$HOST_CC%g
 s%@HOST_CFLAGS@%$HOST_CFLAGS%g
 s%@STMP_FIXINC@%$STMP_FIXINC%g
 s%@STMP_FIXPROTO@%$STMP_FIXPROTO%g
+s%@libgcc_visibility@%$libgcc_visibility%g
 s%@gthread_flags@%$gthread_flags%g
 s%@GGC@%$GGC%g
 s%@zlibdir@%$zlibdir%g
index 0c7e333f1919ec56f87ad32aacf051b1a8af3315..6e6fb6bfb40800b3f54cfa8acd612532ab412209 100644 (file)
@@ -1484,6 +1484,8 @@ if test x"$gcc_cv_as_hidden" = xyes; then
                [Define if your assembler supports .hidden.])
 fi
 AC_MSG_RESULT($gcc_cv_as_hidden)
+libgcc_visibility=$gcc_cv_as_hidden
+AC_SUBST(libgcc_visibility)
 
 AC_MSG_CHECKING(assembler leb128 support)
 gcc_cv_as_leb128=no
index bcc03e26c3b061b833eaff3d820019d2e9d2ddef..061f570c974e2a8e8dee45bccfc0947618fde0c8 100644 (file)
@@ -270,10 +270,24 @@ for ml in $MULTILIBS; do
     shlib_deps="$shlib_deps $dir/$f"
   done
 
+  libgcc_a_objs="$libgcc_objs $libgcc_st_objs"
+
+  if [ "@libgcc_visibility@" = yes ]; then
+    libgcc_a_objs=`echo "${libgcc_a_objs} " | sed s~${objext}' ~.oS ~g'`
+
+    # .oS objects will have all non-local symbol definitions .hidden
+    echo ""
+    echo "$libgcc_a_objs: libgcc/${dir}/%.oS: libgcc/${dir}/%${objext}"
+    echo "     @\$(NM_FOR_TARGET) $SHLIB_NM_FLAGS \$^" \\
+    echo "      | \$(AWK) 'NF == 3 { printf \".hidden %s\\n\", \$\$3 }'" \\
+    echo '      | $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -Wl,-r -nostdinc' \\ 
+    echo '        -nostdlib -o $@ $^ -xassembler -'
+  fi
+
   echo ""
-  echo "${dir}/libgcc.a: $libgcc_objs $libgcc_st_objs"
+  echo "${dir}/libgcc.a: $libgcc_a_objs"
   echo "       -rm -rf ${dir}/libgcc.a"
-  echo '       $(AR_CREATE_FOR_TARGET)' ${dir}/libgcc.a $libgcc_objs $libgcc_st_objs
+  echo '       $(AR_CREATE_FOR_TARGET)' ${dir}/libgcc.a $libgcc_a_objs
   echo '       if $(RANLIB_TEST_FOR_TARGET) ; then' \\
   echo '         $(RANLIB_FOR_TARGET)' ${dir}/libgcc.a ';' \\
   echo '       else true; fi;'