From 95126477945260e657fdda3244201b4d0b0d70ef Mon Sep 17 00:00:00 2001 From: rth Date: Sun, 8 Oct 2000 23:20:18 +0000 Subject: [PATCH] * Makefile.in (libgcc.mk): Pass SHLIB_EXT, not SHLIB_LIBS. * configure.in (sparc*-*-solaris*): Use t-slibgcc{,-sld}. * mklibgcc.in: Consider SHLIB_LINK the entire shlib build command. Use SHLIB_EXT. * config/t-linux (SHLIB_EXT): New. (SHLIB_LINK): Use the entire build command, with substitutions. (SHLIB_LIBS): Remove. * config/alpha/t-osf4: Likewise. * config/mips/t-iris6: Likewise. * config/sparc/t-sol2: Likewise, but move shlib stuff... * config/sparc/t-slibgcc-sld: ...here. * config/sparc/t-slibgcc: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36792 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 16 ++++ gcc/Makefile.in | 2 +- gcc/config/alpha/t-osf4 | 5 +- gcc/config/mips/t-iris6 | 7 +- gcc/config/sparc/t-slibgcc | 9 ++ gcc/config/sparc/t-slibgcc-sld | 9 ++ gcc/config/sparc/t-sol2 | 8 -- gcc/config/t-linux | 5 +- gcc/configure | 199 ++++++++++++++++++++++------------------- gcc/configure.in | 15 ++++ gcc/mklibgcc.in | 31 ++++--- 11 files changed, 185 insertions(+), 121 deletions(-) create mode 100644 gcc/config/sparc/t-slibgcc create mode 100644 gcc/config/sparc/t-slibgcc-sld diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2109191eb07..9ee1ee39e17 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2000-10-08 Richard Henderson + + * Makefile.in (libgcc.mk): Pass SHLIB_EXT, not SHLIB_LIBS. + * configure.in (sparc*-*-solaris*): Use t-slibgcc{,-sld}. + * mklibgcc.in: Consider SHLIB_LINK the entire shlib build command. + Use SHLIB_EXT. + + * config/t-linux (SHLIB_EXT): New. + (SHLIB_LINK): Use the entire build command, with substitutions. + (SHLIB_LIBS): Remove. + * config/alpha/t-osf4: Likewise. + * config/mips/t-iris6: Likewise. + * config/sparc/t-sol2: Likewise, but move shlib stuff... + * config/sparc/t-slibgcc-sld: ...here. + * config/sparc/t-slibgcc: New file. + 2000-10-08 Joseph S. Myers * tm.texi (INTMAX_TYPE, UINTMAX_TYPE): Define. diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 4fa487ca986..5761af7f3bb 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -980,7 +980,7 @@ libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) xgcc$(exeext) MULTILIBS=`$(GCC_FOR_TARGET) --print-multi-lib` \ EXTRA_MULTILIB_PARTS='$(EXTRA_MULTILIB_PARTS)' \ SHLIB_LINK='$(SHLIB_LINK)' \ - SHLIB_LIBS='$(SHLIB_LIBS)' \ + SHLIB_EXT='$(SHLIB_EXT)' \ SHLIB_MULTILIB='$(SHLIB_MULTILIB)' \ SHLIB_MKMAP='$(SHLIB_MKMAP)' \ SHLIB_MAPFILES='$(SHLIB_MAPFILES)' \ diff --git a/gcc/config/alpha/t-osf4 b/gcc/config/alpha/t-osf4 index cf4e118a211..3bc97bab493 100644 --- a/gcc/config/alpha/t-osf4 +++ b/gcc/config/alpha/t-osf4 @@ -5,6 +5,7 @@ CRTSTUFF_T_CFLAGS_S = -fPIC TARGET_LIBGCC2_CFLAGS = -fPIC # Build a shared libgcc library. +SHLIB_EXT = .so SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ - -Wl,-msym -Wl,-set_version,gcc.3 -Wl,-soname,@shlib_base_name@.so.0 -SHLIB_LIBS = -lc + -Wl,-msym -Wl,-set_version,gcc.0 -Wl,-soname,@shlib_base_name@.so.0 \ + -o @shlib_base_name@.so @multilib_flags@ @shlib_objs@ -lc diff --git a/gcc/config/mips/t-iris6 b/gcc/config/mips/t-iris6 index 24e385d4606..879c841eef1 100644 --- a/gcc/config/mips/t-iris6 +++ b/gcc/config/mips/t-iris6 @@ -20,12 +20,13 @@ EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o CRTSTUFF_T_CFLAGS=-g1 # Build a shared libgcc library. +SHLIB_EXT = .so SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ - -Wl,-soname,@shlib_base_name@.so.0 + -Wl,-soname,@shlib_base_name@.so.0 \ + -o @shlib_base_name@.so @multilib_flags@ @shlib_objs@ -lc # ??? Irix 6.5 seems to eat the option fine (if we somehow remove the # -hidden_symbol option, which is documented to be ignored in conjunction # with -exports_file), but fails to actually hide any symbols. -# -Wl,-exports_file,libgcc.map -SHLIB_LIBS = -lc +# -Wl,-exports_file,@shlib_map_file@ SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver diff --git a/gcc/config/sparc/t-slibgcc b/gcc/config/sparc/t-slibgcc new file mode 100644 index 00000000000..ffeebcbcdce --- /dev/null +++ b/gcc/config/sparc/t-slibgcc @@ -0,0 +1,9 @@ +# Build a shared libgcc library with the GNU linker. + +SHLIB_EXT = .so +SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ + -Wl,--soname=@shlib_base_name@.so.0 \ + -Wl,--version-script=@shlib_map_file@ \ + -o @shlib_base_name@.so @multilib_flags@ @shlib_objs@ -lc +SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk +SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver diff --git a/gcc/config/sparc/t-slibgcc-sld b/gcc/config/sparc/t-slibgcc-sld new file mode 100644 index 00000000000..0c182ab19bb --- /dev/null +++ b/gcc/config/sparc/t-slibgcc-sld @@ -0,0 +1,9 @@ +# Build a shared libgcc library with the Solaris linker. + +SHLIB_EXT = .so +SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ + -Wl,-h,@shlib_base_name@.so.0 -Wl,-z,text -Wl,-z,defs \ + -Wl,-M,@shlib_map_file@ -o @shlib_base_name@.so \ + @multilib_flags@ @shlib_objs@ -lc +SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk +SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver diff --git a/gcc/config/sparc/t-sol2 b/gcc/config/sparc/t-sol2 index 7a44631429b..a9b6ee14793 100644 --- a/gcc/config/sparc/t-sol2 +++ b/gcc/config/sparc/t-sol2 @@ -28,11 +28,3 @@ $(T)gcrt1.o: $(srcdir)/config/sparc/sol2-c1.asm $(GCC_PASSES) CRTSTUFF_T_CFLAGS = -fPIC TARGET_LIBGCC2_CFLAGS = -fPIC - -# Build a shared libgcc library. -SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ - -Wl,-h,@shlib_base_name@.so.0 -Wl,-z,text -Wl,-z,defs \ - -Wl,-M,libgcc.map -SHLIB_LIBS = -lc -SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk -SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver diff --git a/gcc/config/t-linux b/gcc/config/t-linux index 858faa9619c..b66cf56e663 100644 --- a/gcc/config/t-linux +++ b/gcc/config/t-linux @@ -9,10 +9,11 @@ CRTSTUFF_T_CFLAGS_S = -fPIC # Compile libgcc2.a with pic. TARGET_LIBGCC2_CFLAGS = -fPIC # Build a shared libgcc library. +SHLIB_EXT = .so SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ -Wl,--soname=@shlib_base_name@.so.0 \ - -Wl,--version-script=libgcc.map -SHLIB_LIBS = -lc + -Wl,--version-script=@shlib_map_file@ \ + -o @shlib_base_name@.so @multilib_flags@ @shlib_objs@ -lc SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/libgcc-glibc.ver diff --git a/gcc/configure b/gcc/configure index 2d6ea68d002..40c5880c3b0 100755 --- a/gcc/configure +++ b/gcc/configure @@ -6493,6 +6493,11 @@ for machine in $build $host $target; do xm_file="sparc/xm-sysv4-64.h sparc/xm-sol2.h" xm_defines="USG POSIX" tmake_file="sparc/t-sol2 sparc/t-sol2-64" + if test x$gnu_ld = xyes; then + tmake_file="$tmake_file sparc/t-slibgcc" + else + tmake_file="$tmake_file sparc/t-slibgcc-sld" + fi xmake_file=sparc/x-sysv4 extra_parts="crt1.o crti.o crtn.o gcrt1.o crtbegin.o crtend.o" float_format=none @@ -6515,6 +6520,11 @@ for machine in $build $host $target; do xm_defines="USG POSIX" tm_file="sparc/sol2.h sparc/hal.h" tmake_file="sparc/t-halos sparc/t-sol2" + if test x$gnu_ld = xyes; then + tmake_file="$tmake_file sparc/t-slibgcc" + else + tmake_file="$tmake_file sparc/t-slibgcc-sld" + fi xmake_file=sparc/x-sysv4 extra_parts="crt1.o crti.o crtn.o gmon.o crtbegin.o crtend.o" case $machine in @@ -6537,6 +6547,11 @@ for machine in $build $host $target; do xm_file="sparc/xm-sysv4.h sparc/xm-sol2.h" xm_defines="USG POSIX" tmake_file=sparc/t-sol2 + if test x$gnu_ld = xyes; then + tmake_file="$tmake_file sparc/t-slibgcc" + else + tmake_file="$tmake_file sparc/t-slibgcc-sld" + fi xmake_file=sparc/x-sysv4 extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o" # At the moment, 32-to-64 cross compilation doesn't work. @@ -7185,7 +7200,7 @@ fi echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6 -echo "configure:7189: checking for strerror in -lcposix" >&5 +echo "configure:7204: checking for strerror in -lcposix" >&5 ac_lib_var=`echo cposix'_'strerror | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7193,7 +7208,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lcposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7227,12 +7242,12 @@ fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:7231: checking for working const" >&5 +echo "configure:7246: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7300: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -7302,12 +7317,12 @@ EOF fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:7306: checking for off_t" >&5 +echo "configure:7321: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7335,12 +7350,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7339: checking for size_t" >&5 +echo "configure:7354: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7370,19 +7385,19 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:7374: checking for working alloca.h" >&5 +echo "configure:7389: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:7386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -7403,12 +7418,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:7407: checking for alloca" >&5 +echo "configure:7422: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -7468,12 +7483,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:7472: checking whether alloca needs Cray hooks" >&5 +echo "configure:7487: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7502: checking for $ac_func" >&5 +echo "configure:7517: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7545: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7553,7 +7568,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:7557: checking stack direction for C alloca" >&5 +echo "configure:7572: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7561,7 +7576,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7599: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -7607,17 +7622,17 @@ unistd.h sys/param.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7611: checking for $ac_hdr" >&5 +echo "configure:7626: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7621: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7636: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7647,12 +7662,12 @@ done strdup __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7651: checking for $ac_func" >&5 +echo "configure:7666: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7704,12 +7719,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7708: checking for $ac_func" >&5 +echo "configure:7723: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7766,19 +7781,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:7770: checking for LC_MESSAGES" >&5 +echo "configure:7785: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF -if { (eval echo configure:7782: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else @@ -7799,7 +7814,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:7803: checking whether NLS is requested" >&5 +echo "configure:7818: checking whether NLS is requested" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" @@ -7819,7 +7834,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:7823: checking whether included gettext is requested" >&5 +echo "configure:7838: checking whether included gettext is requested" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" @@ -7838,17 +7853,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:7842: checking for libintl.h" >&5 +echo "configure:7857: checking for libintl.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7852: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7867: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7865,19 +7880,19 @@ fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 -echo "configure:7869: checking for gettext in libc" >&5 +echo "configure:7884: checking for gettext in libc" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:7881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libc=yes else @@ -7893,7 +7908,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6 if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:7897: checking for bindtextdomain in -lintl" >&5 +echo "configure:7912: checking for bindtextdomain in -lintl" >&5 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7901,7 +7916,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7928,12 +7943,12 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 -echo "configure:7932: checking for gettext in libintl" >&5 +echo "configure:7947: checking for gettext in libintl" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 -echo "configure:7937: checking for gettext in -lintl" >&5 +echo "configure:7952: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7941,7 +7956,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7971: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7991,7 +8006,7 @@ EOF # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:7995: checking for $ac_word" >&5 +echo "configure:8010: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8025,12 +8040,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8029: checking for $ac_func" >&5 +echo "configure:8044: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8080,7 +8095,7 @@ done # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8084: checking for $ac_word" >&5 +echo "configure:8099: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8116,7 +8131,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8120: checking for $ac_word" >&5 +echo "configure:8135: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8148,7 +8163,7 @@ else fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8175: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -8179,7 +8194,7 @@ fi if test "$CATOBJEXT" = "NONE"; then echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6 -echo "configure:8183: checking whether catgets can be used" >&5 +echo "configure:8198: checking whether catgets can be used" >&5 # Check whether --with-catgets or --without-catgets was given. if test "${with_catgets+set}" = set; then withval="$with_catgets" @@ -8192,7 +8207,7 @@ fi if test "$nls_cv_use_catgets" = "yes"; then echo $ac_n "checking for main in -li""... $ac_c" 1>&6 -echo "configure:8196: checking for main in -li" >&5 +echo "configure:8211: checking for main in -li" >&5 ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8200,14 +8215,14 @@ else ac_save_LIBS="$LIBS" LIBS="-li $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8235,12 +8250,12 @@ else fi echo $ac_n "checking for catgets""... $ac_c" 1>&6 -echo "configure:8239: checking for catgets" >&5 +echo "configure:8254: checking for catgets" >&5 if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_catgets=yes" else @@ -8285,7 +8300,7 @@ EOF # Extract the first word of "gencat", so it can be a program name with args. set dummy gencat; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8289: checking for $ac_word" >&5 +echo "configure:8304: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GENCAT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8321,7 +8336,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8325: checking for $ac_word" >&5 +echo "configure:8340: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8358,7 +8373,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8362: checking for $ac_word" >&5 +echo "configure:8377: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8397,7 +8412,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8401: checking for $ac_word" >&5 +echo "configure:8416: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8455,7 +8470,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8459: checking for $ac_word" >&5 +echo "configure:8474: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8489,7 +8504,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8493: checking for $ac_word" >&5 +echo "configure:8508: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8529,7 +8544,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8533: checking for $ac_word" >&5 +echo "configure:8548: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8624,7 +8639,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:8628: checking for catalogs to be installed" >&5 +echo "configure:8643: checking for catalogs to be installed" >&5 if test "x$LINGUAS" = "x"; then LINGUAS=$ALL_LINGUAS else @@ -8656,17 +8671,17 @@ echo "configure:8628: checking for catalogs to be installed" >&5 if test "$CATOBJEXT" = ".cat"; then ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 -echo "configure:8660: checking for linux/version.h" >&5 +echo "configure:8675: checking for linux/version.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8670: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8685: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8741,7 +8756,7 @@ fi echo $ac_n "checking whether windows registry support is requested""... $ac_c" 1>&6 -echo "configure:8745: checking whether windows registry support is requested" >&5 +echo "configure:8760: checking whether windows registry support is requested" >&5 if test x$enable_win32_registry != xno; then cat >> confdefs.h <<\EOF #define ENABLE_WIN32_REGISTRY 1 @@ -8770,7 +8785,7 @@ esac if test x$enable_win32_registry != xno; then echo $ac_n "checking registry key on windows hosts""... $ac_c" 1>&6 -echo "configure:8774: checking registry key on windows hosts" >&5 +echo "configure:8789: checking registry key on windows hosts" >&5 cat >> confdefs.h <&6 -echo "configure:8968: checking what assembler to use" >&5 +echo "configure:8983: checking what assembler to use" >&5 gcc_cv_as= gcc_cv_gas_major_version= gcc_cv_gas_minor_version= @@ -9049,7 +9064,7 @@ fi # Figure out what nm we will be using. echo $ac_n "checking what nm to use""... $ac_c" 1>&6 -echo "configure:9053: checking what nm to use" >&5 +echo "configure:9068: checking what nm to use" >&5 if test -x nm$host_exeext; then gcc_cv_nm=./nm$host_exeext elif test x$host = x$target; then @@ -9060,7 +9075,7 @@ echo "$ac_t""$gcc_cv_nm" 1>&6 # Figure out what assembler alignment features are present. echo $ac_n "checking assembler alignment features""... $ac_c" 1>&6 -echo "configure:9064: checking assembler alignment features" >&5 +echo "configure:9079: checking assembler alignment features" >&5 gcc_cv_as_alignment_features= if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then # Gas version 2.6 and later support for .balign and .p2align. @@ -9108,7 +9123,7 @@ fi echo "$ac_t""$gcc_cv_as_alignment_features" 1>&6 echo $ac_n "checking assembler subsection support""... $ac_c" 1>&6 -echo "configure:9112: checking assembler subsection support" >&5 +echo "configure:9127: checking assembler subsection support" >&5 gcc_cv_as_subsections= if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then @@ -9148,7 +9163,7 @@ fi echo "$ac_t""$gcc_cv_as_subsections" 1>&6 echo $ac_n "checking assembler weak support""... $ac_c" 1>&6 -echo "configure:9152: checking assembler weak support" >&5 +echo "configure:9167: checking assembler weak support" >&5 gcc_cv_as_weak= if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 2 -o "$gcc_cv_gas_major_version" -gt 2; then @@ -9171,7 +9186,7 @@ fi echo "$ac_t""$gcc_cv_as_weak" 1>&6 echo $ac_n "checking assembler hidden support""... $ac_c" 1>&6 -echo "configure:9175: checking assembler hidden support" >&5 +echo "configure:9190: checking assembler hidden support" >&5 gcc_cv_as_hidden= if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 10 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then @@ -9197,7 +9212,7 @@ echo "$ac_t""$gcc_cv_as_hidden" 1>&6 case "$target" in sparc*-*-*) echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6 -echo "configure:9201: checking assembler .register pseudo-op support" >&5 +echo "configure:9216: checking assembler .register pseudo-op support" >&5 if eval "test \"`echo '$''{'gcc_cv_as_register_pseudo_op'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9225,7 +9240,7 @@ EOF fi echo $ac_n "checking assembler supports -relax""... $ac_c" 1>&6 -echo "configure:9229: checking assembler supports -relax" >&5 +echo "configure:9244: checking assembler supports -relax" >&5 if eval "test \"`echo '$''{'gcc_cv_as_relax_opt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9255,7 +9270,7 @@ EOF case "$tm_file" in *64*) echo $ac_n "checking for 64 bit support in assembler ($gcc_cv_as)""... $ac_c" 1>&6 -echo "configure:9259: checking for 64 bit support in assembler ($gcc_cv_as)" >&5 +echo "configure:9274: checking for 64 bit support in assembler ($gcc_cv_as)" >&5 if eval "test \"`echo '$''{'gcc_cv_as_flags64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9300,7 +9315,7 @@ EOF if test "x$gcc_cv_as_flags64" != xno; then echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6 -echo "configure:9304: checking for assembler offsetable %lo() support" >&5 +echo "configure:9319: checking for assembler offsetable %lo() support" >&5 if eval "test \"`echo '$''{'gcc_cv_as_offsetable_lo10'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9339,7 +9354,7 @@ EOF i[34567]86-*-*) echo $ac_n "checking assembler instructions""... $ac_c" 1>&6 -echo "configure:9343: checking assembler instructions" >&5 +echo "configure:9358: checking assembler instructions" >&5 gcc_cv_as_instructions= if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2; then @@ -9489,7 +9504,7 @@ fi # Build a new-libstdc++ system (ie libstdc++-v3) echo $ac_n "checking for libstdc++ to install""... $ac_c" 1>&6 -echo "configure:9493: checking for libstdc++ to install" >&5 +echo "configure:9508: checking for libstdc++ to install" >&5 # Check whether --enable-libstdcxx-v3 or --disable-libstdcxx-v3 was given. if test "${enable_libstdcxx_v3+set}" = set; then enableval="$enable_libstdcxx_v3" @@ -9513,7 +9528,7 @@ EOF echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:9517: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:9532: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" diff --git a/gcc/configure.in b/gcc/configure.in index 9090db896d6..ff55d73e53e 100644 --- a/gcc/configure.in +++ b/gcc/configure.in @@ -3486,6 +3486,11 @@ changequote([,])dnl xm_file="sparc/xm-sysv4-64.h sparc/xm-sol2.h" xm_defines="USG POSIX" tmake_file="sparc/t-sol2 sparc/t-sol2-64" + if test x$gnu_ld = xyes; then + tmake_file="$tmake_file sparc/t-slibgcc" + else + tmake_file="$tmake_file sparc/t-slibgcc-sld" + fi xmake_file=sparc/x-sysv4 extra_parts="crt1.o crti.o crtn.o gcrt1.o crtbegin.o crtend.o" float_format=none @@ -3508,6 +3513,11 @@ changequote([,])dnl xm_defines="USG POSIX" tm_file="sparc/sol2.h sparc/hal.h" tmake_file="sparc/t-halos sparc/t-sol2" + if test x$gnu_ld = xyes; then + tmake_file="$tmake_file sparc/t-slibgcc" + else + tmake_file="$tmake_file sparc/t-slibgcc-sld" + fi xmake_file=sparc/x-sysv4 extra_parts="crt1.o crti.o crtn.o gmon.o crtbegin.o crtend.o" case $machine in @@ -3532,6 +3542,11 @@ changequote([,])dnl xm_file="sparc/xm-sysv4.h sparc/xm-sol2.h" xm_defines="USG POSIX" tmake_file=sparc/t-sol2 + if test x$gnu_ld = xyes; then + tmake_file="$tmake_file sparc/t-slibgcc" + else + tmake_file="$tmake_file sparc/t-slibgcc-sld" + fi xmake_file=sparc/x-sysv4 extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o" # At the moment, 32-to-64 cross compilation doesn't work. diff --git a/gcc/mklibgcc.in b/gcc/mklibgcc.in index 43dac4f75b3..6e7b061946e 100644 --- a/gcc/mklibgcc.in +++ b/gcc/mklibgcc.in @@ -23,8 +23,8 @@ # LIBGCC # MULTILIBS # EXTRA_MULTILIB_PARTS +# SHLIB_EXT # SHLIB_LINK -# SHLIB_LIBS # SHLIB_MULTILIB # SHLIB_MKMAP # SHLIB_MAPFILES @@ -286,12 +286,12 @@ for ml in $MULTILIBS; do if [ "$SHLIB_LINK" -a "$SHLIB_MKMAP" -a -z "$mapfile" ]; then mapfile="libgcc.map" - shlib_deps="$shlib_deps $mapfile" echo "" echo "${mapfile}: $SHLIB_MKMAP $SHLIB_MAPFILES $libgcc_objs" echo ' { $(NM_FOR_TARGET) -pg'" $libgcc_objs; echo %%; cat $SHLIB_MAPFILES; } | "'$(AWK)'" -f $SHLIB_MKMAP > "'tmp-$@' echo ' mv tmp-$@ $@' fi + shlib_deps="$shlib_deps $mapfile" # Depend on EXTRA_MULTILIB_PARTS, since that's where crtbegin/end # usually are put in a true multilib situation. @@ -315,13 +315,23 @@ for ml in $MULTILIBS; do shlib_base_name=libgcc_s_`echo $dir | sed s,/,_,g` fi echo "" - echo "${dir}/${shlib_base_name}.so: $shlib_deps" - echo " $SHLIB_LINK $flags -o ${shlib_base_name}.so $libgcc_objs $SHLIB_LIBS" | sed "s/@shlib_base_name@/$shlib_base_name/g" + echo "${dir}/${shlib_base_name}${SHLIB_EXT}: $shlib_deps" + echo " $SHLIB_LINK" \ + | sed -e "s%@multilib_flags@%$flags%g" \ + -e "s%@multilib_dir@%$dir%g" \ + -e "s%@shlib_objs@%$libgcc_objs%g" \ + -e "s%@shlib_base_name@%$shlib_base_name%g" \ + -e "s%@shlib_map_file@%$mapfile%g" elif [ "$SHLIB_MULTILIB" = "$dir" ]; then shlib_base_name="libgcc_s"; echo "" - echo "${shlib_base_name}.so: $shlib_deps" - echo " $SHLIB_LINK $flags -o ${shlib_base_name}.so $libgcc_objs $SHLIB_LIBS" | sed "s/@shlib_base_name@/$shlib_base_name/g" + echo "${shlib_base_name}${SHLIB_EXT}: $shlib_deps" + echo " $SHLIB_LINK" \ + | sed -e "s%@multilib_flags@%$flags%g" \ + -e "s%@multilib_dir@%$dir%g" \ + -e "s%@shlib_objs@%$libgcc_objs%g" \ + -e "s%@shlib_base_name@%$shlib_base_name%g" \ + -e "s%@shlib_map_file@%$mapfile%g" fi fi done @@ -359,15 +369,10 @@ for ml in $MULTILIBS; do else suff=_`echo $dir | sed s,/,_,g` fi - all="$all ${dir}/libgcc_s${suff}.so" + all="$all ${dir}/libgcc_s${suff}${SHLIB_EXT}" elif [ "$SHLIB_MULTILIB" = "$dir" ]; then - all="$all libgcc_s.so" + all="$all libgcc_s${SHLIB_EXT}" fi - if [ "$dir" = "." ]; then - suff=""; - else - suff=_`echo $dir | sed s,/,_,g` - fi fi done -- 2.11.0