summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog158
-rw-r--r--gcc/Makefile.in21
-rw-r--r--gcc/config.gcc135
-rw-r--r--gcc/config/alpha/t-vms30
-rw-r--r--gcc/config/arm/t-bpabi4
-rw-r--r--gcc/config/arm/t-netbsd25
-rw-r--r--gcc/config/arm/t-symbian4
-rw-r--r--gcc/config/bfin/t-bfin-linux2
-rw-r--r--gcc/config/c6x/t-c6x-elf2
-rw-r--r--gcc/config/cris/t-linux1
-rw-r--r--gcc/config/frv/t-linux5
-rw-r--r--gcc/config/i386/t-cygming63
-rw-r--r--gcc/config/i386/t-cygwin17
-rw-r--r--gcc/config/i386/t-dlldir6
-rw-r--r--gcc/config/i386/t-dlldir-x9
-rw-r--r--gcc/config/i386/t-mingw-w323
-rw-r--r--gcc/config/i386/t-mingw-w643
-rw-r--r--gcc/config/ia64/t-glibc1
-rw-r--r--gcc/config/ia64/t-hpux22
-rw-r--r--gcc/config/ia64/t-ia642
-rw-r--r--gcc/config/ia64/t-vms14
-rw-r--r--gcc/config/ia64/vms_symvec_libgcc_s.opt89
-rw-r--r--gcc/config/m32r/t-linux2
-rw-r--r--gcc/config/mips/t-libgcc-mips163
-rw-r--r--gcc/config/pa/t-hpux-shlib46
-rw-r--r--gcc/config/rs6000/t-aix4329
-rw-r--r--gcc/config/rs6000/t-aix5228
-rw-r--r--gcc/config/t-libunwind5
-rw-r--r--gcc/config/t-linux4
-rw-r--r--gcc/config/t-slibgcc2
-rw-r--r--gcc/config/t-slibgcc-dummy3
-rw-r--r--gcc/config/t-slibgcc-elf-ver56
-rw-r--r--gcc/config/xtensa/t-linux2
-rwxr-xr-xgcc/configure23
-rw-r--r--gcc/configure.ac12
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/Make-lang.in2
-rw-r--r--gcc/fortran/ChangeLog4
-rw-r--r--gcc/fortran/Make-lang.in2
-rw-r--r--gcc/go/ChangeLog4
-rw-r--r--gcc/go/Make-lang.in2
-rw-r--r--gcc/java/ChangeLog4
-rw-r--r--gcc/java/Make-lang.in2
-rw-r--r--libgcc/ChangeLog153
-rw-r--r--libgcc/Makefile.in3
-rw-r--r--libgcc/config.host171
-rw-r--r--libgcc/config/alpha/libgcc-alpha-ldbl.ver (renamed from gcc/config/alpha/libgcc-alpha-ldbl.ver)0
-rw-r--r--libgcc/config/alpha/t-linux (renamed from gcc/config/alpha/t-linux)0
-rw-r--r--libgcc/config/alpha/t-slibgcc-osf2
-rw-r--r--libgcc/config/arm/libgcc-bpabi.ver (renamed from gcc/config/arm/libgcc-bpabi.ver)0
-rw-r--r--libgcc/config/arm/t-bpabi3
-rw-r--r--libgcc/config/bfin/libgcc-glibc.ver (renamed from gcc/config/bfin/libgcc-bfin.ver)0
-rw-r--r--libgcc/config/bfin/t-linux1
-rw-r--r--libgcc/config/c6x/libgcc-eabi.ver (renamed from gcc/config/c6x/libgcc-c6xeabi.ver)0
-rw-r--r--libgcc/config/c6x/t-elf1
-rw-r--r--libgcc/config/cris/libgcc-glibc.ver (renamed from gcc/config/cris/libgcc.ver)0
-rw-r--r--libgcc/config/cris/t-linux2
-rw-r--r--libgcc/config/frv/libgcc-glibc.ver (renamed from gcc/config/frv/libgcc-frv.ver)0
-rw-r--r--libgcc/config/frv/t-linux1
-rw-r--r--libgcc/config/i386/libgcc-darwin.10.4.ver (renamed from gcc/config/i386/darwin-libgcc.10.4.ver)0
-rw-r--r--libgcc/config/i386/libgcc-darwin.10.5.ver (renamed from gcc/config/i386/darwin-libgcc.10.5.ver)0
-rw-r--r--libgcc/config/i386/libgcc-glibc.ver (renamed from gcc/config/i386/libgcc-glibc.ver)0
-rw-r--r--libgcc/config/i386/t-cygwin13
-rw-r--r--libgcc/config/i386/t-darwin1
-rw-r--r--libgcc/config/i386/t-darwin641
-rw-r--r--libgcc/config/i386/t-dlldir2
-rw-r--r--libgcc/config/i386/t-dlldir-x3
-rw-r--r--libgcc/config/i386/t-dw2-eh (renamed from gcc/config/i386/t-dw2-eh)0
-rw-r--r--libgcc/config/i386/t-linux (renamed from gcc/config/i386/t-linux)3
-rw-r--r--libgcc/config/i386/t-mingw-pthread (renamed from gcc/config/i386/t-mingw-pthread)0
-rw-r--r--libgcc/config/i386/t-mingw32 (renamed from gcc/config/i386/t-mingw32)0
-rw-r--r--libgcc/config/i386/t-sjlj-eh (renamed from gcc/config/i386/t-sjlj-eh)0
-rw-r--r--libgcc/config/i386/t-slibgcc-cygming58
-rw-r--r--libgcc/config/ia64/libgcc-glibc.ver (renamed from gcc/config/ia64/libgcc-glibc.ver)0
-rw-r--r--libgcc/config/ia64/libgcc-ia64.ver (renamed from gcc/config/ia64/libgcc-ia64.ver)0
-rw-r--r--libgcc/config/ia64/t-ia642
-rw-r--r--libgcc/config/ia64/t-linux (renamed from libgcc/config/ia64/t-glibc)2
-rw-r--r--libgcc/config/ia64/t-linux-libunwind (renamed from libgcc/config/ia64/t-glibc-libunwind)0
-rw-r--r--libgcc/config/ia64/t-slibgcc-hpux6
-rw-r--r--libgcc/config/libgcc-glibc.ver (renamed from gcc/config/libgcc-glibc.ver)0
-rw-r--r--libgcc/config/libgcc-libsystem.ver (renamed from gcc/libgcc-libsystem.ver)0
-rw-r--r--libgcc/config/m32r/libgcc-glibc.ver (renamed from gcc/config/m32r/libgcc-glibc.ver)0
-rw-r--r--libgcc/config/m32r/t-linux1
-rw-r--r--libgcc/config/m68k/t-slibgcc-elf-ver (renamed from gcc/config/m68k/t-slibgcc-elf-ver)0
-rw-r--r--libgcc/config/mips/libgcc-mips16.ver (renamed from gcc/config/mips/libgcc-mips16.ver)0
-rw-r--r--libgcc/config/mips/t-mips163
-rw-r--r--libgcc/config/mips/t-slibgcc-irix2
-rw-r--r--libgcc/config/pa/t-slibgcc-dwarf-ver (renamed from gcc/config/pa/t-slibgcc-dwarf-ver)0
-rw-r--r--libgcc/config/pa/t-slibgcc-hpux25
-rw-r--r--libgcc/config/pa/t-slibgcc-sjlj-ver (renamed from gcc/config/pa/t-slibgcc-sjlj-ver)0
-rw-r--r--libgcc/config/rs6000/libgcc-darwin.10.4.ver (renamed from gcc/config/rs6000/darwin-libgcc.10.4.ver)0
-rw-r--r--libgcc/config/rs6000/libgcc-darwin.10.5.ver (renamed from gcc/config/rs6000/darwin-libgcc.10.5.ver)0
-rw-r--r--libgcc/config/rs6000/libgcc-glibc.ver (renamed from libgcc/config/rs6000/libgcc-ppc-glibc.ver)0
-rw-r--r--libgcc/config/rs6000/libgcc-ibm-ldouble.ver (renamed from libgcc/config/rs6000/libgcc-ppc64.ver)0
-rw-r--r--libgcc/config/rs6000/t-darwin2
-rw-r--r--libgcc/config/rs6000/t-ibm-ldouble2
-rw-r--r--libgcc/config/rs6000/t-ldbl1283
-rw-r--r--libgcc/config/rs6000/t-linux3
-rw-r--r--libgcc/config/rs6000/t-slibgcc-aix44
-rw-r--r--libgcc/config/sh/libgcc-excl.ver (renamed from gcc/config/sh/libgcc-excl.ver)0
-rw-r--r--libgcc/config/sh/libgcc-glibc.ver (renamed from gcc/config/sh/libgcc-glibc.ver)0
-rw-r--r--libgcc/config/sh/t-linux31
-rw-r--r--libgcc/config/sparc/libgcc-glibc.ver (renamed from gcc/config/sparc/libgcc-sparc-glibc.ver)0
-rw-r--r--libgcc/config/sparc/t-linux (renamed from gcc/config/sparc/t-linux)3
-rw-r--r--libgcc/config/t-libunwind7
-rw-r--r--libgcc/config/t-linux3
-rw-r--r--libgcc/config/t-slibgcc5
-rw-r--r--libgcc/config/t-slibgcc-darwin5
-rw-r--r--libgcc/config/t-slibgcc-elf-ver2
-rw-r--r--libgcc/config/t-slibgcc-gld-nover3
-rw-r--r--libgcc/config/t-slibgcc-hpux7
-rw-r--r--libgcc/config/t-slibgcc-libgcc (renamed from gcc/config/t-slibgcc-libgcc)4
-rw-r--r--libgcc/config/t-slibgcc-nolc-override (renamed from gcc/config/t-slibgcc-nolc-override)0
-rw-r--r--libgcc/config/t-slibgcc-vms28
-rw-r--r--libgcc/config/xtensa/libgcc-glibc.ver (renamed from gcc/config/xtensa/libgcc-xtensa.ver)0
-rw-r--r--libgcc/config/xtensa/t-linux1
-rw-r--r--libgcc/configure69
-rw-r--r--libgcc/configure.ac54
-rw-r--r--libgcc/mkmap-flat.awk (renamed from gcc/mkmap-flat.awk)0
-rw-r--r--libgcc/mkmap-symver.awk (renamed from gcc/mkmap-symver.awk)0
120 files changed, 876 insertions, 714 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 87498634afa..b43baab918d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,161 @@
+2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR translation/45116
+ * Makefile.in (slibdir): Remove, don't export.
+ (SHLIB_NM_FLAGS): Remove.
+ (libgcc.mvars): Don't emit SHLIB_LINK, SHLIB_INSTALL,
+ SHLIB_DLLDIR, SHLIB_EXT, SHLIB_MKMAP, SHLIB_MKMAP_OPTS,
+ SHLIB_MAPFILES, SHLIB_NM_FLAGS.
+ (DRIVER_DEFINES): Test SHLIB instead of SHLIB_LINK.
+ (gcc.o): Pass SHLIB instead of SHLIB_LINK.
+ (gccspec.o): Likewise.
+ (installdirs): Don't create $(DESTDIR)$(slibdir).
+ * configure.ac (slibdir): Remove.
+ * configure: Regenerate.
+ * libgcc-libsystem.ver: Move to ../libgcc/config.
+ * mkmap-flat.awk, mkmap-symver.awk: Move to ../libgcc.
+ * config/libgcc-glibc.ver: Move to ../libgcc/config.
+ * config/t-libunwind (SHLIB_LC): Remove.
+ * config/t-linux (SHLIB_MAPFILES): Remove.
+ * config/t-slibgcc-dummy: Rename to config/t-slibgcc.
+ * config/t-slibgcc-elf-ver: Remove.
+ * config/t-slibgcc-libgcc, config/t-slibgcc-nolc-override: Move to
+ ../libgcc/config.
+ * config/alpha/libgcc-alpha-ldbl.ver, config/alpha/t-linux: Move
+ to ../libgcc/config/alpha.
+ * config/alpha/t-vms (shlib_version, SHLIB_EXT, SHLIB_OBJS,
+ SHLIB_NAME, SHLIB_MULTILIB, SHLIB_INSTALL, SHLIB_SYMVEC,
+ SHLIB_SYMVECX2, SHLIB_LINK): Remove.
+ * config/arm/libgcc-bpabi.ver: Move to ../libgcc/config/arm.
+ * config/arm/t-bpabi (SHLIB_MAPFILES): Remove.
+ * config/arm/t-netbsd (SHLIB_EXT, SHLIB_NAME, SHLIB_SONAME,
+ SHLIB_OBJS, SHLIB_LINK, SHLIB_INSTALL): Remove.
+ * config/arm/t-symbian (SHLIB_LC): Remove.
+ * config/bfin/libgcc-bfin.ver: Move to
+ ../libgcc/config/bfin/libgcc-glibc.ver.
+ * config/bfin/t-bfin-linux (SHLIB_MAPFILES): Remove.
+ * config/c6x/libgcc-c6xeabi.ver: Move to
+ ../libgcc/config/c6x/libgcc-eabi.ver.
+ * config/c6x/t-c6x-elf (SHLIB_MAPFILES): Remove.
+ * config/cris/libgcc.ver: Move to
+ ../libgcc/config/cris/libgcc-glibc.ver.
+ * config/cris/t-linux (SHLIB_MAPFILES): Remove.
+ * config/frv/libgcc-frv.ver: Move to ../libgcc/config/frv.
+ * config/frv/t-linux (SHLIB_MAPFILES): Remove.
+ * config/i386/darwin-libgcc.10.4.ver: Move to
+ ../libgcc/config/i386/libgcc-darwin.10.4.ver.
+ * config/i386/darwin-libgcc.10.5.ver: Move to
+ ../libgcc/config/i386/libgcc-darwin.10.5.ver.
+ * config/i386/libgcc-glibc.ver: Move to ../libgcc/config/i386.
+ * config/i386/t-cygming (SHLIB_EXT, SHLIB_IMPLIB, SHLIB_SOVERSION,
+ SHLIB_SONAME, SHLIB_MAP, SHLIB_OBJS, SHLIB_DIR, SHLIB_SLIBDIR_QUAL)
+ SHLIB_PTHREAD_CFLAG, SHLIB_PTHREAD_LDFLAG, SHLIB_LINK,
+ SHLIB_INSTALL, SHLIB_MKMAP, SHLIB_MKMAP_OPTS, SHLIB_MAPFILES):
+ Remove.
+ * config/i386/t-cygwin (SHLIB_LC, SHLIB_EH_EXTENSION,
+ SHLIB_IMPLIB, SHLIB_SONAME, SHLIB_MKMAP_OPTS): Remove.
+ * config/i386/t-dlldir, config/i386/t-dlldir-x: Move to
+ ../libgcc/config/i386.
+ * config/i386/t-dw2-eh, config/i386/t-sjlj-eh: Move to
+ ../libgcc/config/i386.
+ * config/i386/t-linux: Move to ../libgcc/config/i386.
+ * config/i386/t-mingw-pthread: Move to ../libgcc/config/i386.
+ * config/i386/t-mingw-w32 (SHLIB_LC): Remove.
+ * config/i386/t-mingw-w64: Likewise.
+ * config/i386/t-mingw32: Remove.
+ * config/ia64/libgcc-glibc.ver, config/ia64/libgcc-ia64.ver: Move
+ to ../libgcc/config/ia64.
+ * config/ia64/t-glibc: Remove.
+ * config/ia64/t-hpux (SHLIB_EXT, SHLIB_LINK, SHLIB_INSTALL): Remove.
+ * config/ia64/t-ia64 (SHLIB_MAPFILES): Remove.
+ * config/ia64/t-vms (shlib_version, SHLIB_EXT, SHLIB_OBJS,
+ SHLIB_NAME, SHLIB_MULTILIB, SHLIB_INSTALL, SHLIB_LINK): Remove.
+ * config/ia64/vms_symvec_libgcc_s.opt: Remove.
+ * config/m32r/libgcc-glibc.ver: Move to ../libgcc/config/m32r.
+ * config/m32r/t-linux (SHLIB_MAPFILES): Remove.
+ * config/m68k/t-slibgcc-elf-ver: Move to ../libgcc/config/m68k.
+ * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Remove.
+ * config/pa/t-hpux-shlib: Move to ../libgcc/config/pa/t-slibgcc-hpux.
+ * config/pa/t-slibgcc-dwarf-ver, config/pa/t-slibgcc-sjsj-ver:
+ Move to ../libgcc/config/pa.
+ * config/rs6000/darwin-libgcc.10.4.ver: Move to
+ ../libgcc/config/rs6000/libgcc-darwin.10.4.ver.
+ * config/rs6000/darwin-libgcc.10.5.ver: Move to
+ ../libgcc/config/rs6000/libgcc-darwin.10.5.ver.
+ * config/rs6000/t-aix43 (SHLIB_EXT, SHLIB_LINK, SHLIB_INSTALL,
+ SHLIB_LIBS, SHLIB_MKMAP, SHLIB_NM_FLAGS, AR_FLAGS_FOR_TARGET): Remove.
+ * config/rs6000/t-aix52: Likewise.
+ * config/sh/libgcc-excl.ver, config/sh/libgcc-glibc.ver: Move to
+ ../libgcc/config/sh.
+ * config/sparc/libgcc-sparc-glibc.ver: Move to
+ ../libgcc/config/sparc/libgcc-glibc.ver.
+ * config/sparc/t-linux: Move to ../libgcc/config/sparc.
+ * config/xtensa/t-linux (SHLIB_MAPFILES): Remove.
+ * config/xtensa/libgcc-xtensa.ver: Move to
+ ../libgcc/config/xtensa/libgcc-glibc.ver.
+ * config.gcc (*-*-freebsd*): Replace t-slibgcc-elf-ver with
+ t-slibgcc in tmake_file.
+ Remove t-slibgcc-nolc-override for *-*-freebsd[34],
+ *-*-freebsd[34].* with pthreads.
+ (*-*-linux*, frv-*-*linux*, *-*-kfreebsd*-gnu,
+ *-*-knetbsd*-gnu, *-*-gnu*, *-*-kopensolaris*-gnu): Replace
+ t-slibgcc-elf-ver with t-slibgcc in tmake_file.
+ (*-*-netbsd*): Likewise.
+ (*-*-solaris2*): Replace t-slibgcc-dummy with t-slibgcc in tmake_file.
+ (*-*-*vms*): Add t-slibgcc to tmake_file.
+ (alpha*-*-linux*): Remove alpha/t-linux from tmake_file.
+ (alpha*-dec-osf5.1*): Replace t-slibgcc-dummy with t-slibgcc in
+ tmake_file.
+ (arm*-*-linux*): Remove t-slibgcc-libgcc from tmake_file for
+ arm*-*-linux-*eabi.
+ (bfin*-linux-uclibc*): Replace t-slibgcc-dummy with t-slibgcc in
+ tmake_file.
+ (crisv32-*-linux*, cris-*-linux*): Likewise.
+ (hppa*-*-linux*): Remove t-slibgcc-libgcc, pa/t-slibgcc-sjlj-ver,
+ pa/t-slibgcc-dwarf-ver from tmake_file.
+ (hppa[12]*-*-hpux10*): Replace pa/t-hpux-shlib with t-slibgcc in
+ tmake_file.
+ Remove pa/t-slibgcc-sjlj-ver, pa/t-slibgcc-dwarf-ver from tmake_file.
+ (hppa*64*-*-hpux11*): Likewise.
+ (hppa[12]*-*-hpux11*): Likewise.
+ (i[34567]86-*-darwin*): Replace t-slibgcc-dummy in t-slibgcc in
+ tmake_file.
+ (x86_64-*-darwin*): Likewise.
+ (i[34567]86-*-cygwin*): Remove tmake_eh_file, tmake_dlldir_file.
+ Add t-slibgcc to tmake_file.
+ (i[34567]86-*-mingw*, x86_64-*-mingw*): Likewise.
+ Remove i386/t-mingw32 from tmake_file unless x86_64-w64-*,
+ i[34567]86-w64-*.
+ Remove i386/t-mingw-pthread from tmake_file.
+ (ia64*-*-linux*): Remove ia64/t-glibc from tmake_file.
+ (ia64*-*-hpux*): Add t-slibgcc to tmake_file.
+ (ia64-hp-*vms*): Likewise.
+ (m32r-*-linux*): Replace t-slibgcc-elf-ver with t-slibgcc in
+ tmake_file.
+ (m32rle-*-linux*): Likewise.
+ (m68k-*-linux*): Remove m68k/t-slibgcc-elf-ver from tmake_file.
+ (microblaze*-linux*): Remove t-slibgcc-elf-ver,
+ t-slibgcc-nolc-override from tmake_file.
+ (mips-sgi-irix6.5*): Replace t-slibgcc-dummy with t-slibgcc in
+ tmake_file.
+ (powerpc-*-darwin*): Likewise.
+ (powerpc64-*-darwin*): Likewise.
+ (powerpc-*-freebsd*): Remove t-slibgcc-libgcc from tmake_file.
+ (powerpc-*-linux*, powerpc64-*-linux*): Likewise.
+ (rs6000-ibm-aix4.[3456789]*, powerpc-ibm-aix4.[3456789]*): Add
+ t-slibgcc to tmake_file.
+ (rs6000-ibm-aix5.1.*, powerpc-ibm-aix5.1.*): Likewise.
+ (rs6000-ibm-aix5.2.*, powerpc-ibm-aix5.2.*): Likewise.
+ (rs6000-ibm-aix5.3.*, powerpc-ibm-aix5.3.*): Likewise.
+ (rs6000-ibm-aix[6789].*, powerpc-ibm-aix[6789].*): Likewise.
+ (sparc-*-linux*): Remove sparc/t-linux from tmake_file.
+ (sparc64-*-linux*): Likewise.
+ (tic6x-*-uclinux): Replace t-slibgcc-elf-ver with t-slibgcc in
+ tmake_file.
+ (i[34567]86-*-linux*, x86_64-*-linux*, i[34567]86-*-kfreebsd*-gnu,
+ x86_64-*-kfreebsd*-gnu, i[34567]86-*-gnu*): Remove i386/t-linux
+ from tmake_file.
+
2011-11-02 Richard Guenther <rguenther@suse.de>
PR tree-optimization/50902
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index c8f6e92673d..0211fdf8dbf 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -612,8 +612,6 @@ prefix_to_exec_prefix := \
dollar = @dollar@
# Used in install-cross.
gcc_tooldir = @gcc_tooldir@
-# Used to install the shared libgcc.
-slibdir = @slibdir@
# Since gcc_tooldir does not exist at build-time, use -B$(build_tooldir)/bin/
build_tooldir = $(exec_prefix)/$(target_noncanonical)
# Directory in which the compiler finds target-independent g++ includes.
@@ -696,9 +694,6 @@ CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES_FOR_TARGET) $(MULTILIB_CFLAGS) \
-fno-stack-protector \
$(INHIBIT_LIBC_CFLAGS)
-# nm flags to list global symbols in libgcc object files.
-SHLIB_NM_FLAGS = -pg
-
# List of extra executables that should be compiled for this target machine
# that are used for compiling from source code to object code.
# The rules for compiling them should be in the t-* file for the machine.
@@ -1137,7 +1132,6 @@ export NM_FOR_TARGET
export STRIP_FOR_TARGET
export RANLIB_FOR_TARGET
export libsubdir
-export slibdir
FLAGS_TO_PASS = \
"ADA_CFLAGS=$(ADA_CFLAGS)" \
@@ -1911,14 +1905,6 @@ libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs \
echo LIB2_SIDITI_CONV_FUNCS = '$(LIB2_SIDITI_CONV_FUNCS)' >> tmp-libgcc.mvars
echo LIB2_DIVMOD_FUNCS = '$(LIB2_DIVMOD_FUNCS)' >> tmp-libgcc.mvars
echo GCC_EXTRA_PARTS = '$(GCC_EXTRA_PARTS)' >> tmp-libgcc.mvars
- echo SHLIB_LINK = '$(subst $(GCC_FOR_TARGET),$$(GCC_FOR_TARGET),$(SHLIB_LINK))' >> tmp-libgcc.mvars
- echo SHLIB_INSTALL = '$(SHLIB_INSTALL)' >> tmp-libgcc.mvars
- echo SHLIB_DLLDIR = '$(SHLIB_DLLDIR)' >> tmp-libgcc.mvars
- echo SHLIB_EXT = '$(SHLIB_EXT)' >> tmp-libgcc.mvars
- echo SHLIB_MKMAP = '$(call srcdirify,$(SHLIB_MKMAP))' >> tmp-libgcc.mvars
- echo SHLIB_MKMAP_OPTS = '$(SHLIB_MKMAP_OPTS)' >> tmp-libgcc.mvars
- echo SHLIB_MAPFILES = '$(call srcdirify,$(SHLIB_MAPFILES))' >> tmp-libgcc.mvars
- echo SHLIB_NM_FLAGS = '$(SHLIB_NM_FLAGS)' >> tmp-libgcc.mvars
echo LIBGCC2_CFLAGS = '$(LIBGCC2_CFLAGS)' >> tmp-libgcc.mvars
echo TARGET_LIBGCC2_CFLAGS = '$(TARGET_LIBGCC2_CFLAGS)' >> tmp-libgcc.mvars
echo CRTSTUFF_CFLAGS = '$(CRTSTUFF_CFLAGS)' >> tmp-libgcc.mvars
@@ -2228,20 +2214,20 @@ DRIVER_DEFINES = \
-DTOOLDIR_BASE_PREFIX=\"$(libsubdir_to_prefix)$(prefix_to_exec_prefix)\" \
@TARGET_SYSTEM_ROOT_DEFINE@ \
$(VALGRIND_DRIVER_DEFINES) \
- `test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"` \
+ `test "X$${SHLIB}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"` \
-DCONFIGURE_SPECS="\"@CONFIGURE_SPECS@\""
gcc.o: gcc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h multilib.h \
Makefile $(lang_specs_files) specs.h prefix.h $(GCC_H) $(FLAGS_H) \
configargs.h $(OBSTACK_H) $(OPTS_H) $(DIAGNOSTIC_H) $(VEC_H) $(PARAMS_H)
- (SHLIB_LINK='$(SHLIB_LINK)'; \
+ (SHLIB='$(SHLIB)'; \
$(COMPILER) $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
$(DRIVER_DEFINES) \
-c $(srcdir)/gcc.c $(OUTPUT_OPTION))
gccspec.o: gccspec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) \
$(OPTS_H)
- (SHLIB_LINK='$(SHLIB_LINK)'; \
+ (SHLIB='$(SHLIB)'; \
$(COMPILER) $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
$(DRIVER_DEFINES) \
-c $(srcdir)/gccspec.c $(OUTPUT_OPTION))
@@ -4651,7 +4637,6 @@ installdirs:
$(mkinstalldirs) $(DESTDIR)$(bindir)
$(mkinstalldirs) $(DESTDIR)$(includedir)
$(mkinstalldirs) $(DESTDIR)$(infodir)
- $(mkinstalldirs) $(DESTDIR)$(slibdir)
$(mkinstalldirs) $(DESTDIR)$(man1dir)
$(mkinstalldirs) $(DESTDIR)$(man7dir)
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 2cb8b365891..999fe4d2239 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -559,7 +559,7 @@ case ${target} in
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
- tmake_file="t-slibgcc-elf-ver t-freebsd"
+ tmake_file="t-freebsd t-slibgcc"
case ${enable_threads} in
no)
fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
@@ -567,13 +567,6 @@ case ${target} in
"" | yes | posix)
thread_file='posix'
tmake_file="${tmake_file} t-freebsd-thread"
- # Before 5.0, FreeBSD can't bind shared libraries to -lc
- # when "optionally" threaded via weak pthread_* checks.
- case ${target} in
- *-*-freebsd[34] | *-*-freebsd[34].*)
- tmake_file="${tmake_file} t-slibgcc-nolc-override"
- ;;
- esac
;;
*)
echo 'Unknown thread configuration for FreeBSD'
@@ -599,7 +592,7 @@ case ${target} in
case ${enable_threads} in
"" | yes | posix) thread_file='posix' ;;
esac
- tmake_file="t-slibgcc-elf-ver t-linux"
+ tmake_file="t-linux t-slibgcc"
case $target in
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-kopensolaris*-gnu)
:;;
@@ -647,7 +640,7 @@ case ${target} in
esac
;;
*-*-netbsd*)
- tmake_file="t-slibgcc-elf-ver t-libc-ok t-netbsd t-libgcc-pic"
+ tmake_file="t-libc-ok t-netbsd t-libgcc-pic t-slibgcc"
gas=yes
gnu_ld=yes
@@ -730,7 +723,7 @@ case ${target} in
tm_file="usegas.h ${tm_file}"
fi
tm_p_file="${tm_p_file} sol2-protos.h"
- tmake_file="${tmake_file} t-sol2 t-slibgcc-dummy"
+ tmake_file="${tmake_file} t-sol2 t-slibgcc"
c_target_objs="${c_target_objs} sol2-c.o"
cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
extra_objs="sol2.o sol2-stubs.o"
@@ -744,7 +737,7 @@ case ${target} in
*-*-*vms*)
extra_options="${extra_options} vms/vms.opt"
xmake_file=vms/x-vms
- tmake_file="vms/t-vms"
+ tmake_file="vms/t-vms t-slibgcc"
extra_objs="vms.o"
target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.c"
tm_p_file="${tm_p_file} vms/vms-protos.h"
@@ -777,7 +770,7 @@ alpha*-*-linux*)
tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
extra_options="${extra_options} alpha/elf.opt"
target_cpu_default="MASK_GAS"
- tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee alpha/t-linux"
+ tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee"
extra_parts="${extra_parts} crtfastmath.o"
;;
alpha*-*-freebsd*)
@@ -814,7 +807,7 @@ alpha*-dec-osf5.1*)
extra_passes="mips-tfile mips-tdump"
fi
use_collect2=yes
- tmake_file="t-slibgcc-dummy"
+ tmake_file="t-slibgcc"
tm_file="${tm_file} alpha/osf5.h"
tm_defines="${tm_defines} TARGET_SUPPORT_ARCH=1"
extra_options="${extra_options} rpath.opt alpha/osf5.opt"
@@ -862,7 +855,7 @@ arm*-*-linux*) # ARM GNU/Linux with ELF
arm*-*-linux-*eabi)
tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
libgcc_tm_file="$libgcc_tm_file arm/bpabi-lib.h"
- tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
+ tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
# Define multilib configuration for arm-linux-androideabi.
case ${target} in
*-androideabi)
@@ -969,7 +962,7 @@ bfin*-uclinux*)
;;
bfin*-linux-uclibc*)
tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
- tmake_file="t-slibgcc-elf-ver bfin/t-bfin-linux"
+ tmake_file="bfin/t-bfin-linux t-slibgcc"
extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
use_collect2=no
;;
@@ -1001,7 +994,7 @@ cris-*-elf | cris-*-none)
crisv32-*-linux* | cris-*-linux*)
tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h cris/linux.h"
# We need to avoid using t-linux, so override default tmake_file
- tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux"
+ tmake_file="cris/t-cris cris/t-linux t-slibgcc"
extra_options="${extra_options} cris/linux.opt"
case $target in
cris-*-*)
@@ -1069,13 +1062,7 @@ hppa*-*-linux*)
target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
pa/pa32-regs.h pa/pa32-linux.h"
- tmake_file="${tmake_file} pa/t-linux t-slibgcc-libgcc"
- # Set the libgcc version number
- if test x$sjlj = x1; then
- tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
- else
- tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
- fi
+ tmake_file="${tmake_file} pa/t-linux"
;;
# port not yet contributed.
#hppa*-*-openbsd*)
@@ -1098,7 +1085,7 @@ hppa[12]*-*-hpux10*)
esac
use_gcc_stdint=provide
tm_file="${tm_file} hpux-stdint.h"
- tmake_file="pa/t-pa-hpux10 pa/t-pa-hpux pa/t-hpux-shlib"
+ tmake_file="pa/t-pa-hpux10 pa/t-pa-hpux t-slibgcc"
case ${enable_threads} in
"")
if test x$have_pthread_h = xyes ; then
@@ -1109,12 +1096,6 @@ hppa[12]*-*-hpux10*)
tmake_file="${tmake_file} pa/t-dce-thr"
;;
esac
- # Set the libgcc version number
- if test x$sjlj = x1; then
- tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
- else
- tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
- fi
use_collect2=yes
gas=yes
if test "x$with_dwarf2" != x; then
@@ -1147,13 +1128,7 @@ hppa*64*-*-hpux11*)
extra_options="${extra_options} pa/pa-hpux.opt \
pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
need_64bit_hwint=yes
- tmake_file="pa/t-pa64 pa/t-pa-hpux pa/t-hpux-shlib"
- # Set the libgcc version number
- if test x$sjlj = x1; then
- tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
- else
- tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
- fi
+ tmake_file="pa/t-pa64 pa/t-pa-hpux t-slibgcc"
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \
libgcc_stub.a"
case x${enable_threads} in
@@ -1193,13 +1168,7 @@ hppa[12]*-*-hpux11*)
extra_options="${extra_options} pa/pa-hpux1131.opt"
;;
esac
- tmake_file="pa/t-pa-hpux11 pa/t-pa-hpux pa/t-hpux-shlib"
- # Set the libgcc version number
- if test x$sjlj = x1; then
- tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
- else
- tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
- fi
+ tmake_file="pa/t-pa-hpux11 pa/t-pa-hpux t-slibgcc"
extra_parts="libgcc_stub.a"
case x${enable_threads} in
x | xyes | xposix )
@@ -1227,12 +1196,12 @@ i[34567]86-*-darwin*)
need_64bit_isa=yes
# Baseline choice for a machine that allows m64 support.
with_cpu=${with_cpu:-core2}
- tmake_file="${tmake_file} t-slibgcc-dummy"
+ tmake_file="${tmake_file} t-slibgcc"
libgcc_tm_file="$libgcc_tm_file i386/darwin-lib.h"
;;
x86_64-*-darwin*)
with_cpu=${with_cpu:-core2}
- tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc-dummy"
+ tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc"
tm_file="${tm_file} ${cpu_type}/darwin64.h"
libgcc_tm_file="$libgcc_tm_file i386/darwin-lib.h"
;;
@@ -1460,19 +1429,7 @@ i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae)
i[34567]86-*-cygwin*)
tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
xm_file=i386/xm-cygwin.h
- # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h
- if test x$sjlj = x0; then
- tmake_eh_file="i386/t-dw2-eh"
- else
- tmake_eh_file="i386/t-sjlj-eh"
- fi
- # Shared libgcc DLL install dir depends on cross/native build.
- if test x${host} = x${target} ; then
- tmake_dlldir_file="i386/t-dlldir"
- else
- tmake_dlldir_file="i386/t-dlldir-x"
- fi
- tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-cygming i386/t-cygwin"
+ tmake_file="${tmake_file} i386/t-cygming i386/t-cygwin t-slibgcc"
target_gtfiles="\$(srcdir)/config/i386/winnt.c"
extra_options="${extra_options} i386/cygming.opt"
extra_objs="winnt.o winnt-stubs.o"
@@ -1525,19 +1482,7 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
;;
esac
tm_file="${tm_file} i386/mingw-stdint.h"
- # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h
- if test x$sjlj = x0; then
- tmake_eh_file="i386/t-dw2-eh"
- else
- tmake_eh_file="i386/t-sjlj-eh"
- fi
- # Shared libgcc DLL install dir depends on cross/native build.
- if test x${host} = x${target} ; then
- tmake_dlldir_file="i386/t-dlldir"
- else
- tmake_dlldir_file="i386/t-dlldir-x"
- fi
- tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-cygming"
+ tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
case ${target} in
x86_64-w64-*)
tmake_file="${tmake_file} i386/t-mingw-w64"
@@ -1545,9 +1490,6 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
i[34567]86-w64-*)
tmake_file="${tmake_file} i386/t-mingw-w32"
;;
- *)
- tmake_file="${tmake_file} i386/t-mingw32"
- ;;
esac
native_system_header_dir=/mingw/include
target_gtfiles="\$(srcdir)/config/i386/winnt.c"
@@ -1570,7 +1512,6 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
;;
posix)
thread_file='posix'
- tmake_file="i386/t-mingw-pthread ${tmake_file}"
;;
esac
case ${target} in
@@ -1616,13 +1557,13 @@ ia64*-*-freebsd*)
;;
ia64*-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
- tmake_file="${tmake_file} ia64/t-ia64 t-libunwind ia64/t-glibc"
+ tmake_file="${tmake_file} ia64/t-ia64 t-libunwind"
target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
;;
ia64*-*-hpux*)
tm_file="${tm_file} dbxelf.h elfos.h ia64/sysv4.h ia64/hpux.h"
- tmake_file="ia64/t-ia64 ia64/t-hpux"
+ tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
target_cpu_default="MASK_GNU_AS"
case x$enable_threads in
x | xyes | xposix )
@@ -1687,7 +1628,7 @@ m32r-*-rtems*)
m32r-*-linux*)
tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} m32r/linux.h"
# We override the tmake_file for linux -- why?
- tmake_file="t-slibgcc-elf-ver m32r/t-linux"
+ tmake_file="m32r/t-linux t-slibgcc"
gnu_ld=yes
if test x$enable_threads = xyes; then
thread_file='posix'
@@ -1696,7 +1637,7 @@ m32r-*-linux*)
m32rle-*-linux*)
tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h m32r/little.h ${tm_file} m32r/linux.h"
# We override the tmake_file for linux -- why?
- tmake_file="t-slibgcc-elf-ver m32r/t-linux"
+ tmake_file="m32r/t-linux t-slibgcc"
gnu_ld=yes
if test x$enable_threads = xyes; then
thread_file='posix'
@@ -1772,11 +1713,6 @@ m68k-*-linux*) # Motorola m68k's running GNU/Linux
extra_options="${extra_options} m68k/ieee.opt"
tm_defines="${tm_defines} MOTOROLA=1"
tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
- # if not configured with --enable-sjlj-exceptions, bump the
- # libgcc version number
- if test x$sjlj != x1; then
- tmake_file="$tmake_file m68k/t-slibgcc-elf-ver"
- fi
;;
m68k-*-rtems*)
default_m68k_cpu=68020
@@ -1807,7 +1743,7 @@ microblaze*-linux*)
tm_file="${tm_file} dbxelf.h gnu-user.h linux.h microblaze/linux.h"
c_target_objs="${c_target_objs} microblaze-c.o"
cxx_target_objs="${cxx_target_objs} microblaze-c.o"
- tmake_file="${tmake_file} t-slibgcc-elf-ver t-slibgcc-nolc-override t-linux microblaze/t-microblaze"
+ tmake_file="${tmake_file} t-linux microblaze/t-microblaze"
extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o crtbeginT.o"
;;
microblaze*-*-*)
@@ -1818,7 +1754,7 @@ microblaze*-*-*)
;;
mips-sgi-irix6.5*)
tm_file="elfos.h ${tm_file} mips/iris6.h"
- tmake_file="mips/t-irix6 t-slibgcc-dummy"
+ tmake_file="mips/t-irix6 t-slibgcc"
extra_options="${extra_options} rpath.opt mips/iris6.opt"
target_cpu_default="MASK_ABICALLS"
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32"
@@ -2045,19 +1981,18 @@ powerpc-*-darwin*)
*-darwin[0-6]*)
;;
esac
- tmake_file="${tmake_file} t-slibgcc-dummy"
+ tmake_file="${tmake_file} t-slibgcc"
extra_headers=altivec.h
;;
powerpc64-*-darwin*)
extra_options="${extra_options} ${cpu_type}/darwin.opt"
- tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc-dummy"
+ tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc"
tm_file="${tm_file} ${cpu_type}/darwin8.h ${cpu_type}/darwin64.h"
extra_headers=altivec.h
;;
powerpc-*-freebsd*)
tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} rs6000/sysv4.h rs6000/freebsd.h"
tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
- tmake_file="${tmake_file} t-slibgcc-libgcc"
extra_options="${extra_options} rs6000/sysv4.opt"
;;
powerpc-*-netbsd*)
@@ -2143,7 +2078,6 @@ powerpc-*-linux* | powerpc64-*-linux*)
tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
;;
esac
- tmake_file="${tmake_file} t-slibgcc-libgcc"
case ${target} in
powerpc*-*-linux*ppc476*)
tm_file="${tm_file} rs6000/476.h"
@@ -2203,7 +2137,7 @@ powerpcle-*-eabi*)
;;
rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*)
tm_file="rs6000/biarch64.h ${tm_file} rs6000/aix.h rs6000/aix43.h rs6000/xcoff.h rs6000/aix-stdint.h"
- tmake_file=rs6000/t-aix43
+ tmake_file="rs6000/t-aix43 t-slibgcc"
extra_options="${extra_options} rs6000/aix64.opt"
use_collect2=yes
thread_file='aix'
@@ -2213,7 +2147,7 @@ rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*)
rs6000-ibm-aix5.1.* | powerpc-ibm-aix5.1.*)
tm_file="rs6000/biarch64.h ${tm_file} rs6000/aix.h rs6000/aix51.h rs6000/xcoff.h rs6000/aix-stdint.h"
extra_options="${extra_options} rs6000/aix64.opt"
- tmake_file=rs6000/t-aix43
+ tmake_file="rs6000/t-aix43 t-slibgcc"
use_collect2=yes
thread_file='aix'
use_gcc_stdint=wrap
@@ -2221,7 +2155,7 @@ rs6000-ibm-aix5.1.* | powerpc-ibm-aix5.1.*)
;;
rs6000-ibm-aix5.2.* | powerpc-ibm-aix5.2.*)
tm_file="${tm_file} rs6000/aix.h rs6000/aix52.h rs6000/xcoff.h rs6000/aix-stdint.h"
- tmake_file=rs6000/t-aix52
+ tmake_file="rs6000/t-aix52 t-slibgcc"
extra_options="${extra_options} rs6000/aix64.opt"
use_collect2=yes
thread_file='aix'
@@ -2230,7 +2164,7 @@ rs6000-ibm-aix5.2.* | powerpc-ibm-aix5.2.*)
;;
rs6000-ibm-aix5.3.* | powerpc-ibm-aix5.3.*)
tm_file="${tm_file} rs6000/aix.h rs6000/aix53.h rs6000/xcoff.h rs6000/aix-stdint.h"
- tmake_file=rs6000/t-aix52
+ tmake_file="rs6000/t-aix52 t-slibgcc"
extra_options="${extra_options} rs6000/aix64.opt"
use_collect2=yes
thread_file='aix'
@@ -2239,7 +2173,7 @@ rs6000-ibm-aix5.3.* | powerpc-ibm-aix5.3.*)
;;
rs6000-ibm-aix[6789].* | powerpc-ibm-aix[6789].*)
tm_file="${tm_file} rs6000/aix.h rs6000/aix61.h rs6000/xcoff.h rs6000/aix-stdint.h"
- tmake_file=rs6000/t-aix52
+ tmake_file="rs6000/t-aix52 t-slibgcc"
extra_options="${extra_options} rs6000/aix64.opt"
use_collect2=yes
thread_file='aix'
@@ -2497,7 +2431,7 @@ sparc-*-linux*)
tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
;;
*)
- tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux"
+ tmake_file="${tmake_file} sparc/t-sparc"
;;
esac
if test x$enable_targets = xall; then
@@ -2543,7 +2477,7 @@ sparc64-*-rtems*)
sparc64-*-linux*)
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default-64.h sparc/linux64.h"
extra_options="${extra_options} sparc/long-double-switch.opt"
- tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux sparc/t-linux64"
+ tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
extra_parts="${extra_parts} crtfastmath.o"
;;
sparc64-*-freebsd*|ultrasparc-*-freebsd*)
@@ -2594,7 +2528,7 @@ tic6x-*-uclinux)
tm_file="${tm_file} dbxelf.h tm-dwarf2.h glibc-stdint.h"
tm_file="${tm_file} ./sysroot-suffix.h"
libgcc_tm_file="${libgcc_tm_file} c6x/c6x-abi.h"
- tmake_file="t-slibgcc-elf-ver t-sysroot-suffix"
+ tmake_file="t-sysroot-suffix t-slibgcc"
tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
use_collect2=no
;;
@@ -3610,7 +3544,6 @@ case ${target} in
i[34567]86-*-linux* | x86_64-*-linux* | \
i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
i[34567]86-*-gnu*)
- tmake_file="${tmake_file} i386/t-linux"
;;
i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
;;
diff --git a/gcc/config/alpha/t-vms b/gcc/config/alpha/t-vms
index 410e219ff5b..9dab1229f45 100644
--- a/gcc/config/alpha/t-vms
+++ b/gcc/config/alpha/t-vms
@@ -1,5 +1,5 @@
# Copyright (C) 1996, 1997, 1998, 2001, 2002,
-# 2007, 2009 Free Software Foundation, Inc.
+# 2007, 2009, 2011 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -35,31 +35,3 @@ MULTILIB_DIRNAMES = ev6
MULTILIB_OSDIRNAMES = ev6
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
-
-shlib_version:=$(shell echo $(BASEVER_c) | sed -e 's/\./,/' -e 's/\.//g')
-SHLIB_EXT = .exe
-SHLIB_OBJS = @shlib_objs@
-SHLIB_NAME = @shlib_base_name@.exe
-SHLIB_MULTILIB =
-SHLIB_INSTALL = $(INSTALL_DATA) $(SHLIB_NAME) $$(DESTDIR)$$(libsubdir)/$(SHLIB_NAME)
-SHLIB_SYMVEC = \
- grep -F -e "\$$BSS\$$" -e "\$$DATA\$$" -e " sdata " -e " data.rel " -e " data.rel.ro " -e " sbss " \
- -e "\$$LINK\$$" -e "\$$READONLY\$$" | \
- sed -e "s/.*\$$LINK\$$ \(.*\)/SYMBOL_VECTOR=(\1=PROCEDURE)/" \
- -e "s/.*\$$DATA\$$ \(.*\)/SYMBOL_VECTOR=(\1=DATA)/" \
- -e "s/.* sbss \(.*\)/SYMBOL_VECTOR=(\1=DATA)/" \
- -e "s/.* sdata \(.*\)/SYMBOL_VECTOR=(\1=DATA)/" \
- -e "s/.* data.rel \(.*\)/SYMBOL_VECTOR=(\1=DATA)/" \
- -e "s/.* data.rel.ro \(.*\)/SYMBOL_VECTOR=(\1=DATA)/" \
- -e "s/.*\$$BSS\$$ \(.*\)/SYMBOL_VECTOR=(\1=DATA)/" \
- -e "s/.*\$$READONLY\$$ \(.*\)/SYMBOL_VECTOR=(\1=DATA)/"
-SHLIB_SYMVECX2 := $(subst $$,$$$$,$(SHLIB_SYMVEC))
-SHLIB_LINK = \
- echo "case_sensitive=yes" > SYMVEC_$$$$$$$$.opt; \
- objdump --syms $(SHLIB_OBJS) | \
- $(SHLIB_SYMVECX2) >> SYMVEC_$$$$$$$$.opt ; \
- echo "case_sensitive=NO" >> SYMVEC_$$$$$$$$.opt; \
- $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -nodefaultlibs \
- -shared --for-linker=/noinform -o $(SHLIB_NAME) $(SHLIB_OBJS) \
- --for-linker=SYMVEC_$$$$$$$$.opt \
- --for-linker=gsmatch=equal,$(shlib_version)
diff --git a/gcc/config/arm/t-bpabi b/gcc/config/arm/t-bpabi
index d8a1be45dcd..047525682fc 100644
--- a/gcc/config/arm/t-bpabi
+++ b/gcc/config/arm/t-bpabi
@@ -24,8 +24,4 @@ LIB2FUNCS_EXTRA = $(srcdir)/config/arm/bpabi.c \
$(srcdir)/config/arm/unaligned-funcs.c
LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/arm/fp16.c
-
-# Add the BPABI names.
-SHLIB_MAPFILES += $(srcdir)/config/arm/libgcc-bpabi.ver
-
EXTRA_HEADERS += $(srcdir)/ginclude/unwind-arm-common.h
diff --git a/gcc/config/arm/t-netbsd b/gcc/config/arm/t-netbsd
index 22bbbe7dd4b..d659b5a568f 100644
--- a/gcc/config/arm/t-netbsd
+++ b/gcc/config/arm/t-netbsd
@@ -1,5 +1,5 @@
# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006 Free Software Foundation, Inc.
+# 2006, 2011 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -22,26 +22,3 @@
TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fpic
LIBGCC2_DEBUG_CFLAGS = -g0
LIB2FUNCS_EXTRA = $(srcdir)/config/floatunsidf.c $(srcdir)/config/floatunsisf.c
-
-# Build a shared libgcc library.
-SHLIB_EXT = .so
-SHLIB_NAME = @shlib_base_name@.so
-SHLIB_SONAME = @shlib_base_name@.so.1
-SHLIB_OBJS = @shlib_objs@
-
-SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
- -Wl,-soname,$(SHLIB_SONAME) \
- -o $(SHLIB_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \
- rm -f $(SHLIB_SONAME) && \
- if [ -f $(SHLIB_NAME) ]; then \
- mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \
- else true; fi && \
- mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \
- $(LN_S) $(SHLIB_NAME) $(SHLIB_SONAME)
-# $(slibdir) double quoted to protect it from expansion while building
-# libgcc.mk. We want this delayed until actual install time.
-SHLIB_INSTALL = \
- $$(mkinstalldirs) $$(DESTDIR)$$(slibdir); \
- $(INSTALL_DATA) $(SHLIB_NAME) $$(DESTDIR)$$(slibdir)/$(SHLIB_SONAME); \
- rm -f $$(DESTDIR)$$(slibdir)/$(SHLIB_NAME); \
- $(LN_S) $(SHLIB_SONAME) $$(DESTDIR)$$(slibdir)/$(SHLIB_NAME)
diff --git a/gcc/config/arm/t-symbian b/gcc/config/arm/t-symbian
index e37d473eca0..a0d6f7de887 100644
--- a/gcc/config/arm/t-symbian
+++ b/gcc/config/arm/t-symbian
@@ -41,9 +41,5 @@ LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/arm/fp16.c
MULTILIB_OPTIONS = mfloat-abi=softfp
MULTILIB_DIRNAMES = softfp
-# There is no C library to link against on Symbian OS -- at least when
-# building GCC.
-SHLIB_LC =
-
# Symbian OS provides its own startup code.
EXTRA_MULTILIB_PARTS=
diff --git a/gcc/config/bfin/t-bfin-linux b/gcc/config/bfin/t-bfin-linux
index e7e705ef1d4..d6f67f05445 100644
--- a/gcc/config/bfin/t-bfin-linux
+++ b/gcc/config/bfin/t-bfin-linux
@@ -49,8 +49,6 @@ MULTILIB_MATCHES+=mcpu?bf532-none=mcpu?bf549m-none
MULTILIB_MATCHES+=mcpu?bf532-none=mcpu?bf561-none
MULTILIB_MATCHES+=mcpu?bf532-none=mcpu?bf592-none
-SHLIB_MAPFILES=$(srcdir)/config/bfin/libgcc-bfin.ver
-
EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o
# This rule uses MULTILIB_MATCHES to generate a definition of
diff --git a/gcc/config/c6x/t-c6x-elf b/gcc/config/c6x/t-c6x-elf
index 030a39ce18c..98146150d32 100644
--- a/gcc/config/c6x/t-c6x-elf
+++ b/gcc/config/c6x/t-c6x-elf
@@ -63,5 +63,3 @@ EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crti.o crtn.o
CRTSTUFF_T_CFLAGS = -msdata=none
CRTSTUFF_T_CFLAGS_S = -msdata=none
TARGET_LIBGCC2_CFLAGS = -msdata=none
-
-SHLIB_MAPFILES += $(srcdir)/config/c6x/libgcc-c6xeabi.ver
diff --git a/gcc/config/cris/t-linux b/gcc/config/cris/t-linux
index 96e861a4283..e10d083f565 100644
--- a/gcc/config/cris/t-linux
+++ b/gcc/config/cris/t-linux
@@ -1,6 +1,5 @@
TARGET_LIBGCC2_CFLAGS += -fPIC
CRTSTUFF_T_CFLAGS_S = $(TARGET_LIBGCC2_CFLAGS)
-SHLIB_MAPFILES += $(srcdir)/config/cris/libgcc.ver
# We *know* we have a limits.h in the glibc library, with extra
# definitions needed for e.g. libgfortran.
diff --git a/gcc/config/frv/t-linux b/gcc/config/frv/t-linux
index 5b094518a1d..305d3e6de4b 100644
--- a/gcc/config/frv/t-linux
+++ b/gcc/config/frv/t-linux
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2007, 2011 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -28,6 +28,3 @@ EXTRA_MULTILIB_PARTS =
CRTSTUFF_T_CFLAGS = -fPIC
TARGET_LIBGCC2_CFLAGS = -fPIC
-
-SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver \
- $(srcdir)/config/frv/libgcc-frv.ver
diff --git a/gcc/config/i386/t-cygming b/gcc/config/i386/t-cygming
index af2c9e41c4d..242d7f27f65 100644
--- a/gcc/config/i386/t-cygming
+++ b/gcc/config/i386/t-cygming
@@ -1,4 +1,5 @@
-# Copyright (C) 2003, 2005, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2005, 2008, 2009, 2010, 2011
+# Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -54,63 +55,3 @@ msformat-c.o: $(srcdir)/config/i386/msformat-c.c $(CONFIG_H) $(SYSTEM_H) coretyp
$(srcdir)/config/i386/msformat-c.c
STMP_FIXINC=stmp-fixinc
-
-# Build a shared libgcc library for PECOFF with a DEF file
-# with the GNU linker.
-#
-# mkmap-flat.awk is used with the pe_dll option to produce a DEF instead
-# of an ELF map file.
-#
-# Warning: If SHLIB_SOVERSION or SHLIB_SONAME are updated, LIBGCC_SONAME
-# in mingw32.h and SHLIB_MKMAP_OPTS below must be updated also.
-
-SHLIB_EXT = .dll
-SHLIB_IMPLIB = @shlib_base_name@.a
-SHLIB_SOVERSION = 1
-SHLIB_SONAME = @shlib_base_name@_$(EH_MODEL)-$(SHLIB_SOVERSION)$(SHLIB_EXT)
-SHLIB_MAP = @shlib_map_file@
-SHLIB_OBJS = @shlib_objs@
-SHLIB_DIR = @multilib_dir@/shlib
-SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
-# SHLIB_DLLDIR is defined by including one of either t-dlldir or t-dlldir-x
-# (native/cross build respectively) in the tmake_file list in gcc/config.gcc.
-ifndef SHLIB_DLLDIR
-$(error SHLIB_DLLDIR must be defined)
-endif
-ifndef SHLIB_PTHREAD_CFLAG
-SHLIB_PTHREAD_CFLAG =
-endif
-ifndef SHLIB_PTHREAD_LDFLAG
-SHLIB_PTHREAD_LDFLAG =
-endif
-
-SHLIB_LINK = $(LN_S) -f $(SHLIB_MAP) $(SHLIB_MAP).def && \
- if [ ! -d $(SHLIB_DIR) ]; then \
- mkdir $(SHLIB_DIR); \
- else true; fi && \
- $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(SHLIB_PTHREAD_CFLAG) \
- -shared -nodefaultlibs \
- $(SHLIB_MAP).def \
- -Wl,--out-implib,$(SHLIB_DIR)/$(SHLIB_IMPLIB).tmp \
- -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
- $(SHLIB_OBJS) ${SHLIB_PTHREAD_LDFLAG} $(SHLIB_LC) && \
- if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
- mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
- $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
- else true; fi && \
- mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
- mv $(SHLIB_DIR)/$(SHLIB_IMPLIB).tmp $(SHLIB_DIR)/$(SHLIB_IMPLIB)
-# $(slibdir) double quoted to protect it from expansion while building
-# libgcc.mk. We want this delayed until actual install time.
-SHLIB_INSTALL = \
- $$(mkinstalldirs) $$(DESTDIR)$$(SHLIB_DLLDIR) \
- $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
- $(INSTALL) $(SHLIB_DIR)/$(SHLIB_SONAME) \
- $$(DESTDIR)$$(SHLIB_DLLDIR)/$(SHLIB_SONAME); \
- $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_IMPLIB) \
- $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_IMPLIB)
-SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
-# We'd like to use SHLIB_SONAME here too, but shlib_base_name
-# does not get substituted before mkmap-flat.awk is run.
-SHLIB_MKMAP_OPTS = -v pe_dll=libgcc_s_$(EH_MODEL)-$(SHLIB_SOVERSION)$(SHLIB_EXT)
-SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver
diff --git a/gcc/config/i386/t-cygwin b/gcc/config/i386/t-cygwin
index f5eda91c0ef..9ac234b6f49 100644
--- a/gcc/config/i386/t-cygwin
+++ b/gcc/config/i386/t-cygwin
@@ -1,4 +1,4 @@
-# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009, 2010
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009, 2010, 2011
# Free Software Foundation, Inc.
#
# This file is part of GCC.
@@ -22,18 +22,3 @@
# first.
LIBGCC2_INCLUDES += -I$(srcdir)/../winsup/include \
-I$(srcdir)/../winsup/cygwin/include
-
-# Cygwin-specific parts of LIB_SPEC
-SHLIB_LC = -lcygwin -ladvapi32 -lshell32 -luser32 -lkernel32
-
-# We have already included one of the t-{dw2,sjlj}-eh fragments for EH_MODEL
-SHLIB_EH_EXTENSION = $(subst -dw2,,-$(EH_MODEL))
-
-# Cygwin uses different conventions than MinGW; override generic SHLIB_ def'ns here.
-SHLIB_IMPLIB = @shlib_base_name@$(SHLIB_EXT).a
-SHLIB_SONAME = cyggcc_s$(SHLIB_EH_EXTENSION)-$(SHLIB_SOVERSION)$(SHLIB_EXT)
-# This must match the definitions of SHLIB_SONAME/SHLIB_SOVERSION and LIBGCC_SONAME.
-# We'd like to use SHLIB_SONAME here too, and we can, since
-# we don't rely on shlib_base_name substitution for it.
-SHLIB_MKMAP_OPTS = -v pe_dll=$(SHLIB_SONAME)
-
diff --git a/gcc/config/i386/t-dlldir b/gcc/config/i386/t-dlldir
deleted file mode 100644
index a3e03317a04..00000000000
--- a/gcc/config/i386/t-dlldir
+++ /dev/null
@@ -1,6 +0,0 @@
-
-# In a native build, target DLLs go in bindir, where they can be executed.
-# Note double quoting to prevent variables from being evaluated until install
-# time; we don't want to expand them during libgcc.mvars generation.
-
-SHLIB_DLLDIR = $$(bindir)
diff --git a/gcc/config/i386/t-dlldir-x b/gcc/config/i386/t-dlldir-x
deleted file mode 100644
index 07dd845f0a6..00000000000
--- a/gcc/config/i386/t-dlldir-x
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# In a cross build, bindir contains host not target binaries, so target DLLs
-# instead go in toolexeclibdir, alongside other target binaries and static libs.
-# Note double quoting to prevent variables from being evaluated until install
-# time; we don't want to expand them during libgcc.mvars generation, and in
-# any case, $toolexeclibdir is not defined in the gcc/ subdirectory, only in
-# target lib directories.
-
-SHLIB_DLLDIR = $$(toolexeclibdir)
diff --git a/gcc/config/i386/t-mingw-w32 b/gcc/config/i386/t-mingw-w32
index 83cee71f1c1..68669d44a0a 100644
--- a/gcc/config/i386/t-mingw-w32
+++ b/gcc/config/i386/t-mingw-w32
@@ -2,8 +2,5 @@ MULTILIB_OPTIONS = m64/m32
MULTILIB_DIRNAMES = 64 32
MULTILIB_OSDIRNAMES = ../lib64 ../lib
-# MinGW-specific parts of LIB_SPEC
-SHLIB_LC = -lmingwthrd -lmingw32 -lmingwex -lmoldname -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32
-
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/i386/t-mingw-w64 b/gcc/config/i386/t-mingw-w64
index 041a02f1018..1e86e05e701 100644
--- a/gcc/config/i386/t-mingw-w64
+++ b/gcc/config/i386/t-mingw-w64
@@ -2,8 +2,5 @@ MULTILIB_OPTIONS = m64/m32
MULTILIB_DIRNAMES = 64 32
MULTILIB_OSDIRNAMES = ../lib ../lib32
-# MinGW-specific parts of LIB_SPEC
-SHLIB_LC = -lmingwthrd -lmingw32 -lmingwex -lmoldname -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32
-
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/ia64/t-glibc b/gcc/config/ia64/t-glibc
deleted file mode 100644
index ce18a92e275..00000000000
--- a/gcc/config/ia64/t-glibc
+++ /dev/null
@@ -1 +0,0 @@
-SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-glibc.ver
diff --git a/gcc/config/ia64/t-hpux b/gcc/config/ia64/t-hpux
index 4aa661441b2..e1554861d18 100644
--- a/gcc/config/ia64/t-hpux
+++ b/gcc/config/ia64/t-hpux
@@ -49,25 +49,3 @@ LIBGCC1_TEST =
# the HP-UX libunwind library.
T_CFLAGS += -DUSE_LIBUNWIND_EXCEPTIONS
-
-SHLIB_EXT = .so
-# Must include -lunwind in the link, so that libgcc_s.so has the necessary
-# DT_NEEDED entry for libunwind.
-SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
- -Wl,+h,@shlib_base_name@.so.0 \
- -o @multilib_dir@/@shlib_base_name@.so @multilib_flags@ \
- @shlib_objs@ -lunwind -lc && \
- rm -f @multilib_dir@/@shlib_base_name@.so.0 && \
- $(LN_S) @shlib_base_name@.so @multilib_dir@/@shlib_base_name@.so.0
-# $(slibdir) double quoted to protect it from expansion while building
-# libgcc.mk. We want this delayed until actual install time.
-SHLIB_INSTALL = \
- $$(mkinstalldirs) $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@; \
- $(INSTALL_DATA) @multilib_dir@/@shlib_base_name@.so \
- $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so.0; \
- rm -f $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so; \
- $(LN_S) @shlib_base_name@.so.0 \
- $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so; \
- chmod +x $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so
-
-SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
diff --git a/gcc/config/ia64/t-ia64 b/gcc/config/ia64/t-ia64
index f130f7c09d1..874e9ecf107 100644
--- a/gcc/config/ia64/t-ia64
+++ b/gcc/config/ia64/t-ia64
@@ -38,8 +38,6 @@ LIB1ASMFUNCS = __divxf3 __divdf3 __divsf3 \
# to support the Intel assembler.
#LIBGCC2_DEBUG_CFLAGS = -g1 -P
-SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64.ver
-
# Effectively disable the crtbegin/end rules using crtstuff.c
T = disable
diff --git a/gcc/config/ia64/t-vms b/gcc/config/ia64/t-vms
index 094d53483ee..e834aea1ab0 100644
--- a/gcc/config/ia64/t-vms
+++ b/gcc/config/ia64/t-vms
@@ -31,17 +31,3 @@ CRTSTUFF_T_CFLAGS_S = -O0
$(T)crtinitS.o: $(srcdir)/config/ia64/vms-crtinit.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) -I. -c -o $(T)crtinitS.o -x assembler-with-cpp \
$(srcdir)/config/ia64/vms-crtinit.asm
-
-# Shared library macros
-shlib_version:=$(shell echo $(BASEVER_c) | sed -e 's/\./,/' -e 's/\.//g')
-SHLIB_EXT = .exe
-SHLIB_OBJS = @shlib_objs@
-SHLIB_NAME = @shlib_base_name@.exe
-SHLIB_MULTILIB =
-SHLIB_INSTALL = $(INSTALL_DATA) $(SHLIB_NAME) $$(DESTDIR)$$(libsubdir)/$(SHLIB_ NAME)
-SHLIB_LINK = \
- $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -nodefaultlibs \
- -shared --for-linker=/noinform -o $(SHLIB_NAME) $(SHLIB_OBJS) \
- --for-linker=$(srcdir)/config/ia64/VMS_SYMVEC_@shlib_base_name@.opt \
- --for-linker=gsmatch=equal,$(shlib_version)
-
diff --git a/gcc/config/ia64/vms_symvec_libgcc_s.opt b/gcc/config/ia64/vms_symvec_libgcc_s.opt
deleted file mode 100644
index 88b46dfda6c..00000000000
--- a/gcc/config/ia64/vms_symvec_libgcc_s.opt
+++ /dev/null
@@ -1,89 +0,0 @@
-! Symbol vector listing all the universal symbols to be exported when
-! building libgcc_s.exe shareable image on IVMS for Gcc 3.4.5.
-! It would be better to auto-generate this file.
-
-case_sensitive=yes
-SYMBOL_VECTOR=(__divdf3=PROCEDURE)
-SYMBOL_VECTOR=(__divdi3=PROCEDURE)
-SYMBOL_VECTOR=(__divsf3=PROCEDURE)
-SYMBOL_VECTOR=(__divsi3=PROCEDURE)
-SYMBOL_VECTOR=(__divxf3=PROCEDURE)
-SYMBOL_VECTOR=(__moddi3=PROCEDURE)
-SYMBOL_VECTOR=(__modsi3=PROCEDURE)
-SYMBOL_VECTOR=(__ia64_nonlocal_goto=PROCEDURE)
-SYMBOL_VECTOR=(__ia64_restore_stack_nonlocal=PROCEDURE)
-SYMBOL_VECTOR=(__ia64_save_stack_nonlocal=PROCEDURE)
-SYMBOL_VECTOR=(__ia64_trampoline=PROCEDURE)
-SYMBOL_VECTOR=(__udivdi3=PROCEDURE)
-SYMBOL_VECTOR=(__udivsi3=PROCEDURE)
-SYMBOL_VECTOR=(__umoddi3=PROCEDURE)
-SYMBOL_VECTOR=(__umodsi3=PROCEDURE)
-SYMBOL_VECTOR=(__absvti2=PROCEDURE)
-SYMBOL_VECTOR=(__absvdi2=PROCEDURE)
-SYMBOL_VECTOR=(__absvsi2=PROCEDURE)
-SYMBOL_VECTOR=(__addvti3=PROCEDURE)
-SYMBOL_VECTOR=(__addvdi3=PROCEDURE)
-SYMBOL_VECTOR=(__addvsi3=PROCEDURE)
-SYMBOL_VECTOR=(__ashlti3=PROCEDURE)
-SYMBOL_VECTOR=(__ashrti3=PROCEDURE)
-SYMBOL_VECTOR=(__clear_cache=PROCEDURE)
-SYMBOL_VECTOR=(__clzti2=PROCEDURE)
-SYMBOL_VECTOR=(__clzdi2=PROCEDURE)
-SYMBOL_VECTOR=(__cmpti2=PROCEDURE)
-SYMBOL_VECTOR=(__ctzti2=PROCEDURE)
-SYMBOL_VECTOR=(__ctzdi2=PROCEDURE)
-SYMBOL_VECTOR=(__divti3=PROCEDURE)
-SYMBOL_VECTOR=(__enable_execute_stack=PROCEDURE)
-SYMBOL_VECTOR=(__ffsti2=PROCEDURE)
-SYMBOL_VECTOR=(__ffsdi2=PROCEDURE)
-SYMBOL_VECTOR=(__fixdfti=PROCEDURE)
-SYMBOL_VECTOR=(__fixsfti=PROCEDURE)
-SYMBOL_VECTOR=(__fixunsdfti=PROCEDURE)
-SYMBOL_VECTOR=(__fixunsdfdi=PROCEDURE)
-SYMBOL_VECTOR=(__fixunssfti=PROCEDURE)
-SYMBOL_VECTOR=(__fixunssfdi=PROCEDURE)
-SYMBOL_VECTOR=(__floattidf=PROCEDURE)
-SYMBOL_VECTOR=(__floattisf=PROCEDURE)
-SYMBOL_VECTOR=(__lshrti3=PROCEDURE)
-SYMBOL_VECTOR=(__modti3=PROCEDURE)
-SYMBOL_VECTOR=(__multi3=PROCEDURE)
-SYMBOL_VECTOR=(__mulvti3=PROCEDURE)
-SYMBOL_VECTOR=(__mulvdi3=PROCEDURE)
-SYMBOL_VECTOR=(__mulvsi3=PROCEDURE)
-SYMBOL_VECTOR=(__negti2=PROCEDURE)
-SYMBOL_VECTOR=(__negvti2=PROCEDURE)
-SYMBOL_VECTOR=(__negvdi2=PROCEDURE)
-SYMBOL_VECTOR=(__negvsi2=PROCEDURE)
-SYMBOL_VECTOR=(__parityti2=PROCEDURE)
-SYMBOL_VECTOR=(__paritydi2=PROCEDURE)
-SYMBOL_VECTOR=(__popcountti2=PROCEDURE)
-SYMBOL_VECTOR=(__popcountdi2=PROCEDURE)
-SYMBOL_VECTOR=(__subvti3=PROCEDURE)
-SYMBOL_VECTOR=(__subvdi3=PROCEDURE)
-SYMBOL_VECTOR=(__subvsi3=PROCEDURE)
-SYMBOL_VECTOR=(__ucmpti2=PROCEDURE)
-SYMBOL_VECTOR=(__udiv_w_sdiv=PROCEDURE)
-SYMBOL_VECTOR=(__udivti3=PROCEDURE)
-SYMBOL_VECTOR=(__udivmodti4=PROCEDURE)
-SYMBOL_VECTOR=(__umodti3=PROCEDURE)
-SYMBOL_VECTOR=(__gthread_active_p=PROCEDURE)
-SYMBOL_VECTOR=(__gthread_mutex_lock=PROCEDURE)
-SYMBOL_VECTOR=(__gthread_mutex_unlock=PROCEDURE)
-SYMBOL_VECTOR=(__gcc_personality_v0=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_GetGR=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_SetGR=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_GetIP=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_GetIPInfo=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_SetIP=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_GetLanguageSpecificData=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_GetRegionStart=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_FindEnclosingFunction=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_GetCFA=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_GetBSP=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_RaiseException=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_ForcedUnwind=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_Resume=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_Resume_or_Rethrow=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_DeleteException=PROCEDURE)
-SYMBOL_VECTOR=(_Unwind_Backtrace=PROCEDURE)
-case_sensitive=NO
diff --git a/gcc/config/m32r/t-linux b/gcc/config/m32r/t-linux
index 6de9c781a67..6697e7bd10a 100644
--- a/gcc/config/m32r/t-linux
+++ b/gcc/config/m32r/t-linux
@@ -41,5 +41,3 @@ INSTALL_ASSERT_H =
LIBGCC1 =
CROSS_LIBGCC1 =
LIBGCC1_TEST =
-
-SHLIB_MAPFILES += $(srcdir)/config/m32r/libgcc-glibc.ver
diff --git a/gcc/config/mips/t-libgcc-mips16 b/gcc/config/mips/t-libgcc-mips16
index 772b05ac45e..31a042bb75e 100644
--- a/gcc/config/mips/t-libgcc-mips16
+++ b/gcc/config/mips/t-libgcc-mips16
@@ -37,6 +37,3 @@ LIB1ASMFUNCS = _m16addsf3 _m16subsf3 _m16mulsf3 _m16divsf3 \
_m16stubsc9 _m16stubsc10 \
_m16stubdc0 _m16stubdc1 _m16stubdc2 _m16stubdc5 _m16stubdc6 \
_m16stubdc9 _m16stubdc10
-
-# Version these symbols if building libgcc.so.
-SHLIB_MAPFILES += $(srcdir)/config/mips/libgcc-mips16.ver
diff --git a/gcc/config/pa/t-hpux-shlib b/gcc/config/pa/t-hpux-shlib
deleted file mode 100644
index d5a5b6c8609..00000000000
--- a/gcc/config/pa/t-hpux-shlib
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2001, 2003, 2004, 2005, 2006 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/>.
-
-# Build a shared libgcc library.
-SHLIB_EXT = .sl
-SHLIB_NAME = @shlib_base_name@$(SHLIB_EXT)
-SHLIB_SOVERSION = 1
-SHLIB_SONAME = @shlib_base_name@.$(SHLIB_SOVERSION)
-SHLIB_OBJS = @shlib_objs@
-SHLIB_DIR = @multilib_dir@
-SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
-
-SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
- -Wl,+h -Wl,$(SHLIB_SONAME) \
- -o $(SHLIB_DIR)/$(SHLIB_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) && \
- rm -f $(SHLIB_DIR)/$(SHLIB_SONAME) && \
- if [ -f $(SHLIB_DIR)/$(SHLIB_NAME) ]; then \
- mv -f $(SHLIB_DIR)/$(SHLIB_NAME) $(SHLIB_DIR)/$(SHLIB_NAME).backup; \
- else true; fi && \
- mv $(SHLIB_DIR)/$(SHLIB_NAME).tmp $(SHLIB_DIR)/$(SHLIB_NAME) && \
- $(LN_S) $(SHLIB_NAME) $(SHLIB_DIR)/$(SHLIB_SONAME)
-
-# $(slibdir) double quoted to protect it from expansion while building
-# libgcc.mk. We want this delayed until actual install time.
-SHLIB_INSTALL = \
- $$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
- $(INSTALL_DATA) -m 555 $(SHLIB_DIR)/$(SHLIB_NAME) \
- $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
- rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_NAME); \
- $(LN_S) $(SHLIB_SONAME) \
- $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_NAME)
diff --git a/gcc/config/rs6000/t-aix43 b/gcc/config/rs6000/t-aix43
index 374b98dfa93..ebd898d1784 100644
--- a/gcc/config/rs6000/t-aix43
+++ b/gcc/config/rs6000/t-aix43
@@ -47,32 +47,3 @@ MULTILIB_MATCHES = mcpu?power=mcpu?power \
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
-
-# Build a shared libgcc library.
-SHLIB_EXT = .a
-SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
- -Wl,-bE:@shlib_map_file@ -o @multilib_dir@/shr.o \
- @multilib_flags@ @shlib_objs@ -lc \
- `case @multilib_dir@ in \
- *pthread*) echo -L/usr/lib/threads -lpthreads -lc_r /usr/lib/libc.a ;; \
- *) echo -lc ;; esac` ; \
- rm -f @multilib_dir@/tmp-@shlib_base_name@.a ; \
- $(AR_CREATE_FOR_TARGET) @multilib_dir@/tmp-@shlib_base_name@.a \
- @multilib_dir@/shr.o ; \
- mv @multilib_dir@/tmp-@shlib_base_name@.a \
- @multilib_dir@/@shlib_base_name@.a ; \
- rm -f @multilib_dir@/shr.o
-# $(slibdir) double quoted to protect it from expansion while building
-# libgcc.mk. We want this delayed until actual install time.
-SHLIB_INSTALL = \
- $$(mkinstalldirs) $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@; \
- $(INSTALL_DATA) @multilib_dir@/@shlib_base_name@.a \
- $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/
-SHLIB_LIBS = -lc `case @multilib_dir@ in *pthread*) echo -lpthread ;; esac`
-SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
-SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver
-SHLIB_NM_FLAGS = -Bpg -X32_64
-
-# Either 32-bit and 64-bit objects in archives.
-AR_FLAGS_FOR_TARGET = -X32_64
-
diff --git a/gcc/config/rs6000/t-aix52 b/gcc/config/rs6000/t-aix52
index 79ef16fd84e..3822b8a112c 100644
--- a/gcc/config/rs6000/t-aix52
+++ b/gcc/config/rs6000/t-aix52
@@ -28,31 +28,3 @@ MULTILIB_MATCHES =
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
-
-# Build a shared libgcc library.
-SHLIB_EXT = .a
-SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
- -Wl,-bE:@shlib_map_file@ -o @multilib_dir@/shr.o \
- @multilib_flags@ @shlib_objs@ -lc \
- `case @multilib_dir@ in \
- *pthread*) echo -L$(TARGET_SYSTEM_ROOT)/usr/lib/threads -lpthreads -lc_r $(TARGET_SYSTEM_ROOT)/usr/lib/libc.a ;; \
- *) echo -lc ;; esac` ; \
- rm -f @multilib_dir@/tmp-@shlib_base_name@.a ; \
- $(AR_CREATE_FOR_TARGET) @multilib_dir@/tmp-@shlib_base_name@.a \
- @multilib_dir@/shr.o ; \
- mv @multilib_dir@/tmp-@shlib_base_name@.a \
- @multilib_dir@/@shlib_base_name@.a ; \
- rm -f @multilib_dir@/shr.o
-# $(slibdir) double quoted to protect it from expansion while building
-# libgcc.mk. We want this delayed until actual install time.
-SHLIB_INSTALL = \
- $$(mkinstalldirs) $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@; \
- $(INSTALL_DATA) @multilib_dir@/@shlib_base_name@.a \
- $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/
-SHLIB_LIBS = -lc `case @multilib_dir@ in *pthread*) echo -lpthread ;; esac`
-SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
-SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver
-SHLIB_NM_FLAGS = -Bpg -X32_64
-
-# Either 32-bit and 64-bit objects in archives.
-AR_FLAGS_FOR_TARGET = -X32_64
diff --git a/gcc/config/t-libunwind b/gcc/config/t-libunwind
index 6b8d2dd1292..e517778be6f 100644
--- a/gcc/config/t-libunwind
+++ b/gcc/config/t-libunwind
@@ -17,11 +17,6 @@
# <http://www.gnu.org/licenses/>.
# Use the system libunwind library.
-#
-# Override the default value from t-slibgcc-elf-ver and mention -lunwind
-# so that the resulting libgcc_s.so has the necessary DT_NEEDED entry for
-# libunwind.
-SHLIB_LC = -lunwind -lc
T_CFLAGS += -DUSE_LIBUNWIND_EXCEPTIONS
TARGET_LIBGCC2_CFLAGS += -DUSE_GAS_SYMVER
diff --git a/gcc/config/t-linux b/gcc/config/t-linux
index 64d19ca8dd7..5fb71c98f9d 100644
--- a/gcc/config/t-linux
+++ b/gcc/config/t-linux
@@ -21,7 +21,3 @@
CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC
# Compile libgcc2.a with pic.
TARGET_LIBGCC2_CFLAGS = -fPIC
-
-# Override t-slibgcc-elf-ver to export some libgcc symbols with
-# the symbol versions that glibc used.
-SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver
diff --git a/gcc/config/t-slibgcc b/gcc/config/t-slibgcc
new file mode 100644
index 00000000000..91f2d92e822
--- /dev/null
+++ b/gcc/config/t-slibgcc
@@ -0,0 +1,2 @@
+# Cause ENABLE_SHARED_LIBGCC to be defined in gcc/Makefile.in (DRIVER_DEFINES).
+SHLIB = true
diff --git a/gcc/config/t-slibgcc-dummy b/gcc/config/t-slibgcc-dummy
deleted file mode 100644
index e68ce5eb24a..00000000000
--- a/gcc/config/t-slibgcc-dummy
+++ /dev/null
@@ -1,3 +0,0 @@
-# SHLIB_LINK must be non-empty so ENABLE_SHARED_LIBGCC is defined correctly
-# in DRIVER_DEFINES if libgcc configuration has been moved to toplevel.
-SHLIB_LINK = dummy
diff --git a/gcc/config/t-slibgcc-elf-ver b/gcc/config/t-slibgcc-elf-ver
deleted file mode 100644
index b90f4fcf3a3..00000000000
--- a/gcc/config/t-slibgcc-elf-ver
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright (C) 2001, 2002, 2003, 2004, 2005 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/>.
-
-# Build a shared libgcc library for ELF with symbol versioning
-# with the GNU linker.
-
-SHLIB_EXT = .so
-SHLIB_SOLINK = @shlib_base_name@.so
-SHLIB_SOVERSION = 1
-SHLIB_SONAME = @shlib_base_name@.so.$(SHLIB_SOVERSION)
-SHLIB_MAP = @shlib_map_file@
-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) \
- -Wl,--version-script=$(SHLIB_MAP) \
- -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
- $(SHLIB_OBJS) $(SHLIB_LC) && \
- rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
- if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
- mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
- $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
- else true; fi && \
- mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
- $(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 = \
- $$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
- $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SONAME) \
- $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
- rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
- $(SHLIB_INSTALL_SOLINK)
-SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
-SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver
diff --git a/gcc/config/xtensa/t-linux b/gcc/config/xtensa/t-linux
index 7d535e155b4..7d39351fa66 100644
--- a/gcc/config/xtensa/t-linux
+++ b/gcc/config/xtensa/t-linux
@@ -1,3 +1 @@
EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
-
-SHLIB_MAPFILES += $(srcdir)/config/xtensa/libgcc-xtensa.ver
diff --git a/gcc/configure b/gcc/configure
index 0540430dc20..2a205093a43 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -671,7 +671,6 @@ all_gtfiles
all_compilers
srcdir
subdirs
-slibdir
dollar
gcc_tooldir
enable_lto
@@ -918,7 +917,6 @@ with_gc
with_system_zlib
enable_maintainer_mode
enable_version_specific_runtime_libs
-with_slibdir
enable_plugin
enable_libquadmath_support
with_linker_hash_style
@@ -1674,7 +1672,6 @@ Optional Packages:
--with-gc={page,zone} choose the garbage collection mechanism to use with
the compiler
--with-system-zlib use installed libz
- --with-slibdir=DIR shared libraries in DIR [LIBDIR]
--with-linker-hash-style={sysv,gnu,both}
specify the linker hash style
@@ -18072,7 +18069,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 18075 "configure"
+#line 18072 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -18178,7 +18175,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 18181 "configure"
+#line 18178 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -26957,22 +26954,6 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then :
fi
-
-# Check whether --with-slibdir was given.
-if test "${with_slibdir+set}" = set; then :
- withval=$with_slibdir; slibdir="$with_slibdir"
-else
- if test "${enable_version_specific_runtime_libs+set}" = set; then
- slibdir='$(libsubdir)'
-elif test "$host" != "$target"; then
- slibdir='$(build_tooldir)/lib'
-else
- slibdir='$(libdir)'
-fi
-fi
-
-
-
# Substitute configuration variables
diff --git a/gcc/configure.ac b/gcc/configure.ac
index d63acea68f5..9f7997b9141 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -4921,18 +4921,6 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
[specify that runtime libraries should be
installed in a compiler-specific directory])])
-AC_ARG_WITH(slibdir,
-[AS_HELP_STRING([--with-slibdir=DIR], [shared libraries in DIR @<:@LIBDIR@:>@])],
-slibdir="$with_slibdir",
-if test "${enable_version_specific_runtime_libs+set}" = set; then
- slibdir='$(libsubdir)'
-elif test "$host" != "$target"; then
- slibdir='$(build_tooldir)/lib'
-else
- slibdir='$(libdir)'
-fi)
-AC_SUBST(slibdir)
-
# Substitute configuration variables
AC_SUBST(subdirs)
AC_SUBST(srcdir)
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index f7328db2bd1..d246e5cc4ba 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * Make-lang.in (g++spec.o): Pass SHLIB instead of SHLIB_LINK.
+
2011-11-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/44277
diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
index 6944ce972a8..650fc385096 100644
--- a/gcc/cp/Make-lang.in
+++ b/gcc/cp/Make-lang.in
@@ -55,7 +55,7 @@ c++: cc1plus$(exeext)
g++spec.o: $(srcdir)/cp/g++spec.c $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) \
$(CONFIG_H) $(OPTS_H)
- (SHLIB_LINK='$(SHLIB_LINK)'; \
+ (SHLIB='$(SHLIB)'; \
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \
$(INCLUDES) $(srcdir)/cp/g++spec.c)
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 40d2a304bd5..ade1906d255 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,7 @@
+2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * Makef-lang.in (gfortranspec.o): Pass SHLIB instead of SHLIB_LINK.
+
2011-10-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/50573
diff --git a/gcc/fortran/Make-lang.in b/gcc/fortran/Make-lang.in
index b766da651a2..2602b157ab8 100644
--- a/gcc/fortran/Make-lang.in
+++ b/gcc/fortran/Make-lang.in
@@ -79,7 +79,7 @@ fortran: f951$(exeext)
gfortranspec.o: $(srcdir)/fortran/gfortranspec.c $(SYSTEM_H) $(TM_H) $(GCC_H) \
$(CONFIG_H) coretypes.h intl.h $(OPTS_H)
- (SHLIB_LINK='$(SHLIB_LINK)'; \
+ (SHLIB='$(SHLIB)'; \
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \
$(INCLUDES) $(srcdir)/fortran/gfortranspec.c)
diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog
index 3802fa8e463..2eaf210c94f 100644
--- a/gcc/go/ChangeLog
+++ b/gcc/go/ChangeLog
@@ -1,3 +1,7 @@
+2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * Make-lang.in (gospec.o): Pass SHLIB instead of SHLIB_LINK.
+
2011-08-24 Roberto Lublinerman <rluble@gmail.com>
* lang.opt: Add fgo-optimize-.
diff --git a/gcc/go/Make-lang.in b/gcc/go/Make-lang.in
index d7ae7aee6fb..62a4d6f0dee 100644
--- a/gcc/go/Make-lang.in
+++ b/gcc/go/Make-lang.in
@@ -32,7 +32,7 @@ go: go1$(exeext)
gospec.o: $(srcdir)/go/gospec.c $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) \
$(CONFIG_H) opts.h
- (SHLIB_LINK='$(SHLIB_LINK)'; \
+ (SHLIB='$(SHLIB)'; \
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \
$(INCLUDES) $(srcdir)/go/gospec.c)
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index ac83a40c50b..715d1f5885c 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,7 @@
+2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * Make-lang.in (jvspec.o): Pass SHLIB instead of SHLIB_LINK.
+
2011-10-15 Tom Tromey <tromey@redhat.com>
Dodji Seketeli <dodji@redhat.com>
diff --git a/gcc/java/Make-lang.in b/gcc/java/Make-lang.in
index 1d9fd2b2988..4d6b63b3708 100644
--- a/gcc/java/Make-lang.in
+++ b/gcc/java/Make-lang.in
@@ -58,7 +58,7 @@ JAVA_TARGET_INDEPENDENT_BIN_TOOLS = jcf-dump
jvspec.o: $(srcdir)/java/jvspec.c $(SYSTEM_H) coretypes.h $(TM_H) \
$(GCC_H) $(CONFIG_H) java/jcf.h java/javaop.h $(OPTS_H)
- (SHLIB_LINK='$(SHLIB_LINK)'; \
+ (SHLIB='$(SHLIB)'; \
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \
$(INCLUDES) $(srcdir)/java/jvspec.c $(OUTPUT_OPTION))
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index a261e7524cd..5227073acfe 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,156 @@
+2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * Makefile.in (SHLIB_NM_FLAGS): Set.
+ * mkmap-flat.awk, mkmap-symver.awk: New files.
+ * configure.ac (libgcc_cv_lib_sjlj_exceptions): Check for SjLj
+ exceptions.
+ * configure: Regenerate.
+ * config/libgcc-glibc.ver: New file.
+ * config/libgcc-libsystem.ver: New file.
+ * config/t-libunwind (SHLIB_LC): Set.
+ * config/t-linux: New file.
+ * config/t-slibgcc (INSTALL_SHLIB): New.
+ (SHLIB_INSTALL): Use it.
+ * config/t-slibgcc-darwin (SHLIB_MKMAP): Use $(srcdir) to refer
+ to mkmap-symver.awk.
+ (SHLIB_MAPFILES): Don't append, adapt pathname.
+ (SHLIB_VERPFX): Set.
+ * config/t-slibgcc-elf-ver (SHLIB_MKMAP): Use $(srcdir) to refer
+ to mkmap-symver.awk.
+ * config/t-slibgcc-gld-nover, config/t-slibgcc-hpux,
+ config/t-slibgcc-libgcc, config/t-slibgcc-vms: New files.
+ * config/alpha/libgcc-alpha-ldbl.ver, config/alpha/t-linux: New files.
+ * config/alpha/t-slibgcc-osf (SHLIB_MKMAP): Use $(srcdir) to refer
+ to mkmap-flat.awk.
+ * config/arm/t-bpabi (SHLIB_MAPFILES): Set.
+ * config/bfin/libgcc-glibc.ver, config/bfin/t-linux: New files.
+ * config/c6x/libgcc-eabi.ver, config/c6x/t-elf: New files.
+ * config/cris/libgcc-glibc.ver, config/cris/t-linux: New files.
+ * config/frv/libgcc-frv.ver, config/frv/t-linux: New files.
+ * config/i386/libgcc-darwin.10.4.ver,
+ config/i386/libgcc-darwin.10.5.ver, config/i386/libgcc-glibc.ver:
+ New files.
+ * config/i386/t-darwin: Remove.
+ * config/i386/t-darwin64: Likewise.
+ * config/i386/t-dw2-eh, config/i386/t-sjlj-eh: New files.
+ * config/i386/t-slibgcc-cygming, config/i386/t-cygwin,
+ config/i386/t-dlldir, config/i386/t-dlldir-x: New files.
+ * config/i386/t-linux: New file.
+ * config/i386/t-mingw32: New file.
+ * config/ia64/libgcc-glibc.ver, config/ia64/libgcc-ia64.ver: New files.
+ * config/ia64/t-glibc: Rename to ...
+ * config/ia64/t-linux: ... this.
+ (SHLIB_MAPFILES): Set.
+ * config/ia64/t-glibc-libunwind: Rename to ...
+ * config/ia64/t-linux-libunwind: ... this.
+ * config/ia64/t-ia64 (SHLIB_MAPFILES): Set.
+ * config/ia64/t-slibgcc-hpux: New file.
+ * config/m32r/libgcc-glibc.ver, config/m32r/t-linux: New files.
+ * config/m68k/t-slibgcc-elf-ver: New file.
+ * config/mips/t-mips16 (SHLIB_MAPFILES): Set.
+ * config/mips/t-slibgcc-irix (SHLIB_MKMAP): Use $(srcdir) to refer
+ to mkmap-flat.awk.
+ * config/pa/t-slibgcc-hpux: New file.
+ * config/pa/t-slibgcc-dwarf-ver, config/pa/t-slibgcc-sjsj-ver: New
+ files.
+ * config/rs6000/libgcc-darwin.10.4.ver,
+ config/rs6000/libgcc-darwin.10.5.ver: New files.
+ * config/rs6000/libgcc-ppc-glibc.ver: Rename to
+ config/rs6000/libgcc-glibc.ver.
+ * config/rs6000/libgcc-ppc64.ver: Rename to
+ config/rs6000/libgcc-ibm-ldouble.ver.
+ * config/rs6000/t-darwin (SHLIB_VERPFX): Remove.
+ * config/rs6000/t-ibm-ldouble (SHLIB_MAPFILES): Adapt filename.
+ * config/rs6000/t-ldbl128: Rename to ...
+ * config/rs6000/t-linux: ... this.
+ (SHLIB_MAPFILES): Adapt filename.
+ * config/rs6000/t-slibgcc-aix: New file.
+ * config/sh/libgcc-excl.ver, config/sh/libgcc-glibc.ver: New files.
+ * config/sh/t-linux (SHLIB_MAPFILES): Use $(srcdir) to refer to
+ libgcc-excl.ver, libgcc-glibc.ver.
+ (SHLIB_LINK, SHLIB_INSTALL): Remove.
+ * config/sparc/libgcc-glibc.ver: New file.
+ * config/sparc/t-linux: New file.
+ * config/xtensa/libgcc-glibc.ver, config/xtensa/t-linux: New files.
+ * config.host (*-*-freebsd*): Add t-slibgcc, t-slibgcc-gld,
+ t-slibgcc-elf-ver to tmake_file.
+ Add t-slibgcc-nolc-override to tmake_file for posix threads on
+ *-*-freebsd[34].
+ (*-*-linux*, frv-*-*linux*, *-*-kfreebsd*-gnu, *-*-knetbsd*-gnu,
+ *-*-gnu*, *-*-kopensolaris*-gnu): Add t-slibgcc, t-slibgcc-gld,
+ t-slibgcc-elf-ver, t-linux to tmake_file.
+ (*-*-netbsd*): Add t-slibgcc, t-slibgcc-gld, t-slibgcc-elf-ver to
+ tmake_file.
+ (alpha*-*-linux*): Add alpha/t-linux to tmake_file.
+ (alpha64-dec-*vms*): Add t-slibgcc-vms to tmake_file.
+ (alpha*-dec-*vms*): Likewise.
+ (arm*-*-freebsd*): Append to tmake_file.
+ (arm*-*-netbsdelf*): Add t-slibgcc-gld-nover to tmake_file.
+ (arm*-*-linux*): Add t-slibgcc-libgcc to tmake_file for
+ arm*-*-linux-*eabi.
+ (arm*-*-eabi*, arm*-*-symbianelf*): Add t-slibgcc-nolc-override to
+ tmake_file for arm*-*-symbianelf*.
+ (bfin*-linux-uclibc*): Append to tmake_file, add bfin/t-linux.
+ (cris-*-linux*, crisv32-*-linux*): Append to tmake_file, add
+ cris/t-linux.
+ (frv-*-*linux*): Append to tmake_file, add frv/t-linux.
+ (hppa*-*-linux*): Add t-slibgcc-libgcc, pa/t-slibgcc-sjlj-ver,
+ pa/t-slibgcc-dwarf-ver to tmake_file.
+ (hppa[12]*-*-hpux10*): Add t-slibgcc, pa/t-slibgcc-sjlj-ver,
+ pa/t-slibgcc-dwarf-ver, t-slibgcc-hpux, pa/t-slibgcc-hpux to tmake_file.
+ (hppa*64*-*-hpux11*): Likewise.
+ (hppa[12]*-*-hpux11*): Likewise.
+ (x86_64-*-darwin*): Don't override tmake_file, but only keep
+ i386/t-crtpc, i386/t-crtfm.
+ (i[34567]86-*-cygwin*): Set tmake_eh_file, tmake_dlldir_file.
+ Prepend $tmake_eh_file, $tmake_dlldir_file, i386/t-slibgcc-cygming
+ to tmake_file.
+ Add i386/t-cygwin to tmake_file.
+ Prepent i386/t-mingw-pthread to tmake_file for posix threads.
+ (i[34567]86-*-mingw*): Set tmake_eh_file, tmake_dlldir_file.
+ Prepend $tmake_eh_file, $tmake_dlldir_file, i386/t-slibgcc-cygming
+ to tmake_file.
+ Add i386/t-mingw32 to tmake_file.
+ (x86_64-*-mingw*): Likewise.
+ (ia64*-*-freebsd*): Append to tmake_file.
+ (ia64*-*-linux*): Append to tmake_file.
+ Replace ia64/t-glibc by ia64/t-linux.
+ Replace ia64/t-glibc-libunwind by ia64/t-linux-libunwind if using
+ system libunwind.
+ (ia64*-*-hpux*): Add t-slibgcc, ia64/t-slibgcc-hpux,
+ t-slibgcc-hpux to tmake_file.
+ (ia64-hp-*vms*): Add t-slibgcc-vms to tmake_file.
+ (m32r-*-linux*): Append to tmake_file, add m32r/t-linux.
+ (m32rle-*-linux*): Likewise.
+ (m68k-*-linux*)): Add m68k/t-slibgcc-elf-ver to tmake_file unless
+ sjlj exceptions.
+ (microblaze*-linux*): New case.
+ Append to tmake_file, add t-slibgcc-nolc-override.
+ (powerpc-*-freebsd*): Add t-slibgcc-libgcc to tmake_file.
+ (powerpc-*-linux*, powerpc64-*-linux*): Likewise.
+ Replace rs6000/t-ldbl128 by rs6000/t-linux in tmake_file.
+ (rs6000-ibm-aix4.[3456789]*, powerpc-ibm-aix4.[3456789]*): Add
+ rs6000/t-slibgcc-aix to tmake_file.
+ (rs6000-ibm-aix5.1.*, powerpc-ibm-aix5.1.*): Likewise.
+ (rs6000-ibm-aix[56789].*, powerpc-ibm-aix[56789].*): Likewise.
+ (sh-*-elf*, sh[12346l]*-*-elf*, sh-*-linux*)
+ (sh[2346lbe]*-*-linux*, sh-*-netbsdelf*, shl*-*-netbsdelf*)
+ (sh5-*-netbsd*, sh5l*-*-netbsd*, sh64-*-netbsd*)
+ (sh64l*-*-netbsd*): Add t-slibgcc-libgcc to tmake_file for
+ sh*-*-linux*.
+ (sparc-*-linux*): Append to tmake_file for *-leon*.
+ Add sparc/t-linux to tmake_file for non-Leon targets.
+ (sparc64-*-linux*): Add sparc/t-linux to tmake_file.
+ (tic6x-*-uclinux): New case.
+ Add t-slibgcc, t-slibgcc-gld, t-slibgcc-elf-ver to tmake_file.
+ (tic6x-*-*): Add c6x/t-elf to tmake_file.
+ (xtensa*-*-linux*): Append to tmake_file, add xtensa/t-linux.
+ (am33_2.0-*-linux*): Append to tmake_file.
+ (i[34567]86-*-linux*, x86_64-*-linux*, i[34567]86-*-kfreebsd*-gnu)
+ (i[34567]86-*-knetbsd*-gnu, i[34567]86-*-gnu*): Also handle
+ x86_64-*-kfreebsd*-gnu.
+ Add i386/t-linux to tmake_file.
+
2011-10-28 Ian Lance Taylor <iant@google.com>
* config/i386/morestack.S: Correct CFI information to do proper
diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in
index e9f2fa2f2b8..e199b6ce3b1 100644
--- a/libgcc/Makefile.in
+++ b/libgcc/Makefile.in
@@ -279,6 +279,9 @@ LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \
LIB2ADDEHSTATIC = $(LIB2ADDEH)
LIB2ADDEHSHARED = $(LIB2ADDEH)
+# nm flags to list global symbols in libgcc object files.
+SHLIB_NM_FLAGS = -pg
+
# Don't build libunwind by default.
LIBUNWIND =
SHLIBUNWIND_LINK =
diff --git a/libgcc/config.host b/libgcc/config.host
index 08c00a37f97..40870704e2f 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -179,13 +179,25 @@ case ${host} in
# This is the generic ELF configuration of FreeBSD. Later
# machine-specific sections may refine and add to this
# configuration.
- tmake_file="$tmake_file t-eh-dw2-dip"
+ tmake_file="$tmake_file t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver"
+ case ${target_thread_file} in
+ posix)
+ # Before 5.0, FreeBSD can't bind shared libraries to -lc
+ # when "optionally" threaded via weak pthread_* checks.
+ case ${host} in
+ *-*-freebsd[34] | *-*-freebsd[34].*)
+ tmake_file="${tmake_file} t-slibgcc-nolc-override"
+ ;;
+ esac
+ ;;
+ esac
;;
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
- tmake_file="$tmake_file t-eh-dw2-dip"
+ tmake_file="$tmake_file t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
;;
*-*-netbsd*)
+ tmake_file="$tmake_file t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver"
;;
*-*-openbsd*)
;;
@@ -239,7 +251,7 @@ esac
case ${host} in
alpha*-*-linux*)
- tmake_file="${tmake_file} t-crtfm"
+ tmake_file="${tmake_file} t-crtfm alpha/t-linux"
extra_parts="$extra_parts crtfastmath.o"
md_unwind_header=alpha/linux-unwind.h
;;
@@ -262,26 +274,27 @@ alpha*-dec-osf5.1*)
md_unwind_header=alpha/osf5-unwind.h
;;
alpha64-dec-*vms*)
- tmake_file="vms/t-vms vms/t-vms64 alpha/t-vms"
+ tmake_file="vms/t-vms vms/t-vms64 alpha/t-vms t-slibgcc-vms"
md_unwind_header=alpha/vms-unwind.h
;;
alpha*-dec-*vms*)
- tmake_file="vms/t-vms alpha/t-vms"
+ tmake_file="vms/t-vms alpha/t-vms t-slibgcc-vms"
md_unwind_header=alpha/vms-unwind.h
;;
arm-wrs-vxworks)
tmake_file=t-fdpbit
;;
arm*-*-freebsd*)
- tmake_file=t-fdpbit
+ tmake_file="$tmake_file t-fdpbit"
;;
arm*-*-netbsdelf*)
+ tmake_file="$tmake_file t-slibgcc-gld-nover"
;;
arm*-*-linux*) # ARM GNU/Linux with ELF
tmake_file="${tmake_file} t-fixedpoint-gnu-prefix"
case ${host} in
arm*-*-linux-*eabi)
- tmake_file="${tmake_file} arm/t-bpabi"
+ tmake_file="${tmake_file} arm/t-bpabi t-slibgcc-libgcc"
unwind_header=config/arm/unwind-arm.h
;;
esac
@@ -307,7 +320,7 @@ arm*-*-eabi* | arm*-*-symbianelf* )
tmake_file="${tmake_file} arm/t-bpabi"
;;
arm*-*-symbianelf*)
- tmake_file="${tmake_file} arm/t-symbian"
+ tmake_file="${tmake_file} arm/t-symbian t-slibgcc-nolc-override"
;;
esac
tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
@@ -336,7 +349,7 @@ bfin*-uclinux*)
md_unwind_header=bfin/linux-unwind.h
;;
bfin*-linux-uclibc*)
- tmake_file=t-fdpbit
+ tmake_file="$tmake_file t-fdpbit bfin/t-linux"
# No need to build crtbeginT.o on uClibc systems. Should probably
# be moved to the OS specific section above.
extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
@@ -353,7 +366,7 @@ crisv32-*-elf | crisv32-*-none | cris-*-elf | cris-*-none)
extra_parts="crtbegin.o crtend.o"
;;
cris-*-linux* | crisv32-*-linux*)
- tmake_file=t-fdpbit
+ tmake_file="$tmake_file t-fdpbit cris/t-linux"
;;
fido-*-elf)
;;
@@ -364,7 +377,7 @@ frv-*-elf)
tmake_file=t-fdpbit
;;
frv-*-*linux*)
- tmake_file=t-fdpbit
+ tmake_file="$tmake_file t-fdpbit frv/t-linux"
;;
h8300-*-rtems*)
tmake_file=t-fpbit
@@ -375,15 +388,46 @@ h8300-*-elf*)
hppa*64*-*-linux*)
;;
hppa*-*-linux*)
+ tmake_file="$tmake_file t-slibgcc-libgcc"
+ # Set the libgcc version number
+ if test x$enable_sjlj_exceptions = xyes; then
+ tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
+ else
+ tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
+ fi
md_unwind_header=pa/linux-unwind.h
;;
hppa[12]*-*-hpux10*)
+ tmake_file="$tmake_file t-slibgcc"
+ # Set the libgcc version number
+ if test x$enable_sjlj_exceptions = xyes; then
+ tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
+ else
+ tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
+ fi
+ tmake_file="$tmake_file pa/t-slibgcc-hpux t-slibgcc-hpux"
md_unwind_header=pa/hpux-unwind.h
;;
hppa*64*-*-hpux11*)
+ tmake_file="$tmake_file t-slibgcc"
+ # Set the libgcc version number
+ if test x$enable_sjlj_exceptions = xyes; then
+ tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
+ else
+ tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
+ fi
+ tmake_file="$tmake_file pa/t-slibgcc-hpux t-slibgcc-hpux"
md_unwind_header=pa/hpux-unwind.h
;;
hppa[12]*-*-hpux11*)
+ tmake_file="$tmake_file t-slibgcc"
+ # Set the libgcc version number
+ if test x$enable_sjlj_exceptions = xyes; then
+ tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
+ else
+ tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
+ fi
+ tmake_file="$tmake_file pa/t-slibgcc-hpux t-slibgcc-hpux"
md_unwind_header=pa/hpux-unwind.h
;;
i[34567]86-*-darwin*)
@@ -391,7 +435,7 @@ i[34567]86-*-darwin*)
extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
;;
x86_64-*-darwin*)
- tmake_file="t-darwin ${cpu_type}/t-darwin64 i386/t-crtpc i386/t-crtfm t-slibgcc-darwin"
+ tmake_file="$tmake_file i386/t-crtpc i386/t-crtfm"
extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
;;
i[34567]86-*-elf*)
@@ -449,15 +493,56 @@ i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae)
;;
i[34567]86-*-cygwin*)
extra_parts="crtbegin.o crtend.o crtfastmath.o"
- tmake_file="i386/t-cygming i386/t-crtfm t-dfprules"
+ # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h
+ if test x$enable_sjlj_exceptions = xyes; then
+ tmake_eh_file="i386/t-sjlj-eh"
+ else
+ tmake_eh_file="i386/t-dw2-eh"
+ fi
+ # Shared libgcc DLL install dir depends on cross/native build.
+ if test x${build} = x${host} ; then
+ tmake_dlldir_file="i386/t-dlldir"
+ else
+ tmake_dlldir_file="i386/t-dlldir-x"
+ fi
+ tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-slibgcc-cygming i386/t-cygming i386/t-cygwin i386/t-crtfm t-dfprules"
+ case ${target_thread_file} in
+ posix)
+ tmake_file="i386/t-mingw-pthread $tmake_file"
+ ;;
+ esac
;;
i[34567]86-*-mingw*)
extra_parts="crtbegin.o crtend.o crtfastmath.o"
- tmake_file="i386/t-cygming i386/t-crtfm t-dfprules"
+ # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h
+ if test x$enable_sjlj_exceptions = xyes; then
+ tmake_eh_file="i386/t-sjlj-eh"
+ else
+ tmake_eh_file="i386/t-dw2-eh"
+ fi
+ # Shared libgcc DLL install dir depends on cross/native build.
+ if test x${build} = x${host} ; then
+ tmake_dlldir_file="i386/t-dlldir"
+ else
+ tmake_dlldir_file="i386/t-dlldir-x"
+ fi
+ tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-slibgcc-cygming i386/t-cygming i386/t-mingw32 i386/t-crtfm t-dfprules"
md_unwind_header=i386/w32-unwind.h
;;
x86_64-*-mingw*)
- tmake_file="t-dfprules i386/t-crtfm"
+ # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h
+ if test x$enable_sjlj_exceptions = xyes; then
+ tmake_eh_file="i386/t-sjlj-eh"
+ else
+ tmake_eh_file="i386/t-dw2-eh"
+ fi
+ # Shared libgcc DLL install dir depends on cross/native build.
+ if test x${build} = x${host} ; then
+ tmake_dlldir_file="i386/t-dlldir"
+ else
+ tmake_dlldir_file="i386/t-dlldir-x"
+ fi
+ tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-slibgcc-cygming i386/t-mingw32 t-dfprules i386/t-crtfm"
extra_parts="$extra_parts crtfastmath.o"
;;
i[34567]86-*-interix3*)
@@ -468,21 +553,21 @@ ia64*-*-elf*)
;;
ia64*-*-freebsd*)
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
- tmake_file="ia64/t-ia64 ia64/t-eh-ia64 t-crtfm"
+ tmake_file="$tmake_file ia64/t-ia64 ia64/t-eh-ia64 t-crtfm"
;;
ia64*-*-linux*)
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
- tmake_file="ia64/t-ia64 t-crtfm t-softfp-tf ia64/t-softfp t-softfp ia64/t-softfp-compat ia64/t-eh-ia64 t-libunwind ia64/t-glibc"
+ tmake_file="$tmake_file ia64/t-ia64 t-crtfm t-softfp-tf ia64/t-softfp t-softfp ia64/t-softfp-compat ia64/t-eh-ia64 t-libunwind ia64/t-linux"
if test x$with_system_libunwind != xyes ; then
- tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
+ tmake_file="${tmake_file} t-libunwind-elf ia64/t-linux-libunwind"
fi
md_unwind_header=ia64/linux-unwind.h
;;
ia64*-*-hpux*)
- tmake_file="ia64/t-hpux"
+ tmake_file="ia64/t-hpux t-slibgcc ia64/t-slibgcc-hpux t-slibgcc-hpux"
;;
ia64-hp-*vms*)
- tmake_file="vms/t-vms vms/t-vms64 ia64/t-eh-ia64 ia64/t-vms"
+ tmake_file="vms/t-vms vms/t-vms64 ia64/t-eh-ia64 ia64/t-vms t-slibgcc-vms"
md_unwind_header=ia64/vms-unwind.h
;;
iq2000*-*-elf*)
@@ -503,10 +588,10 @@ m32rle-*-elf*)
tmake_file=t-fdpbit
;;
m32r-*-linux*)
- tmake_file=t-fdpbit
+ tmake_file="$tmake_file t-fdpbit m32r/t-linux"
;;
m32rle-*-linux*)
- tmake_file=t-fdpbit
+ tmake_file="$tmake_file t-fdpbit m32r/t-linux"
;;
m68k-*-elf*)
;;
@@ -520,6 +605,11 @@ m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc
m68k-*-linux*) # Motorola m68k's running GNU/Linux
# with ELF format using glibc 2
# aka the GNU/Linux C library 6.
+ # If not configured with --enable-sjlj-exceptions, bump the
+ # libgcc version number.
+ if test x$enable_sjlj_exceptions != xyes; then
+ tmake_file="$tmake_file m68k/t-slibgcc-elf-ver"
+ fi
md_unwind_header=m68k/linux-unwind.h
;;
m68k-*-rtems*)
@@ -527,6 +617,9 @@ m68k-*-rtems*)
mcore-*-elf)
tmake_file=t-fdpbit
;;
+microblaze*-linux*)
+ tmake_file="$tmake_file t-slibgcc-nolc-override microblaze/t-microblaze t-fdpbit"
+ ;;
microblaze*-*-*)
tmake_file="microblaze/t-microblaze t-fdpbit"
;;
@@ -627,7 +720,7 @@ powerpc64-*-darwin*)
extra_parts="$extra_parts crt2.o"
;;
powerpc-*-freebsd*)
- tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-freebsd t-softfp-sfdf t-softfp-excl t-softfp"
+ tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-freebsd t-softfp-sfdf t-softfp-excl t-softfp t-slibgcc-libgcc"
;;
powerpc-*-netbsd*)
;;
@@ -656,7 +749,7 @@ powerpc-*-rtems*)
tmake_file="rs6000/t-ppccomm-ldbl t-fdpbit"
;;
powerpc-*-linux* | powerpc64-*-linux*)
- tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-ldbl128 t-softfp-sfdf t-softfp-excl t-dfprules rs6000/t-ppc64-fp t-softfp"
+ tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-linux t-softfp-sfdf t-softfp-excl t-dfprules rs6000/t-ppc64-fp t-softfp t-slibgcc-libgcc"
md_unwind_header=rs6000/linux-unwind.h
;;
powerpc-wrs-vxworks|powerpc-wrs-vxworksae)
@@ -676,15 +769,15 @@ powerpcle-*-eabi*)
;;
rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*)
md_unwind_header=rs6000/aix-unwind.h
- tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-ibm-ldouble"
+ tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-ibm-ldouble rs6000/t-slibgcc-aix"
;;
rs6000-ibm-aix5.1.* | powerpc-ibm-aix5.1.*)
md_unwind_header=rs6000/aix-unwind.h
- tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-ibm-ldouble"
+ tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-ibm-ldouble rs6000/t-slibgcc-aix"
;;
rs6000-ibm-aix[56789].* | powerpc-ibm-aix[56789].*)
md_unwind_header=rs6000/aix-unwind.h
- tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-ibm-ldouble"
+ tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-ibm-ldouble rs6000/t-slibgcc-aix"
;;
rx-*-elf)
extra_parts="crtbegin.o crtend.o"
@@ -711,7 +804,7 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
sh64-*-netbsd* | sh64l*-*-netbsd*)
case ${host} in
sh*-*-linux*)
- tmake_file="${tmake_file} sh/t-linux t-fdpbit"
+ tmake_file="${tmake_file} t-slibgcc-libgcc sh/t-linux t-fdpbit"
md_unwind_header=sh/linux-unwind.h
;;
sh*-*-netbsd*)
@@ -749,7 +842,10 @@ sparc-*-elf*)
sparc-*-linux*) # SPARC's running GNU/Linux, libc6
case ${host} in
*-leon*)
- tmake_file=t-fdpbit
+ tmake_file="${tmake_file} t-fdpbit"
+ ;;
+ *)
+ tmake_file="${tmake_file} sparc/t-linux"
;;
esac
extra_parts="$extra_parts crtfastmath.o"
@@ -781,7 +877,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*)
;;
sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
extra_parts="$extra_parts crtfastmath.o"
- tmake_file="${tmake_file} t-crtfm"
+ tmake_file="${tmake_file} t-crtfm sparc/t-linux"
md_unwind_header=sparc/linux-unwind.h
;;
sparc64-*-netbsd*)
@@ -789,8 +885,12 @@ sparc64-*-netbsd*)
spu-*-elf*)
tmake_file="t-fdpbit spu/t-elf"
;;
+tic6x-*-uclinux)
+ tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl t-softfp c6x/t-elf t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-gnu-prefix"
+ unwind_header=config/c6x/unwind-c6x.h
+ ;;
tic6x-*-*)
- tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl t-softfp t-gnu-prefix c6x/t-c6x-elf"
+ tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl t-softfp c6x/t-elf t-gnu-prefix"
unwind_header=config/c6x/unwind-c6x.h
;;
v850*-*-*)
@@ -809,12 +909,12 @@ xtensa*-*-elf*)
tmake_file=xtensa/t-xtensa
;;
xtensa*-*-linux*)
- tmake_file=xtensa/t-xtensa
+ tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux"
md_unwind_header=xtensa/linux-unwind.h
;;
am33_2.0-*-linux*)
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
- tmake_file=t-fdpbit
+ tmake_file="$tmake_file t-fdpbit"
;;
m32c-*-elf*|m32c-*-rtems*)
;;
@@ -829,9 +929,10 @@ esac
case ${host} in
i[34567]86-*-linux* | x86_64-*-linux* | \
- i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | \
+ i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
+ i[34567]86-*-knetbsd*-gnu | \
i[34567]86-*-gnu*)
- tmake_file="${tmake_file} t-tls"
+ tmake_file="${tmake_file} t-tls i386/t-linux"
if test "$libgcc_cv_cfi" = "yes"; then
tmake_file="${tmake_file} t-stack i386/t-stack-i386"
fi
diff --git a/gcc/config/alpha/libgcc-alpha-ldbl.ver b/libgcc/config/alpha/libgcc-alpha-ldbl.ver
index 8dc54a74980..8dc54a74980 100644
--- a/gcc/config/alpha/libgcc-alpha-ldbl.ver
+++ b/libgcc/config/alpha/libgcc-alpha-ldbl.ver
diff --git a/gcc/config/alpha/t-linux b/libgcc/config/alpha/t-linux
index fabf38f9cce..fabf38f9cce 100644
--- a/gcc/config/alpha/t-linux
+++ b/libgcc/config/alpha/t-linux
diff --git a/libgcc/config/alpha/t-slibgcc-osf b/libgcc/config/alpha/t-slibgcc-osf
index 33a07a7b6aa..66e5cf12aa1 100644
--- a/libgcc/config/alpha/t-slibgcc-osf
+++ b/libgcc/config/alpha/t-slibgcc-osf
@@ -22,7 +22,7 @@
SHLIB_LDFLAGS = -Wl,-msym -Wl,-set_version,gcc.1 -Wl,-soname,$(SHLIB_SONAME) \
-Wl,-hidden -Wl,-input,$(SHLIB_MAP)
-SHLIB_MKMAP = $(gcc_srcdir)/mkmap-flat.awk
+SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MKMAP_OPTS = -v osf_export=1
# Needed so mkmap-flat.awk can parse the nm output.
SHLIB_NM_FLAGS = -Bg
diff --git a/gcc/config/arm/libgcc-bpabi.ver b/libgcc/config/arm/libgcc-bpabi.ver
index 3ba8364dc8e..3ba8364dc8e 100644
--- a/gcc/config/arm/libgcc-bpabi.ver
+++ b/libgcc/config/arm/libgcc-bpabi.ver
diff --git a/libgcc/config/arm/t-bpabi b/libgcc/config/arm/t-bpabi
index a3b23dcd20c..ebb2f9fd85d 100644
--- a/libgcc/config/arm/t-bpabi
+++ b/libgcc/config/arm/t-bpabi
@@ -1,3 +1,6 @@
LIB2ADDEH = $(srcdir)/config/arm/unwind-arm.c \
$(srcdir)/config/arm/libunwind.S \
$(srcdir)/config/arm/pr-support.c $(srcdir)/unwind-c.c
+
+# Add the BPABI names.
+SHLIB_MAPFILES += $(srcdir)/config/arm/libgcc-bpabi.ver
diff --git a/gcc/config/bfin/libgcc-bfin.ver b/libgcc/config/bfin/libgcc-glibc.ver
index 516d91f6584..516d91f6584 100644
--- a/gcc/config/bfin/libgcc-bfin.ver
+++ b/libgcc/config/bfin/libgcc-glibc.ver
diff --git a/libgcc/config/bfin/t-linux b/libgcc/config/bfin/t-linux
new file mode 100644
index 00000000000..1c42e482b8d
--- /dev/null
+++ b/libgcc/config/bfin/t-linux
@@ -0,0 +1 @@
+SHLIB_MAPFILES = $(srcdir)/config/bfin/libgcc-glibc.ver
diff --git a/gcc/config/c6x/libgcc-c6xeabi.ver b/libgcc/config/c6x/libgcc-eabi.ver
index 6bce556512e..6bce556512e 100644
--- a/gcc/config/c6x/libgcc-c6xeabi.ver
+++ b/libgcc/config/c6x/libgcc-eabi.ver
diff --git a/libgcc/config/c6x/t-elf b/libgcc/config/c6x/t-elf
new file mode 100644
index 00000000000..89b68969ae8
--- /dev/null
+++ b/libgcc/config/c6x/t-elf
@@ -0,0 +1 @@
+SHLIB_MAPFILES += $(srcdir)/config/c6x/libgcc-eabi.ver
diff --git a/gcc/config/cris/libgcc.ver b/libgcc/config/cris/libgcc-glibc.ver
index e35de83100f..e35de83100f 100644
--- a/gcc/config/cris/libgcc.ver
+++ b/libgcc/config/cris/libgcc-glibc.ver
diff --git a/libgcc/config/cris/t-linux b/libgcc/config/cris/t-linux
new file mode 100644
index 00000000000..8c7f4d44249
--- /dev/null
+++ b/libgcc/config/cris/t-linux
@@ -0,0 +1,2 @@
+# Override t-linux default.
+SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/cris/libgcc-glibc.ver
diff --git a/gcc/config/frv/libgcc-frv.ver b/libgcc/config/frv/libgcc-glibc.ver
index 6e27b4f9b85..6e27b4f9b85 100644
--- a/gcc/config/frv/libgcc-frv.ver
+++ b/libgcc/config/frv/libgcc-glibc.ver
diff --git a/libgcc/config/frv/t-linux b/libgcc/config/frv/t-linux
new file mode 100644
index 00000000000..dbab5a4205f
--- /dev/null
+++ b/libgcc/config/frv/t-linux
@@ -0,0 +1 @@
+SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/frv/libgcc-glibc.ver
diff --git a/gcc/config/i386/darwin-libgcc.10.4.ver b/libgcc/config/i386/libgcc-darwin.10.4.ver
index 67f5e239ca1..67f5e239ca1 100644
--- a/gcc/config/i386/darwin-libgcc.10.4.ver
+++ b/libgcc/config/i386/libgcc-darwin.10.4.ver
diff --git a/gcc/config/i386/darwin-libgcc.10.5.ver b/libgcc/config/i386/libgcc-darwin.10.5.ver
index eeec9fbfcdf..eeec9fbfcdf 100644
--- a/gcc/config/i386/darwin-libgcc.10.5.ver
+++ b/libgcc/config/i386/libgcc-darwin.10.5.ver
diff --git a/gcc/config/i386/libgcc-glibc.ver b/libgcc/config/i386/libgcc-glibc.ver
index e79d3267f6f..e79d3267f6f 100644
--- a/gcc/config/i386/libgcc-glibc.ver
+++ b/libgcc/config/i386/libgcc-glibc.ver
diff --git a/libgcc/config/i386/t-cygwin b/libgcc/config/i386/t-cygwin
new file mode 100644
index 00000000000..22df63671ff
--- /dev/null
+++ b/libgcc/config/i386/t-cygwin
@@ -0,0 +1,13 @@
+# Cygwin-specific parts of LIB_SPEC
+SHLIB_LC = -lcygwin -ladvapi32 -lshell32 -luser32 -lkernel32
+
+# We have already included one of the t-{dw2,sjlj}-eh fragments for EH_MODEL
+SHLIB_EH_EXTENSION = $(subst -dw2,,-$(EH_MODEL))
+
+# Cygwin uses different conventions than MinGW; override generic SHLIB_ def'ns here.
+SHLIB_IMPLIB = @shlib_base_name@$(SHLIB_EXT).a
+SHLIB_SONAME = cyggcc_s$(SHLIB_EH_EXTENSION)-$(SHLIB_SOVERSION)$(SHLIB_EXT)
+# This must match the definitions of SHLIB_SONAME/SHLIB_SOVERSION and LIBGCC_SONAME.
+# We'd like to use SHLIB_SONAME here too, and we can, since
+# we don't rely on shlib_base_name substitution for it.
+SHLIB_MKMAP_OPTS = -v pe_dll=$(SHLIB_SONAME)
diff --git a/libgcc/config/i386/t-darwin b/libgcc/config/i386/t-darwin
deleted file mode 100644
index 4578f74c3fa..00000000000
--- a/libgcc/config/i386/t-darwin
+++ /dev/null
@@ -1 +0,0 @@
-SHLIB_VERPFX = $(gcc_srcdir)/config/i386/darwin-libgcc
diff --git a/libgcc/config/i386/t-darwin64 b/libgcc/config/i386/t-darwin64
deleted file mode 100644
index 4578f74c3fa..00000000000
--- a/libgcc/config/i386/t-darwin64
+++ /dev/null
@@ -1 +0,0 @@
-SHLIB_VERPFX = $(gcc_srcdir)/config/i386/darwin-libgcc
diff --git a/libgcc/config/i386/t-dlldir b/libgcc/config/i386/t-dlldir
new file mode 100644
index 00000000000..d2cf39bddd6
--- /dev/null
+++ b/libgcc/config/i386/t-dlldir
@@ -0,0 +1,2 @@
+# In a native build, target DLLs go in bindir, where they can be executed.
+SHLIB_DLLDIR = $(bindir)
diff --git a/libgcc/config/i386/t-dlldir-x b/libgcc/config/i386/t-dlldir-x
new file mode 100644
index 00000000000..0f8c29b4e90
--- /dev/null
+++ b/libgcc/config/i386/t-dlldir-x
@@ -0,0 +1,3 @@
+# In a cross build, bindir contains host not target binaries, so target DLLs
+# instead go in toolexeclibdir, alongside other target binaries and static libs.
+SHLIB_DLLDIR = $(toolexeclibdir)
diff --git a/gcc/config/i386/t-dw2-eh b/libgcc/config/i386/t-dw2-eh
index ffcc39aea33..ffcc39aea33 100644
--- a/gcc/config/i386/t-dw2-eh
+++ b/libgcc/config/i386/t-dw2-eh
diff --git a/gcc/config/i386/t-linux b/libgcc/config/i386/t-linux
index 500d932fec8..29b4c223983 100644
--- a/gcc/config/i386/t-linux
+++ b/libgcc/config/i386/t-linux
@@ -1,5 +1,4 @@
# On 64bit we do not need any exports for glibc for 64-bit libgcc_s.
# Need to support TImode for x86. Override the settings from
# t-slibgcc-elf-ver and t-linux
-SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver \
- $(srcdir)/config/i386/libgcc-glibc.ver
+SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/i386/libgcc-glibc.ver
diff --git a/gcc/config/i386/t-mingw-pthread b/libgcc/config/i386/t-mingw-pthread
index 622ef82be6e..622ef82be6e 100644
--- a/gcc/config/i386/t-mingw-pthread
+++ b/libgcc/config/i386/t-mingw-pthread
diff --git a/gcc/config/i386/t-mingw32 b/libgcc/config/i386/t-mingw32
index bfdef6723ce..bfdef6723ce 100644
--- a/gcc/config/i386/t-mingw32
+++ b/libgcc/config/i386/t-mingw32
diff --git a/gcc/config/i386/t-sjlj-eh b/libgcc/config/i386/t-sjlj-eh
index c9085f43216..c9085f43216 100644
--- a/gcc/config/i386/t-sjlj-eh
+++ b/libgcc/config/i386/t-sjlj-eh
diff --git a/libgcc/config/i386/t-slibgcc-cygming b/libgcc/config/i386/t-slibgcc-cygming
new file mode 100644
index 00000000000..3bee8b98084
--- /dev/null
+++ b/libgcc/config/i386/t-slibgcc-cygming
@@ -0,0 +1,58 @@
+# Build a shared libgcc library for PECOFF with a DEF file
+# with the GNU linker.
+#
+# mkmap-flat.awk is used with the pe_dll option to produce a DEF instead
+# of an ELF map file.
+#
+# Warning: If SHLIB_SOVERSION or SHLIB_SONAME are updated, LIBGCC_SONAME
+# in mingw32.h and SHLIB_MKMAP_OPTS below must be updated also.
+
+SHLIB_EXT = .dll
+SHLIB_IMPLIB = @shlib_base_name@.a
+SHLIB_SOVERSION = 1
+SHLIB_SONAME = @shlib_base_name@_$(EH_MODEL)-$(SHLIB_SOVERSION)$(SHLIB_EXT)
+SHLIB_MAP = @shlib_map_file@
+SHLIB_OBJS = @shlib_objs@
+SHLIB_DIR = @multilib_dir@/shlib
+SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
+# SHLIB_DLLDIR is defined by including one of either t-dlldir or t-dlldir-x
+# (native/cross build respectively) in the tmake_file list in
+# libgcc/config.host.
+ifndef SHLIB_DLLDIR
+$(error SHLIB_DLLDIR must be defined)
+endif
+ifndef SHLIB_PTHREAD_CFLAG
+SHLIB_PTHREAD_CFLAG =
+endif
+ifndef SHLIB_PTHREAD_LDFLAG
+SHLIB_PTHREAD_LDFLAG =
+endif
+
+SHLIB_LINK = $(LN_S) -f $(SHLIB_MAP) $(SHLIB_MAP).def && \
+ if [ ! -d $(SHLIB_DIR) ]; then \
+ mkdir $(SHLIB_DIR); \
+ else true; fi && \
+ $(CC) $(LIBGCC2_CFLAGS) $(SHLIB_PTHREAD_CFLAG) \
+ -shared -nodefaultlibs \
+ $(SHLIB_MAP).def \
+ -Wl,--out-implib,$(SHLIB_DIR)/$(SHLIB_IMPLIB).tmp \
+ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
+ $(SHLIB_OBJS) ${SHLIB_PTHREAD_LDFLAG} $(SHLIB_LC) && \
+ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
+ mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
+ $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
+ else true; fi && \
+ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
+ mv $(SHLIB_DIR)/$(SHLIB_IMPLIB).tmp $(SHLIB_DIR)/$(SHLIB_IMPLIB)
+SHLIB_INSTALL = \
+ $(mkinstalldirs) $(DESTDIR)$(SHLIB_DLLDIR) \
+ $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
+ $(INSTALL) $(SHLIB_DIR)/$(SHLIB_SONAME) \
+ $(DESTDIR)$(SHLIB_DLLDIR)/$(SHLIB_SONAME); \
+ $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_IMPLIB) \
+ $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_IMPLIB)
+SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
+# We'd like to use SHLIB_SONAME here too, but shlib_base_name
+# does not get substituted before mkmap-flat.awk is run.
+SHLIB_MKMAP_OPTS = -v pe_dll=libgcc_s_$(EH_MODEL)-$(SHLIB_SOVERSION)$(SHLIB_EXT)
+SHLIB_MAPFILES = libgcc-std.ver
diff --git a/gcc/config/ia64/libgcc-glibc.ver b/libgcc/config/ia64/libgcc-glibc.ver
index 34a69618d1b..34a69618d1b 100644
--- a/gcc/config/ia64/libgcc-glibc.ver
+++ b/libgcc/config/ia64/libgcc-glibc.ver
diff --git a/gcc/config/ia64/libgcc-ia64.ver b/libgcc/config/ia64/libgcc-ia64.ver
index 11c1fe629bd..11c1fe629bd 100644
--- a/gcc/config/ia64/libgcc-ia64.ver
+++ b/libgcc/config/ia64/libgcc-ia64.ver
diff --git a/libgcc/config/ia64/t-ia64 b/libgcc/config/ia64/t-ia64
index 3ec5fc5db08..55bb8c11630 100644
--- a/libgcc/config/ia64/t-ia64
+++ b/libgcc/config/ia64/t-ia64
@@ -13,3 +13,5 @@ crtbeginS.o: $(gcc_srcdir)/config/ia64/crtbegin.asm
crtendS.o: $(gcc_srcdir)/config/ia64/crtend.asm
$(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \
-o $@ -DSHARED $(gcc_srcdir)/config/ia64/crtend.asm
+
+SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64.ver
diff --git a/libgcc/config/ia64/t-glibc b/libgcc/config/ia64/t-linux
index df4fe9c4404..e6d72b94a87 100644
--- a/libgcc/config/ia64/t-glibc
+++ b/libgcc/config/ia64/t-linux
@@ -1,3 +1,5 @@
# Use system libunwind library on IA-64 GLIBC based system.
LIB2ADDEH = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c \
$(srcdir)/unwind-compat.c
+
+SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-glibc.ver
diff --git a/libgcc/config/ia64/t-glibc-libunwind b/libgcc/config/ia64/t-linux-libunwind
index 8b1736a2d67..8b1736a2d67 100644
--- a/libgcc/config/ia64/t-glibc-libunwind
+++ b/libgcc/config/ia64/t-linux-libunwind
diff --git a/libgcc/config/ia64/t-slibgcc-hpux b/libgcc/config/ia64/t-slibgcc-hpux
new file mode 100644
index 00000000000..27c7a661b1e
--- /dev/null
+++ b/libgcc/config/ia64/t-slibgcc-hpux
@@ -0,0 +1,6 @@
+# Build a shared libgcc library with the HP-UX linker on IA64.
+
+SHLIB_SOVERSION = 0
+# Must include -lunwind in the link, so that libgcc_s.so has the necessary
+# DT_NEEDED entry for libunwind.
+SHLIB_LC += -lunwind
diff --git a/gcc/config/libgcc-glibc.ver b/libgcc/config/libgcc-glibc.ver
index 7824ad5a268..7824ad5a268 100644
--- a/gcc/config/libgcc-glibc.ver
+++ b/libgcc/config/libgcc-glibc.ver
diff --git a/gcc/libgcc-libsystem.ver b/libgcc/config/libgcc-libsystem.ver
index 47631749dc2..47631749dc2 100644
--- a/gcc/libgcc-libsystem.ver
+++ b/libgcc/config/libgcc-libsystem.ver
diff --git a/gcc/config/m32r/libgcc-glibc.ver b/libgcc/config/m32r/libgcc-glibc.ver
index 0e1304b2a3a..0e1304b2a3a 100644
--- a/gcc/config/m32r/libgcc-glibc.ver
+++ b/libgcc/config/m32r/libgcc-glibc.ver
diff --git a/libgcc/config/m32r/t-linux b/libgcc/config/m32r/t-linux
new file mode 100644
index 00000000000..29c83c57e44
--- /dev/null
+++ b/libgcc/config/m32r/t-linux
@@ -0,0 +1 @@
+SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/m32r/libgcc-glibc.ver
diff --git a/gcc/config/m68k/t-slibgcc-elf-ver b/libgcc/config/m68k/t-slibgcc-elf-ver
index 6aac37cc08f..6aac37cc08f 100644
--- a/gcc/config/m68k/t-slibgcc-elf-ver
+++ b/libgcc/config/m68k/t-slibgcc-elf-ver
diff --git a/gcc/config/mips/libgcc-mips16.ver b/libgcc/config/mips/libgcc-mips16.ver
index ddb23e7e750..ddb23e7e750 100644
--- a/gcc/config/mips/libgcc-mips16.ver
+++ b/libgcc/config/mips/libgcc-mips16.ver
diff --git a/libgcc/config/mips/t-mips16 b/libgcc/config/mips/t-mips16
index 94fa0e94275..46c7472f5f6 100644
--- a/libgcc/config/mips/t-mips16
+++ b/libgcc/config/mips/t-mips16
@@ -1,2 +1,5 @@
SYNC = yes
SYNC_CFLAGS = -mno-mips16
+
+# Version these symbols if building libgcc.so.
+SHLIB_MAPFILES += $(srcdir)/config/mips/libgcc-mips16.ver
diff --git a/libgcc/config/mips/t-slibgcc-irix b/libgcc/config/mips/t-slibgcc-irix
index 6e0ac365437..47b2e0eec21 100644
--- a/libgcc/config/mips/t-slibgcc-irix
+++ b/libgcc/config/mips/t-slibgcc-irix
@@ -3,5 +3,5 @@
SHLIB_LDFLAGS = -Wl,-soname,$(SHLIB_SONAME) \
-Wl,-exports_file,$(SHLIB_MAP)
-SHLIB_MKMAP = $(gcc_srcdir)/mkmap-flat.awk
+SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MAPFILES = libgcc-std.ver
diff --git a/gcc/config/pa/t-slibgcc-dwarf-ver b/libgcc/config/pa/t-slibgcc-dwarf-ver
index fa4688d6994..fa4688d6994 100644
--- a/gcc/config/pa/t-slibgcc-dwarf-ver
+++ b/libgcc/config/pa/t-slibgcc-dwarf-ver
diff --git a/libgcc/config/pa/t-slibgcc-hpux b/libgcc/config/pa/t-slibgcc-hpux
new file mode 100644
index 00000000000..d7ed64a8652
--- /dev/null
+++ b/libgcc/config/pa/t-slibgcc-hpux
@@ -0,0 +1,25 @@
+# Copyright (C) 2001, 2003, 2004, 2005, 2006, 2011
+# 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/>.
+
+# Build a shared libgcc library with the HP-UX linker on PA.
+
+SHLIB_EXT = .sl
+SHLIB_SOLINK = @shlib_base_name@$(SHLIB_EXT)
+SHLIB_SONAME = @shlib_base_name@.$(SHLIB_SOVERSION)
+SHLIB_LC =
diff --git a/gcc/config/pa/t-slibgcc-sjlj-ver b/libgcc/config/pa/t-slibgcc-sjlj-ver
index 00140cf204f..00140cf204f 100644
--- a/gcc/config/pa/t-slibgcc-sjlj-ver
+++ b/libgcc/config/pa/t-slibgcc-sjlj-ver
diff --git a/gcc/config/rs6000/darwin-libgcc.10.4.ver b/libgcc/config/rs6000/libgcc-darwin.10.4.ver
index 0c6f7c23156..0c6f7c23156 100644
--- a/gcc/config/rs6000/darwin-libgcc.10.4.ver
+++ b/libgcc/config/rs6000/libgcc-darwin.10.4.ver
diff --git a/gcc/config/rs6000/darwin-libgcc.10.5.ver b/libgcc/config/rs6000/libgcc-darwin.10.5.ver
index c2f08924fd7..c2f08924fd7 100644
--- a/gcc/config/rs6000/darwin-libgcc.10.5.ver
+++ b/libgcc/config/rs6000/libgcc-darwin.10.5.ver
diff --git a/libgcc/config/rs6000/libgcc-ppc-glibc.ver b/libgcc/config/rs6000/libgcc-glibc.ver
index 8862c14cb3d..8862c14cb3d 100644
--- a/libgcc/config/rs6000/libgcc-ppc-glibc.ver
+++ b/libgcc/config/rs6000/libgcc-glibc.ver
diff --git a/libgcc/config/rs6000/libgcc-ppc64.ver b/libgcc/config/rs6000/libgcc-ibm-ldouble.ver
index b27b4b49249..b27b4b49249 100644
--- a/libgcc/config/rs6000/libgcc-ppc64.ver
+++ b/libgcc/config/rs6000/libgcc-ibm-ldouble.ver
diff --git a/libgcc/config/rs6000/t-darwin b/libgcc/config/rs6000/t-darwin
index 4464fd7d6e6..deec5e3a470 100644
--- a/libgcc/config/rs6000/t-darwin
+++ b/libgcc/config/rs6000/t-darwin
@@ -6,5 +6,3 @@ crt2.o: $(srcdir)/config/rs6000/darwin-crt2.c
LIB2ADD += $(srcdir)/config/rs6000/ppc64-fp.c
LIB2ADDEH += $(srcdir)/config/rs6000/darwin-fallback.c
-
-SHLIB_VERPFX = $(gcc_srcdir)/config/rs6000/darwin-libgcc
diff --git a/libgcc/config/rs6000/t-ibm-ldouble b/libgcc/config/rs6000/t-ibm-ldouble
index 3f7a2d847e2..b13278498ec 100644
--- a/libgcc/config/rs6000/t-ibm-ldouble
+++ b/libgcc/config/rs6000/t-ibm-ldouble
@@ -3,4 +3,4 @@ LIB2ADD += $(srcdir)/config/rs6000/ibm-ldouble.c
HOST_LIBGCC2_CFLAGS += -mlong-double-128
-SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-ppc64.ver
+SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-ibm-ldouble.ver
diff --git a/libgcc/config/rs6000/t-ldbl128 b/libgcc/config/rs6000/t-ldbl128
deleted file mode 100644
index ecc3581b1a0..00000000000
--- a/libgcc/config/rs6000/t-ldbl128
+++ /dev/null
@@ -1,3 +0,0 @@
-SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-ppc-glibc.ver
-
-HOST_LIBGCC2_CFLAGS += -mlong-double-128
diff --git a/libgcc/config/rs6000/t-linux b/libgcc/config/rs6000/t-linux
new file mode 100644
index 00000000000..dcf7ffc255e
--- /dev/null
+++ b/libgcc/config/rs6000/t-linux
@@ -0,0 +1,3 @@
+SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-glibc.ver
+
+HOST_LIBGCC2_CFLAGS += -mlong-double-128
diff --git a/libgcc/config/rs6000/t-slibgcc-aix b/libgcc/config/rs6000/t-slibgcc-aix
new file mode 100644
index 00000000000..a0fdd133926
--- /dev/null
+++ b/libgcc/config/rs6000/t-slibgcc-aix
@@ -0,0 +1,44 @@
+# Copyright (C) 2002, 2003, 2004, 2005, 2006,
+# 2008, 2011 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/>.
+
+# Build a shared libgcc library.
+SHLIB_EXT = .a
+SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
+ -Wl,-bE:@shlib_map_file@ -o @multilib_dir@/shr.o \
+ @multilib_flags@ @shlib_objs@ -lc \
+ `case @multilib_dir@ in \
+ *pthread*) echo -L$(TARGET_SYSTEM_ROOT)/usr/lib/threads -lpthreads -lc_r $(TARGET_SYSTEM_ROOT)/usr/lib/libc.a ;; \
+ *) echo -lc ;; esac` ; \
+ rm -f @multilib_dir@/tmp-@shlib_base_name@.a ; \
+ $(AR_CREATE_FOR_TARGET) @multilib_dir@/tmp-@shlib_base_name@.a \
+ @multilib_dir@/shr.o ; \
+ mv @multilib_dir@/tmp-@shlib_base_name@.a \
+ @multilib_dir@/@shlib_base_name@.a ; \
+ rm -f @multilib_dir@/shr.o
+SHLIB_INSTALL = \
+ $(mkinstalldirs) $(DESTDIR)$(slibdir)@shlib_slibdir_qual@; \
+ $(INSTALL_DATA) @multilib_dir@/@shlib_base_name@.a \
+ $(DESTDIR)$(slibdir)@shlib_slibdir_qual@/
+SHLIB_LIBS = -lc `case @multilib_dir@ in *pthread*) echo -lpthread ;; esac`
+SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
+SHLIB_MAPFILES = libgcc-std.ver
+SHLIB_NM_FLAGS = -Bpg -X32_64
+
+# Either 32-bit and 64-bit objects in archives.
+AR_FLAGS_FOR_TARGET = -X32_64
diff --git a/gcc/config/sh/libgcc-excl.ver b/libgcc/config/sh/libgcc-excl.ver
index 325c74054ec..325c74054ec 100644
--- a/gcc/config/sh/libgcc-excl.ver
+++ b/libgcc/config/sh/libgcc-excl.ver
diff --git a/gcc/config/sh/libgcc-glibc.ver b/libgcc/config/sh/libgcc-glibc.ver
index b8ec3265310..b8ec3265310 100644
--- a/gcc/config/sh/libgcc-glibc.ver
+++ b/libgcc/config/sh/libgcc-glibc.ver
diff --git a/libgcc/config/sh/t-linux b/libgcc/config/sh/t-linux
index a98fb18e8d1..af618e260c6 100644
--- a/libgcc/config/sh/t-linux
+++ b/libgcc/config/sh/t-linux
@@ -6,32 +6,5 @@ HOST_LIBGCC2_CFLAGS = -fpic -mieee -DNO_FPSCR_VALUES
# the list from scratch.
SHLIB_MAPFILES = \
libgcc-std.ver \
- $(gcc_srcdir)/config/sh/libgcc-excl.ver \
- $(gcc_srcdir)/config/sh/libgcc-glibc.ver
-
-# Override SHLIB_LINK and SHLIB_INSTALL to use linker script
-# libgcc_s.so.
-SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
- -Wl,--soname=@shlib_base_name@.so.1 \
- -Wl,--version-script=@shlib_map_file@ \
- -o @multilib_dir@/@shlib_base_name@.so.1.tmp @multilib_flags@ \
- @shlib_objs@ -lc && \
- rm -f @multilib_dir@/@shlib_base_name@.so && \
- if [ -f @multilib_dir@/@shlib_base_name@.so.1 ]; then \
- mv -f @multilib_dir@/@shlib_base_name@.so.1 \
- @multilib_dir@/@shlib_base_name@.so.1.backup; \
- else true; fi && \
- mv @multilib_dir@/@shlib_base_name@.so.1.tmp \
- @multilib_dir@/@shlib_base_name@.so.1 && \
- (echo "/* GNU ld script"; \
- echo " Use the shared library, but some functions are only in"; \
- echo " the static library. */"; \
- echo "GROUP ( @shlib_base_name@.so.1 libgcc.a )" \
- ) > @multilib_dir@/@shlib_base_name@.so
-SHLIB_INSTALL = \
- $(mkinstalldirs) $(DESTDIR)$(slibdir)@shlib_slibdir_qual@; \
- $(INSTALL_DATA) @multilib_dir@/@shlib_base_name@.so.1 \
- $(DESTDIR)$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so.1; \
- rm -f $(DESTDIR)$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so; \
- $(INSTALL_DATA) @multilib_dir@/@shlib_base_name@.so \
- $(DESTDIR)$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so
+ $(srcdir)/config/sh/libgcc-excl.ver \
+ $(srcdir)/config/sh/libgcc-glibc.ver
diff --git a/gcc/config/sparc/libgcc-sparc-glibc.ver b/libgcc/config/sparc/libgcc-glibc.ver
index 91138d3795e..91138d3795e 100644
--- a/gcc/config/sparc/libgcc-sparc-glibc.ver
+++ b/libgcc/config/sparc/libgcc-glibc.ver
diff --git a/gcc/config/sparc/t-linux b/libgcc/config/sparc/t-linux
index 30daa376614..474f1755ea3 100644
--- a/gcc/config/sparc/t-linux
+++ b/libgcc/config/sparc/t-linux
@@ -1,5 +1,4 @@
# Override t-slibgcc-elf-ver to export some libgcc symbols with
# the symbol versions that glibc used.
# Avoid the t-linux version file.
-SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver \
- $(srcdir)/config/sparc/libgcc-sparc-glibc.ver
+SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/sparc/libgcc-glibc.ver
diff --git a/libgcc/config/t-libunwind b/libgcc/config/t-libunwind
index 1c7a898675f..135cbe1e82f 100644
--- a/libgcc/config/t-libunwind
+++ b/libgcc/config/t-libunwind
@@ -1,3 +1,10 @@
+# Use the system libunwind library.
+
LIB2ADDEH = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c \
$(srcdir)/unwind-compat.c $(srcdir)/unwind-dw2-fde-compat.c
LIB2ADDEHSTATIC = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
+
+# Override the default value from t-slibgcc-elf-ver and mention -lunwind
+# so that the resulting libgcc_s.so has the necessary DT_NEEDED entry for
+# libunwind.
+SHLIB_LC = -lunwind -lc
diff --git a/libgcc/config/t-linux b/libgcc/config/t-linux
new file mode 100644
index 00000000000..d1bdac4f32d
--- /dev/null
+++ b/libgcc/config/t-linux
@@ -0,0 +1,3 @@
+# Override t-slibgcc-elf-ver to export some libgcc symbols with
+# the symbol versions that glibc used.
+SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver
diff --git a/libgcc/config/t-slibgcc b/libgcc/config/t-slibgcc
index 0b5cc4bfc50..3727244c424 100644
--- a/libgcc/config/t-slibgcc
+++ b/libgcc/config/t-slibgcc
@@ -43,9 +43,12 @@ SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
else true; fi && \
mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
$(SHLIB_MAKE_SOLINK)
+
+INSTALL_SHLIB = $(INSTALL_DATA)
+
SHLIB_INSTALL = \
$(mkinstalldirs) $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
- $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SONAME) \
+ $(INSTALL_SHLIB) $(SHLIB_DIR)/$(SHLIB_SONAME) \
$(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
rm -f $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
$(SHLIB_INSTALL_SOLINK)
diff --git a/libgcc/config/t-slibgcc-darwin b/libgcc/config/t-slibgcc-darwin
index bb6569a87d9..9970d003436 100644
--- a/libgcc/config/t-slibgcc-darwin
+++ b/libgcc/config/t-slibgcc-darwin
@@ -22,9 +22,10 @@ SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \
$(SHLIB_VERSTRING) \
@multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC)
-SHLIB_MKMAP = $(gcc_srcdir)/mkmap-flat.awk
+SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MKMAP_OPTS = -v leading_underscore=1
-SHLIB_MAPFILES += libgcc-std.ver $(gcc_srcdir)/libgcc-libsystem.ver
+SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/libgcc-libsystem.ver
+SHLIB_VERPFX = $(srcdir)/config/$(cpu_type)/libgcc-darwin
# we're only going to build the stubs if the target slib is /usr/lib
# there is no other case in which they're useful in a live system.
diff --git a/libgcc/config/t-slibgcc-elf-ver b/libgcc/config/t-slibgcc-elf-ver
index 2616d31cae5..4a00edc9663 100644
--- a/libgcc/config/t-slibgcc-elf-ver
+++ b/libgcc/config/t-slibgcc-elf-ver
@@ -1,4 +1,4 @@
# Build a shared libgcc library for ELF with symbol versioning.
-SHLIB_MKMAP = $(gcc_srcdir)/mkmap-symver.awk
+SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
SHLIB_MAPFILES = libgcc-std.ver
diff --git a/libgcc/config/t-slibgcc-gld-nover b/libgcc/config/t-slibgcc-gld-nover
new file mode 100644
index 00000000000..e9b78ea9410
--- /dev/null
+++ b/libgcc/config/t-slibgcc-gld-nover
@@ -0,0 +1,3 @@
+# Build a shared libgcc library for ELF with the GNU linker.
+
+SHLIB_LDFLAGS = -Wl,--soname=$(SHLIB_SONAME)
diff --git a/libgcc/config/t-slibgcc-hpux b/libgcc/config/t-slibgcc-hpux
new file mode 100644
index 00000000000..866457fe9ae
--- /dev/null
+++ b/libgcc/config/t-slibgcc-hpux
@@ -0,0 +1,7 @@
+# Build a shared libgcc library with the HP-UX linker.
+
+SHLIB_LDFLAGS = -Wl,+h,$(SHLIB_SONAME)
+
+INSTALL_SHLIB = $(INSTALL_DATA) -m 555
+
+SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
diff --git a/gcc/config/t-slibgcc-libgcc b/libgcc/config/t-slibgcc-libgcc
index df004a5e964..ec36b2727ae 100644
--- a/gcc/config/t-slibgcc-libgcc
+++ b/libgcc/config/t-slibgcc-libgcc
@@ -1,4 +1,4 @@
-# Copyright (C) 2009 Free Software Foundation, Inc.
+# Copyright (C) 2009, 2011 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -29,4 +29,4 @@ SHLIB_MAKE_SOLINK = \
) > $(SHLIB_DIR)/$(SHLIB_SOLINK)
SHLIB_INSTALL_SOLINK = \
$(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SOLINK) \
- $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
+ $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
diff --git a/gcc/config/t-slibgcc-nolc-override b/libgcc/config/t-slibgcc-nolc-override
index 959d2cc2a1f..959d2cc2a1f 100644
--- a/gcc/config/t-slibgcc-nolc-override
+++ b/libgcc/config/t-slibgcc-nolc-override
diff --git a/libgcc/config/t-slibgcc-vms b/libgcc/config/t-slibgcc-vms
new file mode 100644
index 00000000000..d01c34341c8
--- /dev/null
+++ b/libgcc/config/t-slibgcc-vms
@@ -0,0 +1,28 @@
+shlib_version:=$(shell $(CC) --version 2>&1 | \
+ sed -n 's/^.*(GCC).* \([0-9]*\.[0-9.]*\).*$/\1/p' | \
+ sed -e 's/\./,/' -e 's/\.//g')
+SHLIB_EXT = .exe
+SHLIB_OBJS = @shlib_objs@
+SHLIB_NAME = @shlib_base_name@.exe
+SHLIB_MULTILIB =
+SHLIB_INSTALL = $(INSTALL_DATA) $(SHLIB_NAME) $(DESTDIR)$(libsubdir)/$(SHLIB_NAME)
+SHLIB_SYMVEC = \
+ grep -F -e "\$$BSS\$$" -e "\$$DATA\$$" -e " sdata " -e " data.rel " -e " data.rel.ro " -e " sbss " \
+ -e "\$$LINK\$$" -e "\$$READONLY\$$" | \
+ sed -e "s/.*\$$LINK\$$ \(.*\)/SYMBOL_VECTOR=(\1=PROCEDURE)/" \
+ -e "s/.*\$$DATA\$$ \(.*\)/SYMBOL_VECTOR=(\1=DATA)/" \
+ -e "s/.* sbss \(.*\)/SYMBOL_VECTOR=(\1=DATA)/" \
+ -e "s/.* sdata \(.*\)/SYMBOL_VECTOR=(\1=DATA)/" \
+ -e "s/.* data.rel \(.*\)/SYMBOL_VECTOR=(\1=DATA)/" \
+ -e "s/.* data.rel.ro \(.*\)/SYMBOL_VECTOR=(\1=DATA)/" \
+ -e "s/.*\$$BSS\$$ \(.*\)/SYMBOL_VECTOR=(\1=DATA)/" \
+ -e "s/.*\$$READONLY\$$ \(.*\)/SYMBOL_VECTOR=(\1=DATA)/"
+SHLIB_LINK = \
+ echo "case_sensitive=yes" > SYMVEC_$$$$.opt; \
+ objdump --syms $(SHLIB_OBJS) | \
+ $(SHLIB_SYMVEC) >> SYMVEC_$$$$.opt ; \
+ echo "case_sensitive=NO" >> SYMVEC_$$$$.opt; \
+ $(CC) $(LIBGCC2_CFLAGS) -nodefaultlibs \
+ -shared --for-linker=/noinform -o $(SHLIB_NAME) $(SHLIB_OBJS) \
+ --for-linker=SYMVEC_$$$$.opt \
+ --for-linker=gsmatch=equal,$(shlib_version)
diff --git a/gcc/config/xtensa/libgcc-xtensa.ver b/libgcc/config/xtensa/libgcc-glibc.ver
index 43e7d4fc7c7..43e7d4fc7c7 100644
--- a/gcc/config/xtensa/libgcc-xtensa.ver
+++ b/libgcc/config/xtensa/libgcc-glibc.ver
diff --git a/libgcc/config/xtensa/t-linux b/libgcc/config/xtensa/t-linux
new file mode 100644
index 00000000000..6f4ae893486
--- /dev/null
+++ b/libgcc/config/xtensa/t-linux
@@ -0,0 +1 @@
+SHLIB_MAPFILES += $(srcdir)/config/xtensa/libgcc-glibc.ver
diff --git a/libgcc/configure b/libgcc/configure
index 80bb61c80af..0506dcf8e40 100644
--- a/libgcc/configure
+++ b/libgcc/configure
@@ -694,6 +694,7 @@ enable_maintainer_mode
with_build_libsubdir
enable_decimal_float
with_system_libunwind
+enable_sjlj_exceptions
enable_tls
'
ac_precious_vars='build_alias
@@ -1328,6 +1329,8 @@ Optional Features:
enable decimal float extension to C. Selecting 'bid'
or 'dpd' choses which decimal floating point format
to use
+ --enable-sjlj-exceptions
+ force use of builtin_setjmp for exceptions
--enable-tls Use thread-local storage [default=yes]
Optional Packages:
@@ -4408,6 +4411,72 @@ $as_echo "#define HAVE_GETIPINFO 1" >>confdefs.h
fi
+# The sjlj test is almost duplicated here and in libgo/configure.ac (for C),
+# libstdc++-v3/acinclude.m4 and libjava/configure.ac (for C++), and
+# libobjc/configure.ac (for Objective-C).
+# FIXME: This should be centralized in config/sjlj.m4.
+# Check whether --enable-sjlj-exceptions was given.
+if test "${enable_sjlj_exceptions+set}" = set; then :
+ enableval=$enable_sjlj_exceptions; case "$enableval" in
+ yes|no|auto) ;;
+ *) as_fn_error "unknown argument to --enable-sjlj-exceptions" "$LINENO" 5 ;;
+ esac
+else
+ enable_sjlj_exceptions=auto
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use setjmp/longjmp exceptions" >&5
+$as_echo_n "checking whether to use setjmp/longjmp exceptions... " >&6; }
+if test "${libgcc_cv_lib_sjlj_exceptions+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+void bar ();
+void clean (int *);
+void foo ()
+{
+ int i __attribute__ ((cleanup (clean)));
+ bar();
+}
+
+_ACEOF
+CFLAGS_hold=$CFLAGS
+CFLAGS="--save-temps -fexceptions"
+libgcc_cv_lib_sjlj_exceptions=unknown
+if ac_fn_c_try_compile; then :
+ if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1; then
+ libgcc_cv_lib_sjlj_exceptions=yes
+ elif grep _Unwind_Resume conftest.s >/dev/null 2>&1; then
+ libgcc_cv_lib_sjlj_exceptions=no
+ fi
+fi
+CFLAGS=$CFLAGS_hold
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_lib_sjlj_exceptions" >&5
+$as_echo "$libgcc_cv_lib_sjlj_exceptions" >&6; }
+
+if test "$enable_sjlj_exceptions" = "auto"; then
+ enable_sjlj_exceptions=$libgcc_cv_lib_sjlj_exceptions
+fi
+
+case $enable_sjlj_exceptions in
+yes)
+
+$as_echo "#define LIBGCC_SJLJ_EXCEPTIONS 1" >>confdefs.h
+
+ ;;
+no)
+ ;;
+*)
+ as_fn_error "unable to detect exception model" "$LINENO" 5
+ ;;
+esac
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
if test "${acl_cv_prog_gnu_ld+set}" = set; then :
diff --git a/libgcc/configure.ac b/libgcc/configure.ac
index c1a3dce0f5b..b40e6d733d6 100644
--- a/libgcc/configure.ac
+++ b/libgcc/configure.ac
@@ -180,6 +180,60 @@ AC_SUBST(fixed_point)
# config.gcc also contains tests of with_system_libunwind.
GCC_CHECK_UNWIND_GETIPINFO
+# The sjlj test is almost duplicated here and in libgo/configure.ac (for C),
+# libstdc++-v3/acinclude.m4 and libjava/configure.ac (for C++), and
+# libobjc/configure.ac (for Objective-C).
+# FIXME: This should be centralized in config/sjlj.m4.
+AC_ARG_ENABLE(sjlj-exceptions,
+ AC_HELP_STRING([--enable-sjlj-exceptions],
+ [force use of builtin_setjmp for exceptions]),
+ [case "$enableval" in
+ yes|no|auto) ;;
+ *) AC_MSG_ERROR([unknown argument to --enable-sjlj-exceptions]) ;;
+ esac],
+ [enable_sjlj_exceptions=auto])
+
+AC_CACHE_CHECK([whether to use setjmp/longjmp exceptions],
+[libgcc_cv_lib_sjlj_exceptions],
+[AC_LANG_CONFTEST(
+ [AC_LANG_SOURCE([
+void bar ();
+void clean (int *);
+void foo ()
+{
+ int i __attribute__ ((cleanup (clean)));
+ bar();
+}
+])])
+CFLAGS_hold=$CFLAGS
+CFLAGS="--save-temps -fexceptions"
+libgcc_cv_lib_sjlj_exceptions=unknown
+AS_IF([ac_fn_c_try_compile],
+ [if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1; then
+ libgcc_cv_lib_sjlj_exceptions=yes
+ elif grep _Unwind_Resume conftest.s >/dev/null 2>&1; then
+ libgcc_cv_lib_sjlj_exceptions=no
+ fi])
+CFLAGS=$CFLAGS_hold
+rm -f conftest*
+])
+
+if test "$enable_sjlj_exceptions" = "auto"; then
+ enable_sjlj_exceptions=$libgcc_cv_lib_sjlj_exceptions
+fi
+
+case $enable_sjlj_exceptions in
+yes)
+ AC_DEFINE(LIBGCC_SJLJ_EXCEPTIONS, 1,
+ [Define if the C compiler is configured for setjmp/longjmp exceptions.])
+ ;;
+no)
+ ;;
+*)
+ AC_MSG_ERROR([unable to detect exception model])
+ ;;
+esac
+
AC_LIB_PROG_LD_GNU
AC_MSG_CHECKING([for thread model used by GCC])
diff --git a/gcc/mkmap-flat.awk b/libgcc/mkmap-flat.awk
index ec5e1fdf513..ec5e1fdf513 100644
--- a/gcc/mkmap-flat.awk
+++ b/libgcc/mkmap-flat.awk
diff --git a/gcc/mkmap-symver.awk b/libgcc/mkmap-symver.awk
index 4877e905147..4877e905147 100644
--- a/gcc/mkmap-symver.awk
+++ b/libgcc/mkmap-symver.awk