From 78fbd00f39d48592d55bd4a022a909c9577b21db Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 28 Oct 2006 06:44:41 +0000 Subject: * 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. --- sysdeps/generic/ldsodefs.h | 20 ++++++-------------- sysdeps/i386/dl-machine.h | 4 +--- sysdeps/i386/i686/memcmp.S | 6 +----- sysdeps/i386/sysdep.h | 14 +++----------- sysdeps/powerpc/powerpc32/sysdep.h | 2 +- sysdeps/unix/sysv/linux/configure | 27 +++++++++++++++++++++++++++ sysdeps/unix/sysv/linux/i386/sigaction.c | 14 +++----------- sysdeps/unix/sysv/linux/x86_64/sigaction.c | 7 +------ 8 files changed, 43 insertions(+), 51 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index 98ba7d5b34..dda91bb806 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -490,17 +490,13 @@ struct rtld_global }; # define __rtld_global_attribute__ # ifdef IS_IN_rtld -# ifdef HAVE_VISIBILITY_ATTRIBUTE -# ifdef HAVE_SDATA_SECTION -# define __rtld_local_attribute__ \ +# ifdef HAVE_SDATA_SECTION +# define __rtld_local_attribute__ \ __attribute__ ((visibility ("hidden"), section (".sdata"))) -# undef __rtld_global_attribute__ -# define __rtld_global_attribute__ __attribute__ ((section (".sdata"))) -# else -# define __rtld_local_attribute__ __attribute__ ((visibility ("hidden"))) -# endif +# undef __rtld_global_attribute__ +# define __rtld_global_attribute__ __attribute__ ((section (".sdata"))) # else -# define __rtld_local_attribute__ +# define __rtld_local_attribute__ __attribute__ ((visibility ("hidden"))) # endif extern struct rtld_global _rtld_local __rtld_local_attribute__; # undef __rtld_local_attribute__ @@ -662,11 +658,7 @@ struct rtld_global_ro }; # define __rtld_global_attribute__ # ifdef IS_IN_rtld -# ifdef HAVE_VISIBILITY_ATTRIBUTE -# define __rtld_local_attribute__ __attribute__ ((visibility ("hidden"))) -# else -# define __rtld_local_attribute__ -# endif +# define __rtld_local_attribute__ __attribute__ ((visibility ("hidden"))) extern struct rtld_global_ro _rtld_local_ro attribute_relro __rtld_local_attribute__; extern struct rtld_global_ro _rtld_global_ro diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h index 6b8502c588..04296d2a9a 100644 --- a/sysdeps/i386/dl-machine.h +++ b/sysdeps/i386/dl-machine.h @@ -34,9 +34,7 @@ elf_machine_matches_host (const Elf32_Ehdr *ehdr) } -#if defined PI_STATIC_AND_HIDDEN \ - && defined HAVE_VISIBILITY_ATTRIBUTE && defined HAVE_HIDDEN \ - && !defined HAVE_BROKEN_VISIBILITY_ATTRIBUTE +#ifdef PI_STATIC_AND_HIDDEN /* Return the link-time address of _DYNAMIC. Conveniently, this is the first element of the GOT, a special entry that is never relocated. */ diff --git a/sysdeps/i386/i686/memcmp.S b/sysdeps/i386/i686/memcmp.S index 4bd5394bec..113760d846 100644 --- a/sysdeps/i386/i686/memcmp.S +++ b/sysdeps/i386/i686/memcmp.S @@ -1,5 +1,5 @@ /* Compare two memory blocks for differences in the first COUNT bytes. - Copyright (C) 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -44,13 +44,9 @@ absolute address. */ \ addl (%ebx,INDEX,4), %ebx -#ifdef HAVE_HIDDEN .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits .globl __i686.get_pc_thunk.bx .hidden __i686.get_pc_thunk.bx -#else - .text -#endif ALIGN (4) .type __i686.get_pc_thunk.bx,@function __i686.get_pc_thunk.bx: diff --git a/sysdeps/i386/sysdep.h b/sysdeps/i386/sysdep.h index 2739cb00b3..e03a8e926d 100644 --- a/sysdeps/i386/sysdep.h +++ b/sysdeps/i386/sysdep.h @@ -1,5 +1,6 @@ /* Assembler macros for i386. - Copyright (C) 1991-93,95,96,98,2002,2003,2005 Free Software Foundation, Inc. + Copyright (C) 1991-93,95,96,98,2002,2003,2005,2006 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -132,15 +133,7 @@ lose: SYSCALL_PIC_SETUP \ cfi_adjust_cfa_offset (-4); \ addl $_GLOBAL_OFFSET_TABLE+[.-0b], %ebx; -# ifndef HAVE_HIDDEN -# define SETUP_PIC_REG(reg) \ - call 1f; \ - .subsection 1; \ -1:movl (%esp), %e##reg; \ - ret; \ - .previous -# else -# define SETUP_PIC_REG(reg) \ +# define SETUP_PIC_REG(reg) \ .ifndef __i686.get_pc_thunk.reg; \ .section .gnu.linkonce.t.__i686.get_pc_thunk.reg,"ax",@progbits; \ .globl __i686.get_pc_thunk.reg; \ @@ -153,7 +146,6 @@ __i686.get_pc_thunk.reg: \ .previous; \ .endif; \ call __i686.get_pc_thunk.reg -# endif # define LOAD_PIC_REG(reg) \ SETUP_PIC_REG(reg); addl $_GLOBAL_OFFSET_TABLE_, %e##reg diff --git a/sysdeps/powerpc/powerpc32/sysdep.h b/sysdeps/powerpc/powerpc32/sysdep.h index 8fc624ebd9..88cfe71e0b 100644 --- a/sysdeps/powerpc/powerpc32/sysdep.h +++ b/sysdeps/powerpc/powerpc32/sysdep.h @@ -96,7 +96,7 @@ #endif #if defined SHARED && defined DO_VERSIONING && defined PIC \ - && !defined HAVE_BROKEN_ALIAS_ATTRIBUTE && !defined NO_HIDDEN + && !defined NO_HIDDEN # undef HIDDEN_JUMPTARGET # define HIDDEN_JUMPTARGET(name) __GI_##name##@local #endif diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure index 2701e27298..a8a9cc4702 100644 --- a/sysdeps/unix/sysv/linux/configure +++ b/sysdeps/unix/sysv/linux/configure @@ -251,6 +251,33 @@ case "$prefix" in ;; esac +# Under Linux the NPTL add-on should be available. +case $add_ons in + # It is available. Good. + *nptl*) + nptl_missing= + ;; + *) + nptl_missing=yes + ;; +esac + +if test "$nptl_missing"; then + if test $enable_sanity = yes; then + echo "\ +*** On GNU/Linux systems it is normal to compile GNU libc with the +*** \`nptl' add-on. Without that, the library will be +*** incompatible with normal GNU/Linux systems. +*** If you really mean to not use this add-on, run configure again +*** using the extra parameter \`--disable-sanity-checks'." + exit 1 + else + echo "\ +*** WARNING: Are you sure you do not want to use the \`nptl' +*** add-on?" + fi +fi + if test "$prefix" = "/usr/local" -o "$prefix" = "/usr/local/" -o "$prefix" = "NONE"; then if test $enable_sanity = yes; then echo "\ diff --git a/sysdeps/unix/sysv/linux/i386/sigaction.c b/sysdeps/unix/sysv/linux/i386/sigaction.c index 299574dac4..b5c1b98573 100644 --- a/sysdeps/unix/sysv/linux/i386/sigaction.c +++ b/sysdeps/unix/sysv/linux/i386/sigaction.c @@ -1,5 +1,5 @@ /* POSIX.1 `sigaction' call for Linux/i386. - Copyright (C) 1991,1995-2000,2002-2004,2005 Free Software Foundation, Inc. + Copyright (C) 1991,1995-2000,2002-2005,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -46,18 +46,10 @@ int __libc_missing_rt_sigs; /* Using the hidden attribute here does not change the code but it helps to avoid warnings. */ -#if defined HAVE_HIDDEN && defined HAVE_VISIBILITY_ATTRIBUTE \ - && !defined HAVE_BROKEN_VISIBILITY_ATTRIBUTE -# ifdef __NR_rt_sigaction +#ifdef __NR_rt_sigaction extern void restore_rt (void) asm ("__restore_rt") attribute_hidden; -# endif -extern void restore (void) asm ("__restore") attribute_hidden; -#else -# ifdef __NR_rt_sigaction -static void restore_rt (void) asm ("__restore_rt"); -# endif -static void restore (void) asm ("__restore"); #endif +extern void restore (void) asm ("__restore") attribute_hidden; /* If ACT is not NULL, change the action for SIG to *ACT. diff --git a/sysdeps/unix/sysv/linux/x86_64/sigaction.c b/sysdeps/unix/sysv/linux/x86_64/sigaction.c index d6f4558cef..b83e98a77e 100644 --- a/sysdeps/unix/sysv/linux/x86_64/sigaction.c +++ b/sysdeps/unix/sysv/linux/x86_64/sigaction.c @@ -1,5 +1,5 @@ /* POSIX.1 `sigaction' call for Linux/x86-64. - Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -38,12 +38,7 @@ /* Using the hidden attribute here does not change the code but it helps to avoid warnings. */ -#if defined HAVE_HIDDEN && defined HAVE_VISIBILITY_ATTRIBUTE \ - && !defined HAVE_BROKEN_VISIBILITY_ATTRIBUTE extern void restore_rt (void) asm ("__restore_rt") attribute_hidden; -#else -static void restore_rt (void) asm ("__restore_rt"); -#endif /* If ACT is not NULL, change the action for SIG to *ACT. -- cgit 1.4.1