+2013-09-04 Joseph Myers <joseph@codesourcery.com>
+
+ * 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 <will.newton@linaro.org>
* benchtests/bench-timing.h (TIMING_PRINT_MEAN): New macro.
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
$(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 \
$(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)
# 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)
) > $@T
mv -f $@T $@
endif # avoid-generated
-endif # $(versioning) = yes
+endif # $(build-shared) = yes
endif # sysd-sorted-done
# Generate .dT files as we compile.
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))))
$(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
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.
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
static-libgcc = @libc_cv_gcc_static_libgcc@
-versioning = @VERSIONING@
oldest-abi = @oldest_abi@
exceptions = @exceptions@
multi-arch = @multi_arch@
ASFLAGS_config
libc_cv_Bgroup
libc_cv_cc_with_libunwind
-VERSIONING
BISON
INSTALL_INFO
PERL
enable_sanity_checks
enable_shared
enable_profile
-enable_versioning
enable_oldest_abi
enable_hardcoded_path_in_tests
enable_stackguard_randomization
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
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 :
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 <<EOF
-${libc_cv_dot_text}
-_sym:
-.symver _sym,sym@VERS
-EOF
-if ${CC-cc} -c $ASFLAGS conftest.s 1>&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 <<EOF
-${libc_cv_dot_text}
-_sym:
-.symver _sym,sym@VERS
-EOF
- cat > conftest.map <<EOF
-VERS_1 {
- global: sym;
-};
-
-VERS_2 {
- global: sym;
-} VERS_1;
-EOF
- if ${CC-cc} -c $ASFLAGS conftest.s 1>&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 :
[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],
AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
fi
-AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
-[cat > conftest.s <<EOF
-${libc_cv_dot_text}
-_sym:
-.symver _sym,sym@VERS
-EOF
-if ${CC-cc} -c $ASFLAGS conftest.s 1>&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 <<EOF
-${libc_cv_dot_text}
-_sym:
-.symver _sym,sym@VERS
-EOF
- cat > conftest.map <<EOF
-VERS_1 {
- global: sym;
-};
-
-VERS_2 {
- global: sym;
-} VERS_1;
-EOF
- if ${CC-cc} -c $ASFLAGS conftest.s 1>&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 <<EOF
include ../Makeconfig
-ifeq ($(versioning),yes)
+ifeq ($(build-shared),yes)
libdl-routines += dlopenold
libdl-shared-only-routines := dlopenold dlfcn
endif
exit (1);
}
-#ifdef DO_VERSIONING
if (dlvsym (handle2, "_dlfcn_hook", "GLIBC_PRIVATE") == NULL)
{
fprintf (out, "dlvsym: %s\n", dlerror ());
exit (1);
}
-#endif
void *(*dlsymfn) (void *, const char *);
dlsymfn = dlsym (handle2, "dlsym");
exit (1);
}
-#ifdef DO_VERSIONING
if (dlvsym (handle2, "_dlfcn_hook", "GLIBC_PRIVATE") == NULL)
{
printf ("dlvsym: %s\n", dlerror ());
exit (1);
}
-#endif
void *(*dlsymfn) (void *, const char *);
dlsymfn = dlsym (handle2, "dlsym");
generated := trusted-dirs.h trusted-dirs.st for-renamed/renamed.so
generated-dirs := for-renamed
-ifeq ($(versioning),yes)
+ifeq ($(build-shared),yes)
ld-map = $(common-objpfx)ld.map
endif
$(build-extra-lib)
endif
-ifeq ($(versioning),yes)
+ifeq ($(build-shared),yes)
# Add the version script to the dependencies of the shared library.
$(objpfx)$(lib).so: $(firstword $($(lib)-map) \
$(addprefix $(common-objpfx), \
routines += hurdmalloc
# Binary compatibility for libc.so.0.2[GLIBC_2.0].
-ifeq ($(versioning),yes)
+ifeq ($(build-shared),yes)
routines += compat-20
endif
/* XXX Remove this alias when we bump the libc soname. */
-#if defined SHARED && DO_VERSIONING
+#ifdef SHARED
weak_alias (geteuids, __getuids)
#endif
past the last element in SET. */
#define symbol_set_end_p(set, ptr) ((ptr) >= (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) \
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))
#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 <abi-versions.h> /* header generated by abi-versions.awk */
-#endif
+#ifdef SHARED
-#if defined SHARED && defined DO_VERSIONING
+# include <abi-versions.h>
/* 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
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
aux := fileops genops stdfiles stdio strops
-ifeq ($(versioning),yes)
+ifeq ($(build-shared),yes)
aux += oldfileops oldstdfiles
endif
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
+2013-09-04 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/cancellation.S
+ [SHARED && DO_VERSIONING && !NO_HIDDEN]: Change conditional to
+ [SHARED && !NO_HIDDEN].
+
2013-09-03 Siddhesh Poyarekar <siddhesh@redhat.com>
[BZ #15921]
#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
/* 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 <shlib-compat.h>
compat_symbol (libc, _res, _res, GLIBC_2_0);
#endif
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 \
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
#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);
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) \
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
# 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
/* 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 <shlib-compat.h>
compat_symbol (libc, __divdi3, __divdi3, GLIBC_2_0);
compat_symbol (libc, __moddi3, __moddi3, GLIBC_2_0);