diff options
35 files changed, 166 insertions, 288 deletions
@@ -1,5 +1,40 @@ 2006-10-27 Ulrich Drepper <drepper@redhat.com> + * configure.in: Require assembler support for visibility, compiler + support for visibility and aliases, linker support for various -z + options. + * Makeconfig: Remove conditional code which now is unnecessary. + * config.h.in: Likewise. + * config.make.in: Likewise. + * dlfcn/Makefile: Likewise. + * elf/Makefile: Likewise. + * elf/dl-load.c: Likewise. + * elf/rtld.c: Likewise. + * include/libc-symbols.h: Likewise. + * include/stdio.h: Likewise. + * io/Makefile: Likewise. + * io/fstat.c: Likewise. + * io/fstat64.c: Likewise. + * io/fstatat.c: Likewise. + * io/fstatat64.c: Likewise. + * io/lstat.c: Likewise. + * io/lstat64.c: Likewise. + * io/mknod.c: Likewise. + * io/mknodat.c: Likewise. + * io/stat.c: Likewise. + * io/stat64.c: Likewise. + * libio/stdio.c: Likewise. + * nscd/Makefile: Likewise. + * stdlib/Makefile: Likewise. + * stdlib/atexit.c: Likewise. + * sysdeps/generic/ldsodefs.h: Likewise. + * sysdeps/i386/dl-machine.h: Likewise. + * sysdeps/i386/sysdep.h: Likewise. + * sysdeps/i386/i686/memcmp.S: Likewise. + * sysdeps/powerpc/powerpc32/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise. + * Makerules: USE_TLS support is now default. * tls.make.c: Likewise. * csu/Versions: Likewise. diff --git a/Makeconfig b/Makeconfig index 5a1aebccff..349f94d9ac 100644 --- a/Makeconfig +++ b/Makeconfig @@ -407,11 +407,9 @@ LDFLAGS.so += $(combreloc-LDFLAGS) LDFLAGS-rtld += $(combreloc-LDFLAGS) endif -ifeq (yes,$(have-z-relro)) relro-LDFLAGS = -Wl,-z,relro LDFLAGS.so += $(relro-LDFLAGS) LDFLAGS-rtld += $(relro-LDFLAGS) -endif ifeq (yes,$(have-hash-style)) # For the time being we unconditionally use 'both'. At some time we diff --git a/config.h.in b/config.h.in index da973f6a5d..a46e405269 100644 --- a/config.h.in +++ b/config.h.in @@ -120,23 +120,6 @@ /* Define if the linker supports the -z combreloc option. */ #undef HAVE_Z_COMBRELOC -/* Define if the assembler supported .protected. */ -#undef HAVE_PROTECTED - -/* Define if the assembler supported .hidden. */ -#undef HAVE_HIDDEN - -/* Define if the compiler supports __attribute__ ((visibility (...))). */ -#undef HAVE_VISIBILITY_ATTRIBUTE - -/* Define if the compiler doesn't support __attribute__ ((visibility (...))) - together with __asm__ redirection properly. */ -#undef HAVE_BROKEN_VISIBILITY_ATTRIBUTE - -/* Define if the compiler doesn't support __attribute__ ((alias (...))) - together with __asm__ redirection properly. */ -#undef HAVE_BROKEN_ALIAS_ATTRIBUTE - /* Define if _rtld_local structure should be forced into .sdata section. */ #undef HAVE_SDATA_SECTION @@ -188,9 +171,6 @@ /* Defined if forced unwind support is available. */ #undef HAVE_FORCED_UNWIND -/* Defined if the linker supports the -z relro option. */ -#undef HAVE_Z_RELRO - /* Defined of libidn is available. */ #undef HAVE_LIBIDN diff --git a/config.make.in b/config.make.in index 677da3a891..7aa9c1c12d 100644 --- a/config.make.in +++ b/config.make.in @@ -38,14 +38,9 @@ c++-sysincludes = @CXX_SYSINCLUDES@ all-warnings = @all_warnings@ elf = @elf@ -have-protected = @libc_cv_asm_protected_directive@ -have-z-nodelete = @libc_cv_z_nodelete@ -have-z-nodlopen = @libc_cv_z_nodlopen@ -have-z-initfirst = @libc_cv_z_initfirst@ have-z-combreloc = @libc_cv_z_combreloc@ have-z-execstack = @libc_cv_z_execstack@ have-initfini = @libc_cv_have_initfini@ -have-z-relro = @libc_cv_z_relro@ have-Bgroup = @libc_cv_Bgroup@ have-as-needed = @libc_cv_as_needed@ libgcc_s_suffix = @libc_cv_libgcc_s_suffix@ @@ -313,7 +313,7 @@ ac_includes_default="\ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi bindnow force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os subdirs add_ons add_on_subdirs base_machine submachine sysnames sysdeps_add_ons INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF SYSINCLUDES CXX_SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_cc_with_libunwind libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_z_relro libc_cv_Bgroup libc_cv_libgcc_s_suffix libc_cv_as_needed ASFLAGS_config libc_cv_z_combreloc libc_cv_z_execstack libc_cv_fpie libc_cv_hashstyle fno_unit_at_a_time libc_cv_ssp libc_cv_have_initfini no_whole_archive exceptions LIBGD have_libaudit have_libcap have_selinux EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi bindnow force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os subdirs add_ons add_on_subdirs base_machine submachine sysnames sysdeps_add_ons INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF SYSINCLUDES CXX_SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO BISON VERSIONING libc_cv_cc_with_libunwind libc_cv_Bgroup libc_cv_libgcc_s_suffix libc_cv_as_needed ASFLAGS_config libc_cv_z_combreloc libc_cv_z_execstack libc_cv_fpie libc_cv_hashstyle fno_unit_at_a_time libc_cv_ssp libc_cv_have_initfini no_whole_archive exceptions LIBGD have_libaudit have_libcap have_selinux EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -5339,22 +5339,15 @@ EOF (exit $ac_status); }; }; then libc_cv_asm_protected_directive=yes else - libc_cv_asm_protected_directive=no + { { echo "$as_me:$LINENO: error: assembler support for symbol visibility is required" >&5 +echo "$as_me: error: assembler support for symbol visibility is required" >&2;} + { (exit 1); exit 1; }; } fi rm -f conftest* fi echo "$as_me:$LINENO: result: $libc_cv_asm_protected_directive" >&5 echo "${ECHO_T}$libc_cv_asm_protected_directive" >&6 - cat >>confdefs.h <<\_ACEOF -#define HAVE_PROTECTED 1 -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define HAVE_HIDDEN 1 -_ACEOF - - if test $libc_cv_asm_protected_directive = yes; then echo "$as_me:$LINENO: checking whether __attribute__((visibility())) is supported" >&5 echo $ECHO_N "checking whether __attribute__((visibility())) is supported... $ECHO_C" >&6 @@ -5383,11 +5376,10 @@ EOF fi echo "$as_me:$LINENO: result: $libc_cv_visibility_attribute" >&5 echo "${ECHO_T}$libc_cv_visibility_attribute" >&6 - if test $libc_cv_visibility_attribute = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_VISIBILITY_ATTRIBUTE 1 -_ACEOF - + if test $libc_cv_visibility_attribute != yes; then + { { echo "$as_me:$LINENO: error: compiler support for visibility attribute is required" >&5 +echo "$as_me: error: compiler support for visibility attribute is required" >&2;} + { (exit 1); exit 1; }; } fi fi @@ -5419,10 +5411,9 @@ fi echo "$as_me:$LINENO: result: $libc_cv_broken_visibility_attribute" >&5 echo "${ECHO_T}$libc_cv_broken_visibility_attribute" >&6 if test $libc_cv_broken_visibility_attribute = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_BROKEN_VISIBILITY_ATTRIBUTE 1 -_ACEOF - + { { echo "$as_me:$LINENO: error: working compiler support for visibility attribute is required" >&5 +echo "$as_me: error: working compiler support for visibility attribute is required" >&2;} + { (exit 1); exit 1; }; } fi fi @@ -5457,10 +5448,9 @@ fi echo "$as_me:$LINENO: result: $libc_cv_broken_alias_attribute" >&5 echo "${ECHO_T}$libc_cv_broken_alias_attribute" >&6 if test $libc_cv_broken_alias_attribute = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_BROKEN_ALIAS_ATTRIBUTE 1 -_ACEOF - + { { echo "$as_me:$LINENO: error: working alias attribute support required" >&5 +echo "$as_me: error: working alias attribute support required" >&2;} + { (exit 1); exit 1; }; } fi if test $libc_cv_visibility_attribute = yes; then @@ -5572,14 +5562,15 @@ EOF then libc_cv_z_nodelete=yes else - libc_cv_z_nodelete=no + { { echo "$as_me:$LINENO: error: linker with -z nodelete support required" >&5 +echo "$as_me: error: linker with -z nodelete support required" >&2;} + { (exit 1); exit 1; }; } fi rm -f conftest* fi echo "$as_me:$LINENO: result: $libc_cv_z_nodelete" >&5 echo "${ECHO_T}$libc_cv_z_nodelete" >&6 - echo "$as_me:$LINENO: checking for -z nodlopen option" >&5 echo $ECHO_N "checking for -z nodlopen option... $ECHO_C" >&6 if test "${libc_cv_z_nodlopen+set}" = set; then @@ -5600,14 +5591,15 @@ EOF then libc_cv_z_nodlopen=yes else - libc_cv_z_nodlopen=no + { { echo "$as_me:$LINENO: error: linker with -z nodlopen support required" >&5 +echo "$as_me: error: linker with -z nodlopen support required" >&2;} + { (exit 1); exit 1; }; } fi rm -f conftest* fi echo "$as_me:$LINENO: result: $libc_cv_z_nodlopen" >&5 echo "${ECHO_T}$libc_cv_z_nodlopen" >&6 - echo "$as_me:$LINENO: checking for -z initfirst option" >&5 echo $ECHO_N "checking for -z initfirst option... $ECHO_C" >&6 if test "${libc_cv_z_initfirst+set}" = set; then @@ -5628,14 +5620,15 @@ EOF then libc_cv_z_initfirst=yes else - libc_cv_z_initfirst=no + { { echo "$as_me:$LINENO: error: linker with -z initfirst support required" >&5 +echo "$as_me: error: linker with -z initfirst support required" >&2;} + { (exit 1); exit 1; }; } fi rm -f conftest* fi echo "$as_me:$LINENO: result: $libc_cv_z_initfirst" >&5 echo "${ECHO_T}$libc_cv_z_initfirst" >&6 - echo "$as_me:$LINENO: checking for -z relro option" >&5 echo $ECHO_N "checking for -z relro option... $ECHO_C" >&6 if test "${libc_cv_z_relro+set}" = set; then @@ -5662,12 +5655,10 @@ else fi echo "$as_me:$LINENO: result: $libc_cv_z_relro" >&5 echo "${ECHO_T}$libc_cv_z_relro" >&6 - - if test $libc_cv_z_relro = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_Z_RELRO 1 -_ACEOF - + if test $libc_cv_z_relro != yes; then + { { echo "$as_me:$LINENO: error: linker with -z relro support required" >&5 +echo "$as_me: error: linker with -z relro support required" >&2;} + { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: checking for -Bgroup option" >&5 @@ -8510,12 +8501,7 @@ s,@PERL@,$PERL,;t t s,@INSTALL_INFO@,$INSTALL_INFO,;t t s,@BISON@,$BISON,;t t s,@VERSIONING@,$VERSIONING,;t t -s,@libc_cv_asm_protected_directive@,$libc_cv_asm_protected_directive,;t t s,@libc_cv_cc_with_libunwind@,$libc_cv_cc_with_libunwind,;t t -s,@libc_cv_z_nodelete@,$libc_cv_z_nodelete,;t t -s,@libc_cv_z_nodlopen@,$libc_cv_z_nodlopen,;t t -s,@libc_cv_z_initfirst@,$libc_cv_z_initfirst,;t t -s,@libc_cv_z_relro@,$libc_cv_z_relro,;t t s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t s,@libc_cv_libgcc_s_suffix@,$libc_cv_libgcc_s_suffix,;t t s,@libc_cv_as_needed@,$libc_cv_as_needed,;t t diff --git a/configure.in b/configure.in index 6a7e51d853..fb43804b1f 100644 --- a/configure.in +++ b/configure.in @@ -1259,12 +1259,9 @@ EOF if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then libc_cv_asm_protected_directive=yes else - libc_cv_asm_protected_directive=no + AC_MSG_ERROR(assembler support for symbol visibility is required) fi rm -f conftest*]) - AC_SUBST(libc_cv_asm_protected_directive) - AC_DEFINE(HAVE_PROTECTED) - AC_DEFINE(HAVE_HIDDEN) if test $libc_cv_asm_protected_directive = yes; then AC_CACHE_CHECK(whether __attribute__((visibility())) is supported, @@ -1283,8 +1280,8 @@ EOF fi rm -f conftest.[cs] ]) - if test $libc_cv_visibility_attribute = yes; then - AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE) + if test $libc_cv_visibility_attribute != yes; then + AC_MSG_ERROR(compiler support for visibility attribute is required) fi fi @@ -1307,7 +1304,7 @@ changequote([,])dnl rm -f conftest.c conftest.s ]) if test $libc_cv_broken_visibility_attribute = yes; then - AC_DEFINE(HAVE_BROKEN_VISIBILITY_ATTRIBUTE) + AC_MSG_ERROR(working compiler support for visibility attribute is required) fi fi @@ -1331,7 +1328,7 @@ EOF rm -f conftest.c conftest.s ]) if test $libc_cv_broken_alias_attribute = yes; then - AC_DEFINE(HAVE_BROKEN_ALIAS_ATTRIBUTE) + AC_MSG_ERROR(working alias attribute support required) fi if test $libc_cv_visibility_attribute = yes; then @@ -1403,10 +1400,9 @@ EOF then libc_cv_z_nodelete=yes else - libc_cv_z_nodelete=no + AC_MSG_ERROR(linker with -z nodelete support required) fi rm -f conftest*]) - AC_SUBST(libc_cv_z_nodelete) AC_CACHE_CHECK(for -z nodlopen option, libc_cv_z_nodlopen, [dnl @@ -1420,10 +1416,9 @@ EOF then libc_cv_z_nodlopen=yes else - libc_cv_z_nodlopen=no + AC_MSG_ERROR(linker with -z nodlopen support required) fi rm -f conftest*]) - AC_SUBST(libc_cv_z_nodlopen) AC_CACHE_CHECK(for -z initfirst option, libc_cv_z_initfirst, [dnl @@ -1437,10 +1432,9 @@ EOF then libc_cv_z_initfirst=yes else - libc_cv_z_initfirst=no + AC_MSG_ERROR(linker with -z initfirst support required) fi rm -f conftest*]) - AC_SUBST(libc_cv_z_initfirst) AC_CACHE_CHECK(for -z relro option, libc_cv_z_relro, [dnl @@ -1452,9 +1446,8 @@ EOF libc_cv_z_relro=yes fi fi]) - AC_SUBST(libc_cv_z_relro) - if test $libc_cv_z_relro = yes; then - AC_DEFINE(HAVE_Z_RELRO) + if test $libc_cv_z_relro != yes; then + AC_MSG_ERROR(linker with -z relro support required) fi AC_CACHE_CHECK(for -Bgroup option, diff --git a/dlfcn/Makefile b/dlfcn/Makefile index 63e7b31b2a..e8fbab2958 100644 --- a/dlfcn/Makefile +++ b/dlfcn/Makefile @@ -41,10 +41,7 @@ endif ifeq (yes,$(build-shared)) tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \ bug-dlopen1 bug-dlsym1 tst-dlinfo bug-atexit1 bug-atexit2 \ - bug-atexit3 -ifeq (yes,$(have-protected)) -tests += tstatexit -endif + bug-atexit3 tstatexit endif modules-names = glreflib1 glreflib2 failtestmod defaultmod1 defaultmod2 \ errmsg1mod modatexit modcxaatexit \ diff --git a/elf/Makefile b/elf/Makefile index 06e376d803..afebaec1ec 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -159,8 +159,8 @@ endif ifeq (yes,$(build-shared)) tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ constload1 order $(tests-vis-$(have-protected)) noload filter unload \ - reldep reldep2 reldep3 reldep4 $(tests-nodelete-$(have-z-nodelete)) \ - $(tests-nodlopen-$(have-z-nodlopen)) neededtest neededtest2 \ + reldep reldep2 reldep3 reldep4 nodelete nodelete2 \ + nodlopen nodlopen2 neededtest neededtest2 \ neededtest3 neededtest4 unload2 lateglobal initfirst global \ restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \ circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \ @@ -175,8 +175,6 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ # reldep9 test-srcs = tst-pathopt tests-vis-yes = vismain -tests-nodelete-yes = nodelete nodelete2 -tests-nodlopen-yes = nodlopen nodlopen2 tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog |
