mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
elf: Replace PI_STATIC_AND_HIDDEN with opposite HIDDEN_VAR_NEEDS_DYNAMIC_RELOC
PI_STATIC_AND_HIDDEN indicates whether accesses to internal linkage variables and hidden visibility variables in a shared object (ld.so) need dynamic relocations (usually R_*_RELATIVE). PI (position independent) in the macro name is a misnomer: a code sequence using GOT is typically position-independent as well, but using dynamic relocations does not meet the requirement. Not defining PI_STATIC_AND_HIDDEN is legacy and we expect that all new ports will define PI_STATIC_AND_HIDDEN. Current ports defining PI_STATIC_AND_HIDDEN are more than the opposite. Change the configure default. No functional change. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
parent
e465d97653
commit
098a657fe4
@ -84,9 +84,9 @@
|
||||
/* Define if the compiler\'s exception support is based on libunwind. */
|
||||
#undef HAVE_CC_WITH_LIBUNWIND
|
||||
|
||||
/* Define if the access to static and hidden variables is position independent
|
||||
and does not need relocations. */
|
||||
#undef PI_STATIC_AND_HIDDEN
|
||||
/* Define if the accesses to static and hidden variables in a shared object
|
||||
need dynamic relocations. */
|
||||
#undef HIDDEN_VAR_NEEDS_DYNAMIC_RELOC
|
||||
|
||||
/* Define this to disable the 'hidden_proto' et al macros in
|
||||
include/libc-symbols.h that avoid PLT slots in PIE. */
|
||||
|
@ -424,7 +424,7 @@ DL_SYSINFO_IMPLEMENTATION
|
||||
is fine, too. The latter is important here. We can avoid setting
|
||||
up a temporary link map for ld.so if we can mark _rtld_global as
|
||||
hidden. */
|
||||
#ifdef PI_STATIC_AND_HIDDEN
|
||||
#ifndef HIDDEN_VAR_NEEDS_DYNAMIC_RELOC
|
||||
# define DONT_USE_BOOTSTRAP_MAP 1
|
||||
#endif
|
||||
|
||||
|
5
sysdeps/aarch64/configure
vendored
5
sysdeps/aarch64/configure
vendored
@ -1,11 +1,6 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/aarch64.
|
||||
|
||||
# Static and hidden objects are accessed without dynamic relocations.
|
||||
# The exception is -mcmodel=large which is unsupported with PIC/PIE.
|
||||
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||
|
||||
|
||||
# Static PIE is supported.
|
||||
$as_echo "#define SUPPORT_STATIC_PIE 1" >>confdefs.h
|
||||
|
||||
|
@ -1,10 +1,6 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/aarch64.
|
||||
|
||||
# Static and hidden objects are accessed without dynamic relocations.
|
||||
# The exception is -mcmodel=large which is unsupported with PIC/PIE.
|
||||
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
|
||||
# Static PIE is supported.
|
||||
AC_DEFINE(SUPPORT_STATIC_PIE)
|
||||
|
||||
|
5
sysdeps/alpha/configure
vendored
5
sysdeps/alpha/configure
vendored
@ -1,11 +1,6 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/alpha.
|
||||
|
||||
# With required gcc+binutils, we can always access static and hidden
|
||||
# symbols in a position independent way.
|
||||
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||
|
||||
|
||||
# PIE builds fail on binutils 2.37 and earlier, see:
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=28672
|
||||
$as_echo "#define PIE_UNSUPPORTED 1" >>confdefs.h
|
||||
|
@ -1,10 +1,6 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/alpha.
|
||||
|
||||
# With required gcc+binutils, we can always access static and hidden
|
||||
# symbols in a position independent way.
|
||||
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
|
||||
# PIE builds fail on binutils 2.37 and earlier, see:
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=28672
|
||||
AC_DEFINE(PIE_UNSUPPORTED)
|
||||
|
2
sysdeps/arc/configure
vendored
2
sysdeps/arc/configure
vendored
@ -1,8 +1,6 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/arc.
|
||||
|
||||
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||
|
||||
libc_cv_have_sdata_section=no
|
||||
|
||||
# For ARC, historically ; was used for comments and not newline
|
||||
|
@ -1,7 +1,6 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/arc.
|
||||
|
||||
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
libc_cv_have_sdata_section=no
|
||||
|
||||
# For ARC, historically ; was used for comments and not newline
|
||||
|
3
sysdeps/arm/configure
vendored
3
sysdeps/arm/configure
vendored
@ -1,9 +1,6 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/arm.
|
||||
|
||||
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||
|
||||
|
||||
# We check to see if the compiler and flags are
|
||||
# selecting the hard-float ABI and if they are then
|
||||
# we set libc_cv_arm_pcs_vfp to yes which causes
|
||||
|
@ -1,11 +1,6 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/arm.
|
||||
|
||||
dnl It is always possible to access static and hidden symbols in an
|
||||
dnl position independent way. This has been true since GCC 4.1,
|
||||
dnl which is older than the minimum version required to build libc.
|
||||
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
|
||||
# We check to see if the compiler and flags are
|
||||
# selecting the hard-float ABI and if they are then
|
||||
# we set libc_cv_arm_pcs_vfp to yes which causes
|
||||
|
3
sysdeps/csky/configure
vendored
3
sysdeps/csky/configure
vendored
@ -1,9 +1,6 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/csky.
|
||||
|
||||
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||
|
||||
|
||||
# PIE builds fail on binutils 2.37 and earlier, see:
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=28672
|
||||
$as_echo "#define PIE_UNSUPPORTED 1" >>confdefs.h
|
||||
|
@ -1,8 +1,6 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/csky.
|
||||
|
||||
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
|
||||
# PIE builds fail on binutils 2.37 and earlier, see:
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=28672
|
||||
AC_DEFINE(PIE_UNSUPPORTED)
|
||||
|
3
sysdeps/hppa/configure
vendored
3
sysdeps/hppa/configure
vendored
@ -32,6 +32,9 @@ cat >>confdefs.h <<_ACEOF
|
||||
_ACEOF
|
||||
|
||||
|
||||
$as_echo "#define HIDDEN_VAR_NEEDS_DYNAMIC_RELOC 1" >>confdefs.h
|
||||
|
||||
|
||||
# PIE builds fail on binutils 2.37 and earlier, see:
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=28672
|
||||
$as_echo "#define PIE_UNSUPPORTED 1" >>confdefs.h
|
||||
|
@ -20,6 +20,8 @@ fi
|
||||
rm -f conftest*])
|
||||
AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
|
||||
|
||||
AC_DEFINE(HIDDEN_VAR_NEEDS_DYNAMIC_RELOC)
|
||||
|
||||
# PIE builds fail on binutils 2.37 and earlier, see:
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=28672
|
||||
AC_DEFINE(PIE_UNSUPPORTED)
|
||||
|
3
sysdeps/ia64/configure
vendored
3
sysdeps/ia64/configure
vendored
@ -1,9 +1,6 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/ia64.
|
||||
|
||||
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||
|
||||
|
||||
# PIE builds fail on binutils 2.37 and earlier, see:
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=28672
|
||||
$as_echo "#define PIE_UNSUPPORTED 1" >>confdefs.h
|
||||
|
@ -1,10 +1,6 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/ia64.
|
||||
|
||||
dnl It is always possible to access static and hidden symbols in an
|
||||
dnl position independent way.
|
||||
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
|
||||
# PIE builds fail on binutils 2.37 and earlier, see:
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=28672
|
||||
AC_DEFINE(PIE_UNSUPPORTED)
|
||||
|
7
sysdeps/m68k/configure
vendored
Normal file
7
sysdeps/m68k/configure
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/m68k.
|
||||
|
||||
# Accessing static and hidden variables in a shared object needs relative
|
||||
# relocation.
|
||||
$as_echo "#define HIDDEN_VAR_NEEDS_DYNAMIC_RELOC 1" >>confdefs.h
|
||||
|
6
sysdeps/m68k/configure.ac
Normal file
6
sysdeps/m68k/configure.ac
Normal file
@ -0,0 +1,6 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/m68k.
|
||||
|
||||
# Accessing static and hidden variables in a shared object needs relative
|
||||
# relocation.
|
||||
AC_DEFINE(HIDDEN_VAR_NEEDS_DYNAMIC_RELOC)
|
3
sysdeps/microblaze/configure
vendored
3
sysdeps/microblaze/configure
vendored
@ -1,6 +1,9 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/microblaze.
|
||||
|
||||
$as_echo "#define HIDDEN_VAR_NEEDS_DYNAMIC_RELOC 1" >>confdefs.h
|
||||
|
||||
|
||||
# gcc 11.2.1 and earlier crash with an internal compiler error, see:
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103613
|
||||
$as_echo "#define PIE_UNSUPPORTED 1" >>confdefs.h
|
||||
|
@ -1,6 +1,8 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/microblaze.
|
||||
|
||||
AC_DEFINE(HIDDEN_VAR_NEEDS_DYNAMIC_RELOC)
|
||||
|
||||
# gcc 11.2.1 and earlier crash with an internal compiler error, see:
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103613
|
||||
AC_DEFINE(PIE_UNSUPPORTED)
|
||||
|
2
sysdeps/mips/configure
vendored
2
sysdeps/mips/configure
vendored
@ -1,6 +1,8 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/mips.
|
||||
|
||||
$as_echo "#define HIDDEN_VAR_NEEDS_DYNAMIC_RELOC 1" >>confdefs.h
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -3,7 +3,7 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
|
||||
dnl No MIPS GCC supports accessing static and hidden symbols in an
|
||||
dnl position independent way.
|
||||
dnl AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
AC_DEFINE(HIDDEN_VAR_NEEDS_DYNAMIC_RELOC)
|
||||
|
||||
AC_CACHE_CHECK([whether the compiler is using the 2008 NaN encoding],
|
||||
libc_cv_mips_nan2008, [AC_EGREP_CPP(yes, [dnl
|
||||
|
3
sysdeps/nios2/configure
vendored
3
sysdeps/nios2/configure
vendored
@ -160,3 +160,6 @@ $as_echo "$libc_cv_nios2_be" >&6; }
|
||||
if test $libc_cv_nios2_be = yes; then
|
||||
as_fn_error $? "Big endian not supported for Nios II" "$LINENO" 5
|
||||
fi
|
||||
|
||||
$as_echo "#define HIDDEN_VAR_NEEDS_DYNAMIC_RELOC 1" >>confdefs.h
|
||||
|
||||
|
@ -11,3 +11,5 @@ AC_CACHE_CHECK([for big endian],
|
||||
if test $libc_cv_nios2_be = yes; then
|
||||
AC_MSG_ERROR([Big endian not supported for Nios II])
|
||||
fi
|
||||
|
||||
AC_DEFINE(HIDDEN_VAR_NEEDS_DYNAMIC_RELOC)
|
||||
|
3
sysdeps/or1k/configure
vendored
3
sysdeps/or1k/configure
vendored
@ -1,5 +1,2 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/or1k.
|
||||
|
||||
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||
|
||||
|
@ -1,4 +1,2 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/or1k.
|
||||
|
||||
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
|
3
sysdeps/powerpc/powerpc32/configure
vendored
3
sysdeps/powerpc/powerpc32/configure
vendored
@ -1,6 +1,9 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/powerpc/powerpc32.
|
||||
|
||||
$as_echo "#define HIDDEN_VAR_NEEDS_DYNAMIC_RELOC 1" >>confdefs.h
|
||||
|
||||
|
||||
# See whether GCC uses -msecure-plt.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -msecure-plt by default" >&5
|
||||
$as_echo_n "checking for -msecure-plt by default... " >&6; }
|
||||
|
@ -1,6 +1,8 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/powerpc/powerpc32.
|
||||
|
||||
AC_DEFINE(HIDDEN_VAR_NEEDS_DYNAMIC_RELOC)
|
||||
|
||||
# See whether GCC uses -msecure-plt.
|
||||
AC_CACHE_CHECK(for -msecure-plt by default, libc_cv_ppc_secure_plt, [dnl
|
||||
echo 'int foo (void) { extern int bar; return bar; }' > conftest.c
|
||||
|
3
sysdeps/powerpc/powerpc64/configure
vendored
3
sysdeps/powerpc/powerpc64/configure
vendored
@ -1,6 +1,9 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/powerpc/powerpc64.
|
||||
|
||||
$as_echo "#define HIDDEN_VAR_NEEDS_DYNAMIC_RELOC 1" >>confdefs.h
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for support for overlapping .opd entries" >&5
|
||||
$as_echo_n "checking for support for overlapping .opd entries... " >&6; }
|
||||
if ${libc_cv_overlapping_opd+:} false; then :
|
||||
|
@ -1,6 +1,8 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/powerpc/powerpc64.
|
||||
|
||||
AC_DEFINE(HIDDEN_VAR_NEEDS_DYNAMIC_RELOC)
|
||||
|
||||
AC_CACHE_CHECK(for support for overlapping .opd entries,
|
||||
libc_cv_overlapping_opd, [dnl
|
||||
libc_cv_overlapping_opd=no
|
||||
|
@ -102,7 +102,7 @@ do_test (void)
|
||||
if (&bar == bar_ptr)
|
||||
printf ("PASS: bar address read from IFUNC resolver is correct.\n");
|
||||
#if !defined TST_TLSIFUNC_STATIC || !defined PIC \
|
||||
|| !defined PI_STATIC_AND_HIDDEN
|
||||
|| defined HIDDEN_VAR_NEEDS_DYNAMIC_RELOC
|
||||
else
|
||||
{
|
||||
printf ("FAIL: bar address read from IFUNC resolver is incorrect.\n");
|
||||
|
3
sysdeps/riscv/configure
vendored
3
sysdeps/riscv/configure
vendored
@ -1,9 +1,6 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/riscv/elf.
|
||||
|
||||
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||
|
||||
|
||||
# Check if static linker supports R_RISCV_ALIGN
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for R_RISCV_ALIGN linker relaxation support" >&5
|
||||
$as_echo_n "checking for R_RISCV_ALIGN linker relaxation support... " >&6; }
|
||||
|
@ -1,8 +1,6 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/riscv/elf.
|
||||
|
||||
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
|
||||
# Check if static linker supports R_RISCV_ALIGN
|
||||
AC_CACHE_CHECK([for R_RISCV_ALIGN linker relaxation support], [libc_cv_riscv_r_align],[dnl
|
||||
cat > conftest.S <<EOF
|
||||
|
3
sysdeps/s390/configure
vendored
3
sysdeps/s390/configure
vendored
@ -1,9 +1,6 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/s390.
|
||||
|
||||
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_tbegin" >&5
|
||||
$as_echo_n "checking for __builtin_tbegin... " >&6; }
|
||||
if ${libc_cv_gcc_builtin_tbegin+:} false; then :
|
||||
|
@ -1,10 +1,6 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/s390.
|
||||
|
||||
dnl It is always possible to access static and hidden symbols in an
|
||||
dnl position independent way.
|
||||
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
|
||||
AC_CACHE_CHECK(for __builtin_tbegin, libc_cv_gcc_builtin_tbegin, [dnl
|
||||
cat > conftest.c <<\EOF
|
||||
#include <htmintrin.h>
|
||||
|
3
sysdeps/sh/configure
vendored
3
sysdeps/sh/configure
vendored
@ -1,5 +1,2 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/sh.
|
||||
|
||||
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||
|
||||
|
@ -1,6 +1,2 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/sh.
|
||||
|
||||
dnl It is always possible to access static and hidden symbols in an
|
||||
dnl position independent way.
|
||||
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
|
2
sysdeps/sparc/configure
vendored
2
sysdeps/sparc/configure
vendored
@ -1,4 +1,2 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/sparc.
|
||||
|
||||
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||
|
@ -1,4 +1,2 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/sparc.
|
||||
|
||||
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
|
3
sysdeps/x86/configure
vendored
3
sysdeps/x86/configure
vendored
@ -190,8 +190,5 @@ fi
|
||||
config_vars="$config_vars
|
||||
enable-x86-isa-level = $libc_cv_include_x86_isa_level"
|
||||
|
||||
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
|
||||
|
||||
|
||||
$as_echo "#define SUPPORT_STATIC_PIE 1" >>confdefs.h
|
||||
|
||||
|
@ -128,9 +128,5 @@ if test $libc_cv_include_x86_isa_level = yes; then
|
||||
fi
|
||||
LIBC_CONFIG_VAR([enable-x86-isa-level], [$libc_cv_include_x86_isa_level])
|
||||
|
||||
dnl It is always possible to access static and hidden symbols in an
|
||||
dnl position independent way.
|
||||
AC_DEFINE(PI_STATIC_AND_HIDDEN)
|
||||
|
||||
dnl Static PIE is supported.
|
||||
AC_DEFINE(SUPPORT_STATIC_PIE)
|
||||
|
Loading…
Reference in New Issue
Block a user