mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-10 23:30:07 +00:00
PowerPC64 ELFv2 ABI 6/6: Bump ld.so soname version number
To avoid having a ELFv2 binary accidentally picking up an old ABI ld.so, this patch bumps the soname to ld64.so.2. In theory (or for testing purposes) this will also allow co-installing ld.so versions for both ABIs on the same system. Note that the kernel will already be able to load executables of both ABIs. However, there is currently no plan to use that theoretical possibility in a any supported distribution environment ... Note that in order to check which ABI to use, we need to invoke the compiler to check the _CALL_ELF macro; this is done in a new configure check in sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac, replacing the hard-coded value of default-abi in the Makefile.
This commit is contained in:
parent
61cd8fe401
commit
5b118558f9
19
ChangeLog
19
ChangeLog
@ -1,3 +1,22 @@
|
||||
2013-11-12 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/Makefile (abi-variants): Rename
|
||||
"64" to "64-v1". Add "64-v2".
|
||||
(abi-64-options): Rename to ...
|
||||
(abi-64-v1-options): ... this. Redefine _CALL_ELF.
|
||||
(abi-64-condition): Rename to ...
|
||||
(abi-64-v1-condition): ... this. Add _CALL_ELF check.,
|
||||
(abi-64-ld-soname): Rename to ...
|
||||
(abi-64-v1-ld-soname): ... this.
|
||||
(abi-64-v2-options): Define.
|
||||
(abi-64-v2-condition): Likewise.
|
||||
(abi-64-v2-ld-soname): Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/ldconfig.h
|
||||
(SYSDEP_KNOWN_INTERPRETER_NAMES): Add "/lib64/ld64.so.2".
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile: Delete file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac: New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc64/configure: Generate.
|
||||
|
||||
2013-11-12 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
|
||||
Alan Modra <amodra@gmail.com>
|
||||
|
||||
|
@ -1,9 +1,12 @@
|
||||
abi-variants := 32 64
|
||||
abi-variants := 32 64-v1 64-v2
|
||||
abi-32-options := -U__powerpc64__
|
||||
abi-32-condition := __WORDSIZE == 32
|
||||
abi-64-options := -D__powerpc64__
|
||||
abi-64-condition := __WORDSIZE == 64
|
||||
abi-64-ld-soname := ld64.so.1
|
||||
abi-64-v1-options := -D__powerpc64__ -U_CALL_ELF -D_CALL_ELF=1
|
||||
abi-64-v1-condition := __WORDSIZE == 64 && _CALL_ELF != 2
|
||||
abi-64-v1-ld-soname := ld64.so.1
|
||||
abi-64-v2-options := -D__powerpc64__ -U_CALL_ELF -D_CALL_ELF=2
|
||||
abi-64-v2-condition := __WORDSIZE == 64 && _CALL_ELF == 2
|
||||
abi-64-v2-ld-soname := ld64.so.2
|
||||
|
||||
ifeq ($(subdir),rt)
|
||||
librt-routines += rt-sysdep
|
||||
|
@ -20,7 +20,8 @@
|
||||
|
||||
#define SYSDEP_KNOWN_INTERPRETER_NAMES \
|
||||
{ "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \
|
||||
{ "/lib64/ld64.so.1", FLAG_ELF_LIBC6 },
|
||||
{ "/lib64/ld64.so.1", FLAG_ELF_LIBC6 }, \
|
||||
{ "/lib64/ld64.so.2", FLAG_ELF_LIBC6 },
|
||||
#define SYSDEP_KNOWN_LIBRARY_NAMES \
|
||||
{ "libc.so.6", FLAG_ELF_LIBC6 }, \
|
||||
{ "libm.so.6", FLAG_ELF_LIBC6 },
|
||||
|
@ -1,2 +0,0 @@
|
||||
# See Makeconfig regarding the use of default-abi.
|
||||
default-abi := 64
|
166
sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
vendored
Normal file
166
sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
vendored
Normal file
@ -0,0 +1,166 @@
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# Local configure fragment for sysdeps/unix/sysv/linux/powerpc/powerpc64/.
|
||||
|
||||
# Define default-abi according to compiler flags.
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
|
||||
$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
|
||||
if ${ac_cv_path_GREP+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
if test -z "$GREP"; then
|
||||
ac_path_GREP_found=false
|
||||
# Loop through the user's path and test for each of PROGNAME-LIST
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_prog in grep ggrep; do
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
|
||||
{ test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
|
||||
# Check for GNU ac_path_GREP and select it if it is found.
|
||||
# Check for GNU $ac_path_GREP
|
||||
case `"$ac_path_GREP" --version 2>&1` in
|
||||
*GNU*)
|
||||
ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
|
||||
*)
|
||||
ac_count=0
|
||||
$as_echo_n 0123456789 >"conftest.in"
|
||||
while :
|
||||
do
|
||||
cat "conftest.in" "conftest.in" >"conftest.tmp"
|
||||
mv "conftest.tmp" "conftest.in"
|
||||
cp "conftest.in" "conftest.nl"
|
||||
$as_echo 'GREP' >> "conftest.nl"
|
||||
"$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
|
||||
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
|
||||
as_fn_arith $ac_count + 1 && ac_count=$as_val
|
||||
if test $ac_count -gt ${ac_path_GREP_max-0}; then
|
||||
# Best one so far, save it but keep looking for a better one
|
||||
ac_cv_path_GREP="$ac_path_GREP"
|
||||
ac_path_GREP_max=$ac_count
|
||||
fi
|
||||
# 10*(2^10) chars as input seems more than enough
|
||||
test $ac_count -gt 10 && break
|
||||
done
|
||||
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
|
||||
esac
|
||||
|
||||
$ac_path_GREP_found && break 3
|
||||
done
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
if test -z "$ac_cv_path_GREP"; then
|
||||
as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
|
||||
fi
|
||||
else
|
||||
ac_cv_path_GREP=$GREP
|
||||
fi
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
|
||||
$as_echo "$ac_cv_path_GREP" >&6; }
|
||||
GREP="$ac_cv_path_GREP"
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
|
||||
$as_echo_n "checking for egrep... " >&6; }
|
||||
if ${ac_cv_path_EGREP+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
|
||||
then ac_cv_path_EGREP="$GREP -E"
|
||||
else
|
||||
if test -z "$EGREP"; then
|
||||
ac_path_EGREP_found=false
|
||||
# Loop through the user's path and test for each of PROGNAME-LIST
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_prog in egrep; do
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
|
||||
{ test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
|
||||
# Check for GNU ac_path_EGREP and select it if it is found.
|
||||
# Check for GNU $ac_path_EGREP
|
||||
case `"$ac_path_EGREP" --version 2>&1` in
|
||||
*GNU*)
|
||||
ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
|
||||
*)
|
||||
ac_count=0
|
||||
$as_echo_n 0123456789 >"conftest.in"
|
||||
while :
|
||||
do
|
||||
cat "conftest.in" "conftest.in" >"conftest.tmp"
|
||||
mv "conftest.tmp" "conftest.in"
|
||||
cp "conftest.in" "conftest.nl"
|
||||
$as_echo 'EGREP' >> "conftest.nl"
|
||||
"$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
|
||||
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
|
||||
as_fn_arith $ac_count + 1 && ac_count=$as_val
|
||||
if test $ac_count -gt ${ac_path_EGREP_max-0}; then
|
||||
# Best one so far, save it but keep looking for a better one
|
||||
ac_cv_path_EGREP="$ac_path_EGREP"
|
||||
ac_path_EGREP_max=$ac_count
|
||||
fi
|
||||
# 10*(2^10) chars as input seems more than enough
|
||||
test $ac_count -gt 10 && break
|
||||
done
|
||||
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
|
||||
esac
|
||||
|
||||
$ac_path_EGREP_found && break 3
|
||||
done
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
if test -z "$ac_cv_path_EGREP"; then
|
||||
as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
|
||||
fi
|
||||
else
|
||||
ac_cv_path_EGREP=$EGREP
|
||||
fi
|
||||
|
||||
fi
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
|
||||
$as_echo "$ac_cv_path_EGREP" >&6; }
|
||||
EGREP="$ac_cv_path_EGREP"
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler is using the PowerPC64 ELFv2 ABI" >&5
|
||||
$as_echo_n "checking whether the compiler is using the PowerPC64 ELFv2 ABI... " >&6; }
|
||||
if ${libc_cv_ppc64_elfv2_abi+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#if _CALL_ELF == 2
|
||||
yes
|
||||
#endif
|
||||
|
||||
_ACEOF
|
||||
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
||||
$EGREP "yes" >/dev/null 2>&1; then :
|
||||
libc_cv_ppc64_elfv2_abi=yes
|
||||
else
|
||||
libc_cv_ppc64_elfv2_abi=no
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc64_elfv2_abi" >&5
|
||||
$as_echo "$libc_cv_ppc64_elfv2_abi" >&6; }
|
||||
if test $libc_cv_ppc64_elfv2_abi = yes; then
|
||||
config_vars="$config_vars
|
||||
default-abi = 64-v2"
|
||||
else
|
||||
config_vars="$config_vars
|
||||
default-abi = 64-v1"
|
||||
fi
|
15
sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac
Normal file
15
sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac
Normal file
@ -0,0 +1,15 @@
|
||||
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
||||
# Local configure fragment for sysdeps/unix/sysv/linux/powerpc/powerpc64/.
|
||||
|
||||
# Define default-abi according to compiler flags.
|
||||
AC_CACHE_CHECK([whether the compiler is using the PowerPC64 ELFv2 ABI],
|
||||
[libc_cv_ppc64_elfv2_abi],
|
||||
[AC_EGREP_CPP(yes,[#if _CALL_ELF == 2
|
||||
yes
|
||||
#endif
|
||||
], libc_cv_ppc64_elfv2_abi=yes, libc_cv_ppc64_elfv2_abi=no)])
|
||||
if test $libc_cv_ppc64_elfv2_abi = yes; then
|
||||
LIBC_CONFIG_VAR([default-abi], [64-v2])
|
||||
else
|
||||
LIBC_CONFIG_VAR([default-abi], [64-v1])
|
||||
fi
|
Loading…
Reference in New Issue
Block a user