OSDN Git Service

* config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Sep 2009 18:39:52 +0000 (18:39 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Sep 2009 18:39:52 +0000 (18:39 +0000)
New variables.
(SHLIB_LINK, SHLIB_INSTALL): Use them.
* config/t-slibgcc-libgcc: New file.
* config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151568 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config.gcc
gcc/config/t-slibgcc-elf-ver
gcc/config/t-slibgcc-libgcc [new file with mode: 0644]

index ac2cded..668caa2 100644 (file)
@@ -1,3 +1,11 @@
+2009-09-09  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
+       New variables.
+       (SHLIB_LINK, SHLIB_INSTALL): Use them.
+       * config/t-slibgcc-libgcc: New file.
+       * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
+
 2009-09-09  Martin Jambor  <mjambor@suse.cz>
 
        PR tree-optimization/41089
index 52a979a..6a680a0 100644 (file)
@@ -1927,7 +1927,7 @@ powerpc-*-linux* | powerpc64-*-linux*)
                tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
                ;;
        esac
-       tmake_file="${tmake_file} rs6000/t-fprules-softfp soft-fp/t-softfp"
+       tmake_file="${tmake_file} t-slibgcc-libgcc rs6000/t-fprules-softfp soft-fp/t-softfp"
        case ${target} in
            powerpc*-*-linux*altivec*)
                tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
@@ -1943,19 +1943,19 @@ powerpc-*-linux* | powerpc64-*-linux*)
 powerpc64-*-gnu*)
        tm_file="${tm_file} elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/default64.h rs6000/linux64.h rs6000/gnu.h glibc-stdint.h"
        extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
-       tmake_file="t-slibgcc-elf-ver t-gnu"
+       tmake_file="t-slibgcc-elf-ver t-slibgcc-libgcc t-gnu"
        ;;
 powerpc-*-gnu-gnualtivec*)
        tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h rs6000/gnu.h glibc-stdint.h"
        extra_options="${extra_options} rs6000/sysv4.opt"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-slibgcc-libgcc t-gnu rs6000/t-ppccomm"
        if test x$enable_threads = xyes; then
                thread_file='posix'
        fi
        ;;
 powerpc-*-gnu*)
        tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/gnu.h glibc-stdint.h"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-slibgcc-libgcc t-gnu rs6000/t-ppccomm"
        extra_options="${extra_options} rs6000/sysv4.opt"
        if test x$enable_threads = xyes; then
                thread_file='posix'
index 4969281..d5ef9ca 100644 (file)
@@ -28,6 +28,9 @@ SHLIB_OBJS = @shlib_objs@
 SHLIB_DIR = @multilib_dir@
 SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
 SHLIB_LC = -lc
+SHLIB_MAKE_SOLINK = $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
+SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_SONAME) \
+       $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
 
 SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
        -Wl,--soname=$(SHLIB_SONAME) \
@@ -40,7 +43,7 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
                $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
        else true; fi && \
        mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
-       $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
+       $(SHLIB_MAKE_SOLINK)
 # $(slibdir) double quoted to protect it from expansion while building
 # libgcc.mk.  We want this delayed until actual install time.
 SHLIB_INSTALL = \
@@ -48,7 +51,6 @@ SHLIB_INSTALL = \
        $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SONAME) \
          $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
        rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
-       $(LN_S) $(SHLIB_SONAME) \
-         $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
+       $(SHLIB_INSTALL_SOLINK)
 SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
 SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
diff --git a/gcc/config/t-slibgcc-libgcc b/gcc/config/t-slibgcc-libgcc
new file mode 100644 (file)
index 0000000..df004a5
--- /dev/null
@@ -0,0 +1,32 @@
+# Copyright (C) 2009 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# Instead of creating $(SHLIB_SOLINK) symlink create a GNU ld
+# linker script which sources in both $(SHLIB_SONAME) and libgcc.a.
+# This is needed on targets where libgcc.a contains routines that aren't in
+# $(SHLIB_SONAME) and are needed for shared libraries.
+
+SHLIB_MAKE_SOLINK = \
+       (echo "/* GNU ld script"; \
+        echo "   Use the shared library, but some functions are only in"; \
+        echo "   the static library.  */"; \
+        echo "GROUP ( $(SHLIB_SONAME) libgcc.a )" \
+       ) > $(SHLIB_DIR)/$(SHLIB_SOLINK)
+SHLIB_INSTALL_SOLINK = \
+       $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SOLINK) \
+         $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)