backport: [multiple changes]

2010-01-04  Mikael Pettersson  <mikpe@it.uu.se>

        PR target/42503

        Backport from mainline:

        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.

        2009-10-19  Matthias Klose  <doko@ubuntu.com>

        PR target/40134
        * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.

From-SVN: r155617
This commit is contained in:
Mikael Pettersson 2010-01-04 16:13:08 +01:00 committed by Matthias Klose
parent deca952548
commit 7188391371
4 changed files with 56 additions and 4 deletions

View File

@ -1,3 +1,21 @@
2010-01-04 Mikael Pettersson <mikpe@it.uu.se>
PR target/42503
Backport from mainline:
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.
2009-10-19 Matthias Klose <doko@ubuntu.com>
PR target/40134
* config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
2010-01-04 Ira Rosen <irar@il.ibm.com>
PR tree-optimization/41956

View File

@ -714,7 +714,7 @@ arm*-*-linux*) # ARM GNU/Linux with ELF
case ${target} in
arm*-*-linux-*eabi)
tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
# The BPABI long long divmod functions return a 128-bit value in
# registers r0-r3. Correctly modeling that requires the use of
# TImode.

View File

@ -10,6 +10,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) \
@ -22,7 +25,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 = \
@ -30,7 +33,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

View File

@ -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)