diff --git a/ChangeLog b/ChangeLog index 28120a581c..96c2c93949 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,55 @@ +2013-09-04 Joseph Myers + + * configure.in (--enable-versioning): Remove configure option. + (libc_cv_asm_symver_directive): Remove configure test. + (libc_cv_ld_version_script_option): Likewise. + (VERSIONING): Remove variable and AC_SUBST. + (DO_VERSIONING): Remove AC_DEFINE. + * configure: Regenerated. + * config.h.in (DO_VERSIONING): Remove macro. + * Makerules [$(versioning) = yes]: Change conditionals to + [$(build-shared) = yes]. + * config.make.in (versioning): Remove variable. + * dlfcn/Makefile [$(versioning) = yes]: Change conditionals to + [$(build-shared) = yes]. + * dlfcn/modstatic2.c (test) [DO_VERSIONING]: Remove conditional. + * dlfcn/tststatic2.c (main) [DO_VERSIONING]: Likewise. + * elf/Makefile [$(versioning) = yes]: Change conditionals to + [$(build-shared) = yes]. + * extra-lib.mk [$(versioning) = yes]: Likewise. + * hurd/Makefile [$(versioning) = yes]: Likewise. + * hurd/geteuids.c [SHARED && DO_VERSIONING]: Change conditional to + [SHARED]. + * include/libc-symbols.h [DO_VERSIONING]: Change conditional to + [SHARED]. + [SHARED && DO_VERSIONING && !NO_HIDDEN]: Change conditional to + [SHARED && !NO_HIDDEN]. + * include/shlib-compat.h [DO_VERSIONING]: Change conditional to + [SHARED]. + [SHARED && DO_VERSIONING]: Likewise.. + * libio/Makefile [$(versioning) = yes]: Change conditionals to + [$(build-shared) = yes]. + * manual/install.texi (--disable-versioning): Remove + documentation. + * INSTALL: Regenerated. + * resolv/res_libc.c [SHARED && DO_VERSIONING]: Change conditional + to [SHARED]. + * sunrpc/Makefile [$(versioning) = yes]: Change conditional to + [$(build-shared) = yes]. + * sysdeps/gnu/Makefile [$(versioning) = yes]: Likewise. + * sysdeps/i386/i686/multiarch/strstr-c.c + [SHARED && DO_VERSIONING && !NO_HIDDEN]: Change conditional to + [SHARED && !NO_HIDDEN]. + * sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h + [SHARED && DO_VERSIONING]: Change conditional to [SHARED]. + * sysdeps/powerpc/powerpc32/dl-machine.c + [SHARED && !(DO_VERSIONING - 0)]: Remove conditional error. + * sysdeps/powerpc/powerpc32/sysdep.h + [SHARED && DO_VERSIONING && PIC && !NO_HIDDEN]: Change conditional + to [SHARED && PIC && !NO_HIDDEN]. + * sysdeps/wordsize-32/divdi3.c [SHARED && DO_VERSIONING]: Change + conditional to [SHARED]. + 2013-09-04 Will Newton * benchtests/bench-timing.h (TIMING_PRINT_MEAN): New macro. diff --git a/INSTALL b/INSTALL index 2c61704b8f..211fd9174c 100644 --- a/INSTALL +++ b/INSTALL @@ -111,11 +111,6 @@ will be used, and CFLAGS sets optimization options for the compiler. Don't build libraries with profiling information. You may want to use this option if you don't plan to do profiling. -`--disable-versioning' - Don't compile the shared libraries with symbol version information. - Doing this will make the resulting library incompatible with old - binaries, so it's not recommended. - `--enable-static-nss' Compile static versions of the NSS (Name Service Switch) libraries. This is not recommended because it defeats the purpose of NSS; a diff --git a/Makerules b/Makerules index 03eafb036f..cca3f82799 100644 --- a/Makerules +++ b/Makerules @@ -93,7 +93,7 @@ before-compile := $(filter $(common-objpfx)mach% $(common-objpfx)hurd%,\ $(before-compile)) # Even before that, we need abi-versions.h which is generated right here. -ifeq ($(versioning),yes) +ifeq ($(build-shared),yes) ifndef avoid-generated before-compile := $(common-objpfx)abi-versions.h $(before-compile) $(common-objpfx)abi-versions.h: $(..)scripts/abi-versions.awk \ @@ -106,7 +106,7 @@ $(common-objpfx)%.latest: $(common-objpfx)abi-versions.h $(common-objpfx)abi-versions.h > $@T mv -f $@T $@ endif # avoid-generated -endif # $(versioning) = yes +endif # $(build-shared) = yes ifndef avoid-generated before-compile := $(common-objpfx)libc-abis.h $(before-compile) @@ -283,7 +283,7 @@ endif # Generate version maps, but wait until sysdep-subdirs is known ifeq ($(sysd-sorted-done),t) -ifeq ($(versioning),yes) +ifeq ($(build-shared),yes) -include $(common-objpfx)sysd-versions $(addprefix $(common-objpfx),$(version-maps)): $(common-objpfx)sysd-versions common-generated += $(version-maps) @@ -324,7 +324,7 @@ $(common-objpfx)sysd-versions: $(common-objpfx)Versions.all \ ) > $@T mv -f $@T $@ endif # avoid-generated -endif # $(versioning) = yes +endif # $(build-shared) = yes endif # sysd-sorted-done # Generate .dT files as we compile. @@ -400,9 +400,9 @@ elide-routines.og += $(shared-only-routines) ifeq (yes,$(build-shared)) -# Reference map file only when versioning is selected and a map file name +# Reference map file only when shared libraries are built and a map file name # is given. -ifeq ($(versioning),yes) +ifeq ($(build-shared),yes) map-file = $(firstword $($(@F:.so=-map)) \ $(addprefix $(common-objpfx), \ $(filter $(@F:.so=.map),$(version-maps)))) @@ -575,7 +575,7 @@ $(common-objpfx)libc.so: $(elfobjdir)/soinit.os \ $(elfobjdir)/interp.os $(elfobjdir)/ld.so \ $(shlib-lds) $(build-shlib) -ifeq ($(versioning),yes) +ifeq ($(build-shared),yes) $(common-objpfx)libc.so: $(common-objpfx)libc.map endif common-generated += libc.so libc_pic.os @@ -1132,7 +1132,7 @@ endif CPPFLAGS-nonlib = -DNOT_IN_libc=1 -ifeq ($(versioning),yes) +ifeq ($(build-shared),yes) # Generate normalized lists of symbols, versions, and data sizes. # This is handy for checking against existing library binaries. diff --git a/config.h.in b/config.h.in index a85f131255..30568e3af6 100644 --- a/config.h.in +++ b/config.h.in @@ -57,9 +57,6 @@ directive. */ #undef HAVE_ASM_POPSECTION_DIRECTIVE -/* Define if versioning of the library is wanted. */ -#undef DO_VERSIONING - /* Defined to the oldest ABI we support, like 2.1. */ #undef GLIBC_OLDEST_ABI diff --git a/config.make.in b/config.make.in index 7b04568a22..b5308d85b8 100644 --- a/config.make.in +++ b/config.make.in @@ -67,7 +67,6 @@ output-format = @libc_cv_output_format@ static-libgcc = @libc_cv_gcc_static_libgcc@ -versioning = @VERSIONING@ oldest-abi = @oldest_abi@ exceptions = @exceptions@ multi-arch = @multi_arch@ diff --git a/configure b/configure index afe7821057..2122583d70 100755 --- a/configure +++ b/configure @@ -613,7 +613,6 @@ libc_cv_z_combreloc ASFLAGS_config libc_cv_Bgroup libc_cv_cc_with_libunwind -VERSIONING BISON INSTALL_INFO PERL @@ -739,7 +738,6 @@ with_default_link enable_sanity_checks enable_shared enable_profile -enable_versioning enable_oldest_abi enable_hardcoded_path_in_tests enable_stackguard_randomization @@ -1392,8 +1390,6 @@ Optional Features: in special situations) [default=yes] --enable-shared build shared library [default=yes if GNU ld] --enable-profile build profiled library [default=no] - --disable-versioning do not include versioning information in the library - objects [default=yes if supported] --enable-oldest-abi=ABI configure the oldest ABI supported [e.g. 2.2] [default=glibc default] --enable-hardcoded-path-in-tests @@ -3432,13 +3428,6 @@ else profile=no fi -# Check whether --enable-versioning was given. -if test "${enable_versioning+set}" = set; then : - enableval=$enable_versioning; enable_versioning=$enableval -else - enable_versioning=yes -fi - # Check whether --enable-oldest-abi was given. if test "${enable_oldest_abi+set}" = set; then : @@ -5631,90 +5620,6 @@ if test $libc_cv_asm_unique_object = yes; then fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for .symver assembler directive" >&5 -$as_echo_n "checking for .symver assembler directive... " >&6; } -if ${libc_cv_asm_symver_directive+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat > conftest.s <&5 2>&5; then - libc_cv_asm_symver_directive=yes -else - libc_cv_asm_symver_directive=no -fi -rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_symver_directive" >&5 -$as_echo "$libc_cv_asm_symver_directive" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld --version-script" >&5 -$as_echo_n "checking for ld --version-script... " >&6; } -if ${libc_cv_ld_version_script_option+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test $libc_cv_asm_symver_directive = yes; then - cat > conftest.s < conftest.map <&5 2>&5; then - if { ac_try='${CC-cc} $CFLAGS $LDFLAGS -shared - -o conftest.so conftest.o - -nostartfiles -nostdlib - -Wl,--version-script,conftest.map - 1>&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; - then - libc_cv_ld_version_script_option=yes - else - libc_cv_ld_version_script_option=no - fi - else - libc_cv_ld_version_script_option=no - fi -else - libc_cv_ld_version_script_option=no -fi -rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ld_version_script_option" >&5 -$as_echo "$libc_cv_ld_version_script_option" >&6; } -if test $shared != no && - test $libc_cv_asm_symver_directive = yes && - test $libc_cv_ld_version_script_option = yes && - test $enable_versioning = yes; then - VERSIONING=yes - $as_echo "#define DO_VERSIONING 1" >>confdefs.h - -else - VERSIONING=no -fi - - -if test $shared != no && test $VERSIONING = no; then - echo "\ -*** WARNING: You should not compile GNU libc without versioning. Not using -*** versioning will introduce incompatibilities so that old binaries -*** will not run anymore. -*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)." -fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for .previous assembler directive" >&5 $as_echo_n "checking for .previous assembler directive... " >&6; } if ${libc_cv_asm_previous_directive+:} false; then : diff --git a/configure.in b/configure.in index 9172ad10e4..be1330850c 100644 --- a/configure.in +++ b/configure.in @@ -150,11 +150,6 @@ AC_ARG_ENABLE([profile], [build profiled library @<:@default=no@:>@]), [profile=$enableval], [profile=no]) -AC_ARG_ENABLE([versioning], - AC_HELP_STRING([--disable-versioning], - [do not include versioning information in the library objects @<:@default=yes if supported@:>@]), - [enable_versioning=$enableval], - [enable_versioning=yes]) AC_ARG_ENABLE([oldest-abi], AC_HELP_STRING([--enable-oldest-abi=ABI], @@ -1204,70 +1199,6 @@ if test $libc_cv_asm_unique_object = yes; then AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT) fi -AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive, -[cat > conftest.s <&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then - libc_cv_asm_symver_directive=yes -else - libc_cv_asm_symver_directive=no -fi -rm -f conftest*]) -AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl -if test $libc_cv_asm_symver_directive = yes; then - cat > conftest.s < conftest.map <&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then - if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared - -o conftest.so conftest.o - -nostartfiles -nostdlib - -Wl,--version-script,conftest.map - 1>&AS_MESSAGE_LOG_FD]); - then - libc_cv_ld_version_script_option=yes - else - libc_cv_ld_version_script_option=no - fi - else - libc_cv_ld_version_script_option=no - fi -else - libc_cv_ld_version_script_option=no -fi -rm -f conftest*]) -if test $shared != no && - test $libc_cv_asm_symver_directive = yes && - test $libc_cv_ld_version_script_option = yes && - test $enable_versioning = yes; then - VERSIONING=yes - AC_DEFINE(DO_VERSIONING) -else - VERSIONING=no -fi -AC_SUBST(VERSIONING) - -if test $shared != no && test $VERSIONING = no; then - echo "\ -*** WARNING: You should not compile GNU libc without versioning. Not using -*** versioning will introduce incompatibilities so that old binaries -*** will not run anymore. -*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)." -fi AC_CACHE_CHECK(for .previous assembler directive, libc_cv_asm_previous_directive, [dnl cat > conftest.s <= (void *const *) &__stop_##set) -#if DO_VERSIONING +#ifdef SHARED # define symbol_version(real, name, version) \ _symbol_version(real, name, version) # define default_symbol_version(real, name, version) \ @@ -466,7 +466,7 @@ for linking") versioned_symbol (libc, __real_foo, foo, GLIBC_2_1); libc_hidden_ver (__real_foo, foo) */ -#if defined SHARED && defined DO_VERSIONING && !defined NO_HIDDEN +#if defined SHARED && !defined NO_HIDDEN # ifndef __ASSEMBLER__ # define __hidden_proto_hiddenattr(attrs...) \ __attribute__ ((visibility ("hidden"), ##attrs)) diff --git a/include/shlib-compat.h b/include/shlib-compat.h index 979b5929e3..955c6aeea2 100644 --- a/include/shlib-compat.h +++ b/include/shlib-compat.h @@ -19,13 +19,9 @@ #ifndef _SHLIB_COMPAT_H #define _SHLIB_COMPAT_H 1 -#if defined DO_VERSIONING -/* Since there is just one set of .d files generated, we need to - include this unconditionally to have the dependency noticed properly. */ -#include /* header generated by abi-versions.awk */ -#endif +#ifdef SHARED -#if defined SHARED && defined DO_VERSIONING +# include /* The file abi-versions.h (generated by scripts/abi-versions.awk) defines symbols like `ABI_libm_GLIBC_2_0' for each version set in the source diff --git a/libio/Makefile b/libio/Makefile index e15cd40911..b2f7627434 100644 --- a/libio/Makefile +++ b/libio/Makefile @@ -70,7 +70,7 @@ test-srcs = test-freopen all: # Make this the default target; it will be defined in Rules. -ifeq ($(versioning),yes) +ifeq ($(build-shared),yes) routines += oldiofopen oldiofdopen oldiofclose oldiopopen oldpclose \ oldtmpfile oldiofgetpos oldiofgetpos64 oldiofsetpos \ oldiofsetpos64 @@ -165,7 +165,7 @@ generated = tst-fopenloc.mtrace tst-fopenloc.check aux := fileops genops stdfiles stdio strops -ifeq ($(versioning),yes) +ifeq ($(build-shared),yes) aux += oldfileops oldstdfiles endif diff --git a/manual/install.texi b/manual/install.texi index 4575d22319..2ac0104ca6 100644 --- a/manual/install.texi +++ b/manual/install.texi @@ -138,11 +138,6 @@ linker. Don't build libraries with profiling information. You may want to use this option if you don't plan to do profiling. -@item --disable-versioning -Don't compile the shared libraries with symbol version information. -Doing this will make the resulting library incompatible with old -binaries, so it's not recommended. - @item --enable-static-nss Compile static versions of the NSS (Name Service Switch) libraries. This is not recommended because it defeats the purpose of NSS; a program diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 7511f701ec..90824aec95 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,9 @@ +2013-09-04 Joseph Myers + + * sysdeps/unix/sysv/linux/x86_64/cancellation.S + [SHARED && DO_VERSIONING && !NO_HIDDEN]: Change conditional to + [SHARED && !NO_HIDDEN]. + 2013-09-03 Siddhesh Poyarekar [BZ #15921] diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S b/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S index 2cc84c189b..b4e4dcf90c 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S @@ -22,7 +22,7 @@ #include "lowlevellock.h" #ifdef IS_IN_libpthread -# if defined SHARED && defined DO_VERSIONING && !defined NO_HIDDEN +# if defined SHARED && !defined NO_HIDDEN # define __pthread_unwind __GI___pthread_unwind # endif #else diff --git a/resolv/res_libc.c b/resolv/res_libc.c index 0b37f46aea..ee3fa2114b 100644 --- a/resolv/res_libc.c +++ b/resolv/res_libc.c @@ -131,7 +131,7 @@ extern __thread struct __res_state *__libc_resp /* We declare this with compat_symbol so that it's not visible at link time. Programs must use the accessor functions. */ -#if defined SHARED && defined DO_VERSIONING +#ifdef SHARED # include compat_symbol (libc, _res, _res, GLIBC_2_0); #endif diff --git a/sunrpc/Makefile b/sunrpc/Makefile index 51a58aac42..9b59796b10 100644 --- a/sunrpc/Makefile +++ b/sunrpc/Makefile @@ -64,7 +64,7 @@ ifeq ($(link-obsolete-rpc),yes) headers += $(headers-in-tirpc) $(headers-not-in-tirpc) endif -ifeq ($(versioning),yes) +ifeq ($(build-shared),yes) need-export-routines := auth_des auth_unix clnt_gen clnt_perr clnt_tcp \ clnt_udp get_myaddr key_call netname pm_getport \ rpc_thread svc svc_tcp svc_udp xcrypt xdr_array xdr \ diff --git a/sysdeps/gnu/Makefile b/sysdeps/gnu/Makefile index 6695cbf0cf..b3166967cc 100644 --- a/sysdeps/gnu/Makefile +++ b/sysdeps/gnu/Makefile @@ -29,7 +29,7 @@ ifeq ($(subdir),stdio-common) errlist-c = $(firstword $(wildcard $(addsuffix /errlist.c,$(sysdirs) .))) -ifeq ($(versioning),yes) +ifeq ($(build-shared),yes) $(objpfx)errlist-compat.c: $(errlist-c) $(..)sysdeps/gnu/errlist-compat.awk \ $(common-objpfx)Versions.v.i $(before-compile) else diff --git a/sysdeps/i386/i686/multiarch/strstr-c.c b/sysdeps/i386/i686/multiarch/strstr-c.c index 7516c7ffee..7b8794e9f0 100644 --- a/sysdeps/i386/i686/multiarch/strstr-c.c +++ b/sysdeps/i386/i686/multiarch/strstr-c.c @@ -4,7 +4,7 @@ #include "init-arch.h" #define STRSTR __strstr_ia32 -#if defined SHARED && defined DO_VERSIONING && !defined NO_HIDDEN +#if defined SHARED && !defined NO_HIDDEN #undef libc_hidden_builtin_def #define libc_hidden_builtin_def(name) \ __hidden_ver1 (__strstr_ia32, __GI_strstr, __strstr_ia32); diff --git a/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h b/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h index b0b863cba5..af861c11ea 100644 --- a/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h +++ b/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h @@ -10,7 +10,7 @@ SHLIB_COMPAT(lib, introduced, LONG_DOUBLE_COMPAT_VERSION) #define long_double_symbol(lib, local, symbol) \ long_double_symbol_1 (lib, local, symbol, LONG_DOUBLE_COMPAT_VERSION) -#if defined SHARED && defined DO_VERSIONING +#ifdef SHARED # define ldbl_hidden_def(local, name) libc_hidden_ver (local, name) # define ldbl_strong_alias(name, aliasname) \ strong_alias (name, __GL_##name##_##aliasname) \ diff --git a/sysdeps/powerpc/powerpc32/dl-machine.c b/sysdeps/powerpc/powerpc32/dl-machine.c index 188f72cdb7..3e7202d869 100644 --- a/sysdeps/powerpc/powerpc32/dl-machine.c +++ b/sysdeps/powerpc/powerpc32/dl-machine.c @@ -29,13 +29,6 @@ by _dl_sysdep_start via DL_PLATFORM_INIT. */ extern int __cache_line_size attribute_hidden; -/* Because ld.so is now versioned, these functions can be in their own file; - no relocations need to be done to call them. - Of course, if ld.so is not versioned... */ -#if defined SHARED && !(DO_VERSIONING - 0) -#error This will not work with versioning turned off, sorry. -#endif - /* Stuff for the PLT. */ #define PLT_INITIAL_ENTRY_WORDS 18 diff --git a/sysdeps/powerpc/powerpc32/sysdep.h b/sysdeps/powerpc/powerpc32/sysdep.h index 47d02a8048..78f54f91c4 100644 --- a/sysdeps/powerpc/powerpc32/sysdep.h +++ b/sysdeps/powerpc/powerpc32/sysdep.h @@ -99,8 +99,7 @@ GOT_LABEL: ; \ # define JUMPTARGET(name) name #endif -#if defined SHARED && defined DO_VERSIONING && defined PIC \ - && !defined NO_HIDDEN +#if defined SHARED && defined PIC && !defined NO_HIDDEN # undef HIDDEN_JUMPTARGET # define HIDDEN_JUMPTARGET(name) __GI_##name##@local #endif diff --git a/sysdeps/wordsize-32/divdi3.c b/sysdeps/wordsize-32/divdi3.c index 7898541eb0..fa122aa5fd 100644 --- a/sysdeps/wordsize-32/divdi3.c +++ b/sysdeps/wordsize-32/divdi3.c @@ -333,7 +333,7 @@ strong_alias (__umoddi3, __umoddi3_internal) /* We declare these with compat_symbol so that they are not visible at link time. Programs must use the functions from libgcc. */ -#if defined SHARED && defined DO_VERSIONING +#ifdef SHARED # include compat_symbol (libc, __divdi3, __divdi3, GLIBC_2_0); compat_symbol (libc, __moddi3, __moddi3, GLIBC_2_0);