1997-11-26 04:23:08 +00:00
|
|
|
dnl Process this file with autoconf to produce a configure script.
|
2012-11-02 18:19:27 +00:00
|
|
|
dnl Note we do not use AC_PREREQ here! See aclocal.m4 for what we use instead.
|
2019-09-09 21:10:23 +00:00
|
|
|
AC_INIT([GNU C Library], [(see version.h)], [https://sourceware.org/bugzilla/],
|
|
|
|
[glibc], [https://www.gnu.org/software/glibc/])
|
2002-10-18 20:08:31 +00:00
|
|
|
AC_CONFIG_SRCDIR([include/features.h])
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_CONFIG_HEADERS([config.h])
|
|
|
|
AC_CONFIG_AUX_DIR([scripts])
|
1995-02-18 01:27:10 +00:00
|
|
|
|
2012-11-09 22:13:45 +00:00
|
|
|
ACX_PKGVERSION([GNU libc])
|
Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:
sed -ri '
s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
$(find $(git ls-files) -prune -type f \
! -name '*.po' \
! -name 'ChangeLog*' \
! -path COPYING ! -path COPYING.LIB \
! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
! -path manual/texinfo.tex ! -path scripts/config.guess \
! -path scripts/config.sub ! -path scripts/install-sh \
! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
! -path INSTALL ! -path locale/programs/charmap-kw.h \
! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
! '(' -name configure \
-execdir test -f configure.ac -o -f configure.in ';' ')' \
! '(' -name preconfigure \
-execdir test -f preconfigure.ac ';' ')' \
-print)
and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:
chmod a+x sysdeps/unix/sysv/linux/riscv/configure
# Omit irrelevant whitespace and comment-only changes,
# perhaps from a slightly-different Autoconf version.
git checkout -f \
sysdeps/csky/configure \
sysdeps/hppa/configure \
sysdeps/riscv/configure \
sysdeps/unix/sysv/linux/csky/configure
# Omit changes that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
git checkout -f \
sysdeps/powerpc/powerpc64/ppc-mcount.S \
sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
# Omit change that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 05:40:42 +00:00
|
|
|
ACX_BUGURL([https://www.gnu.org/software/libc/bugs.html])
|
2012-11-09 22:13:45 +00:00
|
|
|
AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"],
|
|
|
|
[Package description])
|
|
|
|
AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"],
|
|
|
|
[Bug reporting address])
|
|
|
|
|
2012-05-25 21:16:19 +00:00
|
|
|
# Glibc should not depend on any header files
|
|
|
|
AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
|
|
|
|
[m4_divert_text([DEFAULTS],
|
|
|
|
[ac_includes_default='/* none */'])])
|
|
|
|
|
2013-01-25 11:33:19 +00:00
|
|
|
# We require GCC, and by default use its preprocessor. Override AC_PROG_CPP
|
|
|
|
# here to work around the Autoconf issue discussed in
|
2017-11-16 06:19:26 +00:00
|
|
|
# <https://sourceware.org/ml/libc-alpha/2013-01/msg00721.html>.
|
2013-01-25 11:33:19 +00:00
|
|
|
AC_DEFUN([AC_PROG_CPP],
|
|
|
|
[AC_REQUIRE([AC_PROG_CC])dnl
|
|
|
|
AC_ARG_VAR([CPP], [C preprocessor])dnl
|
|
|
|
_AC_ARG_VAR_CPPFLAGS()dnl
|
|
|
|
# On Suns, sometimes $CPP names a directory.
|
|
|
|
if test -n "$CPP" && test -d "$CPP"; then
|
|
|
|
CPP=
|
|
|
|
fi
|
|
|
|
if test -z "$CPP"; then
|
|
|
|
CPP="$CC -E"
|
|
|
|
fi
|
|
|
|
AC_SUBST(CPP)dnl
|
|
|
|
])# AC_PROG_CPP
|
|
|
|
|
2013-01-25 11:44:45 +00:00
|
|
|
# We require GCC. Override _AC_PROG_CC_C89 here to work around the Autoconf
|
|
|
|
# issue discussed in
|
2017-11-16 06:19:26 +00:00
|
|
|
# <https://sourceware.org/ml/libc-alpha/2013-01/msg00757.html>.
|
2013-01-25 11:44:45 +00:00
|
|
|
AC_DEFUN([_AC_PROG_CC_C89], [[$1]])
|
|
|
|
|
2009-09-15 21:14:42 +00:00
|
|
|
dnl This is here so we can set $subdirs directly based on configure fragments.
|
|
|
|
AC_CONFIG_SUBDIRS()
|
|
|
|
|
2009-05-31 23:54:28 +00:00
|
|
|
AC_CANONICAL_HOST
|
|
|
|
|
2009-04-03 23:51:57 +00:00
|
|
|
AC_PROG_CC
|
|
|
|
if test $host != $build; then
|
|
|
|
AC_CHECK_PROGS(BUILD_CC, gcc cc)
|
|
|
|
fi
|
|
|
|
AC_SUBST(cross_compiling)
|
|
|
|
AC_PROG_CPP
|
2015-03-04 21:52:45 +00:00
|
|
|
AC_CHECK_TOOL(READELF, readelf, false)
|
|
|
|
|
2009-04-03 23:51:57 +00:00
|
|
|
# We need the C++ compiler only for testing.
|
|
|
|
AC_PROG_CXX
|
2015-03-04 21:52:45 +00:00
|
|
|
# It's useless to us if it can't link programs (e.g. missing -lstdc++).
|
|
|
|
AC_CACHE_CHECK([whether $CXX can link programs], libc_cv_cxx_link_ok, [dnl
|
|
|
|
AC_LANG_PUSH([C++])
|
2015-10-26 08:41:10 +00:00
|
|
|
# Default, dynamic case.
|
2015-03-04 21:52:45 +00:00
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
|
|
|
|
[libc_cv_cxx_link_ok=yes],
|
|
|
|
[libc_cv_cxx_link_ok=no])
|
2015-10-26 08:41:10 +00:00
|
|
|
# Static case.
|
|
|
|
old_LDFLAGS="$LDFLAGS"
|
|
|
|
LDFLAGS="$LDFLAGS -static"
|
|
|
|
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
int
|
|
|
|
main()
|
|
|
|
{
|
|
|
|
std::cout << "Hello, world!";
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
])],
|
|
|
|
[],
|
|
|
|
[libc_cv_cxx_link_ok=no])
|
|
|
|
LDFLAGS="$old_LDFLAGS"
|
2015-03-04 21:52:45 +00:00
|
|
|
AC_LANG_POP([C++])])
|
|
|
|
AS_IF([test $libc_cv_cxx_link_ok != yes], [CXX=])
|
2009-04-03 23:51:57 +00:00
|
|
|
|
2015-12-03 04:58:15 +00:00
|
|
|
if test "`cd $srcdir; pwd -P`" = "`pwd -P`"; then
|
2003-01-29 08:34:58 +00:00
|
|
|
AC_MSG_ERROR([you must configure in a separate build directory])
|
|
|
|
fi
|
|
|
|
|
1995-02-18 01:27:10 +00:00
|
|
|
# This will get text that should go into config.make.
|
|
|
|
config_vars=
|
|
|
|
|
1999-10-04 04:37:58 +00:00
|
|
|
# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_ARG_WITH([gd],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--with-gd=DIR],
|
2011-01-17 02:29:41 +00:00
|
|
|
[find libgd include dir and library with prefix DIR]),
|
1999-10-04 04:37:58 +00:00
|
|
|
[dnl
|
|
|
|
case "$with_gd" in
|
1999-10-04 23:15:01 +00:00
|
|
|
yes|''|no) ;;
|
|
|
|
*) libgd_include="-I$withval/include"
|
1999-10-04 04:37:58 +00:00
|
|
|
libgd_ldflags="-L$withval/lib" ;;
|
|
|
|
esac
|
|
|
|
])
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_ARG_WITH([gd-include],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--with-gd-include=DIR],
|
2011-01-17 02:29:41 +00:00
|
|
|
[find libgd include files in DIR]),
|
|
|
|
[dnl
|
1999-10-04 23:15:01 +00:00
|
|
|
case "$with_gd_include" in
|
|
|
|
''|no) ;;
|
|
|
|
*) libgd_include="-I$withval" ;;
|
|
|
|
esac
|
|
|
|
])
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_ARG_WITH([gd-lib],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--with-gd-lib=DIR],
|
2011-01-17 02:29:41 +00:00
|
|
|
[find libgd library files in DIR]),
|
|
|
|
[dnl
|
1999-10-04 23:15:01 +00:00
|
|
|
case "$with_gd_lib" in
|
|
|
|
''|no) ;;
|
|
|
|
*) libgd_ldflags="-L$withval" ;;
|
|
|
|
esac
|
|
|
|
])
|
|
|
|
|
|
|
|
if test -n "$libgd_include"; then
|
|
|
|
config_vars="$config_vars
|
2000-07-06 23:33:20 +00:00
|
|
|
CFLAGS-memusagestat.c = $libgd_include"
|
1999-10-04 23:15:01 +00:00
|
|
|
fi
|
|
|
|
if test -n "$libgd_ldflags"; then
|
|
|
|
config_vars="$config_vars
|
|
|
|
libgd-LDFLAGS = $libgd_ldflags"
|
|
|
|
fi
|
1995-02-18 01:27:10 +00:00
|
|
|
|
1995-03-10 04:12:12 +00:00
|
|
|
dnl Arguments to specify presence of other packages/features.
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_ARG_WITH([binutils],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--with-binutils=PATH],
|
2011-01-17 02:29:41 +00:00
|
|
|
[specify location of binutils (as and ld)]),
|
2002-10-20 00:21:33 +00:00
|
|
|
[path_binutils=$withval],
|
|
|
|
[path_binutils=''])
|
2004-09-16 23:54:21 +00:00
|
|
|
AC_ARG_WITH([selinux],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--with-selinux],
|
2011-01-17 02:29:41 +00:00
|
|
|
[if building with SELinux support]),
|
2004-09-16 23:54:21 +00:00
|
|
|
[with_selinux=$withval],
|
|
|
|
[with_selinux=auto])
|
1995-02-18 01:27:10 +00:00
|
|
|
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_ARG_WITH([headers],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--with-headers=PATH],
|
2011-01-17 02:29:41 +00:00
|
|
|
[location of system headers to use
|
2002-10-20 00:21:33 +00:00
|
|
|
(for example /usr/src/linux/include)
|
|
|
|
@<:@default=compiler default@:>@]),
|
|
|
|
[sysheaders=$withval],
|
|
|
|
[sysheaders=''])
|
2012-08-17 21:05:53 +00:00
|
|
|
AC_SUBST(sysheaders)
|
1998-04-07 18:05:52 +00:00
|
|
|
|
2011-06-11 11:16:49 +00:00
|
|
|
AC_SUBST(use_default_link)
|
|
|
|
AC_ARG_WITH([default-link],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--with-default-link],
|
2011-06-11 12:14:37 +00:00
|
|
|
[do not use explicit linker scripts]),
|
2011-06-11 11:16:49 +00:00
|
|
|
[use_default_link=$withval],
|
2011-06-11 12:14:37 +00:00
|
|
|
[use_default_link=default])
|
2011-06-11 11:16:49 +00:00
|
|
|
|
2018-08-17 09:44:39 +00:00
|
|
|
dnl Additional build flags injection.
|
|
|
|
AC_ARG_WITH([nonshared-cflags],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--with-nonshared-cflags=CFLAGS],
|
2018-08-17 09:44:39 +00:00
|
|
|
[build nonshared libraries with additional CFLAGS]),
|
|
|
|
[extra_nonshared_cflags=$withval],
|
|
|
|
[extra_nonshared_cflags=])
|
|
|
|
AC_SUBST(extra_nonshared_cflags)
|
|
|
|
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_ARG_ENABLE([sanity-checks],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--disable-sanity-checks],
|
2011-01-17 02:29:41 +00:00
|
|
|
[really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
|
2002-10-20 00:21:33 +00:00
|
|
|
[enable_sanity=$enableval],
|
|
|
|
[enable_sanity=yes])
|
1996-12-07 03:30:25 +00:00
|
|
|
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_ARG_ENABLE([shared],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-shared],
|
2012-01-08 05:45:01 +00:00
|
|
|
[build shared library @<:@default=yes if GNU ld@:>@]),
|
2002-10-20 00:21:33 +00:00
|
|
|
[shared=$enableval],
|
2012-01-08 05:45:01 +00:00
|
|
|
[shared=yes])
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_ARG_ENABLE([profile],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-profile],
|
2011-01-17 02:29:41 +00:00
|
|
|
[build profiled library @<:@default=no@:>@]),
|
2002-10-20 00:21:33 +00:00
|
|
|
[profile=$enableval],
|
[BZ #2510, BZ #2830, BZ #3137, BZ #3313, BZ #3426, BZ #3465, BZ #3480, BZ #3483, BZ #3493, BZ #3514, BZ #3515, BZ #3664, BZ #3673, BZ #3674]
2007-01-11 Jakub Jelinek <jakub@redhat.com>
* sysdeps/i386/soft-fp/sfp-machine.h: Remove.
* sysdeps/x86_64/soft-fp/sfp-machine.h: Likewise.
2007-01-10 Ulrich Drepper <drepper@redhat.com>
* io/fts.c: Make sure fts_cur is always valid after return from
fts_read.
Patch by Miloslav Trmac <mitr@redhat.com>.
2006-10-27 Richard Sandiford <richard@codesourcery.com>
* elf/elf.h (R_MIPS_GLOB_DAT): Define.
(R_MIPS_NUM): Bump by 1.
2007-01-03 Jakub Jelinek <jakub@redhat.com>
* posix/execvp.c: Include alloca.h.
(allocate_scripts_argv): Renamed to...
(scripts_argv): ... this. Don't allocate buffer here nor count
arguments.
(execvp): Use alloca if possible.
* posix/Makefile: Add rules to build and run tst-vfork3 test.
* posix/tst-vfork3.c: New test.
* stdlib/Makefile (tst-strtod3-ENV): Define.
2007-01-02 Ulrich Drepper <drepper@redhat.com>
* posix/getconf.c: Update copyright year.
* nss/getent.c: Likewise.
* iconv/iconvconfig.c: Likewise.
* iconv/iconv_prog.c: Likewise.
* elf/ldconfig.c: Likewise.
* catgets/gencat.c: Likewise.
* csu/version.c: Likewise.
* elf/ldd.bash.in: Likewise.
* elf/sprof.c (print_version): Likewise.
* locale/programs/locale.c: Likewise.
* locale/programs/localedef.c: Likewise.
* nscd/nscd.c (print_version): Likewise.
* debug/xtrace.sh: Likewise.
* malloc/memusage.sh: Likewise.
* malloc/mtrace.pl: Likewise.
* debug/catchsegv.sh: Likewise.
2006-12-24 Ulrich Drepper <drepper@redhat.com>
* malloc/malloc.c (sYSMALLOc): Remove some unnecessary alignment
attempts.
2006-12-23 Ulrich Drepper <drepper@redhat.com>
* posix/wordexp.c: Remove some unnecessary tests.
2006-12-20 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
* sysdeps/unix/sysv/linux/sh/bits/shm.h: New file.
* nss/getXXbyYY_r.c: Include atomic.h.
(INTERNAL (REENTRANT_NAME)): Write startp after start_fct,
add atomic_write_barrier () in between.
2006-11-28 Jakub Jelinek <jakub@redhat.com>
* elf/dl-support.c: Include dl-procinfo.h.
* sysdeps/powerpc/dl-procinfo.h (PPC_PLATFORM_POWER4,
PPC_PLATFORM_PPC970, PPC_PLATFORM_POWER5, PPC_PLATFORM_POWER5_PLUS,
PPC_PLATFORM_POWER6, PPC_PLATFORM_CELL_BE, PPC_PLATFORM_POWER6X):
Define.
(_dl_string_platform): Use PPC_PLATFORM_* macros instead of
hardcoded constants.
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platform): Use
PPC_PLATFORM_* macros for array designators.
2006-11-11 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Add 3 new cap
names to the beginning.
(_dl_powerpc_platforms): Add "power6x".
* sysdeps/powerpc/dl-procinfo.h (_DL_HWCAP_FIRST): Decrease.
(HWCAP_IMPORTANT): Add PPC_FEATURE_HAS_DFP.
(_DL_PLATFORMS_COUNT): Increase.
(_dl_string_platform): Handle power6x case.
* sysdeps/powerpc/sysdep.h (PPC_FEATURE_PA6T, PPC_FEATURE_HAS_DFP,
PPC_FEATURE_POWER6_EXT): Define.
(PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS): Correct Comment.
[-2^31 .. 2^31) range.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Define ST_RELATIME.
* sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags):
Handle relatime mount option.
2006-12-13 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Include
kernel-features.h.
2006-12-11 Ulrich Drepper <drepper@redhat.com>
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Parse thousand
separators also if no non-zero digits found.
* stdlib/Makefile (tests): Add tst-strtod3.
[BZ #3664]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix test to recognize
empty parsed strings.
* stdlib/Makefile (tests): Add tst-strtod2.
* stdlib/tst-strtod2.c: New file.
[BZ #3673]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix exp_limit
computation.
* stdlib/Makefile (tests): Add tst-atof2.
* stdlib/tst-atof2.c: New file.
[BZ #3674]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Adjust exponent value
correctly if removing trailing zero of hex-float.
* stdlib/Makefile (tests): Add tst-atof1.
* stdlib/tst-atof1.c: New file.
* misc/mntent_r.c (__hasmntopt): Check p[optlen] even when p == rest.
Start searching for next comma at p rather than rest.
* misc/Makefile (tests): Add tst-mntent2.
* misc/tst-mntent2.c: New test.
2006-12-08 Ulrich Drepper <drepper@redhat.com>
* malloc/memusage.c: Handle realloc with new size of zero and
non-NULL pointer correctly.
(me): Really write first record twice.
(struct entry): Make format bi-arch safe.
(dest): Write out more realloc statistics.
* malloc/memusagestat.c (struct entry): Make format bi-arch safe.
2006-12-05 Jakub Jelinek <jakub@redhat.com>
* nis/nis_subr.c (nis_getnames): Revert last change.
2006-12-03 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/unix/sysv/linux/sh/sys/io.h: Removed.
2006-11-30 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/i386/i686/memcmp.S: Use jump table as the base of
jump table entries.
2006-11-30 Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/i386/clone.S: Provide CFI for the outermost
`clone' function to ensure proper unwinding stop of gdb.
* sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise.
2006-12-01 Ulrich Drepper <drepper@redhat.com>
* nscd/nscd.init: Remove obsolete and commented-out -S option
handling.
2006-11-23 Jakub Jelinek <jakub@redhat.com>
[BZ #3514]
* manual/string.texi (strncmp): Fix pastos from wcscmp description.
[BZ #3515]
* manual/string.texi (strtok): Remove duplicate paragraph.
2006-12-01 Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sigaction.c: Fix compatibility with
libgcc not supporting `rflags' unwinding (register # >= 17).
2006-11-30 Jakub Jelinek <jakub@redhat.com>
* sunrpc/svc_run.c (svc_run): Set my_pollfd to new_pollfd if realloc
succeeded.
2006-11-29 Daniel Jacobowitz <dan@codesourcery.com>
Jakub Jelinek <jakub@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sigaction.c (restore_rt): Add correct
unwind information.
* sysdeps/unix/sysv/linux/x86_64/Makefile: Provide symbols for
'restore_rt' even in the 'signal' directory.
* sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym: Extend the regs list.
malloc crashed. Don't allocate memory unnecessarily in each
loop.
2006-10-21 Jakub Jelinek <jakub@redhat.com>
* resolv/mapv4v6addr.h (map_v4v6_address): Fix last change.
2006-11-20 Ulrich Drepper <drepper@redhat.com>
* resolv/mapv4v6addr.h (map_v4v6_address): Optimize a bit.
2006-11-18 Bruno Haible <bruno@clisp.org>
* sysdeps/unix/sysv/linux/i386/getgroups.c (__getgroups): Invoke
__sysconf only after having tried to call getgroups32.
2006-11-19 Ulrich Drepper <drepper@redhat.com>
* nss/nss_files/files-hosts.c (LINE_PARSER): Support IPv6-style
addresses for IPv4 queries if they can be mapped.
2006-11-16 Jakub Jelinek <jakub@redhat.com>
* sysdeps/x86_64/fpu/s_copysignf.S (__copysignf): Switch to .text.
* sysdeps/x86_64/fpu/s_copysign.S (__copysign): Likewise.
(signmask): Add .size directive.
(othermask): Add .type directive.
2006-11-14 Ulrich Drepper <drepper@redhat.com>
* po/nl.po: Update from translation team.
* timezone/zdump.c: Redo fix for BZ #3137.
2006-11-14 Jakub Jelinek <jakub@redhat.com>
* nss/nss_files/files-alias.c (get_next_alias): Set line back
to first_unused after parsing :include: file.
* timezone/africa: Update from tzdata2006o.
* timezone/antarctica: Likewise.
* timezone/asia: Likewise.
* timezone/australasia: Likewise.
* timezone/backward: Likewise.
* timezone/europe: Likewise.
* timezone/iso3166.tab: Likewise.
* timezone/northamerica: Likewise.
* timezone/southamerica: Likewise.
* timezone/zone.tab: Likewise.
* time/tzfile.c (__tzfile_read): Extend to handle new file format
on machines with 64-bit time_t.
* timezone/checktab.awk: Update from tzcode2006o.
* timezone/ialloc.c: Likewise.
* timezone/private.h: Likewise.
* timezone/scheck.c: Likewise.
* timezone/tzfile.h: Likewise.
* timezone/tzselect.ksh: Likewise.
* timezone/zdump.c: Likewise.
* timezone/zic.c: Likewise.
[BZ #3483]
* elf/ldconfig.c (main): Call setlocale and textdomain.
Patch mostly by Benno Schulenberg <bensberg@justemail.net>.
[BZ #3480]
* manual/argp.texi: Fix typos.
* manual/charset.texi: Likewise.
* manual/errno.texi: Likewise.
* manual/filesys.texi: Likewise.
* manual/lang.texi: Likewise.
* manual/maint.texi: Likewise.
* manual/memory.texi: Likewise.
* manual/message.texi: Likewise.
* manual/resource.texi: Likewise.
* manual/search.texi: Likewise.
* manual/signal.texi: Likewise.
* manual/startup.texi: Likewise.
* manual/stdio.texi: Likewise.
* manual/sysinfo.texi: Likewise.
* manual/syslog.texi: Likewise.
* manual/time.texi: Likewise.
Patch by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
[BZ #3465]
* sunrpc/clnt_raw.c: Minimal message improvements.
* sunrpc/pm_getmaps.c: Likewise.
* nis/nss_nisplus/nisplus-publickey.c: Likewise.
* nis/nis_print_group_entry.c: Likewise.
* locale/programs/repertoire.c: Likewise.
* locale/programs/charmap.c: Likewise.
* malloc/memusage.sh: Likewise.
* elf/dl-deps.c: Likewise.
* locale/programs/ld-collate.c: Likewise.
* libio/vswprintf.c: Likewise.
* malloc/memusagestat.c: Likewise.
* sunrpc/auth_unix.c: Likewise.
* sunrpc/rpc_main.c: Likewise.
* nscd/cache.c: Likewise.
* locale/programs/repertoire.c: Unify output messages.
* locale/programs/charmap.c: Likewise.
* locale/programs/ld-ctype.c: Likewise.
* locale/programs/ld-monetary.c: Likewise.
* locale/programs/ld-numeric.c: Likewise.
* locale/programs/ld-time.c: Likewise.
* elf/ldconfig.c: Likewise.
* nscd/selinux.c: Likewise.
* elf/cache.c: Likewise.
Patch mostly by Benno Schulenberg <bensberg@justemail.net>.
2006-11-10 Jakub Jelinek <jakub@redhat.com>
* string/strxfrm_l.c (STRXFRM): Fix trailing \1 optimization
if N is one bigger than return value.
* string/tst-strxfrm2.c (do_test): Also test strxfrm with l1 + 1
and l1 last arguments, if buf is defined, verify the return value
equals to strlen (buf) and verify no byte beyond passed length
is modified.
2006-11-10 Ulrich Drepper <drepper@redhat.com>
* po/sv.po: Update from translation team.
* sysdeps/gnu/siglist.c (__old_sys_siglist, __old_sys_sigabbrev):
Use __new_sys_siglist instead of _sys_siglist_internal as
second macro argument.
(_old_sys_siglist): Use declare_symbol_alias macro instead of
strong_alias.
2006-11-09 Ulrich Drepper <drepper@redhat.com>
[BZ #3493]
* posix/unistd.h (sysconf): Remove const attribute.
* sysdeps/posix/getaddrinfo.c (getaddrinfo): Fix test for
temporary or deprecated addresses.
Patch by Sridhar Samudrala <sri@us.ibm.com>.
* string/Makefile (tests): Add tst-strxfrm2.
* string/tst-strxfrm2.c: New file.
2006-10-09 Jakub Jelinek <jakub@redhat.com>
* elf/dl-debug.c (_dl_debug_initialize): Check r->r_map for 0
rather than r->r_brk.
* string/strxfrm_l.c (STRXFRM): Do the trailing \1 removal
optimization even if needed > n.
2006-11-07 Jakub Jelinek <jakub@redhat.com>
* include/libc-symbols.h (declare_symbol): Rename to...
(declare_symbol_alias): ... this. Add ORIGINAL argument, imply
strong_alias (ORIGINAL, SYMBOL) in asm to make sure it preceedes
.size directive.
* sysdeps/gnu/errlist-compat.awk: Adjust for declare_symbol_alias
changes.
* sysdeps/gnu/siglist.c: Likewise.
2006-11-03 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/fpu/bits/mathinline.h
[__LIBC_INTERNAL_MATH_INLINES]: Moved to ...
* sysdeps/powerpc/fpu/math_private.h: ...here. New file.
2006-11-05 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word):
Update handling of cache descriptor 0x49 for new models.
* sysdeps/unix/sysv/linux/x86_64/sysconf.c (intel_check_word):
Likewise.
2006-11-02 Ulrich Drepper <drepper@redhat.com>
* configure.in: Work around ld --help change and avoid -z relro
test completely if the architecture doesn't care about security.
2006-11-01 Ulrich Drepper <drepper@redhat.com>
* po/sv.po: Update from translation team.
2006-10-31 Ulrich Drepper <drepper@redhat.com>
* stdlib/atexit.c (atexit): Don't mark as hidden when used to
generate compatibility version.
2006-10-29 Ulrich Drepper <drepper@redhat.com>
* configure.in: Relax -z relro requirement a bit.
* po/sv.po: Update from translation team.
2006-10-29 Jakub Jelinek <jakub@redhat.com>
* elf/dl-sym.c (do_sym): Use RTLD_SINGLE_THREAD_P.
* elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Likewise.
* elf/dl-close.c (_dl_close_worker): Likewise.
* elf/dl-open.c (_dl_open_worker): Likewise.
* sysdeps/generic/sysdep-cancel.h (RTLD_SINGLE_THREAD_P): Define.
* 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.
* csu/libc-start.c: Likewise.
* csu/libc-tls.c: Likewise.
* csu/version.c: Likewise.
* dlfcn/dlinfo.c: Likewise.
* elf/dl-addr.c: Likewise.
* elf/dl-cache.c: Likewise.
* elf/dl-close.c: Likewise.
* elf/dl-iteratephdr.c: Likewise.
* elf/dl-load.c: Likewise.
* elf/dl-lookup.c: Likewise.
* elf/dl-object.c: Likewise.
* elf/dl-open.c: Likewise.
* elf/dl-reloc.c: Likewise.
* elf/dl-support.c: Likewise.
* elf/dl-sym.c: Likewise.
* elf/dl-sysdep.c: Likewise.
* elf/dl-tls.c: Likewise.
* elf/ldconfig.c: Likewise.
* elf/rtld.c: Likewise.
* elf/tst-tls-dlinfo.c: Likewise.
* elf/tst-tls1.c: Likewise.
* elf/tst-tls10.h: Likewise.
* elf/tst-tls14.c: Likewise.
* elf/tst-tls2.c: Likewise.
* elf/tst-tls3.c: Likewise.
* elf/tst-tls4.c: Likewise.
* elf/tst-tls5.c: Likewise.
* elf/tst-tls6.c: Likewise.
* elf/tst-tls7.c: Likewise.
* elf/tst-tls8.c: Likewise.
* elf/tst-tls9.c: Likewise.
* elf/tst-tlsmod1.c: Likewise.
* elf/tst-tlsmod13.c: Likewise.
* elf/tst-tlsmod13a.c: Likewise.
* elf/tst-tlsmod14a.c: Likewise.
* elf/tst-tlsmod2.c: Likewise.
* elf/tst-tlsmod3.c: Likewise.
* elf/tst-tlsmod4.c: Likewise.
* elf/tst-tlsmod5.c: Likewise.
* elf/tst-tlsmod6.c: Likewise.
* include/errno.h: Likewise.
* include/link.h: Likewise.
* include/tls.h: Likewise.
* locale/global-locale.c: Likewise.
* locale/localeinfo.h: Likewise.
* malloc/arena.c: Likewise.
* malloc/hooks.c: Likewise.
* malloc/malloc.c: Likewise.
* resolv/Versions: Likewise.
* sysdeps/alpha/dl-machine.h: Likewise.
* sysdeps/alpha/libc-tls.c: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.
* sysdeps/generic/tls.h: Likewise.
* sysdeps/i386/dl-machine.h: Likewise.
* sysdeps/ia64/dl-machine.h: Likewise.
* sysdeps/ia64/libc-tls.c: Likewise.
* sysdeps/mach/hurd/fork.c: Likewise.
* sysdeps/mach/hurd/i386/tls.h: Likewise.
* sysdeps/powerpc/powerpc32/dl-machine.c: Likwise.
* sysdeps/powerpc/powerpc32/dl-machine.h: Likewise.
* sysdeps/powerpc/powerpc64/dl-machine.h: Likewise.
* sysdeps/s390/libc-tls.c: Likewise.
* sysdeps/s390/s390-32/dl-machine.h: Likewise.
* sysdeps/s390/s390-64/dl-machine.h: Likewise.
* sysdeps/sh/dl-machine.h: Likewise.
* sysdeps/sparc/sparc32/dl-machine.h: Likewise.
* sysdeps/sparc/sparc64/dl-machine.h: Likewise.
* sysdeps/x86_64/dl-machine.h: Likewise.
[BZ #3426]
* stdlib/stdlib.h: Adjust comment for canonicalize_file_name to
reality.
2006-10-27 Jakub Jelinek <jakub@redhat.com>
* elf/dl-lookup.c (_dl_debug_bindings): Remove unused symbol_scope
argument.
(_dl_lookup_symbol_x): Adjust caller.
* sysdeps/generic/ldsodefs.h (struct link_namespaces): Remove
_ns_global_scope.
* elf/rtld.c (dl_main): Don't initialize _ns_global_scope.
* elf/dl-libc.c: Revert l_scope name changes.
* elf/dl-load.c: Likewise.
* elf/dl-object.c: Likewise.
* elf/rtld.c: Likewise.
* elf/dl-close.c (_dl_close): Likewise.
* elf/dl-open.c (dl_open_worker): Likewise. If not SINGLE_THREAD_P,
always use __rtld_mrlock_{change,done}. Always free old scope list
here if not l_scope_mem.
* elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Revert l_scope name
change. Never free scope list here. Just __rtld_mrlock_lock before
the lookup and __rtld_mrlock_unlock it after the lookup.
* elf/dl-sym.c: Likewise.
* include/link.h (struct r_scoperec): Remove.
(struct link_map): Replace l_scoperec with l_scope, l_scoperec_mem
with l_scope_mem and l_scoperec_lock with l_scope_lock.
2006-10-25 Ulrich Drepper <drepper@redhat.com>
* sysdeps/gnu/netinet/tcp.h: Define TCP_CONGESTION.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* configure.in: Disable building profile libraries by default.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* elf/dl-lookup.c (_dl_lookup_symbol_x): Add warning to
_dl_lookup_symbol_x code.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
* elf/dl-runtime.c: Include sysdep-cancel.h.
(_dl_fixup, _dl_profile_fixup): Use __rtld_mrlock_* and
scoperec->nusers only if !SINGLE_THREAD_P. Use atomic_*
instead of catomic_* macros.
* elf/dl-sym.c: Include sysdep-cancel.h.
(do_sym): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
* elf/dl-close.c: Include sysdep-cancel.h.
(_dl_close): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
* elf/dl-open.c: Include sysdep-cancel.h.
(dl_open_worker): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
[BZ #3313]
* malloc/malloc.c (malloc_consolidate): Set maxfb to address of last
fastbin rather than end of fastbin array.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* sysdeps/i386/i486/bits/atomic.h (catomic_decrement): Use correct
body macro.
* sysdeps/x86_64/bits/atomic.h
(__arch_c_compare_and_exchange_val_64_acq): Add missing casts.
(catomic_decrement): Use correct body macro.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
* include/atomic.h: Add a unique prefix to all local variables
in macros.
* csu/tst-atomic.c (do_test): Test also catomic_* macros.
2006-10-14 Ulrich Drepper <drepper@redhat.com>
* resolv/arpa/nameser.h: Document that ns_t_a6 is deprecated.
[BZ #3313]
* malloc/malloc.c (malloc_consolidate): Don't use get_fast_max to
determine highest fast bin to consolidate, always look into all of
them.
(do_check_malloc_state): Only require for empty bins for large
sizes in main arena.
* libio/stdio.h: Add more __wur attributes.
2006-11-12 Andreas Jaeger <aj@suse.de>
[BZ #2510]
* manual/search.texi (Hash Search Function): Clarify.
(Array Search Function): Clarify.
2006-11-12 Joseph Myers <joseph@codesourcery.com>
[BZ #2830]
* math/atest-exp.c (main): Cast hex value to mp_limb_t before
shifting.
* math/atest-exp2.c (read_mpn_hex): Likewise.
* math/atest-sincos.c (main): Likewise.
* sysdeps/unix/sysv/linux/syscalls.list: Add epoll_pwait.
* sysdeps/unix/sysv/linux/sys/epoll.h: Declare epoll_pwait.
* sysdeps/unix/sysv/linux/Versions (libc): Add epoll_pwait for
version GLIBC_2.6.
* Versions.def: Add GLIBC_2.6 for libc.
* sysdeps/i386/i486/bits/atomic.h: Add catomic_* support.
2006-10-11 Jakub Jelinek <jakub@redhat.com>
* malloc/malloc.c (_int_malloc): Remove unused any_larger variable.
* nis/nis_defaults.c (__nis_default_access): Don't call getenv twice.
* nis/nis_subr.c (nis_getnames): Use __secure_getenv instead of getenv.
* sysdeps/generic/unsecvars.h: Add NIS_PATH.
2006-10-11 Ulrich Drepper <drepper@redhat.com>
* include/atomic.c: Define catomic_* operations.
* sysdeps/x86_64/bits/atomic.h: Likewise. Fix a few minor problems.
* stdlib/cxa_finalize.c: Use catomic_* operations instead of atomic_*.
* malloc/memusage.c: Likewise.
* gmon/mcount.c: Likewise.
* elf/dl-close.c: Likewise.
* elf/dl-open.c: Likewise.
* elf/dl-profile.c: Likewise.
* elf/dl-sym.c: Likewise.
* elf/dl-runtime.c: Likewise.
* elf/dl-fptr.c: Likewise.
* resolv/res_libc.c: Likewise.
2006-10-10 Roland McGrath <roland@frob.com>
* sysdeps/mach/hurd/utimes.c: Use a union to avoid an improper cast.
* sysdeps/mach/hurd/futimes.c: Likewise.
* sysdeps/mach/hurd/lutimes.c: Likewise.
2006-10-09 Ulrich Drepper <drepper@redhat.com>
Jakub Jelinek <jakub@redhat.com>
Implement reference counting of scope records.
* elf/dl-close.c (_dl_close): Remove all scopes from removed objects
from the list in objects which remain. Always allocate new scope
record.
* elf/dl-open.c (dl_open_worker): When growing array for scopes,
don't resize, allocate a new one.
* elf/dl-runtime.c: Update reference counters before using a scope
array.
* elf/dl-sym.c: Likewise.
* elf/dl-libc.c: Adjust for l_scope name change.
* elf/dl-load.c: Likewise.
* elf/dl-object.c: Likewise.
* elf/rtld.c: Likewise.
* include/link.h: Include <rtld-lowlevel.h>. Define struct
r_scoperec. Replace r_scope with pointer to r_scoperec structure.
Add l_scoperec_lock.
* sysdeps/generic/ldsodefs.h: Include <rtld-lowlevel.h>.
* sysdeps/generic/rtld-lowlevel.h: New file.
* include/atomic.h: Rename atomic_and to atomic_and_val and
atomic_or to atomic_or_val. Define new macros atomic_and and
atomic_or which do not return values.
* sysdeps/x86_64/bits/atomic.h: Define atomic_and and atomic_or.
Various cleanups.
* sysdeps/i386/i486/bits/atomic.h: Likewise.
* po/sv.po: Update from translation team.
2006-10-07 Ulrich Drepper <drepper@redhat.com>
* Versions.def: Add GLIBC_2.6 to libpthread.
* include/shlib-compat.h (SHLIB_COMPAT): Expand parameters before use.
(versioned_symbol): Likewise.
(compat_symbol): Likewise.
* po/tr.po: Update from translation team.
* nis/Banner: Removed. It's been integral part forever and the
author info is incomplete anyway.
* libio/Banner: Likewise.
2006-10-06 Ulrich Drepper <drepper@redhat.com>
* version.h (VERSION): Bump to 2.5.90 for new development tree.
2007-01-11 21:51:07 +00:00
|
|
|
[profile=no])
|
Add --enable-static-pie configure option to build static PIE [BZ #19574]
Static PIE extends address space layout randomization to static
executables. It provides additional security hardening benefits at
the cost of some memory and performance.
Dynamic linker, ld.so, is a standalone program which can be loaded at
any address. This patch adds a configure option, --enable-static-pie,
to embed the part of ld.so in static executable to create static position
independent executable (static PIE). A static PIE is similar to static
executable, but can be loaded at any address without help from a dynamic
linker. When --enable-static-pie is used to configure glibc, libc.a is
built as PIE and all static executables, including tests, are built as
static PIE. The resulting libc.a can be used together with GCC 8 or
above to build static PIE with the compiler option, -static-pie. But
GCC 8 isn't required to build glibc with --enable-static-pie. Only GCC
with PIE support is needed. When an older GCC is used to build glibc
with --enable-static-pie, proper input files are passed to linker to
create static executables as static PIE, together with "-z text" to
prevent dynamic relocations in read-only segments, which are not allowed
in static PIE.
The following changes are made for static PIE:
1. Add a new function, _dl_relocate_static_pie, to:
a. Get the run-time load address.
b. Read the dynamic section.
c. Perform dynamic relocations.
Dynamic linker also performs these steps. But static PIE doesn't load
any shared objects.
2. Call _dl_relocate_static_pie at entrance of LIBC_START_MAIN in
libc.a. crt1.o, which is used to create dynamic and non-PIE static
executables, is updated to include a dummy _dl_relocate_static_pie.
rcrt1.o is added to create static PIE, which will link in the real
_dl_relocate_static_pie. grcrt1.o is also added to create static PIE
with -pg. GCC 8 has been updated to support rcrt1.o and grcrt1.o for
static PIE.
Static PIE can work on all architectures which support PIE, provided:
1. Target must support accessing of local functions without dynamic
relocations, which is needed in start.S to call __libc_start_main with
function addresses of __libc_csu_init, __libc_csu_fini and main. All
functions in static PIE are local functions. If PIE start.S can't reach
main () defined in a shared object, the code sequence:
pass address of local_main to __libc_start_main
...
local_main:
tail call to main via PLT
can be used.
2. start.S is updated to check PIC instead SHARED for PIC code path and
avoid dynamic relocation, when PIC is defined and SHARED isn't defined,
to support static PIE.
3. All assembly codes are updated check PIC instead SHARED for PIC code
path to avoid dynamic relocations in read-only sections.
4. All assembly codes are updated check SHARED instead PIC for static
symbol name.
5. elf_machine_load_address in dl-machine.h are updated to support static
PIE.
6. __brk works without TLS nor dynamic relocations in read-only section
so that it can be used by __libc_setup_tls to initializes TLS in static
PIE.
NB: When glibc is built with GCC defaulted to PIE, libc.a is compiled
with -fPIE, regardless if --enable-static-pie is used to configure glibc.
When glibc is configured with --enable-static-pie, libc.a is compiled
with -fPIE, regardless whether GCC defaults to PIE or not. The same
libc.a can be used to build both static executable and static PIE.
There is no need for separate PIE copy of libc.a.
On x86-64, the normal static sln:
text data bss dec hex filename
625425 8284 5456 639165 9c0bd elf/sln
the static PIE sln:
text data bss dec hex filename
657626 20636 5392 683654 a6e86 elf/sln
The code size is increased by 5% and the binary size is increased by 7%.
Linker requirements to build glibc with --enable-static-pie:
1. Linker supports --no-dynamic-linker to remove PT_INTERP segment from
static PIE.
2. Linker can create working static PIE. The x86-64 linker needs the
fix for
https://sourceware.org/bugzilla/show_bug.cgi?id=21782
The i386 linker needs to be able to convert "movl main@GOT(%ebx), %eax"
to "leal main@GOTOFF(%ebx), %eax" if main is defined locally.
Binutils 2.29 or above are OK for i686 and x86-64. But linker status for
other targets need to be verified.
3. Linker should resolve undefined weak symbols to 0 in static PIE:
https://sourceware.org/bugzilla/show_bug.cgi?id=22269
4. Many ELF backend linkers incorrectly check bfd_link_pic for TLS
relocations, which should check bfd_link_executable instead:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
Tested on aarch64, i686 and x86-64.
Using GCC 7 and binutils master branch, build-many-glibcs.py with
--enable-static-pie with all patches for static PIE applied have the
following build successes:
PASS: glibcs-aarch64_be-linux-gnu build
PASS: glibcs-aarch64-linux-gnu build
PASS: glibcs-armeb-linux-gnueabi-be8 build
PASS: glibcs-armeb-linux-gnueabi build
PASS: glibcs-armeb-linux-gnueabihf-be8 build
PASS: glibcs-armeb-linux-gnueabihf build
PASS: glibcs-arm-linux-gnueabi build
PASS: glibcs-arm-linux-gnueabihf build
PASS: glibcs-arm-linux-gnueabihf-v7a build
PASS: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch build
PASS: glibcs-m68k-linux-gnu build
PASS: glibcs-microblazeel-linux-gnu build
PASS: glibcs-microblaze-linux-gnu build
PASS: glibcs-mips64el-linux-gnu-n32 build
PASS: glibcs-mips64el-linux-gnu-n32-nan2008 build
PASS: glibcs-mips64el-linux-gnu-n32-nan2008-soft build
PASS: glibcs-mips64el-linux-gnu-n32-soft build
PASS: glibcs-mips64el-linux-gnu-n64 build
PASS: glibcs-mips64el-linux-gnu-n64-nan2008 build
PASS: glibcs-mips64el-linux-gnu-n64-nan2008-soft build
PASS: glibcs-mips64el-linux-gnu-n64-soft build
PASS: glibcs-mips64-linux-gnu-n32 build
PASS: glibcs-mips64-linux-gnu-n32-nan2008 build
PASS: glibcs-mips64-linux-gnu-n32-nan2008-soft build
PASS: glibcs-mips64-linux-gnu-n32-soft build
PASS: glibcs-mips64-linux-gnu-n64 build
PASS: glibcs-mips64-linux-gnu-n64-nan2008 build
PASS: glibcs-mips64-linux-gnu-n64-nan2008-soft build
PASS: glibcs-mips64-linux-gnu-n64-soft build
PASS: glibcs-mipsel-linux-gnu build
PASS: glibcs-mipsel-linux-gnu-nan2008 build
PASS: glibcs-mipsel-linux-gnu-nan2008-soft build
PASS: glibcs-mipsel-linux-gnu-soft build
PASS: glibcs-mips-linux-gnu build
PASS: glibcs-mips-linux-gnu-nan2008 build
PASS: glibcs-mips-linux-gnu-nan2008-soft build
PASS: glibcs-mips-linux-gnu-soft build
PASS: glibcs-nios2-linux-gnu build
PASS: glibcs-powerpc64le-linux-gnu build
PASS: glibcs-powerpc64-linux-gnu build
PASS: glibcs-tilegxbe-linux-gnu-32 build
PASS: glibcs-tilegxbe-linux-gnu build
PASS: glibcs-tilegx-linux-gnu-32 build
PASS: glibcs-tilegx-linux-gnu build
PASS: glibcs-tilepro-linux-gnu build
and the following build failures:
FAIL: glibcs-alpha-linux-gnu build
elf/sln is failed to link due to:
assertion fail bfd/elf64-alpha.c:4125
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-hppa-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
https://sourceware.org/bugzilla/show_bug.cgi?id=22537
FAIL: glibcs-ia64-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
FAIL: glibcs-powerpc-linux-gnu build
FAIL: glibcs-powerpc-linux-gnu-soft build
FAIL: glibcs-powerpc-linux-gnuspe build
FAIL: glibcs-powerpc-linux-gnuspe-e500v1 build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22264
FAIL: glibcs-powerpc-linux-gnu-power4 build
elf/sln is failed to link due to:
findlocale.c:96:(.text+0x22c): @local call to ifunc memchr
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-s390-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped
assertion fail bfd/elflink.c:14299
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-sh3eb-linux-gnu build
FAIL: glibcs-sh3-linux-gnu build
FAIL: glibcs-sh4eb-linux-gnu build
FAIL: glibcs-sh4eb-linux-gnu-soft build
FAIL: glibcs-sh4-linux-gnu build
FAIL: glibcs-sh4-linux-gnu-soft build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
Also TLS code sequence in SH assembly syscalls in glibc doesn't match TLS
code sequence expected by ld:
https://sourceware.org/bugzilla/show_bug.cgi?id=22270
FAIL: glibcs-sparc64-linux-gnu build
FAIL: glibcs-sparcv9-linux-gnu build
FAIL: glibcs-tilegxbe-linux-gnu build
FAIL: glibcs-tilegxbe-linux-gnu-32 build
FAIL: glibcs-tilegx-linux-gnu build
FAIL: glibcs-tilegx-linux-gnu-32 build
FAIL: glibcs-tilepro-linux-gnu build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
[BZ #19574]
* INSTALL: Regenerated.
* Makeconfig (real-static-start-installed-name): New.
(pic-default): Updated for --enable-static-pie.
(pie-default): New for --enable-static-pie.
(default-pie-ldflag): Likewise.
(+link-static-before-libc): Replace $(DEFAULT-LDFLAGS-$(@F))
with $(if $($(@F)-no-pie),$(no-pie-ldflag),$(default-pie-ldflag)).
Replace $(static-start-installed-name) with
$(real-static-start-installed-name).
(+prectorT): Updated for --enable-static-pie.
(+postctorT): Likewise.
(CFLAGS-.o): Add $(pie-default).
(CFLAGS-.op): Likewise.
* NEWS: Mention --enable-static-pie.
* config.h.in (ENABLE_STATIC_PIE): New.
* configure.ac (--enable-static-pie): New configure option.
(have-no-dynamic-linker): New LIBC_CONFIG_VAR.
(have-static-pie): Likewise.
Enable static PIE if linker supports --no-dynamic-linker.
(ENABLE_STATIC_PIE): New AC_DEFINE.
(enable-static-pie): New LIBC_CONFIG_VAR.
* configure: Regenerated.
* csu/Makefile (omit-deps): Add r$(start-installed-name) and
gr$(start-installed-name) for --enable-static-pie.
(extra-objs): Likewise.
(install-lib): Likewise.
(extra-objs): Add static-reloc.o and static-reloc.os
($(objpfx)$(start-installed-name)): Also depend on
$(objpfx)static-reloc.o.
($(objpfx)r$(start-installed-name)): New.
($(objpfx)g$(start-installed-name)): Also depend on
$(objpfx)static-reloc.os.
($(objpfx)gr$(start-installed-name)): New.
* csu/libc-start.c (LIBC_START_MAIN): Call _dl_relocate_static_pie
in libc.a.
* csu/libc-tls.c (__libc_setup_tls): Add main_map->l_addr to
initimage.
* csu/static-reloc.c: New file.
* elf/Makefile (routines): Add dl-reloc-static-pie.
(elide-routines.os): Likewise.
(DEFAULT-LDFLAGS-tst-tls1-static-non-pie): Removed.
(tst-tls1-static-non-pie-no-pie): New.
* elf/dl-reloc-static-pie.c: New file.
* elf/dl-support.c (_dl_get_dl_main_map): New function.
* elf/dynamic-link.h (ELF_DURING_STARTUP): Also check
STATIC_PIE_BOOTSTRAP.
* elf/get-dynamic-info.h (elf_get_dynamic_info): Likewise.
* gmon/Makefile (tests): Add tst-gmon-static-pie.
(tests-static): Likewise.
(DEFAULT-LDFLAGS-tst-gmon-static): Removed.
(tst-gmon-static-no-pie): New.
(CFLAGS-tst-gmon-static-pie.c): Likewise.
(CRT-tst-gmon-static-pie): Likewise.
(tst-gmon-static-pie-ENV): Likewise.
(tests-special): Likewise.
($(objpfx)tst-gmon-static-pie.out): Likewise.
(clean-tst-gmon-static-pie-data): Likewise.
($(objpfx)tst-gmon-static-pie-gprof.out): Likewise.
* gmon/tst-gmon-static-pie.c: New file.
* manual/install.texi: Document --enable-static-pie.
* sysdeps/generic/ldsodefs.h (_dl_relocate_static_pie): New.
(_dl_get_dl_main_map): Likewise.
* sysdeps/i386/configure.ac: Check if linker supports static PIE.
* sysdeps/x86_64/configure.ac: Likewise.
* sysdeps/i386/configure: Regenerated.
* sysdeps/x86_64/configure: Likewise.
* sysdeps/mips/Makefile (ASFLAGS-.o): Add $(pie-default).
(ASFLAGS-.op): Likewise.
2017-12-16 00:59:33 +00:00
|
|
|
AC_ARG_ENABLE([static-pie],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-static-pie],
|
Add --enable-static-pie configure option to build static PIE [BZ #19574]
Static PIE extends address space layout randomization to static
executables. It provides additional security hardening benefits at
the cost of some memory and performance.
Dynamic linker, ld.so, is a standalone program which can be loaded at
any address. This patch adds a configure option, --enable-static-pie,
to embed the part of ld.so in static executable to create static position
independent executable (static PIE). A static PIE is similar to static
executable, but can be loaded at any address without help from a dynamic
linker. When --enable-static-pie is used to configure glibc, libc.a is
built as PIE and all static executables, including tests, are built as
static PIE. The resulting libc.a can be used together with GCC 8 or
above to build static PIE with the compiler option, -static-pie. But
GCC 8 isn't required to build glibc with --enable-static-pie. Only GCC
with PIE support is needed. When an older GCC is used to build glibc
with --enable-static-pie, proper input files are passed to linker to
create static executables as static PIE, together with "-z text" to
prevent dynamic relocations in read-only segments, which are not allowed
in static PIE.
The following changes are made for static PIE:
1. Add a new function, _dl_relocate_static_pie, to:
a. Get the run-time load address.
b. Read the dynamic section.
c. Perform dynamic relocations.
Dynamic linker also performs these steps. But static PIE doesn't load
any shared objects.
2. Call _dl_relocate_static_pie at entrance of LIBC_START_MAIN in
libc.a. crt1.o, which is used to create dynamic and non-PIE static
executables, is updated to include a dummy _dl_relocate_static_pie.
rcrt1.o is added to create static PIE, which will link in the real
_dl_relocate_static_pie. grcrt1.o is also added to create static PIE
with -pg. GCC 8 has been updated to support rcrt1.o and grcrt1.o for
static PIE.
Static PIE can work on all architectures which support PIE, provided:
1. Target must support accessing of local functions without dynamic
relocations, which is needed in start.S to call __libc_start_main with
function addresses of __libc_csu_init, __libc_csu_fini and main. All
functions in static PIE are local functions. If PIE start.S can't reach
main () defined in a shared object, the code sequence:
pass address of local_main to __libc_start_main
...
local_main:
tail call to main via PLT
can be used.
2. start.S is updated to check PIC instead SHARED for PIC code path and
avoid dynamic relocation, when PIC is defined and SHARED isn't defined,
to support static PIE.
3. All assembly codes are updated check PIC instead SHARED for PIC code
path to avoid dynamic relocations in read-only sections.
4. All assembly codes are updated check SHARED instead PIC for static
symbol name.
5. elf_machine_load_address in dl-machine.h are updated to support static
PIE.
6. __brk works without TLS nor dynamic relocations in read-only section
so that it can be used by __libc_setup_tls to initializes TLS in static
PIE.
NB: When glibc is built with GCC defaulted to PIE, libc.a is compiled
with -fPIE, regardless if --enable-static-pie is used to configure glibc.
When glibc is configured with --enable-static-pie, libc.a is compiled
with -fPIE, regardless whether GCC defaults to PIE or not. The same
libc.a can be used to build both static executable and static PIE.
There is no need for separate PIE copy of libc.a.
On x86-64, the normal static sln:
text data bss dec hex filename
625425 8284 5456 639165 9c0bd elf/sln
the static PIE sln:
text data bss dec hex filename
657626 20636 5392 683654 a6e86 elf/sln
The code size is increased by 5% and the binary size is increased by 7%.
Linker requirements to build glibc with --enable-static-pie:
1. Linker supports --no-dynamic-linker to remove PT_INTERP segment from
static PIE.
2. Linker can create working static PIE. The x86-64 linker needs the
fix for
https://sourceware.org/bugzilla/show_bug.cgi?id=21782
The i386 linker needs to be able to convert "movl main@GOT(%ebx), %eax"
to "leal main@GOTOFF(%ebx), %eax" if main is defined locally.
Binutils 2.29 or above are OK for i686 and x86-64. But linker status for
other targets need to be verified.
3. Linker should resolve undefined weak symbols to 0 in static PIE:
https://sourceware.org/bugzilla/show_bug.cgi?id=22269
4. Many ELF backend linkers incorrectly check bfd_link_pic for TLS
relocations, which should check bfd_link_executable instead:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
Tested on aarch64, i686 and x86-64.
Using GCC 7 and binutils master branch, build-many-glibcs.py with
--enable-static-pie with all patches for static PIE applied have the
following build successes:
PASS: glibcs-aarch64_be-linux-gnu build
PASS: glibcs-aarch64-linux-gnu build
PASS: glibcs-armeb-linux-gnueabi-be8 build
PASS: glibcs-armeb-linux-gnueabi build
PASS: glibcs-armeb-linux-gnueabihf-be8 build
PASS: glibcs-armeb-linux-gnueabihf build
PASS: glibcs-arm-linux-gnueabi build
PASS: glibcs-arm-linux-gnueabihf build
PASS: glibcs-arm-linux-gnueabihf-v7a build
PASS: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch build
PASS: glibcs-m68k-linux-gnu build
PASS: glibcs-microblazeel-linux-gnu build
PASS: glibcs-microblaze-linux-gnu build
PASS: glibcs-mips64el-linux-gnu-n32 build
PASS: glibcs-mips64el-linux-gnu-n32-nan2008 build
PASS: glibcs-mips64el-linux-gnu-n32-nan2008-soft build
PASS: glibcs-mips64el-linux-gnu-n32-soft build
PASS: glibcs-mips64el-linux-gnu-n64 build
PASS: glibcs-mips64el-linux-gnu-n64-nan2008 build
PASS: glibcs-mips64el-linux-gnu-n64-nan2008-soft build
PASS: glibcs-mips64el-linux-gnu-n64-soft build
PASS: glibcs-mips64-linux-gnu-n32 build
PASS: glibcs-mips64-linux-gnu-n32-nan2008 build
PASS: glibcs-mips64-linux-gnu-n32-nan2008-soft build
PASS: glibcs-mips64-linux-gnu-n32-soft build
PASS: glibcs-mips64-linux-gnu-n64 build
PASS: glibcs-mips64-linux-gnu-n64-nan2008 build
PASS: glibcs-mips64-linux-gnu-n64-nan2008-soft build
PASS: glibcs-mips64-linux-gnu-n64-soft build
PASS: glibcs-mipsel-linux-gnu build
PASS: glibcs-mipsel-linux-gnu-nan2008 build
PASS: glibcs-mipsel-linux-gnu-nan2008-soft build
PASS: glibcs-mipsel-linux-gnu-soft build
PASS: glibcs-mips-linux-gnu build
PASS: glibcs-mips-linux-gnu-nan2008 build
PASS: glibcs-mips-linux-gnu-nan2008-soft build
PASS: glibcs-mips-linux-gnu-soft build
PASS: glibcs-nios2-linux-gnu build
PASS: glibcs-powerpc64le-linux-gnu build
PASS: glibcs-powerpc64-linux-gnu build
PASS: glibcs-tilegxbe-linux-gnu-32 build
PASS: glibcs-tilegxbe-linux-gnu build
PASS: glibcs-tilegx-linux-gnu-32 build
PASS: glibcs-tilegx-linux-gnu build
PASS: glibcs-tilepro-linux-gnu build
and the following build failures:
FAIL: glibcs-alpha-linux-gnu build
elf/sln is failed to link due to:
assertion fail bfd/elf64-alpha.c:4125
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-hppa-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
https://sourceware.org/bugzilla/show_bug.cgi?id=22537
FAIL: glibcs-ia64-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
FAIL: glibcs-powerpc-linux-gnu build
FAIL: glibcs-powerpc-linux-gnu-soft build
FAIL: glibcs-powerpc-linux-gnuspe build
FAIL: glibcs-powerpc-linux-gnuspe-e500v1 build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22264
FAIL: glibcs-powerpc-linux-gnu-power4 build
elf/sln is failed to link due to:
findlocale.c:96:(.text+0x22c): @local call to ifunc memchr
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-s390-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped
assertion fail bfd/elflink.c:14299
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-sh3eb-linux-gnu build
FAIL: glibcs-sh3-linux-gnu build
FAIL: glibcs-sh4eb-linux-gnu build
FAIL: glibcs-sh4eb-linux-gnu-soft build
FAIL: glibcs-sh4-linux-gnu build
FAIL: glibcs-sh4-linux-gnu-soft build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
Also TLS code sequence in SH assembly syscalls in glibc doesn't match TLS
code sequence expected by ld:
https://sourceware.org/bugzilla/show_bug.cgi?id=22270
FAIL: glibcs-sparc64-linux-gnu build
FAIL: glibcs-sparcv9-linux-gnu build
FAIL: glibcs-tilegxbe-linux-gnu build
FAIL: glibcs-tilegxbe-linux-gnu-32 build
FAIL: glibcs-tilegx-linux-gnu build
FAIL: glibcs-tilegx-linux-gnu-32 build
FAIL: glibcs-tilepro-linux-gnu build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
[BZ #19574]
* INSTALL: Regenerated.
* Makeconfig (real-static-start-installed-name): New.
(pic-default): Updated for --enable-static-pie.
(pie-default): New for --enable-static-pie.
(default-pie-ldflag): Likewise.
(+link-static-before-libc): Replace $(DEFAULT-LDFLAGS-$(@F))
with $(if $($(@F)-no-pie),$(no-pie-ldflag),$(default-pie-ldflag)).
Replace $(static-start-installed-name) with
$(real-static-start-installed-name).
(+prectorT): Updated for --enable-static-pie.
(+postctorT): Likewise.
(CFLAGS-.o): Add $(pie-default).
(CFLAGS-.op): Likewise.
* NEWS: Mention --enable-static-pie.
* config.h.in (ENABLE_STATIC_PIE): New.
* configure.ac (--enable-static-pie): New configure option.
(have-no-dynamic-linker): New LIBC_CONFIG_VAR.
(have-static-pie): Likewise.
Enable static PIE if linker supports --no-dynamic-linker.
(ENABLE_STATIC_PIE): New AC_DEFINE.
(enable-static-pie): New LIBC_CONFIG_VAR.
* configure: Regenerated.
* csu/Makefile (omit-deps): Add r$(start-installed-name) and
gr$(start-installed-name) for --enable-static-pie.
(extra-objs): Likewise.
(install-lib): Likewise.
(extra-objs): Add static-reloc.o and static-reloc.os
($(objpfx)$(start-installed-name)): Also depend on
$(objpfx)static-reloc.o.
($(objpfx)r$(start-installed-name)): New.
($(objpfx)g$(start-installed-name)): Also depend on
$(objpfx)static-reloc.os.
($(objpfx)gr$(start-installed-name)): New.
* csu/libc-start.c (LIBC_START_MAIN): Call _dl_relocate_static_pie
in libc.a.
* csu/libc-tls.c (__libc_setup_tls): Add main_map->l_addr to
initimage.
* csu/static-reloc.c: New file.
* elf/Makefile (routines): Add dl-reloc-static-pie.
(elide-routines.os): Likewise.
(DEFAULT-LDFLAGS-tst-tls1-static-non-pie): Removed.
(tst-tls1-static-non-pie-no-pie): New.
* elf/dl-reloc-static-pie.c: New file.
* elf/dl-support.c (_dl_get_dl_main_map): New function.
* elf/dynamic-link.h (ELF_DURING_STARTUP): Also check
STATIC_PIE_BOOTSTRAP.
* elf/get-dynamic-info.h (elf_get_dynamic_info): Likewise.
* gmon/Makefile (tests): Add tst-gmon-static-pie.
(tests-static): Likewise.
(DEFAULT-LDFLAGS-tst-gmon-static): Removed.
(tst-gmon-static-no-pie): New.
(CFLAGS-tst-gmon-static-pie.c): Likewise.
(CRT-tst-gmon-static-pie): Likewise.
(tst-gmon-static-pie-ENV): Likewise.
(tests-special): Likewise.
($(objpfx)tst-gmon-static-pie.out): Likewise.
(clean-tst-gmon-static-pie-data): Likewise.
($(objpfx)tst-gmon-static-pie-gprof.out): Likewise.
* gmon/tst-gmon-static-pie.c: New file.
* manual/install.texi: Document --enable-static-pie.
* sysdeps/generic/ldsodefs.h (_dl_relocate_static_pie): New.
(_dl_get_dl_main_map): Likewise.
* sysdeps/i386/configure.ac: Check if linker supports static PIE.
* sysdeps/x86_64/configure.ac: Likewise.
* sysdeps/i386/configure: Regenerated.
* sysdeps/x86_64/configure: Likewise.
* sysdeps/mips/Makefile (ASFLAGS-.o): Add $(pie-default).
(ASFLAGS-.op): Likewise.
2017-12-16 00:59:33 +00:00
|
|
|
[enable static PIE support and use it in the testsuite @<:@default=no@:>@]),
|
|
|
|
[static_pie=$enableval],
|
|
|
|
[static_pie=no])
|
2015-09-18 18:00:05 +00:00
|
|
|
AC_ARG_ENABLE([timezone-tools],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--disable-timezone-tools],
|
2015-10-19 18:12:03 +00:00
|
|
|
[do not install timezone tools @<:@default=install@:>@]),
|
2015-09-18 18:00:05 +00:00
|
|
|
[enable_timezone_tools=$enableval],
|
|
|
|
[enable_timezone_tools=yes])
|
|
|
|
AC_SUBST(enable_timezone_tools)
|
2002-10-20 00:21:33 +00:00
|
|
|
|
2013-01-11 15:14:18 +00:00
|
|
|
AC_ARG_ENABLE([hardcoded-path-in-tests],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-hardcoded-path-in-tests],
|
2013-01-11 15:14:18 +00:00
|
|
|
[hardcode newly built glibc path in tests @<:@default=no@:>@]),
|
|
|
|
[hardcoded_path_in_tests=$enableval],
|
|
|
|
[hardcoded_path_in_tests=no])
|
|
|
|
AC_SUBST(hardcoded_path_in_tests)
|
|
|
|
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_ARG_ENABLE([hidden-plt],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--disable-hidden-plt],
|
2011-01-17 02:29:41 +00:00
|
|
|
[do not hide internal function calls to avoid PLT]),
|
2002-10-20 00:21:33 +00:00
|
|
|
[hidden=$enableval],
|
|
|
|
[hidden=yes])
|
2002-10-01 08:45:44 +00:00
|
|
|
if test "x$hidden" = xno; then
|
|
|
|
AC_DEFINE(NO_HIDDEN)
|
|
|
|
fi
|
|
|
|
|
2004-03-06 09:51:56 +00:00
|
|
|
AC_ARG_ENABLE([bind-now],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-bind-now],
|
2004-03-06 09:51:56 +00:00
|
|
|
[disable lazy relocations in DSOs]),
|
|
|
|
[bindnow=$enableval],
|
|
|
|
[bindnow=no])
|
|
|
|
AC_SUBST(bindnow)
|
2016-05-24 15:44:10 +00:00
|
|
|
if test "x$bindnow" = xyes; then
|
|
|
|
AC_DEFINE(BIND_NOW)
|
|
|
|
fi
|
2004-03-06 09:51:56 +00:00
|
|
|
|
2016-12-26 09:08:18 +00:00
|
|
|
dnl Build glibc with -fstack-protector, -fstack-protector-all, or
|
|
|
|
dnl -fstack-protector-strong.
|
|
|
|
AC_ARG_ENABLE([stack-protector],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-stack-protector=@<:@yes|no|all|strong@:>@],
|
2016-12-26 09:08:18 +00:00
|
|
|
[Use -fstack-protector[-all|-strong] to detect glibc buffer overflows]),
|
|
|
|
[enable_stack_protector=$enableval],
|
|
|
|
[enable_stack_protector=no])
|
|
|
|
case "$enable_stack_protector" in
|
|
|
|
all|yes|no|strong) ;;
|
|
|
|
*) AC_MSG_ERROR([Not a valid argument for --enable-stack-protector: \"$enable_stack_protector\"]);;
|
|
|
|
esac
|
|
|
|
|
1997-06-21 02:59:26 +00:00
|
|
|
dnl On some platforms we cannot use dynamic loading. We must provide
|
|
|
|
dnl static NSS modules.
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_ARG_ENABLE([static-nss],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-static-nss],
|
2011-01-17 02:29:41 +00:00
|
|
|
[build static NSS modules @<:@default=no@:>@]),
|
2002-10-20 00:21:33 +00:00
|
|
|
[static_nss=$enableval],
|
|
|
|
[static_nss=no])
|
2002-05-28 05:26:16 +00:00
|
|
|
dnl Enable static NSS also if we build no shared objects.
|
|
|
|
if test x"$static_nss" = xyes || test x"$shared" = xno; then
|
Update.
2002-07-15 Alexandre Oliva <aoliva@redhat.com>
* configure.in (static_nss): Set to `yes' if --disable-shared.
2002-07-23 Bruno Haible <bruno@clisp.org>
* intl/loadmsgcat.c (PRI*): Redefine the macros if PRI_MACROS_BROKEN
is set.
2002-07-25 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/ia64/sigcontextinfo.h: New file.
* sysdeps/unix/sysv/linux/ia64/profil-counter.h: Fix profil_counter
arguments.
2002-07-25 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/alpha/adjtime.c (__adjtimex_internal): Add
alias.
2002-07-21 Bruno Haible <bruno@clisp.org>
* intl/libintl.h (__GNU_GETTEXT_SUPPORTED_REVISION): New macro.
* intl/gettext.h (struct mo_file_header): New fields n_sysdep_segments,
sysdep_segments_offset, n_sysdep_strings, orig_sysdep_tab_offset,
trans_sysdep_tab_offset.
(struct sysdep_segment): New type.
(struct sysdep_string): New type.
(SEGMENTS_END): New macro.
* intl/gettextP.h (struct sysdep_string_desc): New type.
(struct loaded_domain): New fields malloced, n_sysdep_strings,
orig_sysdep_tab, trans_sysdep_tab, must_swap_hash_tab. Make fields
orig_tab, trans_tab, hash_tab to const pointers because they point
into read-only memory.
* intl/loadmsgcat.c: Include stdint.h, inttypes.h, hash-string.h.
(PRI*): Define fallback values.
(get_sysdep_segment_value): New function.
(_nl_load_domain): Distinguish major and minor revision parts. Add
support for minor revision 1 with system dependent strings.
(_nl_unload_domain): Also free the 'malloced' field.
* intl/dcigettext.c (_nl_find_msg): Remove test for domain->hash_size,
now done in loadmsgcat.c. Add support for system dependent strings.
2002-07-27 08:47:23 +00:00
|
|
|
static_nss=yes
|
1997-06-21 02:59:26 +00:00
|
|
|
AC_DEFINE(DO_STATIC_NSS)
|
|
|
|
fi
|
|
|
|
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_ARG_ENABLE([force-install],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--disable-force-install],
|
2011-01-17 02:29:41 +00:00
|
|
|
[don't force installation of files from this package, even if they are older than the installed files]),
|
2002-10-20 00:21:33 +00:00
|
|
|
[force_install=$enableval],
|
|
|
|
[force_install=yes])
|
1998-04-09 10:14:17 +00:00
|
|
|
AC_SUBST(force_install)
|
|
|
|
|
2013-12-16 01:25:04 +00:00
|
|
|
AC_ARG_ENABLE([maintainer-mode],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-maintainer-mode],
|
2013-12-16 01:25:04 +00:00
|
|
|
[enable make rules and dependencies not useful (and sometimes confusing) to the casual installer]),
|
|
|
|
[maintainer=$enableval],
|
|
|
|
[maintainer=no])
|
|
|
|
|
1999-05-26 23:37:38 +00:00
|
|
|
dnl On some platforms we allow dropping compatibility with all kernel
|
|
|
|
dnl versions.
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_ARG_ENABLE([kernel],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-kernel=VERSION],
|
2011-01-17 02:29:41 +00:00
|
|
|
[compile for compatibility with kernel not older than VERSION]),
|
2002-10-20 00:21:33 +00:00
|
|
|
[minimum_kernel=$enableval],
|
|
|
|
[])
|
1999-10-25 21:12:06 +00:00
|
|
|
dnl Prevent unreasonable values.
|
|
|
|
if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
|
|
|
|
# Better nothing than this.
|
|
|
|
minimum_kernel=""
|
1999-11-13 05:14:32 +00:00
|
|
|
else
|
|
|
|
if test "$minimum_kernel" = current; then
|
|
|
|
minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
|
|
|
|
fi
|
1999-10-25 21:12:06 +00:00
|
|
|
fi
|
1999-05-26 23:37:38 +00:00
|
|
|
|
2000-11-20 22:13:20 +00:00
|
|
|
dnl For the development we sometimes want gcc to issue even more warnings.
|
|
|
|
dnl This is not the default since many of the extra warnings are not
|
|
|
|
dnl appropriate.
|
2002-10-20 00:21:33 +00:00
|
|
|
AC_ARG_ENABLE([all-warnings],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-all-warnings],
|
2011-01-17 02:29:41 +00:00
|
|
|
[enable all useful warnings gcc can issue]),
|
2002-10-20 00:21:33 +00:00
|
|
|
[all_warnings=$enableval],
|
|
|
|
[])
|
2000-11-20 22:13:20 +00:00
|
|
|
AC_SUBST(all_warnings)
|
|
|
|
|
Use -Werror by default, add --disable-werror.
As discussed starting at
<https://sourceware.org/ml/libc-alpha/2014-11/msg00323.html>, this
patch makes the glibc build use -Werror by default to avoid
accidentally adding new warnings to the build. The configure option
--disable-werror can be used to disable this.
-Wno-error=undef is temporarily used because the build isn't clean
regarding -Wundef warnings. The idea is that once the remaining
-Wundef warnings have been cleaned up (in at least one configuration),
-Wno-error=undef will be removed.
I get a clean build and test on x86_64 (GCC 4.9 branch) with this
patch. The expectation is that this may well break the build for some
other configurations, and people seeing such breakage should make
appropriate fixes to fix or suppress the warnings for their
configurations. In some cases that may involve using pragmas as the
right fix (I think that will be right for the -Wno-inline issue for
MIPS I referred to in
<https://sourceware.org/ml/libc-alpha/2012-11/msg00798.html>, for
example), in some cases -Wno-error in sysdeps makefiles (__restore_rt
in MIPS sigaction, for example), in some cases substantive fixes for
the warnings.
Note that if, with a view to listing all the warnings then fixing them
all, you just look for "warning:" in output from building and testing
with --disable-werror, you'll see lots of warnings from the linker
about functions such as tmpnam. Those warnings can be ignored - only
compiler warnings are relevant to -Werror, not linker warnings.
* configure.ac (--disable-werror): New configure option.
(enable_werror): New AC_SUBST.
* configure: Regenerated.
* config.make.in (enable-werror): New variable.
* Makeconfig [$(enable-werror) = yes] (+gccwarn): Add -Werror
-Wno-error=undef.
(+gccwarn-c): Do not use -Werror=implicit-function-declaration.
* manual/install.texi (Configuring and compiling): Document
--disable-werror.
* INSTALL: Regenerated.
* debug/Makefile (CFLAGS-tst-chk1.c): Add -Wno-error.
(CFLAGS-tst-chk2.c): Likewise.
(CFLAGS-tst-chk3.c): Likewise.
(CFLAGS-tst-chk4.cc): Likewise.
(CFLAGS-tst-chk5.cc): Likewise.
(CFLAGS-tst-chk6.cc): Likewise.
(CFLAGS-tst-lfschk1.c): Likewise.
(CFLAGS-tst-lfschk2.c): Likewise.
(CFLAGS-tst-lfschk3.c): Likewise.
(CFLAGS-tst-lfschk4.cc): Likewise.
(CFLAGS-tst-lfschk5.cc): Likewise.
(CFLAGS-tst-lfschk6.cc): Likewise.
2014-12-10 01:14:48 +00:00
|
|
|
AC_ARG_ENABLE([werror],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--disable-werror],
|
Use -Werror by default, add --disable-werror.
As discussed starting at
<https://sourceware.org/ml/libc-alpha/2014-11/msg00323.html>, this
patch makes the glibc build use -Werror by default to avoid
accidentally adding new warnings to the build. The configure option
--disable-werror can be used to disable this.
-Wno-error=undef is temporarily used because the build isn't clean
regarding -Wundef warnings. The idea is that once the remaining
-Wundef warnings have been cleaned up (in at least one configuration),
-Wno-error=undef will be removed.
I get a clean build and test on x86_64 (GCC 4.9 branch) with this
patch. The expectation is that this may well break the build for some
other configurations, and people seeing such breakage should make
appropriate fixes to fix or suppress the warnings for their
configurations. In some cases that may involve using pragmas as the
right fix (I think that will be right for the -Wno-inline issue for
MIPS I referred to in
<https://sourceware.org/ml/libc-alpha/2012-11/msg00798.html>, for
example), in some cases -Wno-error in sysdeps makefiles (__restore_rt
in MIPS sigaction, for example), in some cases substantive fixes for
the warnings.
Note that if, with a view to listing all the warnings then fixing them
all, you just look for "warning:" in output from building and testing
with --disable-werror, you'll see lots of warnings from the linker
about functions such as tmpnam. Those warnings can be ignored - only
compiler warnings are relevant to -Werror, not linker warnings.
* configure.ac (--disable-werror): New configure option.
(enable_werror): New AC_SUBST.
* configure: Regenerated.
* config.make.in (enable-werror): New variable.
* Makeconfig [$(enable-werror) = yes] (+gccwarn): Add -Werror
-Wno-error=undef.
(+gccwarn-c): Do not use -Werror=implicit-function-declaration.
* manual/install.texi (Configuring and compiling): Document
--disable-werror.
* INSTALL: Regenerated.
* debug/Makefile (CFLAGS-tst-chk1.c): Add -Wno-error.
(CFLAGS-tst-chk2.c): Likewise.
(CFLAGS-tst-chk3.c): Likewise.
(CFLAGS-tst-chk4.cc): Likewise.
(CFLAGS-tst-chk5.cc): Likewise.
(CFLAGS-tst-chk6.cc): Likewise.
(CFLAGS-tst-lfschk1.c): Likewise.
(CFLAGS-tst-lfschk2.c): Likewise.
(CFLAGS-tst-lfschk3.c): Likewise.
(CFLAGS-tst-lfschk4.cc): Likewise.
(CFLAGS-tst-lfschk5.cc): Likewise.
(CFLAGS-tst-lfschk6.cc): Likewise.
2014-12-10 01:14:48 +00:00
|
|
|
[do not build with -Werror]),
|
|
|
|
[enable_werror=$enableval],
|
|
|
|
[enable_werror=yes])
|
|
|
|
AC_SUBST(enable_werror)
|
|
|
|
|
2009-03-13 23:53:18 +00:00
|
|
|
AC_ARG_ENABLE([multi-arch],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-multi-arch],
|
2009-03-13 23:53:18 +00:00
|
|
|
[enable single DSO with optimizations for multiple architectures]),
|
|
|
|
[multi_arch=$enableval],
|
2009-12-24 04:22:46 +00:00
|
|
|
[multi_arch=default])
|
2009-03-13 23:53:18 +00:00
|
|
|
|
2017-07-06 17:37:30 +00:00
|
|
|
AC_ARG_ENABLE([experimental-malloc],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--disable-experimental-malloc],
|
2017-07-06 17:37:30 +00:00
|
|
|
[disable experimental malloc features]),
|
|
|
|
[experimental_malloc=$enableval],
|
|
|
|
[experimental_malloc=yes])
|
|
|
|
AC_SUBST(experimental_malloc)
|
|
|
|
|
2020-12-21 15:03:03 +00:00
|
|
|
AC_ARG_ENABLE([memory-tagging],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-memory-tagging],
|
2020-12-21 15:03:03 +00:00
|
|
|
[enable memory tagging if supported by the architecture @<:@default=no@:>@]),
|
|
|
|
[memory_tagging=$enableval],
|
|
|
|
[memory_tagging=no])
|
|
|
|
if test "$memory_tagging" = yes; then
|
|
|
|
# Only enable this on architectures that support it.
|
|
|
|
case $host_cpu in
|
|
|
|
aarch64)
|
|
|
|
AC_DEFINE(USE_MTAG)
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
AC_SUBST(memory_tagging)
|
|
|
|
|
2018-06-29 14:53:47 +00:00
|
|
|
AC_ARG_ENABLE([crypt],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--disable-crypt],
|
2018-06-29 14:53:47 +00:00
|
|
|
[do not build nor install the passphrase hashing library, libcrypt]),
|
|
|
|
[build_crypt=$enableval],
|
|
|
|
[build_crypt=yes])
|
|
|
|
AC_SUBST(build_crypt)
|
|
|
|
|
2009-04-02 17:00:46 +00:00
|
|
|
AC_ARG_ENABLE([nss-crypt],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-nss-crypt],
|
2009-04-02 17:00:46 +00:00
|
|
|
[enable libcrypt to use nss]),
|
|
|
|
[nss_crypt=$enableval],
|
|
|
|
[nss_crypt=no])
|
2018-06-29 14:53:47 +00:00
|
|
|
if test x$build_libcrypt = xno && test x$nss_crypt = xyes; then
|
|
|
|
AC_MSG_WARN([--enable-nss-crypt has no effect when libcrypt is disabled])
|
|
|
|
nss_crypt=no
|
|
|
|
fi
|
2009-04-02 17:00:46 +00:00
|
|
|
if test x$nss_crypt = xyes; then
|
|
|
|
nss_includes=-I$(nss-config --includedir 2>/dev/null)
|
|
|
|
if test $? -ne 0; then
|
|
|
|
AC_MSG_ERROR([cannot find include directory with nss-config])
|
|
|
|
fi
|
2017-10-04 13:02:35 +00:00
|
|
|
nspr_includes=-I$(nspr-config --includedir 2>/dev/null)
|
|
|
|
if test $? -ne 0; then
|
|
|
|
AC_MSG_ERROR([cannot find include directory with nspr-config])
|
|
|
|
fi
|
2009-04-02 17:00:46 +00:00
|
|
|
old_CFLAGS="$CFLAGS"
|
2017-10-04 13:02:35 +00:00
|
|
|
CFLAGS="$CFLAGS $nss_includes $nspr_includes"
|
2011-06-10 18:09:12 +00:00
|
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
|
2009-04-02 17:00:46 +00:00
|
|
|
#include <hasht.h>
|
|
|
|
#include <nsslowhash.h>
|
2011-06-10 18:09:12 +00:00
|
|
|
void f (void) { NSSLOW_Init (); }])],
|
2009-04-02 17:00:46 +00:00
|
|
|
libc_cv_nss_crypt=yes,
|
|
|
|
AC_MSG_ERROR([
|
|
|
|
cannot find NSS headers with lowlevel hash function interfaces]))
|
|
|
|
old_LIBS="$LIBS"
|
2016-12-02 20:39:09 +00:00
|
|
|
old_LDFLAGS="$LDFLAGS"
|
2009-04-02 17:00:46 +00:00
|
|
|
LIBS="$LIBS -lfreebl3"
|
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
|
|
|
|
#include <hasht.h>
|
|
|
|
#include <nsslowhash.h>],
|
|
|
|
[NSSLOW_Init();])],
|
|
|
|
libc_cv_nss_crypt=yes,
|
|
|
|
AC_MSG_ERROR([
|
|
|
|
cannot link program using lowlevel NSS hash functions]))
|
2016-12-02 20:39:09 +00:00
|
|
|
# Check to see if there is a static NSS cryptographic library.
|
|
|
|
# If there isn't then we can't link anything with libcrypt.a,
|
|
|
|
# and that might mean disabling some static tests.
|
|
|
|
LDFLAGS="$LDFLAGS -static"
|
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
|
|
|
|
#include <hasht.h>
|
|
|
|
#include <nsslowhash.h>],
|
|
|
|
[NSSLOW_Init();])],
|
|
|
|
libc_cv_static_nss_crypt=yes,
|
|
|
|
libc_cv_static_nss_crypt=no)
|
|
|
|
LDFLAGS="$old_LDFLAGS"
|
2009-04-02 17:00:46 +00:00
|
|
|
CFLAGS="$old_CFLAGS"
|
|
|
|
LIBS="$old_LIBS"
|
|
|
|
else
|
|
|
|
libc_cv_nss_crypt=no
|
2016-12-02 20:39:09 +00:00
|
|
|
libc_cv_static_nss_crypt=no
|
2009-04-02 17:00:46 +00:00
|
|
|
fi
|
|
|
|
AC_SUBST(libc_cv_nss_crypt)
|
2016-12-02 20:39:09 +00:00
|
|
|
AC_SUBST(libc_cv_static_nss_crypt)
|
2009-04-02 17:00:46 +00:00
|
|
|
|
2012-05-25 20:40:20 +00:00
|
|
|
|
|
|
|
AC_ARG_ENABLE([systemtap],
|
|
|
|
[AS_HELP_STRING([--enable-systemtap],
|
|
|
|
[enable systemtap static probe points @<:@default=no@:>@])],
|
|
|
|
[systemtap=$enableval],
|
|
|
|
[systemtap=no])
|
|
|
|
if test "x$systemtap" != xno; then
|
|
|
|
AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
|
|
|
|
old_CFLAGS="$CFLAGS"
|
2015-10-27 21:47:22 +00:00
|
|
|
CFLAGS="-std=gnu11 $CFLAGS"
|
2012-06-22 14:58:19 +00:00
|
|
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h>
|
2012-05-25 20:40:20 +00:00
|
|
|
void foo (int i, void *p)
|
|
|
|
{
|
|
|
|
asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
|
|
|
|
:: STAP_PROBE_ASM_OPERANDS (2, i, p));
|
2012-06-22 14:58:19 +00:00
|
|
|
}]])], [libc_cv_sdt=yes], [libc_cv_sdt=no])
|
2012-05-25 20:40:20 +00:00
|
|
|
CFLAGS="$old_CFLAGS"])
|
|
|
|
if test $libc_cv_sdt = yes; then
|
|
|
|
AC_DEFINE([USE_STAP_PROBE])
|
|
|
|
elif test "x$systemtap" != xauto; then
|
|
|
|
AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2012-08-22 20:35:55 +00:00
|
|
|
AC_ARG_ENABLE([build-nscd],
|
|
|
|
[AS_HELP_STRING([--disable-build-nscd],
|
|
|
|
[disable building and installing the nscd daemon])],
|
|
|
|
[build_nscd=$enableval],
|
|
|
|
[build_nscd=default])
|
|
|
|
AC_SUBST(build_nscd)
|
|
|
|
|
2012-08-22 20:31:12 +00:00
|
|
|
# Note the use of $use_nscd is near the bottom of the file.
|
|
|
|
AC_ARG_ENABLE([nscd],
|
|
|
|
[AS_HELP_STRING([--disable-nscd],
|
|
|
|
[library functions will not contact the nscd daemon])],
|
|
|
|
[use_nscd=$enableval],
|
|
|
|
[use_nscd=yes])
|
|
|
|
|
2013-07-19 06:42:03 +00:00
|
|
|
AC_ARG_ENABLE([pt_chown],
|
|
|
|
[AS_HELP_STRING([--enable-pt_chown],
|
|
|
|
[Enable building and installing pt_chown])],
|
|
|
|
[build_pt_chown=$enableval],
|
|
|
|
[build_pt_chown=no])
|
|
|
|
AC_SUBST(build_pt_chown)
|
2013-08-25 20:01:52 +00:00
|
|
|
if test "$build_pt_chown" = yes; then
|
2013-07-19 06:42:03 +00:00
|
|
|
AC_DEFINE(HAVE_PT_CHOWN)
|
|
|
|
fi
|
|
|
|
|
2016-12-31 18:02:17 +00:00
|
|
|
AC_ARG_ENABLE([tunables],
|
|
|
|
[AS_HELP_STRING([--enable-tunables],
|
2016-12-31 18:04:04 +00:00
|
|
|
[Enable tunables support. Known values are 'yes', 'no' and 'valstring'])],
|
2016-12-31 18:02:17 +00:00
|
|
|
[have_tunables=$enableval],
|
2017-06-15 09:42:54 +00:00
|
|
|
[have_tunables=yes])
|
2016-12-31 18:02:17 +00:00
|
|
|
AC_SUBST(have_tunables)
|
|
|
|
if test "$have_tunables" = yes; then
|
|
|
|
AC_DEFINE(HAVE_TUNABLES)
|
|
|
|
fi
|
|
|
|
|
2015-02-11 23:27:50 +00:00
|
|
|
# The abi-tags file uses a fairly simplistic model for name recognition that
|
|
|
|
# can't distinguish i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a
|
|
|
|
# $host_os of `gnu*' here to be `gnu-gnu*' just so that it can tell.
|
|
|
|
# This doesn't get used much beyond that, so it's fairly safe.
|
|
|
|
case "$host_os" in
|
|
|
|
linux*)
|
|
|
|
;;
|
|
|
|
gnu*)
|
|
|
|
host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2015-05-14 14:28:06 +00:00
|
|
|
AC_ARG_ENABLE([mathvec],
|
|
|
|
[AS_HELP_STRING([--enable-mathvec],
|
|
|
|
[Enable building and installing mathvec @<:@default depends on architecture@:>@])],
|
|
|
|
[build_mathvec=$enableval],
|
|
|
|
[build_mathvec=notset])
|
|
|
|
|
2021-05-22 02:42:48 +00:00
|
|
|
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[
|
2019-12-03 17:48:18 +00:00
|
|
|
#ifndef __CET__
|
|
|
|
# error no CET compiler support
|
2021-05-22 02:42:48 +00:00
|
|
|
#endif]])],
|
2019-12-03 17:48:18 +00:00
|
|
|
[libc_cv_compiler_default_cet=yes],
|
|
|
|
[libc_cv_compiler_default_cet=no])
|
|
|
|
|
x86: Support IBT and SHSTK in Intel CET [BZ #21598]
Intel Control-flow Enforcement Technology (CET) instructions:
https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-en
forcement-technology-preview.pdf
includes Indirect Branch Tracking (IBT) and Shadow Stack (SHSTK).
GNU_PROPERTY_X86_FEATURE_1_IBT is added to GNU program property to
indicate that all executable sections are compatible with IBT when
ENDBR instruction starts each valid target where an indirect branch
instruction can land. Linker sets GNU_PROPERTY_X86_FEATURE_1_IBT on
output only if it is set on all relocatable inputs.
On an IBT capable processor, the following steps should be taken:
1. When loading an executable without an interpreter, enable IBT and
lock IBT if GNU_PROPERTY_X86_FEATURE_1_IBT is set on the executable.
2. When loading an executable with an interpreter, enable IBT if
GNU_PROPERTY_X86_FEATURE_1_IBT is set on the interpreter.
a. If GNU_PROPERTY_X86_FEATURE_1_IBT isn't set on the executable,
disable IBT.
b. Lock IBT.
3. If IBT is enabled, when loading a shared object without
GNU_PROPERTY_X86_FEATURE_1_IBT:
a. If legacy interwork is allowed, then mark all pages in executable
PT_LOAD segments in legacy code page bitmap. Failure of legacy code
page bitmap allocation causes an error.
b. If legacy interwork isn't allowed, it causes an error.
GNU_PROPERTY_X86_FEATURE_1_SHSTK is added to GNU program property to
indicate that all executable sections are compatible with SHSTK where
return address popped from shadow stack always matches return address
popped from normal stack. Linker sets GNU_PROPERTY_X86_FEATURE_1_SHSTK
on output only if it is set on all relocatable inputs.
On a SHSTK capable processor, the following steps should be taken:
1. When loading an executable without an interpreter, enable SHSTK if
GNU_PROPERTY_X86_FEATURE_1_SHSTK is set on the executable.
2. When loading an executable with an interpreter, enable SHSTK if
GNU_PROPERTY_X86_FEATURE_1_SHSTK is set on interpreter.
a. If GNU_PROPERTY_X86_FEATURE_1_SHSTK isn't set on the executable
or any shared objects loaded via the DT_NEEDED tag, disable SHSTK.
b. Otherwise lock SHSTK.
3. After SHSTK is enabled, it is an error to load a shared object
without GNU_PROPERTY_X86_FEATURE_1_SHSTK.
To enable CET support in glibc, --enable-cet is required to configure
glibc. When CET is enabled, both compiler and assembler must support
CET. Otherwise, it is a configure-time error.
To support CET run-time control,
1. _dl_x86_feature_1 is added to the writable ld.so namespace to indicate
if IBT or SHSTK are enabled at run-time. It should be initialized by
init_cpu_features.
2. For dynamic executables:
a. A l_cet field is added to struct link_map to indicate if IBT or
SHSTK is enabled in an ELF module. _dl_process_pt_note or
_rtld_process_pt_note is called to process PT_NOTE segment for
GNU program property and set l_cet.
b. _dl_open_check is added to check IBT and SHSTK compatibilty when
dlopening a shared object.
3. Replace i386 _dl_runtime_resolve and _dl_runtime_profile with
_dl_runtime_resolve_shstk and _dl_runtime_profile_shstk, respectively if
SHSTK is enabled.
CET run-time control can be changed via GLIBC_TUNABLES with
$ export GLIBC_TUNABLES=glibc.tune.x86_shstk=[permissive|on|off]
$ export GLIBC_TUNABLES=glibc.tune.x86_ibt=[permissive|on|off]
1. permissive: SHSTK is disabled when dlopening a legacy ELF module.
2. on: IBT or SHSTK are always enabled, regardless if there are IBT or
SHSTK bits in GNU program property.
3. off: IBT or SHSTK are always disabled, regardless if there are IBT or
SHSTK bits in GNU program property.
<cet.h> from CET-enabled GCC is automatically included by assembly codes
to add GNU_PROPERTY_X86_FEATURE_1_IBT and GNU_PROPERTY_X86_FEATURE_1_SHSTK
to GNU program property. _CET_ENDBR is added at the entrance of all
assembly functions whose address may be taken. _CET_NOTRACK is used to
insert NOTRACK prefix with indirect jump table to support IBT. It is
defined as notrack when _CET_NOTRACK is defined in <cet.h>.
[BZ #21598]
* configure.ac: Add --enable-cet.
* configure: Regenerated.
* elf/Makefille (all-built-dso): Add a comment.
* elf/dl-load.c (filebuf): Moved before "dynamic-link.h".
Include <dl-prop.h>.
(_dl_map_object_from_fd): Call _dl_process_pt_note on PT_NOTE
segment.
* elf/dl-open.c: Include <dl-prop.h>.
(dl_open_worker): Call _dl_open_check.
* elf/rtld.c: Include <dl-prop.h>.
(dl_main): Call _rtld_process_pt_note on PT_NOTE segment. Call
_rtld_main_check.
* sysdeps/generic/dl-prop.h: New file.
* sysdeps/i386/dl-cet.c: Likewise.
* sysdeps/unix/sysv/linux/x86/cpu-features.c: Likewise.
* sysdeps/unix/sysv/linux/x86/dl-cet.h: Likewise.
* sysdeps/x86/cet-tunables.h: Likewise.
* sysdeps/x86/check-cet.awk: Likewise.
* sysdeps/x86/configure: Likewise.
* sysdeps/x86/configure.ac: Likewise.
* sysdeps/x86/dl-cet.c: Likewise.
* sysdeps/x86/dl-procruntime.c: Likewise.
* sysdeps/x86/dl-prop.h: Likewise.
* sysdeps/x86/libc-start.h: Likewise.
* sysdeps/x86/link_map.h: Likewise.
* sysdeps/i386/dl-trampoline.S (_dl_runtime_resolve): Add
_CET_ENDBR.
(_dl_runtime_profile): Likewise.
(_dl_runtime_resolve_shstk): New.
(_dl_runtime_profile_shstk): Likewise.
* sysdeps/linux/x86/Makefile (sysdep-dl-routines): Add dl-cet
if CET is enabled.
(CFLAGS-.o): Add -fcf-protection if CET is enabled.
(CFLAGS-.os): Likewise.
(CFLAGS-.op): Likewise.
(CFLAGS-.oS): Likewise.
(asm-CPPFLAGS): Add -fcf-protection -include cet.h if CET
is enabled.
(tests-special): Add $(objpfx)check-cet.out.
(cet-built-dso): New.
(+$(cet-built-dso:=.note)): Likewise.
(common-generated): Add $(cet-built-dso:$(common-objpfx)%=%.note).
($(objpfx)check-cet.out): New.
(generated): Add check-cet.out.
* sysdeps/x86/cpu-features.c: Include <dl-cet.h> and
<cet-tunables.h>.
(TUNABLE_CALLBACK (set_x86_ibt)): New prototype.
(TUNABLE_CALLBACK (set_x86_shstk)): Likewise.
(init_cpu_features): Call get_cet_status to check CET status
and update dl_x86_feature_1 with CET status. Call
TUNABLE_CALLBACK (set_x86_ibt) and TUNABLE_CALLBACK
(set_x86_shstk). Disable and lock CET in libc.a.
* sysdeps/x86/cpu-tunables.c: Include <cet-tunables.h>.
(TUNABLE_CALLBACK (set_x86_ibt)): New function.
(TUNABLE_CALLBACK (set_x86_shstk)): Likewise.
* sysdeps/x86/sysdep.h (_CET_NOTRACK): New.
(_CET_ENDBR): Define if not defined.
(ENTRY): Add _CET_ENDBR.
* sysdeps/x86/dl-tunables.list (glibc.tune): Add x86_ibt and
x86_shstk.
* sysdeps/x86_64/dl-trampoline.h (_dl_runtime_resolve): Add
_CET_ENDBR.
(_dl_runtime_profile): Likewise.
2018-07-16 21:08:15 +00:00
|
|
|
AC_ARG_ENABLE([cet],
|
2021-02-15 12:31:37 +00:00
|
|
|
AS_HELP_STRING([--enable-cet],
|
x86: Support IBT and SHSTK in Intel CET [BZ #21598]
Intel Control-flow Enforcement Technology (CET) instructions:
https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-en
forcement-technology-preview.pdf
includes Indirect Branch Tracking (IBT) and Shadow Stack (SHSTK).
GNU_PROPERTY_X86_FEATURE_1_IBT is added to GNU program property to
indicate that all executable sections are compatible with IBT when
ENDBR instruction starts each valid target where an indirect branch
instruction can land. Linker sets GNU_PROPERTY_X86_FEATURE_1_IBT on
output only if it is set on all relocatable inputs.
On an IBT capable processor, the following steps should be taken:
1. When loading an executable without an interpreter, enable IBT and
lock IBT if GNU_PROPERTY_X86_FEATURE_1_IBT is set on the executable.
2. When loading an executable with an interpreter, enable IBT if
GNU_PROPERTY_X86_FEATURE_1_IBT is set on the interpreter.
a. If GNU_PROPERTY_X86_FEATURE_1_IBT isn't set on the executable,
disable IBT.
b. Lock IBT.
3. If IBT is enabled, when loading a shared object without
GNU_PROPERTY_X86_FEATURE_1_IBT:
a. If legacy interwork is allowed, then mark all pages in executable
PT_LOAD segments in legacy code page bitmap. Failure of legacy code
page bitmap allocation causes an error.
b. If legacy interwork isn't allowed, it causes an error.
GNU_PROPERTY_X86_FEATURE_1_SHSTK is added to GNU program property to
indicate that all executable sections are compatible with SHSTK where
return address popped from shadow stack always matches return address
popped from normal stack. Linker sets GNU_PROPERTY_X86_FEATURE_1_SHSTK
on output only if it is set on all relocatable inputs.
On a SHSTK capable processor, the following steps should be taken:
1. When loading an executable without an interpreter, enable SHSTK if
GNU_PROPERTY_X86_FEATURE_1_SHSTK is set on the executable.
2. When loading an executable with an interpreter, enable SHSTK if
GNU_PROPERTY_X86_FEATURE_1_SHSTK is set on interpreter.
a. If GNU_PROPERTY_X86_FEATURE_1_SHSTK isn't set on the executable
or any shared objects loaded via the DT_NEEDED tag, disable SHSTK.
b. Otherwise lock SHSTK.
3. After SHSTK is enabled, it is an error to load a shared object
without GNU_PROPERTY_X86_FEATURE_1_SHSTK.
To enable CET support in glibc, --enable-cet is required to configure
glibc. When CET is enabled, both compiler and assembler must support
CET. Otherwise, it is a configure-time error.
To support CET run-time control,
1. _dl_x86_feature_1 is added to the writable ld.so namespace to indicate
if IBT or SHSTK are enabled at run-time. It should be initialized by
init_cpu_features.
2. For dynamic executables:
a. A l_cet field is added to struct link_map to indicate if IBT or
SHSTK is enabled in an ELF module. _dl_process_pt_note or
_rtld_process_pt_note is called to process PT_NOTE segment for
GNU program property and set l_cet.
b. _dl_open_check is added to check IBT and SHSTK compatibilty when
dlopening a shared object.
3. Replace i386 _dl_runtime_resolve and _dl_runtime_profile with
_dl_runtime_resolve_shstk and _dl_runtime_profile_shstk, respectively if
SHSTK is enabled.
CET run-time control can be changed via GLIBC_TUNABLES with
$ export GLIBC_TUNABLES=glibc.tune.x86_shstk=[permissive|on|off]
$ export GLIBC_TUNABLES=glibc.tune.x86_ibt=[permissive|on|off]
1. permissive: SHSTK is disabled when dlopening a legacy ELF module.
2. on: IBT or SHSTK are always enabled, regardless if there are IBT or
SHSTK bits in GNU program property.
3. off: IBT or SHSTK are always disabled, regardless if there are IBT or
SHSTK bits in GNU program property.
<cet.h> from CET-enabled GCC is automatically included by assembly codes
to add GNU_PROPERTY_X86_FEATURE_1_IBT and GNU_PROPERTY_X86_FEATURE_1_SHSTK
to GNU program property. _CET_ENDBR is added at the entrance of all
assembly functions whose address may be taken. _CET_NOTRACK is used to
insert NOTRACK prefix with indirect jump table to support IBT. It is
defined as notrack when _CET_NOTRACK is defined in <cet.h>.
[BZ #21598]
* configure.ac: Add --enable-cet.
* configure: Regenerated.
* elf/Makefille (all-built-dso): Add a comment.
* elf/dl-load.c (filebuf): Moved before "dynamic-link.h".
Include <dl-prop.h>.
(_dl_map_object_from_fd): Call _dl_process_pt_note on PT_NOTE
segment.
* elf/dl-open.c: Include <dl-prop.h>.
(dl_open_worker): Call _dl_open_check.
* elf/rtld.c: Include <dl-prop.h>.
(dl_main): Call _rtld_process_pt_note on PT_NOTE segment. Call
_rtld_main_check.
* sysdeps/generic/dl-prop.h: New file.
* sysdeps/i386/dl-cet.c: Likewise.
* sysdeps/unix/sysv/linux/x86/cpu-features.c: Likewise.
* sysdeps/unix/sysv/linux/x86/dl-cet.h: Likewise.
* sysdeps/x86/cet-tunables.h: Likewise.
* sysdeps/x86/check-cet.awk: Likewise.
* sysdeps/x86/configure: Likewise.
* sysdeps/x86/configure.ac: Likewise.
* sysdeps/x86/dl-cet.c: Likewise.
* sysdeps/x86/dl-procruntime.c: Likewise.
* sysdeps/x86/dl-prop.h: Likewise.
* sysdeps/x86/libc-start.h: Likewise.
* sysdeps/x86/link_map.h: Likewise.
* sysdeps/i386/dl-trampoline.S (_dl_runtime_resolve): Add
_CET_ENDBR.
(_dl_runtime_profile): Likewise.
(_dl_runtime_resolve_shstk): New.
(_dl_runtime_profile_shstk): Likewise.
* sysdeps/linux/x86/Makefile (sysdep-dl-routines): Add dl-cet
if CET is enabled.
(CFLAGS-.o): Add -fcf-protection if CET is enabled.
(CFLAGS-.os): Likewise.
(CFLAGS-.op): Likewise.
(CFLAGS-.oS): Likewise.
(asm-CPPFLAGS): Add -fcf-protection -include cet.h if CET
is enabled.
(tests-special): Add $(objpfx)check-cet.out.
(cet-built-dso): New.
(+$(cet-built-dso:=.note)): Likewise.
(common-generated): Add $(cet-built-dso:$(common-objpfx)%=%.note).
($(objpfx)check-cet.out): New.
(generated): Add check-cet.out.
* sysdeps/x86/cpu-features.c: Include <dl-cet.h> and
<cet-tunables.h>.
(TUNABLE_CALLBACK (set_x86_ibt)): New prototype.
(TUNABLE_CALLBACK (set_x86_shstk)): Likewise.
(init_cpu_features): Call get_cet_status to check CET status
and update dl_x86_feature_1 with CET status. Call
TUNABLE_CALLBACK (set_x86_ibt) and TUNABLE_CALLBACK
(set_x86_shstk). Disable and lock CET in libc.a.
* sysdeps/x86/cpu-tunables.c: Include <cet-tunables.h>.
(TUNABLE_CALLBACK (set_x86_ibt)): New function.
(TUNABLE_CALLBACK (set_x86_shstk)): Likewise.
* sysdeps/x86/sysdep.h (_CET_NOTRACK): New.
(_CET_ENDBR): Define if not defined.
(ENTRY): Add _CET_ENDBR.
* sysdeps/x86/dl-tunables.list (glibc.tune): Add x86_ibt and
x86_shstk.
* sysdeps/x86_64/dl-trampoline.h (_dl_runtime_resolve): Add
_CET_ENDBR.
(_dl_runtime_profile): Likewise.
2018-07-16 21:08:15 +00:00
|
|
|
[enable Intel Control-flow Enforcement Technology (CET), x86 only]),
|
|
|
|
[enable_cet=$enableval],
|
2019-12-03 17:48:18 +00:00
|
|
|
[enable_cet=$libc_cv_compiler_default_cet])
|
x86: Support IBT and SHSTK in Intel CET [BZ #21598]
Intel Control-flow Enforcement Technology (CET) instructions:
https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-en
forcement-technology-preview.pdf
includes Indirect Branch Tracking (IBT) and Shadow Stack (SHSTK).
GNU_PROPERTY_X86_FEATURE_1_IBT is added to GNU program property to
indicate that all executable sections are compatible with IBT when
ENDBR instruction starts each valid target where an indirect branch
instruction can land. Linker sets GNU_PROPERTY_X86_FEATURE_1_IBT on
output only if it is set on all relocatable inputs.
On an IBT capable processor, the following steps should be taken:
1. When loading an executable without an interpreter, enable IBT and
lock IBT if GNU_PROPERTY_X86_FEATURE_1_IBT is set on the executable.
2. When loading an executable with an interpreter, enable IBT if
GNU_PROPERTY_X86_FEATURE_1_IBT is set on the interpreter.
a. If GNU_PROPERTY_X86_FEATURE_1_IBT isn't set on the executable,
disable IBT.
b. Lock IBT.
3. If IBT is enabled, when loading a shared object without
GNU_PROPERTY_X86_FEATURE_1_IBT:
a. If legacy interwork is allowed, then mark all pages in executable
PT_LOAD segments in legacy code page bitmap. Failure of legacy code
page bitmap allocation causes an error.
b. If legacy interwork isn't allowed, it causes an error.
GNU_PROPERTY_X86_FEATURE_1_SHSTK is added to GNU program property to
indicate that all executable sections are compatible with SHSTK where
return address popped from shadow stack always matches return address
popped from normal stack. Linker sets GNU_PROPERTY_X86_FEATURE_1_SHSTK
on output only if it is set on all relocatable inputs.
On a SHSTK capable processor, the following steps should be taken:
1. When loading an executable without an interpreter, enable SHSTK if
GNU_PROPERTY_X86_FEATURE_1_SHSTK is set on the executable.
2. When loading an executable with an interpreter, enable SHSTK if
GNU_PROPERTY_X86_FEATURE_1_SHSTK is set on interpreter.
a. If GNU_PROPERTY_X86_FEATURE_1_SHSTK isn't set on the executable
or any shared objects loaded via the DT_NEEDED tag, disable SHSTK.
b. Otherwise lock SHSTK.
3. After SHSTK is enabled, it is an error to load a shared object
without GNU_PROPERTY_X86_FEATURE_1_SHSTK.
To enable CET support in glibc, --enable-cet is required to configure
glibc. When CET is enabled, both compiler and assembler must support
CET. Otherwise, it is a configure-time error.
To support CET run-time control,
1. _dl_x86_feature_1 is added to the writable ld.so namespace to indicate
if IBT or SHSTK are enabled at run-time. It should be initialized by
init_cpu_features.
2. For dynamic executables:
a. A l_cet field is added to struct link_map to indicate if IBT or
SHSTK is enabled in an ELF module. _dl_process_pt_note or
_rtld_process_pt_note is called to process PT_NOTE segment for
GNU program property and set l_cet.
b. _dl_open_check is added to check IBT and SHSTK compatibilty when
dlopening a shared object.
3. Replace i386 _dl_runtime_resolve and _dl_runtime_profile with
_dl_runtime_resolve_shstk and _dl_runtime_profile_shstk, respectively if
SHSTK is enabled.
CET run-time control can be changed via GLIBC_TUNABLES with
$ export GLIBC_TUNABLES=glibc.tune.x86_shstk=[permissive|on|off]
$ export GLIBC_TUNABLES=glibc.tune.x86_ibt=[permissive|on|off]
1. permissive: SHSTK is disabled when dlopening a legacy ELF module.
2. on: IBT or SHSTK are always enabled, regardless if there are IBT or
SHSTK bits in GNU program property.
3. off: IBT or SHSTK are always disabled, regardless if there are IBT or
SHSTK bits in GNU program property.
<cet.h> from CET-enabled GCC is automatically included by assembly codes
to add GNU_PROPERTY_X86_FEATURE_1_IBT and GNU_PROPERTY_X86_FEATURE_1_SHSTK
to GNU program property. _CET_ENDBR is added at the entrance of all
assembly functions whose address may be taken. _CET_NOTRACK is used to
insert NOTRACK prefix with indirect jump table to support IBT. It is
defined as notrack when _CET_NOTRACK is defined in <cet.h>.
[BZ #21598]
* configure.ac: Add --enable-cet.
* configure: Regenerated.
* elf/Makefille (all-built-dso): Add a comment.
* elf/dl-load.c (filebuf): Moved before "dynamic-link.h".
Include <dl-prop.h>.
(_dl_map_object_from_fd): Call _dl_process_pt_note on PT_NOTE
segment.
* elf/dl-open.c: Include <dl-prop.h>.
(dl_open_worker): Call _dl_open_check.
* elf/rtld.c: Include <dl-prop.h>.
(dl_main): Call _rtld_process_pt_note on PT_NOTE segment. Call
_rtld_main_check.
* sysdeps/generic/dl-prop.h: New file.
* sysdeps/i386/dl-cet.c: Likewise.
* sysdeps/unix/sysv/linux/x86/cpu-features.c: Likewise.
* sysdeps/unix/sysv/linux/x86/dl-cet.h: Likewise.
* sysdeps/x86/cet-tunables.h: Likewise.
* sysdeps/x86/check-cet.awk: Likewise.
* sysdeps/x86/configure: Likewise.
* sysdeps/x86/configure.ac: Likewise.
* sysdeps/x86/dl-cet.c: Likewise.
* sysdeps/x86/dl-procruntime.c: Likewise.
* sysdeps/x86/dl-prop.h: Likewise.
* sysdeps/x86/libc-start.h: Likewise.
* sysdeps/x86/link_map.h: Likewise.
* sysdeps/i386/dl-trampoline.S (_dl_runtime_resolve): Add
_CET_ENDBR.
(_dl_runtime_profile): Likewise.
(_dl_runtime_resolve_shstk): New.
(_dl_runtime_profile_shstk): Likewise.
* sysdeps/linux/x86/Makefile (sysdep-dl-routines): Add dl-cet
if CET is enabled.
(CFLAGS-.o): Add -fcf-protection if CET is enabled.
(CFLAGS-.os): Likewise.
(CFLAGS-.op): Likewise.
(CFLAGS-.oS): Likewise.
(asm-CPPFLAGS): Add -fcf-protection -include cet.h if CET
is enabled.
(tests-special): Add $(objpfx)check-cet.out.
(cet-built-dso): New.
(+$(cet-built-dso:=.note)): Likewise.
(common-generated): Add $(cet-built-dso:$(common-objpfx)%=%.note).
($(objpfx)check-cet.out): New.
(generated): Add check-cet.out.
* sysdeps/x86/cpu-features.c: Include <dl-cet.h> and
<cet-tunables.h>.
(TUNABLE_CALLBACK (set_x86_ibt)): New prototype.
(TUNABLE_CALLBACK (set_x86_shstk)): Likewise.
(init_cpu_features): Call get_cet_status to check CET status
and update dl_x86_feature_1 with CET status. Call
TUNABLE_CALLBACK (set_x86_ibt) and TUNABLE_CALLBACK
(set_x86_shstk). Disable and lock CET in libc.a.
* sysdeps/x86/cpu-tunables.c: Include <cet-tunables.h>.
(TUNABLE_CALLBACK (set_x86_ibt)): New function.
(TUNABLE_CALLBACK (set_x86_shstk)): Likewise.
* sysdeps/x86/sysdep.h (_CET_NOTRACK): New.
(_CET_ENDBR): Define if not defined.
(ENTRY): Add _CET_ENDBR.
* sysdeps/x86/dl-tunables.list (glibc.tune): Add x86_ibt and
x86_shstk.
* sysdeps/x86_64/dl-trampoline.h (_dl_runtime_resolve): Add
_CET_ENDBR.
(_dl_runtime_profile): Likewise.
2018-07-16 21:08:15 +00:00
|
|
|
|
2021-04-09 17:47:27 +00:00
|
|
|
AC_ARG_ENABLE([scv],
|
|
|
|
AC_HELP_STRING([--disable-scv],
|
|
|
|
[syscalls will not use scv instruction, even if the kernel supports it, powerpc only]),
|
|
|
|
[use_scv=$enableval],
|
|
|
|
[use_scv=yes])
|
|
|
|
|
|
|
|
AS_IF([[test "$use_scv" != "no"]],[AC_DEFINE(USE_PPC_SCV)])
|
|
|
|
|
1995-02-18 01:27:10 +00:00
|
|
|
# We keep the original values in `$config_*' and never modify them, so we
|
|
|
|
# can write them unchanged into config.make. Everything else uses
|
|
|
|
# $machine, $vendor, and $os, and changes them whenever convenient.
|
|
|
|
config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
|
|
|
|
|
2000-09-05 18:54:34 +00:00
|
|
|
# Don't allow vendor == "unknown"
|
|
|
|
test "$config_vendor" = unknown && config_vendor=
|
|
|
|
config_os="`echo $config_os | sed 's/^unknown-//'`"
|
|
|
|
|
1995-05-20 00:13:43 +00:00
|
|
|
# Some configurations imply other options.
|
2012-01-08 01:30:26 +00:00
|
|
|
elf=yes
|
1995-05-20 00:13:43 +00:00
|
|
|
|
Remove add-ons mechanism.
glibc has an add-ons mechanism to allow additional software to be
integrated into the glibc build. Such add-ons may be within the glibc
source tree, or outside it at a path passed to the --enable-add-ons
configure option.
localedata and crypt were once add-ons, distributed in separate
release tarballs, but long since stopped using that mechanism.
Linuxthreads was always an add-on. Ports spent some time as an add-on
with separate release tarballs, then was first moved into the glibc
source tree, then had its sysdeps files moved into the main sysdeps
hierarchy so the add-ons mechanism was no longer used. NPTL spent
some time as an add-on in the main glibc tree before stopping using
the add-on mechanism. libidn used to have separate release tarballs
but no longer does so, but still uses the add-ons mechanism within the
glibc source tree. Various other software has supported building with
the add-ons mechanism at times in the past, but I don't think any is
still widely used.
Add-ons involve significant, little-used complexity in the glibc build
system, and make it hard to understand what the space of possible
glibc configurations is. This patch removes the add-ons mechanism.
libidn is now built via the Subdirs mechanism to cause any
configuration using sysdeps/unix/inet to build libidn; HAVE_LIBIDN
(which effectively means shared libraries are available) is now
defined via sysdeps/unix/inet/configure. Various references to
add-ons around the source tree are removed (in the case of maint.texi,
the example list of sysdeps directories is still very out of date).
Externally maintained ports should now put their files in the normal
sysdeps directory structure rather than being arranged as add-ons;
they probably need to change e.g. elf.h anyway, rather than actually
being able to work just as a drop-in subtree. Hurd libpthread should
be arranged similarly to NPTL, so some files might go in a
hurd-pthreads (or similar) top-level directory in glibc, while sysdeps
files should go in the normal sysdeps directory structure (possibly in
hurd or hurd-pthreads subdirectories, just as there are nptl
subdirectories in the sysdeps tree).
Tested for x86_64, and with build-many-glibcs.py.
* configure.ac (--enable-add-ons): Remove option.
(machine): Do not mention add-ons in comment.
(LIBC_PRECONFIGURE): Likewise.
(add_ons): Remove variable and sanity checks and logic to locate
add-ons.
(add_ons_automatic): Remove variable.
(configured_add_ons): Likewise.
(add_ons_sfx): Likewise.
(add_ons_pfx): Likewise.
(add_on_subdirs): Likewise.
(sysnames_add_ons): Likewise. Remove loop over add-ons and
consideration of add-ons in Implies handling.
(sysdeps_add_ons): Likewise.
* configure: Regenerated.
* libidn/configure.ac: Remove.
* libidn/configure: Likewise.
* sysdeps/unix/inet/configure.ac: New file.
* sysdeps/unix/inet/configure: New generated file.
* sysdeps/unix/inet/Subdirs: Add libidn.
* Makeconfig (sysdeps-srcdirs): Remove variable.
(+sysdep_dirs): Do not include $(sysdeps-srcdirs).
($(common-objpfx)config.status): Do not depend on add-on files.
($(common-objpfx)shlib-versions.v.i): Do not mention add-ons in
comment.
(all-subdirs): Do not include $(add-on-subdirs).
* Makefile (dist-prepare): Do not use $(sysdeps-add-ons).
* config.make.in (add-ons): Remove variable.
(add-on-subdirs): Likewise.
(sysdeps-add-ons): Likewise.
* manual/Makefile (add-chapters): Remove.
($(objpfx)texis): Do not depend on $(add-chapters).
(nonexamples): Do not handle $(add-chapters).
(examples): Do not handle $(add-ons).
(chapters.% top-menu.%): Do not pass '$(add-chapters)' to
libc-texinfo.sh.
* manual/install.texi (Installation): Do not mention add-ons.
(--enable-add-ons): Do not document configure option.
* INSTALL: Regenerated.
* manual/libc-texinfo.sh: Do not handle $2 add-ons argument.
* manual/maint.texi (Hierarchy Conventions): Do not mention
add-ons.
* scripts/build-many-glibcs.py (Glibc.build_glibc): Do not use
--enable-add-ons.
* scripts/gen-sorted.awk: Do not handle Subdirs files from
add-ons.
* scripts/test-installation.pl: Do not handle glibc-compat add-on.
* sysdeps/nptl/Makeconfig: Do not mention add-ons in comment.
2017-10-05 15:58:13 +00:00
|
|
|
# The configure fragment of a port can modify these to supplement
|
2004-07-20 22:14:59 +00:00
|
|
|
# or override the table in the case statement below. No fragment should
|
|
|
|
# ever change the config_* variables, however.
|
1995-02-18 01:27:10 +00:00
|
|
|
machine=$config_machine
|
|
|
|
vendor=$config_vendor
|
|
|
|
os=$config_os
|
2008-01-24 20:21:23 +00:00
|
|
|
base_os=''
|
1995-02-18 01:27:10 +00:00
|
|
|
|
2005-11-08 01:21:32 +00:00
|
|
|
submachine=
|
|
|
|
AC_ARG_WITH([cpu],
|
|
|
|
AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
|
|
|
|
[dnl
|
|
|
|
case "$withval" in
|
|
|
|
yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
|
|
|
|
no) ;;
|
|
|
|
*) submachine="$withval" ;;
|
|
|
|
esac
|
|
|
|
])
|
|
|
|
|
2015-04-09 20:55:11 +00:00
|
|
|
# An preconfigure script can set this when it wants to disable the sanity
|
|
|
|
# check below.
|
|
|
|
libc_config_ok=no
|
|
|
|
|
Remove --with-fp / --without-fp.
There is a configure option --without-fp that specifies that nofpu
sysdeps directories should be used instead of fpu directories.
For most glibc configurations, this option is of no use: either there
is no valid nofpu variant of that configuration, or there are no fpu
or nofpu sysdeps directories for that processor and so the option does
nothing. For a few configurations, if you are using a soft-float
compiler this option is required, and failing to use it generally
results in compilation errors from inline asm using unavailable
floating-point instructions.
We're moving away from --with-cpu to configuring glibc based on how
the compiler generates code, and it is natural to do so for
--without-fp as well; in most cases the soft-float and hard-float ABIs
are incompatible so you have no hope of building a working glibc with
an inappropriately configured compiler or libgcc.
This patch eliminates --without-fp, replacing it entirely by automatic
configuration based on the compiler. Configurations for which this is
relevant (coldfire / mips / powerpc32 / sh) define a variable
with_fp_cond in their preconfigure fragments (under the same
conditions under which those fragments do anything); this is a
preprocessor conditional which the toplevel configure script then uses
in a test to determine which sysdeps directories to use.
The config.make with-fp variable remains. It's used only by powerpc
(sysdeps/powerpc/powerpc32/Makefile) to add -mhard-float to various
flags variables. For powerpc, -mcpu= options can imply use of
soft-float. That could be an issue if you want to build for
e.g. 476fp, but are using --with-cpu=476 because there isn't a 476fp
sysdeps directory. If in future we eliminate --with-cpu and replace
it entirely by testing the compiler, it would be natural at that point
to eliminate that code as well (as the user should then just use a
compiler defaulting to 476fp and the 476 sysdeps directory would be
used automatically).
Tested for x86_64, and tested with build-many-glibcs.py that installed
shared libraries are unchanged by this patch.
* configure.ac (--with-fp): Remove configure option.
(with_fp_cond): New variable.
(libc_cv_with_fp): New configure test. Use this variable instead
of with_fp.
* configure: Regenerated.
* config.make.in (with-fp): Use @libc_cv_with_fp@.
* manual/install.texi (Configuring and compiling): Remove
--without-fp.
* INSTALL: Regenerated.
* sysdeps/m68k/preconfigure (with_fp_cond): Define for ColdFire.
* sysdeps/mips/preconfigure (with_fp_cond): Define.
* sysdeps/powerpc/preconfigure (with_fp_cond): Define for 32-bit.
* sysdeps/sh/preconfigure (with_fp_cond): Define.
* scripts/build-many-glibcs.py (Context.add_all_configs): Do not
use --without-fp to configure glibc.
2017-12-12 13:56:47 +00:00
|
|
|
# A preconfigure script for a system that may or may not use fpu
|
|
|
|
# sysdeps directories sets this to a preprocessor conditional for
|
|
|
|
# whether to use such directories.
|
|
|
|
with_fp_cond=1
|
|
|
|
|
Remove add-ons mechanism.
glibc has an add-ons mechanism to allow additional software to be
integrated into the glibc build. Such add-ons may be within the glibc
source tree, or outside it at a path passed to the --enable-add-ons
configure option.
localedata and crypt were once add-ons, distributed in separate
release tarballs, but long since stopped using that mechanism.
Linuxthreads was always an add-on. Ports spent some time as an add-on
with separate release tarballs, then was first moved into the glibc
source tree, then had its sysdeps files moved into the main sysdeps
hierarchy so the add-ons mechanism was no longer used. NPTL spent
some time as an add-on in the main glibc tree before stopping using
the add-on mechanism. libidn used to have separate release tarballs
but no longer does so, but still uses the add-ons mechanism within the
glibc source tree. Various other software has supported building with
the add-ons mechanism at times in the past, but I don't think any is
still widely used.
Add-ons involve significant, little-used complexity in the glibc build
system, and make it hard to understand what the space of possible
glibc configurations is. This patch removes the add-ons mechanism.
libidn is now built via the Subdirs mechanism to cause any
configuration using sysdeps/unix/inet to build libidn; HAVE_LIBIDN
(which effectively means shared libraries are available) is now
defined via sysdeps/unix/inet/configure. Various references to
add-ons around the source tree are removed (in the case of maint.texi,
the example list of sysdeps directories is still very out of date).
Externally maintained ports should now put their files in the normal
sysdeps directory structure rather than being arranged as add-ons;
they probably need to change e.g. elf.h anyway, rather than actually
being able to work just as a drop-in subtree. Hurd libpthread should
be arranged similarly to NPTL, so some files might go in a
hurd-pthreads (or similar) top-level directory in glibc, while sysdeps
files should go in the normal sysdeps directory structure (possibly in
hurd or hurd-pthreads subdirectories, just as there are nptl
subdirectories in the sysdeps tree).
Tested for x86_64, and with build-many-glibcs.py.
* configure.ac (--enable-add-ons): Remove option.
(machine): Do not mention add-ons in comment.
(LIBC_PRECONFIGURE): Likewise.
(add_ons): Remove variable and sanity checks and logic to locate
add-ons.
(add_ons_automatic): Remove variable.
(configured_add_ons): Likewise.
(add_ons_sfx): Likewise.
(add_ons_pfx): Likewise.
(add_on_subdirs): Likewise.
(sysnames_add_ons): Likewise. Remove loop over add-ons and
consideration of add-ons in Implies handling.
(sysdeps_add_ons): Likewise.
* configure: Regenerated.
* libidn/configure.ac: Remove.
* libidn/configure: Likewise.
* sysdeps/unix/inet/configure.ac: New file.
* sysdeps/unix/inet/configure: New generated file.
* sysdeps/unix/inet/Subdirs: Add libidn.
* Makeconfig (sysdeps-srcdirs): Remove variable.
(+sysdep_dirs): Do not include $(sysdeps-srcdirs).
($(common-objpfx)config.status): Do not depend on add-on files.
($(common-objpfx)shlib-versions.v.i): Do not mention add-ons in
comment.
(all-subdirs): Do not include $(add-on-subdirs).
* Makefile (dist-prepare): Do not use $(sysdeps-add-ons).
* config.make.in (add-ons): Remove variable.
(add-on-subdirs): Likewise.
(sysdeps-add-ons): Likewise.
* manual/Makefile (add-chapters): Remove.
($(objpfx)texis): Do not depend on $(add-chapters).
(nonexamples): Do not handle $(add-chapters).
(examples): Do not handle $(add-ons).
(chapters.% top-menu.%): Do not pass '$(add-chapters)' to
libc-texinfo.sh.
* manual/install.texi (Installation): Do not mention add-ons.
(--enable-add-ons): Do not document configure option.
* INSTALL: Regenerated.
* manual/libc-texinfo.sh: Do not handle $2 add-ons argument.
* manual/maint.texi (Hierarchy Conventions): Do not mention
add-ons.
* scripts/build-many-glibcs.py (Glibc.build_glibc): Do not use
--enable-add-ons.
* scripts/gen-sorted.awk: Do not handle Subdirs files from
add-ons.
* scripts/test-installation.pl: Do not handle glibc-compat add-on.
* sysdeps/nptl/Makeconfig: Do not mention add-ons in comment.
2017-10-05 15:58:13 +00:00
|
|
|
dnl Let sysdeps/*/preconfigure act here.
|
2012-03-16 18:12:50 +00:00
|
|
|
LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
|
|
|
|
|
2004-07-20 22:14:59 +00:00
|
|
|
|
1998-07-21 17:20:27 +00:00
|
|
|
###
|
|
|
|
### By using the undocumented --enable-hacker-mode option for configure
|
|
|
|
### one can skip this test to make the configuration not fail for unsupported
|
|
|
|
### platforms.
|
|
|
|
###
|
2004-07-20 22:14:59 +00:00
|
|
|
if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
|
1998-07-21 17:20:27 +00:00
|
|
|
case "$machine-$host_os" in
|
2012-04-26 18:42:42 +00:00
|
|
|
*-linux* | *-gnu*)
|
1998-07-21 17:20:27 +00:00
|
|
|
;;
|
|
|
|
*)
|
2016-01-16 00:57:36 +00:00
|
|
|
AC_MSG_ERROR([
|
|
|
|
*** The GNU C library is currently unavailable for this platform.
|
|
|
|
*** If you are interested in seeing glibc on this platform visit
|
|
|
|
*** the "How to submit a new port" in the wiki:
|
|
|
|
*** https://sourceware.org/glibc/wiki/#Development
|
|
|
|
*** and join the community!])
|
1998-07-21 17:20:27 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
|
2014-06-25 17:52:56 +00:00
|
|
|
# Set base_machine if not set by a preconfigure fragment.
|
|
|
|
test -n "$base_machine" || base_machine=$machine
|
1996-05-08 22:40:39 +00:00
|
|
|
AC_SUBST(base_machine)
|
1995-02-18 01:27:10 +00:00
|
|
|
|
Remove --with-fp / --without-fp.
There is a configure option --without-fp that specifies that nofpu
sysdeps directories should be used instead of fpu directories.
For most glibc configurations, this option is of no use: either there
is no valid nofpu variant of that configuration, or there are no fpu
or nofpu sysdeps directories for that processor and so the option does
nothing. For a few configurations, if you are using a soft-float
compiler this option is required, and failing to use it generally
results in compilation errors from inline asm using unavailable
floating-point instructions.
We're moving away from --with-cpu to configuring glibc based on how
the compiler generates code, and it is natural to do so for
--without-fp as well; in most cases the soft-float and hard-float ABIs
are incompatible so you have no hope of building a working glibc with
an inappropriately configured compiler or libgcc.
This patch eliminates --without-fp, replacing it entirely by automatic
configuration based on the compiler. Configurations for which this is
relevant (coldfire / mips / powerpc32 / sh) define a variable
with_fp_cond in their preconfigure fragments (under the same
conditions under which those fragments do anything); this is a
preprocessor conditional which the toplevel configure script then uses
in a test to determine which sysdeps directories to use.
The config.make with-fp variable remains. It's used only by powerpc
(sysdeps/powerpc/powerpc32/Makefile) to add -mhard-float to various
flags variables. For powerpc, -mcpu= options can imply use of
soft-float. That could be an issue if you want to build for
e.g. 476fp, but are using --with-cpu=476 because there isn't a 476fp
sysdeps directory. If in future we eliminate --with-cpu and replace
it entirely by testing the compiler, it would be natural at that point
to eliminate that code as well (as the user should then just use a
compiler defaulting to 476fp and the 476 sysdeps directory would be
used automatically).
Tested for x86_64, and tested with build-many-glibcs.py that installed
shared libraries are unchanged by this patch.
* configure.ac (--with-fp): Remove configure option.
(with_fp_cond): New variable.
(libc_cv_with_fp): New configure test. Use this variable instead
of with_fp.
* configure: Regenerated.
* config.make.in (with-fp): Use @libc_cv_with_fp@.
* manual/install.texi (Configuring and compiling): Remove
--without-fp.
* INSTALL: Regenerated.
* sysdeps/m68k/preconfigure (with_fp_cond): Define for ColdFire.
* sysdeps/mips/preconfigure (with_fp_cond): Define.
* sysdeps/powerpc/preconfigure (with_fp_cond): Define for 32-bit.
* sysdeps/sh/preconfigure (with_fp_cond): Define.
* scripts/build-many-glibcs.py (Context.add_all_configs): Do not
use --without-fp to configure glibc.
2017-12-12 13:56:47 +00:00
|
|
|
# Determine whether to use fpu or nofpu sysdeps directories.
|
|
|
|
AC_CACHE_CHECK([for use of fpu sysdeps directories],
|
|
|
|
libc_cv_with_fp, [dnl
|
|
|
|
cat > conftest.c <<EOF
|
|
|
|
#if $with_fp_cond
|
|
|
|
int dummy;
|
|
|
|
#else
|
|
|
|
# error "no hardware floating point"
|
|
|
|
#endif
|
|
|
|
EOF
|
|
|
|
libc_cv_with_fp=no
|
|
|
|
if ${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s \
|
|
|
|
1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
|
|
|
|
libc_cv_with_fp=yes
|
|
|
|
fi
|
|
|
|
rm -f conftest*])
|
|
|
|
AC_SUBST(libc_cv_with_fp)
|
|
|
|
|
2016-12-26 09:08:18 +00:00
|
|
|
AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
|
|
|
|
LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
|
|
|
|
[libc_cv_ssp=yes],
|
|
|
|
[libc_cv_ssp=no])
|
|
|
|
])
|
|
|
|
|
|
|
|
AC_CACHE_CHECK(for -fstack-protector-strong, libc_cv_ssp_strong, [dnl
|
|
|
|
LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-strong],
|
|
|
|
[libc_cv_ssp_strong=yes],
|
|
|
|
[libc_cv_ssp_strong=no])
|
|
|
|
])
|
|
|
|
|
|
|
|
AC_CACHE_CHECK(for -fstack-protector-all, libc_cv_ssp_all, [dnl
|
|
|
|
LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-all],
|
|
|
|
[libc_cv_ssp_all=yes],
|
|
|
|
[libc_cv_ssp_all=no])
|
|
|
|
])
|
|
|
|
|
|
|
|
stack_protector=
|
|
|
|
no_stack_protector=
|
|
|
|
if test "$libc_cv_ssp" = yes; then
|
|
|
|
no_stack_protector="-fno-stack-protector -DSTACK_PROTECTOR_LEVEL=0"
|
2016-12-26 09:08:41 +00:00
|
|
|
AC_DEFINE(HAVE_CC_NO_STACK_PROTECTOR)
|
2016-12-26 09:08:18 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$enable_stack_protector" = yes && test "$libc_cv_ssp" = yes; then
|
|
|
|
stack_protector="-fstack-protector"
|
|
|
|
AC_DEFINE(STACK_PROTECTOR_LEVEL, 1)
|
|
|
|
elif test "$enable_stack_protector" = all && test "$libc_cv_ssp_all" = yes; then
|
|
|
|
stack_protector="-fstack-protector-all"
|
|
|
|
AC_DEFINE(STACK_PROTECTOR_LEVEL, 2)
|
|
|
|
elif test "$enable_stack_protector" = strong && test "$libc_cv_ssp_strong" = yes; then
|
|
|
|
stack_protector="-fstack-protector-strong"
|
|
|
|
AC_DEFINE(STACK_PROTECTOR_LEVEL, 3)
|
2016-12-26 09:08:54 +00:00
|
|
|
else
|
|
|
|
stack_protector="-fno-stack-protector"
|
|
|
|
AC_DEFINE(STACK_PROTECTOR_LEVEL, 0)
|
2016-12-26 09:08:18 +00:00
|
|
|
fi
|
|
|
|
AC_SUBST(libc_cv_ssp)
|
|
|
|
AC_SUBST(stack_protector)
|
|
|
|
AC_SUBST(no_stack_protector)
|
|
|
|
|
2016-12-26 09:08:54 +00:00
|
|
|
if test -n "$stack_protector"; then
|
|
|
|
dnl Don't run configure tests with stack-protection on, to avoid problems with
|
|
|
|
dnl bootstrapping.
|
|
|
|
no_ssp=-fno-stack-protector
|
|
|
|
else
|
|
|
|
no_ssp=
|
|
|
|
|
|
|
|
if test "$enable_stack_protector" != no; then
|
|
|
|
AC_MSG_ERROR([--enable-stack-protector=$enable_stack_protector specified, but specified level of stack protection is not supported by the compiler.])
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2012-10-23 03:40:42 +00:00
|
|
|
# For the multi-arch option we need support in the assembler & linker.
|
|
|
|
AC_CACHE_CHECK([for assembler and linker STT_GNU_IFUNC support],
|
|
|
|
libc_cv_ld_gnu_indirect_function, [dnl
|
2012-10-30 20:51:58 +00:00
|
|
|
cat > conftest.S <<EOF
|
2010-08-23 14:51:49 +00:00
|
|
|
.type foo,%gnu_indirect_function
|
2012-10-23 03:40:42 +00:00
|
|
|
foo:
|
|
|
|
.globl _start
|
|
|
|
_start:
|
|
|
|
.globl __start
|
|
|
|
__start:
|
|
|
|
.data
|
2012-10-30 20:51:58 +00:00
|
|
|
#ifdef _LP64
|
|
|
|
.quad foo
|
|
|
|
#else
|
2012-10-23 03:40:42 +00:00
|
|
|
.long foo
|
2012-10-30 20:51:58 +00:00
|
|
|
#endif
|
2010-08-23 14:51:49 +00:00
|
|
|
EOF
|
2012-10-23 03:40:42 +00:00
|
|
|
libc_cv_ld_gnu_indirect_function=no
|
|
|
|
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
|
2016-12-26 09:08:54 +00:00
|
|
|
-nostartfiles -nostdlib $no_ssp \
|
2012-10-30 20:51:58 +00:00
|
|
|
-o conftest conftest.S 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
|
2012-10-23 03:40:42 +00:00
|
|
|
# Do a link to see if the backend supports IFUNC relocs.
|
|
|
|
$READELF -r conftest 1>&AS_MESSAGE_LOG_FD
|
2020-02-05 05:55:44 +00:00
|
|
|
LC_ALL=C $READELF -Wr conftest | grep -q 'IRELATIVE\|R_SPARC_JMP_IREL' && {
|
2012-10-23 03:40:42 +00:00
|
|
|
libc_cv_ld_gnu_indirect_function=yes
|
|
|
|
}
|
2010-08-23 14:51:49 +00:00
|
|
|
fi
|
|
|
|
rm -f conftest*])
|
|
|
|
|
2016-10-07 07:56:46 +00:00
|
|
|
# Check if gcc supports attribute ifunc as it is used in libc_ifunc macro.
|
|
|
|
AC_CACHE_CHECK([for gcc attribute ifunc support],
|
|
|
|
libc_cv_gcc_indirect_function, [dnl
|
|
|
|
cat > conftest.c <<EOF
|
|
|
|
extern int func (int);
|
|
|
|
int used_func (int a)
|
|
|
|
{
|
|
|
|
return a;
|
|
|
|
}
|
|
|
|
static void *resolver ()
|
|
|
|
{
|
|
|
|
return &used_func;
|
|
|
|
}
|
|
|
|
extern __typeof (func) func __attribute__ ((ifunc ("resolver")));
|
|
|
|
EOF
|
|
|
|
libc_cv_gcc_indirect_function=no
|
|
|
|
if ${CC-cc} -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD \
|
|
|
|
2>&AS_MESSAGE_LOG_FD ; then
|
|
|
|
if $READELF -s conftest.o | grep IFUNC >/dev/null 2>&AS_MESSAGE_LOG_FD; then
|
|
|
|
libc_cv_gcc_indirect_function=yes
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
rm -f conftest*])
|
|
|
|
|
Fix ifunc support with DT_TEXTREL segments (BZ#20480)
Currently, DT_TEXTREL is incompatible with IFUNC. When DT_TEXTREL or
DF_TEXTREL is seen, the dynamic linker calls __mprotect on the segments
with PROT_READ|PROT_WRITE before applying dynamic relocations. It leads
to segfault when performing IFUNC resolution (which requires PROT_EXEC
as well for the IFUNC resolver).
This patch makes it call __mprotect with extra PROT_WRITE bit, which
will keep the PROT_EXEC bit if exists, and thus fixes the segfault.
FreeBSD rtld libexec/rtld-elf/rtld.c (reloc_textrel_prot) does the same.
Checked on x86_64-linux-gnu, i686-linux-gnu, aarch64-linux-gnu,
sparc64-linux-gnu, sparcv9-linux-gnu, and armv8-linux-gnueabihf.
Adam J. Richte <adam_richter2004@yahoo.com>
Adhemerval Zanella <adhemerval.zanella@linaro.org>
Fangrui Song <maskray@google.com>
[BZ #20480]
* config.h.in (CAN_TEXTREL_IFUNC): New define.
* configure.ac: Add check if linker supports textrel relocation with
ifunc.
* elf/dl-reloc.c (_dl_relocate_object): Use all required flags on
DT_TEXTREL segments, not only PROT_READ and PROT_WRITE.
* elf/Makefile (ifunc-pie-tests): Add tst-ifunc-textrel.
(CFLAGS-tst-ifunc-textrel.c): New rule.
* elf/tst-ifunc-textrel.c: New file.
2018-08-27 19:16:43 +00:00
|
|
|
# Check if linker supports textrel relocation with ifunc (used on elf/tests).
|
|
|
|
# Note that it relies on libc_cv_ld_gnu_indirect_function test above.
|
|
|
|
AC_CACHE_CHECK([whether the linker supports textrels along with ifunc],
|
|
|
|
libc_cv_textrel_ifunc, [dnl
|
|
|
|
cat > conftest.S <<EOF
|
|
|
|
.type foo,%gnu_indirect_function
|
|
|
|
foo:
|
|
|
|
.globl _start
|
|
|
|
_start:
|
|
|
|
.globl __start
|
|
|
|
__start:
|
|
|
|
.data
|
|
|
|
#ifdef _LP64
|
|
|
|
.quad foo
|
|
|
|
#else
|
|
|
|
.long foo
|
|
|
|
#endif
|
|
|
|
.text
|
|
|
|
.globl address
|
|
|
|
address:
|
|
|
|
#ifdef _LP64
|
|
|
|
.quad address
|
|
|
|
#else
|
|
|
|
.long address
|
|
|
|
#endif
|
|
|
|
EOF
|
|
|
|
libc_cv_textrel_ifunc=no
|
|
|
|
if test $libc_cv_ld_gnu_indirect_function = yes; then
|
|
|
|
if AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostartfiles -nostdlib $no_ssp -pie -o conftest conftest.S); then
|
|
|
|
libc_cv_textrel_ifunc=yes
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
rm -f conftest*])
|
|
|
|
AC_SUBST(libc_cv_textrel_ifunc)
|
|
|
|
|
2021-04-16 18:26:39 +00:00
|
|
|
# Check if CC supports attribute retain as it is used in attribute_used_retain macro.
|
|
|
|
AC_CACHE_CHECK([for GNU attribute retain support],
|
|
|
|
libc_cv_gnu_retain, [dnl
|
|
|
|
cat > conftest.c <<EOF
|
|
|
|
static int var __attribute__ ((used, retain, section ("__libc_atexit")));
|
|
|
|
EOF
|
|
|
|
libc_cv_gnu_retain=no
|
|
|
|
if ${CC-cc} -Werror -c conftest.c -o /dev/null 1>&AS_MESSAGE_LOG_FD \
|
|
|
|
2>&AS_MESSAGE_LOG_FD ; then
|
|
|
|
libc_cv_gnu_retain=yes
|
|
|
|
fi
|
|
|
|
rm -f conftest*])
|
|
|
|
if test $libc_cv_gnu_retain = yes; then
|
|
|
|
AC_DEFINE(HAVE_GNU_RETAIN)
|
|
|
|
fi
|
|
|
|
LIBC_CONFIG_VAR([have-gnu-retain], [$libc_cv_gnu_retain])
|
|
|
|
|
2017-10-10 14:12:50 +00:00
|
|
|
# Check if gcc warns about alias for function with incompatible types.
|
|
|
|
AC_CACHE_CHECK([if compiler warns about alias for function with incompatible types],
|
|
|
|
libc_cv_gcc_incompatible_alias, [dnl
|
|
|
|
cat > conftest.c <<EOF
|
|
|
|
int __redirect_foo (const void *s, int c);
|
|
|
|
|
|
|
|
__typeof (__redirect_foo) *foo_impl (void) __asm__ ("foo");
|
|
|
|
__typeof (__redirect_foo) *foo_impl (void)
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
extern __typeof (__redirect_foo) foo_alias __attribute__ ((alias ("foo")));
|
|
|
|
EOF
|
|
|
|
libc_cv_gcc_incompatible_alias=yes
|
|
|
|
if ${CC-cc} -Werror -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
|
|
|
|
libc_cv_gcc_incompatible_alias=no
|
|
|
|
fi
|
|
|
|
rm -f conftest*])
|
|
|
|
|
2012-10-23 03:40:42 +00:00
|
|
|
if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
|
2010-08-23 14:51:49 +00:00
|
|
|
if test x"$multi_arch" = xyes; then
|
|
|
|
AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
|
|
|
|
else
|
|
|
|
multi_arch=no
|
|
|
|
fi
|
|
|
|
fi
|
2017-10-10 14:12:50 +00:00
|
|
|
if test x"$libc_cv_gcc_indirect_function" != xyes; then
|
|
|
|
# GCC 8+ emits a warning for alias with incompatible types and it might
|
|
|
|
# fail to build ifunc resolvers aliases to either weak or internal
|
|
|
|
# symbols. Disables multiarch build in this case.
|
|
|
|
if test x"$libc_cv_gcc_incompatible_alias" == xyes; then
|
|
|
|
AC_MSG_WARN([gcc emits a warning for alias between functions of incompatible types])
|
|
|
|
if test x"$multi_arch" = xyes; then
|
|
|
|
AC_MSG_ERROR([--enable-multi-arch support requires a gcc with gnu-indirect-function support])
|
|
|
|
fi
|
|
|
|
AC_MSG_WARN([Multi-arch is disabled.])
|
|
|
|
multi_arch=no
|
|
|
|
elif test x"$multi_arch" = xyes; then
|
|
|
|
AC_MSG_WARN([--enable-multi-arch support recommends a gcc with gnu-indirect-function support.
|
2016-10-07 07:56:46 +00:00
|
|
|
Please use a gcc which supports it by default or configure gcc with --enable-gnu-indirect-function])
|
2017-10-10 14:12:50 +00:00
|
|
|
fi
|
2016-10-07 07:56:46 +00:00
|
|
|
fi
|
2013-01-11 19:39:38 +00:00
|
|
|
multi_arch_d=
|
2010-08-23 14:51:49 +00:00
|
|
|
if test x"$multi_arch" != xno; then
|
|
|
|
multi_arch_d=/multiarch
|
|
|
|
fi
|
|
|
|
|
1996-05-08 22:40:39 +00:00
|
|
|
# Compute the list of sysdep directories for this configuration.
|
1996-06-14 12:05:04 +00:00
|
|
|
# This can take a while to compute.
|
1996-05-08 22:40:39 +00:00
|
|
|
sysdep_dir=$srcdir/sysdeps
|
1996-06-14 12:05:04 +00:00
|
|
|
AC_MSG_CHECKING(sysdep dirs)
|
1996-05-08 22:40:39 +00:00
|
|
|
dnl We need to use [ and ] for other purposes for a while now.
|
|
|
|
changequote(,)dnl
|
1995-02-18 01:27:10 +00:00
|
|
|
# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
|
|
|
|
os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
|
|
|
|
|
2008-01-24 20:21:23 +00:00
|
|
|
test "x$base_os" != x || case "$os" in
|
1995-02-18 01:27:10 +00:00
|
|
|
gnu*)
|
|
|
|
base_os=mach/hurd ;;
|
2012-04-26 18:42:42 +00:00
|
|
|
linux*)
|
1995-02-18 01:27:10 +00:00
|
|
|
base_os=unix/sysv ;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
|
|
|
|
tail=$os
|
|
|
|
ostry=$os
|
|
|
|
while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
|
|
|
|
ostry="$ostry /$o"
|
|
|
|
tail=$o
|
1995-11-10 20:38:31 +00:00
|
|
|
done
|
1995-02-18 01:27:10 +00:00
|
|
|
o=`echo $tail | sed 's/[0-9]*$//'`
|
|
|
|
if test $o != $tail; then
|
|
|
|
ostry="$ostry /$o"
|
|
|
|
fi
|
update from main archive 960919
Thu Sep 19 21:50:55 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/posix/gettimeofday.c (__gettimeofday): Use localtime_r
instead of localtime.
Reported by Matthias Urlichs.
* shlib-versions: Remove version number for libcrypt.
* features.h: Define __USE_REENTRANT if _REENTRANT or _THREAD_SAFE.
* libc-symbols.h: Define _REENTRANT while compiling libc.
* sysdeps/unix/sysv/linux/i386/sysdep.S (__errno_location):
Define even if !_LIBC_REENTRANT.
* sysdeps/unix/sysv/linux/i386/sysdep.S (__errno_location):
Likewise.
* sysdeps/posix/cuserid.h: Remove prototype for geteuid().
De-ANSI-fy.
* MakeTAGS ($P/libc.pot): Generate correctly formed header.
* po/header.pot: Correct title line.
* po/nl.po: Update.
Thu Sep 19 18:59:55 1996 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig (soversions.mk): Prefer shared lib version numbers
is add ons over version in libc itself.
* sysdeps/unix/sysv/linux/i386/sysdep.S: Include <sysdep.h>.
* sysdeps/unix/sysv/linux/i386/sysdep.h: Prevent multiple
inclusion.
* libio/iofgets.c: Use __flockfile and __funlockfile instead of
_IO_flockfile and _IO_funlockfile resp.
* locale/categories.def: Partly support for correct `era' handling
in LC_TIME category.
* locale/langinfo.h: Likewise.
* locale/programs/ld-time.c: Likewise.
* locale/localeinfo.h: Change comment a bit.
* malloc/memalign.c: Don't use goto, not necessary anymore.
1996-09-18 Paul Eggert <eggert@twinsun.com>
* time/mktime.c (ydhms_tm_diff): Work correctly even if year
is negative, or if time_t is unsigned.
* time/strftime.c (tm_diff): Work correctly even if tm_year
is near INT_MIN.
Tue Sep 17 16:14:34 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/m68k/fpu/__math.h (__inline_mathop): Changed to generate
all three versions of the math function.
(__inline_mathopf, __inline_mathopl): Removed.
(__inline_functions): New temporary definition containing all
non-trivial inline functions.
Wed Sep 18 00:25:41 1996 Ulrich Drepper <drepper@cygnus.com>
* time/strftime.c (strftime): The T_FMT_AMPM string may be empty.
Tue Sep 17 20:27:18 1996 Ulrich Drepper <drepper@cygnus.com>
* math/Makefile (extra-libs-others): Use $(extra-libs) instead
of $(extra-libc).
Tue Sep 17 17:09:44 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/stub/fpu_control.h: Correct end of file comment.
Tue Sep 17 05:39:18 1996 Ulrich Drepper <drepper@cygnus.com>
* stdio-common/bug3.c, stdio-common/bug4.c, stdio-common/bug5.c,
stdio-common/test-popen.c: Remove temporary files after test.
* stdio-common/bug5.c: Use `system' instead of `execlp'.
Patches by Andreas Jaeger.
* stdio-common/bug5.c: Create string for `system' argument to
make sure the input and output file names are really correct.
Sun Sep 15 12:46:44 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* configure.in: If $os contains a hyphen add the part before the
hyphen to $ostry.
Sun Sep 15 18:14:02 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/m68k/fpu/__math.h (__ieee754_pow, __ieee754_powf,
__ieee754_powl): Rename local variable i to __i.
(__ieee754_atan2, __ieee754_atan2f, __ieee754_atan2l): New inline
functions.
* sysdeps/m68k/fpu/e_atan2.c, sysdeps/m68k/fpu/e_atan2f.c,
sysdeps/m68k/fpu/e_atan2l.c: New files.
1996-09-15 Paul Eggert <eggert@twinsun.com>
* manual/time.texi: Change `range X to Y' to `range X through
Y', to avoid ambiguity in English.
(strftime): Numbers that do not have a range indicated are not padded.
Describe E and O modifiers.
%g, %G, %u: New formats.
%C, %y, %Y: Describe behavior on negative years.
%e: Fix typo (was labeled %d).
%l, %V: Fix typo in range.
%M, %S, %U, %w, %W: Give ranges.
%p: Clarify how noon and midnight are handled for AM and PM.
%s: Clarify leap second handling.
%r: Now locale-defined.
%C, %D, %e, %h, %n, %r, %t, %T: Say that they are POSIX.2 extensions.
%z: Say that it is a GNU extension.
%Z: Wording fix.
* time/strftime.c: (strftime):
%V: Fix mishandling of week numbers near year boundaries.
%g, %G: New formats (suggested by Arthur David Olson).
%U, %W: Use inline expression instead of `week' function.
%C, %y: Handle negative years portably.
%C, %Y: Use width 1, since values can be arbitrarily wide.
%r: Use T_FMT_AMPM format if _NL_CURRENT is defined.
%u: New Posix.2 format.
%w: Width is 1, not 2.
(iso_week_days): New function, for %V, %G, %g.
(week): Remove; it didn't handle %V correctly.
(__isleap): New macro.
(mbsinit): Use arg, to pacify GCC -Wall.
1996-09-13 Paul Eggert <eggert@twinsun.com>
* time/strftime.c (strftime):
If using the GNU C library, do not bother to check for
multibyte encodings, since they're safe in formats. Otherwise:
- Check for multibyte encodings when encountering any character that
is not in the basic execution character set of the C Standard.
- Use mbrlen (if available) instead of mblen, to avoid modifying
mblen's internal state.
- Do not assume that '%' cannot appear as the first character of a
multibyte character sequence, since this is possible when not in the
initial shift state.
(HAVE_MBRLEN, MULTIBYTE_IS_FORMAT_SAFE): Define if _LIBC is defined.
(DO_MULTIBYTE): New macro.
(<ctype.h>): Do not include.
(<wchar.h>): Include if HAVE_MBRLEN.
(mbstate_t, mbrlen, mbsinit): Define if ! HAVE_MBRLEN.
(mbstate_zero): New constant.
1996-09-12 Paul Eggert <eggert@twinsun.com>
* time/strftime.c (strftime):
Use an empty zone if it can't be determined; POSIX.2 requires this.
Use plain `int' for pad and modifier (which now contain char value).
Use plain `int' for number_value, to print negative values correctly.
Use plain `int' for digits; there was no need to make it unsigned.
Initialize subfmt consistently.
Remove incorrect code for %EC and %Ey; they aren't implemented yet.
For %O, if there is no alternate digit, output Ascii instead of "".
Output the `%' of an unknown format; this is most likely the right
thing to do if a multibyte string has been misparsed.
Thu Sep 12 23:23:13 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* stdio-common/scanf7.c (main): Remove extra conversion from
printf format string.
Thu Sep 12 23:01:16 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* stdlib/test-canon.c (tests): Rename structure member from errno
to error, all uses changed.
Thu Sep 12 20:08:06 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/m68k/fpu/__math.h (__ldexp, __ldexpf, __ldexpl):
Removed.
* sysdeps/m68k/fpu/s_ldexp.c, sysdeps/m68k/fpu/s_ldexpf.c,
sysdeps/m68k/fpu/s_ldexpl.c: Removed, use generic implementation
instead.
* sysdeps/m68k/fpu/s_scalbn.c, sysdeps/m68k/fpu/s_scalbnf.c,
sysdeps/m68k/fpu/s_scalbnl.c: Replaced with old contents of
s_ldexp.c, s_ldexpf.c and s_ldexpl.c, resp., suitably adpted.
* sysdeps/m68k/fpu/__math.h (__frexp, __frexpf, __frexpl):
Return value must be in [0.5, 1), not [1, 2). Reported by Chris
Lawrence.
(__ilogb, __ilogbf, __ilogbl): Check for argument being zero.
(__scalbn, __scalbnf, __scalbnl): Use second argument directly.
Thu Sep 12 19:59:24 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/libm-ieee754/e_acoshl.c: Fix typos.
* sysdeps/libm-ieee754/s_cbrtl.c: Remove unused variable.
Thu Sep 12 19:59:24 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/libm-ieee754/e_acoshl.c: Fix typos.
* sysdeps/libm-ieee754/s_cbrtl.c: Remove unused variable.
Thu Sep 12 19:56:07 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* inet/herrno.c (__h_errno_location): Fix return type.
Tue Sep 17 10:51:58 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* malloc/memalign.c (memalign): Only acquire __libc_malloc_lock
for actual modifications to global state.
Fri Sep 13 01:21:36 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/Makefile (includes): Add -I$(common-objpfx)mach/.
* sysdeps/mach/hurd/Makefile (includes): Add
-I$(common-objpfx)hurd/. Reported by Marcus Daniels.
* sysdeps/generic/schedbits.h (struct sched_param): Renamed from
struct sched_params.
* sysdeps/stub/sched_setp.c (__sched_setparam): struct
sched_params -> struct sched_param.
* sysdeps/stub/sched_getp.c (__sched_getparam): Likewise.
* sysdeps/stub/sched_sets.c (__sched_setscheduler): Likewise.
Thu Sep 12 23:58:25 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/libc-lock.h (__libc_cleanup_region_start): Fix
syntax error.
* stdio-common/Makefile: Put lockfile in routines
unconditionally.
Define _MT_SAFE_IO if using for libio and compiling reentrant
libc.
* stdio-common/vfprintf.c (__flockfile, __funlockfile): Declare
this always, not just if _LIBC_REENTRANT.
(__funlockfile): Don't use weak_extern for this one;
__libc_cleanup_region_end might be defined and the use of
__funlockfile can't be protected the way the use of __flockfile
can be.
* sched.h: New file. Helper to access posix/sched.h.
Thu Sep 12 12:33:52 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/dl-cache.c: Delete second copy of file
accidentally added on.
* sysdeps/stub/intr-msg.h: New file.
* stdio-common/vfprintf.c: Include <libc-lock.h>.
* stdio-common/vfscanf.c: Include <libc-lock.h>.
* sysdeps/mach/libc-lock.h (__libc_cleanup_region_start): New
macro.
(__libc_cleanup_region_end): New macro.
1996-09-20 01:58:09 +00:00
|
|
|
# For linux-gnu, try linux-gnu, then linux.
|
|
|
|
o=`echo $tail | sed 's/-.*$//'`
|
|
|
|
if test $o != $tail; then
|
|
|
|
ostry="$ostry /$o"
|
|
|
|
fi
|
1995-02-18 01:27:10 +00:00
|
|
|
|
|
|
|
# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
|
|
|
|
base=
|
|
|
|
tail=$base_os
|
|
|
|
while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
|
|
|
|
set $b
|
|
|
|
base="$base /$1"
|
|
|
|
tail="$2"
|
|
|
|
done
|
|
|
|
|
1999-03-29 13:25:15 +00:00
|
|
|
# For sparc/sparc32, try sparc/sparc32 and then sparc.
|
1995-02-18 01:27:10 +00:00
|
|
|
mach=
|
2005-11-08 01:21:32 +00:00
|
|
|
tail=$machine${submachine:+/$submachine}
|
1995-02-18 01:27:10 +00:00
|
|
|
while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
|
|
|
|
set $m
|
2020-03-05 12:41:42 +00:00
|
|
|
# Prepend the machine's FPU directory unless the architecture specific
|
|
|
|
# preconfigure disables it.
|
Remove --with-fp / --without-fp.
There is a configure option --without-fp that specifies that nofpu
sysdeps directories should be used instead of fpu directories.
For most glibc configurations, this option is of no use: either there
is no valid nofpu variant of that configuration, or there are no fpu
or nofpu sysdeps directories for that processor and so the option does
nothing. For a few configurations, if you are using a soft-float
compiler this option is required, and failing to use it generally
results in compilation errors from inline asm using unavailable
floating-point instructions.
We're moving away from --with-cpu to configuring glibc based on how
the compiler generates code, and it is natural to do so for
--without-fp as well; in most cases the soft-float and hard-float ABIs
are incompatible so you have no hope of building a working glibc with
an inappropriately configured compiler or libgcc.
This patch eliminates --without-fp, replacing it entirely by automatic
configuration based on the compiler. Configurations for which this is
relevant (coldfire / mips / powerpc32 / sh) define a variable
with_fp_cond in their preconfigure fragments (under the same
conditions under which those fragments do anything); this is a
preprocessor conditional which the toplevel configure script then uses
in a test to determine which sysdeps directories to use.
The config.make with-fp variable remains. It's used only by powerpc
(sysdeps/powerpc/powerpc32/Makefile) to add -mhard-float to various
flags variables. For powerpc, -mcpu= options can imply use of
soft-float. That could be an issue if you want to build for
e.g. 476fp, but are using --with-cpu=476 because there isn't a 476fp
sysdeps directory. If in future we eliminate --with-cpu and replace
it entirely by testing the compiler, it would be natural at that point
to eliminate that code as well (as the user should then just use a
compiler defaulting to 476fp and the 476 sysdeps directory would be
used automatically).
Tested for x86_64, and tested with build-many-glibcs.py that installed
shared libraries are unchanged by this patch.
* configure.ac (--with-fp): Remove configure option.
(with_fp_cond): New variable.
(libc_cv_with_fp): New configure test. Use this variable instead
of with_fp.
* configure: Regenerated.
* config.make.in (with-fp): Use @libc_cv_with_fp@.
* manual/install.texi (Configuring and compiling): Remove
--without-fp.
* INSTALL: Regenerated.
* sysdeps/m68k/preconfigure (with_fp_cond): Define for ColdFire.
* sysdeps/mips/preconfigure (with_fp_cond): Define.
* sysdeps/powerpc/preconfigure (with_fp_cond): Define for 32-bit.
* sysdeps/sh/preconfigure (with_fp_cond): Define.
* scripts/build-many-glibcs.py (Context.add_all_configs): Do not
use --without-fp to configure glibc.
2017-12-12 13:56:47 +00:00
|
|
|
if test "$libc_cv_with_fp" = yes; then
|
2013-01-11 19:39:38 +00:00
|
|
|
maybe_fpu=/fpu
|
2002-10-19 20:07:18 +00:00
|
|
|
else
|
2013-01-11 19:39:38 +00:00
|
|
|
maybe_fpu=/nofpu
|
1995-04-19 22:12:34 +00:00
|
|
|
fi
|
2013-01-11 19:39:38 +00:00
|
|
|
# For each machine term, try it with and then without /multiarch.
|
|
|
|
for try_fpu in $maybe_fpu ''; do
|
|
|
|
for try_multi in $multi_arch_d ''; do
|
|
|
|
mach="$mach /$1$try_fpu$try_multi"
|
|
|
|
done
|
|
|
|
done
|
1995-02-18 01:27:10 +00:00
|
|
|
tail="$2"
|
|
|
|
done
|
|
|
|
|
|
|
|
dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
|
|
|
|
changequote([,])dnl
|
|
|
|
|
|
|
|
# Find what sysdep directories exist.
|
|
|
|
sysnames=
|
2005-11-05 02:00:22 +00:00
|
|
|
for b in $base ''; do
|
|
|
|
for m0 in $mach ''; do
|
|
|
|
for v in /$vendor ''; do
|
|
|
|
test "$v" = / && continue
|
|
|
|
for o in /$ostry ''; do
|
|
|
|
test "$o" = / && continue
|
2013-01-11 19:39:38 +00:00
|
|
|
for m in $mach ''; do
|
Remove add-ons mechanism.
glibc has an add-ons mechanism to allow additional software to be
integrated into the glibc build. Such add-ons may be within the glibc
source tree, or outside it at a path passed to the --enable-add-ons
configure option.
localedata and crypt were once add-ons, distributed in separate
release tarballs, but long since stopped using that mechanism.
Linuxthreads was always an add-on. Ports spent some time as an add-on
with separate release tarballs, then was first moved into the glibc
source tree, then had its sysdeps files moved into the main sysdeps
hierarchy so the add-ons mechanism was no longer used. NPTL spent
some time as an add-on in the main glibc tree before stopping using
the add-on mechanism. libidn used to have separate release tarballs
but no longer does so, but still uses the add-ons mechanism within the
glibc source tree. Various other software has supported building with
the add-ons mechanism at times in the past, but I don't think any is
still widely used.
Add-ons involve significant, little-used complexity in the glibc build
system, and make it hard to understand what the space of possible
glibc configurations is. This patch removes the add-ons mechanism.
libidn is now built via the Subdirs mechanism to cause any
configuration using sysdeps/unix/inet to build libidn; HAVE_LIBIDN
(which effectively means shared libraries are available) is now
defined via sysdeps/unix/inet/configure. Various references to
add-ons around the source tree are removed (in the case of maint.texi,
the example list of sysdeps directories is still very out of date).
Externally maintained ports should now put their files in the normal
sysdeps directory structure rather than being arranged as add-ons;
they probably need to change e.g. elf.h anyway, rather than actually
being able to work just as a drop-in subtree. Hurd libpthread should
be arranged similarly to NPTL, so some files might go in a
hurd-pthreads (or similar) top-level directory in glibc, while sysdeps
files should go in the normal sysdeps directory structure (possibly in
hurd or hurd-pthreads subdirectories, just as there are nptl
subdirectories in the sysdeps tree).
Tested for x86_64, and with build-many-glibcs.py.
* configure.ac (--enable-add-ons): Remove option.
(machine): Do not mention add-ons in comment.
(LIBC_PRECONFIGURE): Likewise.
(add_ons): Remove variable and sanity checks and logic to locate
add-ons.
(add_ons_automatic): Remove variable.
(configured_add_ons): Likewise.
(add_ons_sfx): Likewise.
(add_ons_pfx): Likewise.
(add_on_subdirs): Likewise.
(sysnames_add_ons): Likewise. Remove loop over add-ons and
consideration of add-ons in Implies handling.
(sysdeps_add_ons): Likewise.
* configure: Regenerated.
* libidn/configure.ac: Remove.
* libidn/configure: Likewise.
* sysdeps/unix/inet/configure.ac: New file.
* sysdeps/unix/inet/configure: New generated file.
* sysdeps/unix/inet/Subdirs: Add libidn.
* Makeconfig (sysdeps-srcdirs): Remove variable.
(+sysdep_dirs): Do not include $(sysdeps-srcdirs).
($(common-objpfx)config.status): Do not depend on add-on files.
($(common-objpfx)shlib-versions.v.i): Do not mention add-ons in
comment.
(all-subdirs): Do not include $(add-on-subdirs).
* Makefile (dist-prepare): Do not use $(sysdeps-add-ons).
* config.make.in (add-ons): Remove variable.
(add-on-subdirs): Likewise.
(sysdeps-add-ons): Likewise.
* manual/Makefile (add-chapters): Remove.
($(objpfx)texis): Do not depend on $(add-chapters).
(nonexamples): Do not handle $(add-chapters).
(examples): Do not handle $(add-ons).
(chapters.% top-menu.%): Do not pass '$(add-chapters)' to
libc-texinfo.sh.
* manual/install.texi (Installation): Do not mention add-ons.
(--enable-add-ons): Do not document configure option.
* INSTALL: Regenerated.
* manual/libc-texinfo.sh: Do not handle $2 add-ons argument.
* manual/maint.texi (Hierarchy Conventions): Do not mention
add-ons.
* scripts/build-many-glibcs.py (Glibc.build_glibc): Do not use
--enable-add-ons.
* scripts/gen-sorted.awk: Do not handle Subdirs files from
add-ons.
* scripts/test-installation.pl: Do not handle glibc-compat add-on.
* sysdeps/nptl/Makeconfig: Do not mention add-ons in comment.
2017-10-05 15:58:13 +00:00
|
|
|
try_suffix="$m0$b$v$o$m"
|
|
|
|
if test -n "$try_suffix"; then
|
|
|
|
try_srcdir="${srcdir}/"
|
|
|
|
try="sysdeps$try_suffix"
|
|
|
|
test -n "$enable_debug_configure" &&
|
|
|
|
echo "$0 [DEBUG]: try $try" >&2
|
|
|
|
if test -d "$try_srcdir$try"; then
|
|
|
|
sysnames="$sysnames $try"
|
|
|
|
{ test -n "$o" || test -n "$b"; } && os_used=t
|
|
|
|
{ test -n "$m" || test -n "$m0"; } && machine_used=t
|
|
|
|
case x${m0:-$m} in
|
|
|
|
x*/$submachine) submachine_used=t ;;
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
fi
|
1995-02-18 01:27:10 +00:00
|
|
|
done
|
|
|
|
done
|
|
|
|
done
|
|
|
|
done
|
2005-11-05 02:00:22 +00:00
|
|
|
done
|
1995-02-18 01:27:10 +00:00
|
|
|
|
2009-12-24 04:22:46 +00:00
|
|
|
# If the assembler supports gnu_indirect_function symbol type and the
|
|
|
|
# architecture supports multi-arch, we enable multi-arch by default.
|
Remove add-ons mechanism.
glibc has an add-ons mechanism to allow additional software to be
integrated into the glibc build. Such add-ons may be within the glibc
source tree, or outside it at a path passed to the --enable-add-ons
configure option.
localedata and crypt were once add-ons, distributed in separate
release tarballs, but long since stopped using that mechanism.
Linuxthreads was always an add-on. Ports spent some time as an add-on
with separate release tarballs, then was first moved into the glibc
source tree, then had its sysdeps files moved into the main sysdeps
hierarchy so the add-ons mechanism was no longer used. NPTL spent
some time as an add-on in the main glibc tree before stopping using
the add-on mechanism. libidn used to have separate release tarballs
but no longer does so, but still uses the add-ons mechanism within the
glibc source tree. Various other software has supported building with
the add-ons mechanism at times in the past, but I don't think any is
still widely used.
Add-ons involve significant, little-used complexity in the glibc build
system, and make it hard to understand what the space of possible
glibc configurations is. This patch removes the add-ons mechanism.
libidn is now built via the Subdirs mechanism to cause any
configuration using sysdeps/unix/inet to build libidn; HAVE_LIBIDN
(which effectively means shared libraries are available) is now
defined via sysdeps/unix/inet/configure. Various references to
add-ons around the source tree are removed (in the case of maint.texi,
the example list of sysdeps directories is still very out of date).
Externally maintained ports should now put their files in the normal
sysdeps directory structure rather than being arranged as add-ons;
they probably need to change e.g. elf.h anyway, rather than actually
being able to work just as a drop-in subtree. Hurd libpthread should
be arranged similarly to NPTL, so some files might go in a
hurd-pthreads (or similar) top-level directory in glibc, while sysdeps
files should go in the normal sysdeps directory structure (possibly in
hurd or hurd-pthreads subdirectories, just as there are nptl
subdirectories in the sysdeps tree).
Tested for x86_64, and with build-many-glibcs.py.
* configure.ac (--enable-add-ons): Remove option.
(machine): Do not mention add-ons in comment.
(LIBC_PRECONFIGURE): Likewise.
(add_ons): Remove variable and sanity checks and logic to locate
add-ons.
(add_ons_automatic): Remove variable.
(configured_add_ons): Likewise.
(add_ons_sfx): Likewise.
(add_ons_pfx): Likewise.
(add_on_subdirs): Likewise.
(sysnames_add_ons): Likewise. Remove loop over add-ons and
consideration of add-ons in Implies handling.
(sysdeps_add_ons): Likewise.
* configure: Regenerated.
* libidn/configure.ac: Remove.
* libidn/configure: Likewise.
* sysdeps/unix/inet/configure.ac: New file.
* sysdeps/unix/inet/configure: New generated file.
* sysdeps/unix/inet/Subdirs: Add libidn.
* Makeconfig (sysdeps-srcdirs): Remove variable.
(+sysdep_dirs): Do not include $(sysdeps-srcdirs).
($(common-objpfx)config.status): Do not depend on add-on files.
($(common-objpfx)shlib-versions.v.i): Do not mention add-ons in
comment.
(all-subdirs): Do not include $(add-on-subdirs).
* Makefile (dist-prepare): Do not use $(sysdeps-add-ons).
* config.make.in (add-ons): Remove variable.
(add-on-subdirs): Likewise.
(sysdeps-add-ons): Likewise.
* manual/Makefile (add-chapters): Remove.
($(objpfx)texis): Do not depend on $(add-chapters).
(nonexamples): Do not handle $(add-chapters).
(examples): Do not handle $(add-ons).
(chapters.% top-menu.%): Do not pass '$(add-chapters)' to
libc-texinfo.sh.
* manual/install.texi (Installation): Do not mention add-ons.
(--enable-add-ons): Do not document configure option.
* INSTALL: Regenerated.
* manual/libc-texinfo.sh: Do not handle $2 add-ons argument.
* manual/maint.texi (Hierarchy Conventions): Do not mention
add-ons.
* scripts/build-many-glibcs.py (Glibc.build_glibc): Do not use
--enable-add-ons.
* scripts/gen-sorted.awk: Do not handle Subdirs files from
add-ons.
* scripts/test-installation.pl: Do not handle glibc-compat add-on.
* sysdeps/nptl/Makeconfig: Do not mention add-ons in comment.
2017-10-05 15:58:13 +00:00
|
|
|
case $sysnames in
|
2010-08-23 14:51:49 +00:00
|
|
|
*"$multi_arch_d"*)
|
|
|
|
;;
|
|
|
|
*)
|
2011-01-17 02:29:41 +00:00
|
|
|
test x"$multi_arch" = xdefault && multi_arch=no
|
2010-08-23 14:51:49 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
if test x"$multi_arch" != xno; then
|
2009-12-24 04:22:46 +00:00
|
|
|
AC_DEFINE(USE_MULTIARCH)
|
|
|
|
fi
|
|
|
|
AC_SUBST(multi_arch)
|
|
|
|
|
1995-02-18 01:27:10 +00:00
|
|
|
if test -z "$os_used" && test "$os" != none; then
|
|
|
|
AC_MSG_ERROR(Operating system $os is not supported.)
|
|
|
|
fi
|
|
|
|
if test -z "$machine_used" && test "$machine" != none; then
|
|
|
|
AC_MSG_ERROR(The $machine is not supported.)
|
|
|
|
fi
|
2005-11-08 01:21:32 +00:00
|
|
|
if test -z "$submachine_used" && test -n "$submachine"; then
|
|
|
|
AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
|
|
|
|
fi
|
|
|
|
AC_SUBST(submachine)
|
1995-02-18 01:27:10 +00:00
|
|
|
|
|
|
|
# We have now validated the configuration.
|
|
|
|
|
|
|
|
# Expand the list of system names into a full list of directories
|
|
|
|
# from each element's parent name and Implies file (if present).
|
|
|
|
set $sysnames
|
1996-06-19 14:52:21 +00:00
|
|
|
names=
|
1995-02-18 01:27:10 +00:00
|
|
|
while test $# -gt 0; do
|
|
|
|
name=$1
|
|
|
|
shift
|
|
|
|
|
1996-06-19 14:52:21 +00:00
|
|
|
case " $names " in *" $name "*)
|
1996-06-14 12:05:04 +00:00
|
|
|
# Already in the list.
|
|
|
|
continue
|
1996-06-19 14:52:21 +00:00
|
|
|
esac
|
1996-06-14 12:05:04 +00:00
|
|
|
|
|
|
|
# Report each name as we discover it, so there is no long pause in output.
|
2002-10-19 00:23:55 +00:00
|
|
|
echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
|
1996-06-14 12:05:04 +00:00
|
|
|
|
1996-09-05 02:49:18 +00:00
|
|
|
name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
|
|
|
|
|
|
|
|
case $name in
|
|
|
|
/*) xsrcdir= ;;
|
|
|
|
*) xsrcdir=$srcdir/ ;;
|
|
|
|
esac
|
|
|
|
test -n "$enable_debug_configure" &&
|
|
|
|
echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
|
|
|
|
|
2012-05-09 22:45:53 +00:00
|
|
|
for implies_file in Implies Implies-before Implies-after; do
|
|
|
|
implies_type=`echo $implies_file | sed s/-/_/`
|
|
|
|
eval ${implies_type}=
|
|
|
|
if test -f $xsrcdir$name/$implies_file; then
|
|
|
|
# Collect more names from the `Implies' file (removing comments).
|
|
|
|
implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
|
|
|
|
for x in $implied_candidate; do
|
|
|
|
found=no
|
|
|
|
if test -d $xsrcdir$name_base/$x; then
|
|
|
|
eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
|
2001-06-16 04:34:51 +00:00
|
|
|
found=yes
|
2012-05-09 22:45:53 +00:00
|
|
|
fi
|
Remove add-ons mechanism.
glibc has an add-ons mechanism to allow additional software to be
integrated into the glibc build. Such add-ons may be within the glibc
source tree, or outside it at a path passed to the --enable-add-ons
configure option.
localedata and crypt were once add-ons, distributed in separate
release tarballs, but long since stopped using that mechanism.
Linuxthreads was always an add-on. Ports spent some time as an add-on
with separate release tarballs, then was first moved into the glibc
source tree, then had its sysdeps files moved into the main sysdeps
hierarchy so the add-ons mechanism was no longer used. NPTL spent
some time as an add-on in the main glibc tree before stopping using
the add-on mechanism. libidn used to have separate release tarballs
but no longer does so, but still uses the add-ons mechanism within the
glibc source tree. Various other software has supported building with
the add-ons mechanism at times in the past, but I don't think any is
still widely used.
Add-ons involve significant, little-used complexity in the glibc build
system, and make it hard to understand what the space of possible
glibc configurations is. This patch removes the add-ons mechanism.
libidn is now built via the Subdirs mechanism to cause any
configuration using sysdeps/unix/inet to build libidn; HAVE_LIBIDN
(which effectively means shared libraries are available) is now
defined via sysdeps/unix/inet/configure. Various references to
add-ons around the source tree are removed (in the case of maint.texi,
the example list of sysdeps directories is still very out of date).
Externally maintained ports should now put their files in the normal
sysdeps directory structure rather than being arranged as add-ons;
they probably need to change e.g. elf.h anyway, rather than actually
being able to work just as a drop-in subtree. Hurd libpthread should
be arranged similarly to NPTL, so some files might go in a
hurd-pthreads (or similar) top-level directory in glibc, while sysdeps
files should go in the normal sysdeps directory structure (possibly in
hurd or hurd-pthreads subdirectories, just as there are nptl
subdirectories in the sysdeps tree).
Tested for x86_64, and with build-many-glibcs.py.
* configure.ac (--enable-add-ons): Remove option.
(machine): Do not mention add-ons in comment.
(LIBC_PRECONFIGURE): Likewise.
(add_ons): Remove variable and sanity checks and logic to locate
add-ons.
(add_ons_automatic): Remove variable.
(configured_add_ons): Likewise.
(add_ons_sfx): Likewise.
(add_ons_pfx): Likewise.
(add_on_subdirs): Likewise.
(sysnames_add_ons): Likewise. Remove loop over add-ons and
consideration of add-ons in Implies handling.
(sysdeps_add_ons): Likewise.
* configure: Regenerated.
* libidn/configure.ac: Remove.
* libidn/configure: Likewise.
* sysdeps/unix/inet/configure.ac: New file.
* sysdeps/unix/inet/configure: New generated file.
* sysdeps/unix/inet/Subdirs: Add libidn.
* Makeconfig (sysdeps-srcdirs): Remove variable.
(+sysdep_dirs): Do not include $(sysdeps-srcdirs).
($(common-objpfx)config.status): Do not depend on add-on files.
($(common-objpfx)shlib-versions.v.i): Do not mention add-ons in
comment.
(all-subdirs): Do not include $(add-on-subdirs).
* Makefile (dist-prepare): Do not use $(sysdeps-add-ons).
* config.make.in (add-ons): Remove variable.
(add-on-subdirs): Likewise.
(sysdeps-add-ons): Likewise.
* manual/Makefile (add-chapters): Remove.
($(objpfx)texis): Do not depend on $(add-chapters).
(nonexamples): Do not handle $(add-chapters).
(examples): Do not handle $(add-ons).
(chapters.% top-menu.%): Do not pass '$(add-chapters)' to
libc-texinfo.sh.
* manual/install.texi (Installation): Do not mention add-ons.
(--enable-add-ons): Do not document configure option.
* INSTALL: Regenerated.
* manual/libc-texinfo.sh: Do not handle $2 add-ons argument.
* manual/maint.texi (Hierarchy Conventions): Do not mention
add-ons.
* scripts/build-many-glibcs.py (Glibc.build_glibc): Do not use
--enable-add-ons.
* scripts/gen-sorted.awk: Do not handle Subdirs files from
add-ons.
* scripts/test-installation.pl: Do not handle glibc-compat add-on.
* sysdeps/nptl/Makeconfig: Do not mention add-ons in comment.
2017-10-05 15:58:13 +00:00
|
|
|
try="sysdeps/$x"
|
|
|
|
try_srcdir=$srcdir/
|
|
|
|
test -n "$enable_debug_configure" &&
|
|
|
|
echo "[DEBUG]: $name $implies_file $x try() {$try_srcdir}$try" >&2
|
|
|
|
if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
|
|
|
|
then
|
|
|
|
eval "${implies_type}=\"\$${implies_type} \$try\""
|
|
|
|
found=yes
|
|
|
|
fi
|
2012-05-09 22:45:53 +00:00
|
|
|
if test $found = no; then
|
|
|
|
AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
|
2001-06-16 04:34:51 +00:00
|
|
|
fi
|
|
|
|
done
|
2012-05-09 22:45:53 +00:00
|
|
|
fi
|
|
|
|
done
|
1995-02-18 01:27:10 +00:00
|
|
|
|
|
|
|
# Add NAME to the list of names.
|
|
|
|
names="$names $name"
|
|
|
|
|
|
|
|
# Find the parent of NAME, using the empty string if it has none.
|
|
|
|
changequote(,)dnl
|
1996-09-05 02:49:18 +00:00
|
|
|
parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
|
1995-02-18 01:27:10 +00:00
|
|
|
changequote([,])dnl
|
|
|
|
|
2012-05-09 22:45:53 +00:00
|
|
|
test -n "$enable_debug_configure" &&
|
|
|
|
echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
|
2012-07-23 10:27:12 +00:00
|
|
|
Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
|
2012-05-09 22:45:53 +00:00
|
|
|
|
1995-02-18 01:27:10 +00:00
|
|
|
# Add the names implied by NAME, and NAME's parent (if it has one), to
|
|
|
|
# the list of names to be processed (the argument list). We prepend the
|
|
|
|
# implied names to the list and append the parent. We want implied
|
|
|
|
# directories to come before further directories inferred from the
|
|
|
|
# configuration components; this ensures that for sysv4, unix/common
|
|
|
|
# (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
|
|
|
|
# after sysv4).
|
2012-05-09 22:45:53 +00:00
|
|
|
sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
|
1995-02-18 01:27:10 +00:00
|
|
|
test -n "$sysnames" && set $sysnames
|
|
|
|
done
|
|
|
|
|
|
|
|
# Add the default directories.
|
2012-03-23 16:37:33 +00:00
|
|
|
default_sysnames="sysdeps/generic"
|
1998-06-12 07:36:49 +00:00
|
|
|
sysnames="$names $default_sysnames"
|
1996-06-14 12:05:04 +00:00
|
|
|
AC_SUBST(sysnames)
|
|
|
|
# The other names were emitted during the scan.
|
1998-06-12 07:36:49 +00:00
|
|
|
AC_MSG_RESULT($default_sysnames)
|
1995-02-18 01:27:10 +00:00
|
|
|
|
1996-06-14 12:05:04 +00:00
|
|
|
|
|
|
|
### Locate tools.
|
1995-02-18 01:27:10 +00:00
|
|
|
|
|
|
|
AC_PROG_INSTALL
|
1999-08-13 20:16:30 +00:00
|
|
|
if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
|
1995-02-18 01:27:10 +00:00
|
|
|
# The makefiles need to use a different form to find it in $srcdir.
|
1999-08-13 20:16:30 +00:00
|
|
|
INSTALL='\$(..)./scripts/install-sh -c'
|
1995-02-18 01:27:10 +00:00
|
|
|
fi
|
Tue May 7 19:00:01 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* string/argz-extract.c: Remove const from decl.
* string/argz.h: Here too.
* Makeconfig (version.mk): Fix regexp in sed cmd.
Depend on $(..)Makeconfig.
* GMP code updated from gmp-2.0 release.
* stdlib/Makefile (mpn-routines): Removed add_1, added inlines.
* sysdeps/generic/add_1.c: File removed.
* stdlib/strtod.c: mp_limb is now mp_limb_t.
* stdlib/fpioconst.c, stdlib/fpioconst.h: Likewise.
* stdio-common/_itoa.c: Likewise.
* stdio-common/printf_fp.c: Likewise.
Don't include ansidecl.h.
* sysdeps/mach/hurd/getcwd.c: Use io_identity instead of io_stat.
* shlib-versions: New file.
* Makerules (soversions.mk): New target, include file generated from
shlib-versions. Moved shared library rules before installation rules.
Rewrote shared library installation rules for versioned libraries.
* math/Makefile (libm.so-version): Variable removed.
* sysdeps/mach/hurd/i386/exc2signal.c: Use struct hurd_signal_detail.
* hurd/report-wait.c (_S_msg_describe_ports): New function.
* configure.in: Add AC_PROG_LN_S check.
* config.make.in (LN_S): New variable.
Sun May 5 03:10:44 1996 Ulrich Drepper <drepper@cygnus.com>
* misc/efgcvt_r.c (ecvt_r): Work aroung gcc bug. gcc does
not know about weak aliases now and optimizes necessary `if'
statement away.
* posix/unistd.h: Add swapoff prototype.
* sysdeps/generic/confname.h: Add even more POSIX.4 symbols.
* sysdeps/posix/fpathconf.c (__fpathconf): Get information
for _PC_PATH_MAX from fstatfs function if available.
* sysdeps/posix/sysconf.c: Add code to handle _SC_AIO_LISTIO_MAX,
_SC_AIO_MAX, _SC_AIO_PRIO_DELTA_MAX, _SC_DELAYTIMER_MAX,
_SC_MQ_OPEN_MAX, _SC_MQ_PRIO_MAX, _SC_RTSIG_MAX,
_SC_SEM_NSEMS_MAX, _SC_SEM_VALUE_MAX, _SC_SIGQUEUE_MAX, and
_SC_TIMER_MAX.
* sysdeps/unix/sysv/sysv4/sysconf.c: Ditto.
* sysdeps/stub/swapoff.c: New file. Stub version for swapoff
function.
* sysdeps/unix/syscalls.list: Add swapoff.
* sysdeps/unix/sysv/linux/Dist: Add sys/acct.h.
* sysdeps/unix/sysv/linux/Makefile [$(subdir) == misc]
(sysdep_routines): Add mount, umount, llseek, setfsgid, setfsuid,
sysinfo, and uselib.
(headers): Add sys/sysinfo.h.
* sysdeps/unix/sysv/linux/gethostid.c: Prevent warning.
* sysdeps/unix/sysv/linux/i386/Makefile [$(subdir) == misc]
(sysdep_routines): Add ioperm, iopl, and vm86.
(headers): Add sys/perm.h and sys/vm86.h.
* sysdeps/unix/sysv/linux/i386/sys/perm.h: New file. Contains
prototypes for iopl and ioperm.
* sysdeps/unix/sysv/linux/i386/sys/vm86.h: New file. Contains
prototype for vm86.
* sysdeps/unix/sysv/linux/i386/syscalls.list: New file. Add
vm86 system call.
* sysdeps/unix/sysv/linux/sys/acct.h: New file. Contains
prototypes for acct function.
* sysdeps/unix/sysv/linux/sys/socket.h: Provide real header
file with prototypes.
* sysdeps/unix/sysv/linux/sys/sysinfo.h: New file. Contains
prototype for sysinfo function.
* sysdeps/unix/sysv/linux/syscalls.list: Add flock, ioperm, iopl,
llseek, setfsgid, setfsuid, sysinfo, and uselib.
* sysdeps/unix/sysv/linux/sysconf.c: Instead of duplicating
posix/sysconf.c now only handle cases different to that
implementation.
Tue May 7 15:08:19 1996 Miles Bader <miles@gnu.ai.mit.edu>
* stdio/linewrap.c (__line_wrap_output): Renamed from lwoutput
(all references changed). Now exported.
* stdio/linewrap.c (struct data): Type deleted (moved to linewrap.h).
(wrap_stream, unwrap_stream, lwclose, lwfileno, lwoutput,
line_wrap_stream, line_unwrap_stream): Use struct line_wrap_data
instead of struct data.
(lwoutput, line_wrap_stream, line_unwrap_stream): Rename various
occurences of `wrap' and `wrapmargin' to `wmargin'.
(line_wrapped, line_wrap_lmargin, line_wrap_set_lmargin,
line_wrap_rmargin, line_wrap_set_rmargin, line_wrap_wmargin,
line_wrap_set_wmargin, line_wrap_point): New functions.
* stdio/linewrap.h: New file.
* stdio/Makefile (headers): Add linewrap.h.
Tue May 7 14:19:12 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* sysdeps/unix/sysv/linux/i386/Makefile: File removed.
* stdio/stdio.h: Remove line_wrap_stream, line_unwap_stream decls.
* sysdeps/unix/sysv/linux/schedbits.h: New file.
Tue May 7 13:47:02 1996 Miles Bader <miles@gnu.ai.mit.edu>
* stdio/linewrap.c (struct data): Make margin fields not-pointers.
(lwoutput): Adjust uses acordingly.
* sysdeps/mach/hurd/fdatasync.c: New file.
* sysdeps/mach/hurd/fsync.c: Pass new flag to file_sync.
* sysdeps/mach/hurd/xmknod.c: Pass new flag to dir_link.
* sysdeps/mach/hurd/symlink.c: Likewise.
* sysdeps/mach/hurd/link.c: Likewise.
* sysdeps/mach/hurd/bind.c: Likewise.
* hurd/hurdsig.c (write_corefile): Likewise.
* hurd/hurdsig.c (write_corefile): Pass cttyid port to crash server.
* sysdeps/mach/hurd/fpathconf.c: RPC takes int pointer, not long int.
* sysdeps/mach/hurd/_exit.c (_hurd_exit): Pass sigcode arg to
proc_mark_exit.
* sysdeps/mach/hurd/dl-sysdep.c (_exit): Likewise.
* sysdeps/mach/hurd/wait4.c: Pass sigcode arg to proc_wait.
* sysdeps/mach/hurd/rename.c: Pass new flag to dir_rename.
* hurd/hurdfault.c (_hurdsig_fault_catch_exception_raise): Use struct
hurd_signal_detail.
* hurd/catch-exc.c (_S_catch_exception_raise): Likewise.
* hurd/hurd-raise.c (_hurd_raise_signal): Likewise.
* sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler):
Likewise.
* sysdeps/mach/hurd/setitimer.c (restart_itimer): Likewise.
* hurd/hurd/signal.h: Fix _hurd_exception2signal prototype.
* hurd/hurdsig.c (write_corefile): Take const struct
hurd_signal_detail * arg. Pass all details to crash_dump_task.
(_hurd_internal_post_signal): Pass DETAIL to write_corefile.
(_hurd_internal_post_signal: suspend): Pass code and error to
proc_mark_stop.
* hurd/hurdprio.c (_hurd_priority_which_map): Pass flags arg to
proc_getprocinfo by reference.
1996-05-08 02:07:47 +00:00
|
|
|
AC_PROG_LN_S
|
1998-03-02 18:02:11 +00:00
|
|
|
|
2003-03-22 00:07:21 +00:00
|
|
|
LIBC_PROG_BINUTILS
|
|
|
|
|
2017-09-26 01:01:23 +00:00
|
|
|
# Accept binutils 2.25 or newer.
|
2003-03-22 00:07:21 +00:00
|
|
|
AC_CHECK_PROG_VER(AS, $AS, --version,
|
|
|
|
[GNU assembler.* \([0-9]*\.[0-9.]*\)],
|
2017-09-26 01:01:23 +00:00
|
|
|
[2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
|
2014-11-10 19:16:46 +00:00
|
|
|
AS=: critic_missing="$critic_missing as")
|
2017-06-28 11:03:57 +00:00
|
|
|
|
|
|
|
if test -n "`$LD --version | sed -n 's/^GNU \(gold\).*$/\1/p'`"; then
|
|
|
|
# Accept gold 1.14 or higher
|
|
|
|
AC_CHECK_PROG_VER(LD, $LD, --version,
|
|
|
|
[GNU gold.* \([0-9][0-9]*\.[0-9.]*\)],
|
|
|
|
[1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*],
|
|
|
|
LD=: critic_missing="$critic_missing GNU gold")
|
|
|
|
else
|
|
|
|
AC_CHECK_PROG_VER(LD, $LD, --version,
|
|
|
|
[GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
|
2017-06-28 11:31:50 +00:00
|
|
|
[2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
|
2017-06-28 11:03:57 +00:00
|
|
|
LD=: critic_missing="$critic_missing GNU ld")
|
|
|
|
fi
|
2003-03-22 00:07:21 +00:00
|
|
|
|
1998-04-02 17:42:53 +00:00
|
|
|
# These programs are version sensitive.
|
1999-08-19 22:59:36 +00:00
|
|
|
AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
|
1999-09-10 20:00:21 +00:00
|
|
|
[GNU Make[^0-9]*\([0-9][0-9.]*\)],
|
2018-07-04 13:27:24 +00:00
|
|
|
[[4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
|
1998-04-02 17:42:53 +00:00
|
|
|
|
1999-08-19 22:59:36 +00:00
|
|
|
AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
|
1998-07-30 12:47:25 +00:00
|
|
|
[GNU gettext.* \([0-9]*\.[0-9.]*\)],
|
2001-05-14 23:21:54 +00:00
|
|
|
[0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
|
|
|
|
MSGFMT=: aux_missing="$aux_missing msgfmt")
|
1998-04-02 17:42:53 +00:00
|
|
|
AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
|
1998-11-16 12:02:08 +00:00
|
|
|
[GNU texinfo.* \([0-9][0-9.]*\)],
|
2014-12-11 17:59:45 +00:00
|
|
|
[4.[7-9]*|4.[1-9][0-9]*|[5-9].*],
|
2001-05-14 23:21:54 +00:00
|
|
|
MAKEINFO=: aux_missing="$aux_missing makeinfo")
|
2001-12-31 06:57:04 +00:00
|
|
|
AC_CHECK_PROG_VER(SED, sed, --version,
|
2012-08-22 19:58:18 +00:00
|
|
|
[GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
|
2001-05-14 23:21:54 +00:00
|
|
|
[3.0[2-9]*|3.[1-9]*|[4-9]*],
|
|
|
|
SED=: aux_missing="$aux_missing sed")
|
2012-09-01 23:30:18 +00:00
|
|
|
AC_CHECK_PROG_VER(AWK, gawk, --version,
|
|
|
|
[GNU Awk[^0-9]*\([0-9][0-9.]*\)],
|
2013-06-17 16:54:51 +00:00
|
|
|
[3.1.[2-9]*|3.[2-9]*|[4-9]*], critic_missing="$critic_missing gawk")
|
2017-11-30 21:21:15 +00:00
|
|
|
AC_CHECK_PROG_VER(BISON, bison, --version,
|
|
|
|
[bison (GNU Bison) \([0-9]*\.[0-9.]*\)],
|
|
|
|
[2.7*|[3-9].*|[1-9][0-9]*], critic_missing="$critic_missing bison")
|
1998-04-02 17:42:53 +00:00
|
|
|
|
2014-10-24 21:45:47 +00:00
|
|
|
AC_CACHE_CHECK([if $CC is sufficient to build libc], libc_cv_compiler_ok, [
|
2021-05-22 02:42:48 +00:00
|
|
|
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[
|
2019-02-01 16:27:44 +00:00
|
|
|
#if !defined __GNUC__ || __GNUC__ < 6 || (__GNUC__ == 6 && __GNUC_MINOR__ < 2)
|
2014-10-24 21:45:47 +00:00
|
|
|
#error insufficient compiler
|
2021-05-22 02:42:48 +00:00
|
|
|
#endif]])],
|
2014-10-24 21:45:47 +00:00
|
|
|
[libc_cv_compiler_ok=yes],
|
|
|
|
[libc_cv_compiler_ok=no])])
|
|
|
|
AS_IF([test $libc_cv_compiler_ok != yes],
|
|
|
|
[critic_missing="$critic_missing compiler"])
|
|
|
|
|
2012-05-14 23:08:25 +00:00
|
|
|
AC_CHECK_TOOL(NM, nm, false)
|
2011-07-09 11:06:34 +00:00
|
|
|
|
2013-12-16 01:25:04 +00:00
|
|
|
if test "x$maintainer" = "xyes"; then
|
|
|
|
AC_CHECK_PROGS(AUTOCONF, autoconf, no)
|
|
|
|
case "x$AUTOCONF" in
|
|
|
|
xno|x|x:) AUTOCONF=no ;;
|
|
|
|
*)
|
|
|
|
AC_CACHE_CHECK(dnl
|
|
|
|
whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
|
|
|
|
if (cd $srcdir; $AUTOCONF $ACFLAGS configure.ac > /dev/null 2>&1); then
|
|
|
|
libc_cv_autoconf_works=yes
|
|
|
|
else
|
|
|
|
libc_cv_autoconf_works=no
|
|
|
|
fi])
|
|
|
|
test $libc_cv_autoconf_works = yes || AUTOCONF=no
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
if test "x$AUTOCONF" = xno; then
|
|
|
|
aux_missing="$aux_missing autoconf"
|
|
|
|
fi
|
2013-12-16 11:45:27 +00:00
|
|
|
else
|
|
|
|
AUTOCONF=no
|
2002-11-24 23:11:14 +00:00
|
|
|
fi
|
2002-10-08 08:44:09 +00:00
|
|
|
|
2016-12-22 17:37:52 +00:00
|
|
|
# Check for python3 if available, or else python.
|
2018-10-29 15:28:05 +00:00
|
|
|
AC_CHECK_PROG_VER(PYTHON_PROG, python3 python, --version,
|
|
|
|
[Python \([0-9][0-9.]*\)],
|
|
|
|
[3.[4-9]*|3.[1-9][0-9]*|[4-9].*|[1-9][0-9]*],
|
|
|
|
critic_missing="$critic_missing python")
|
|
|
|
PYTHON="$PYTHON_PROG -B"
|
|
|
|
AC_SUBST(PYTHON)
|
2016-12-22 17:37:52 +00:00
|
|
|
|
2003-03-19 00:34:41 +00:00
|
|
|
test -n "$critic_missing" && AC_MSG_ERROR([
|
|
|
|
*** These critical programs are missing or too old:$critic_missing
|
|
|
|
*** Check the INSTALL file for required versions.])
|
|
|
|
|
1998-04-07 09:21:28 +00:00
|
|
|
test -n "$aux_missing" && AC_MSG_WARN([
|
2002-10-08 08:51:28 +00:00
|
|
|
*** These auxiliary programs are missing or incompatible versions:$aux_missing
|
2016-12-22 17:37:52 +00:00
|
|
|
*** some features or tests will be disabled.
|
1998-04-02 17:42:53 +00:00
|
|
|
*** Check the INSTALL file for required versions.])
|
1995-02-18 01:27:10 +00:00
|
|
|
|
1998-04-07 18:05:52 +00:00
|
|
|
# if using special system headers, find out the compiler's sekrit
|
|
|
|
# header directory and add that to the list. NOTE: Only does the right
|
|
|
|
# thing on a system that doesn't need fixincludes. (Not presently a problem.)
|
|
|
|
if test -n "$sysheaders"; then
|
2008-02-01 00:20:11 +00:00
|
|
|
SYSINCLUDES=-nostdinc
|
|
|
|
for d in include include-fixed; do
|
|
|
|
i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
|
|
|
|
SYSINCLUDES="$SYSINCLUDES -isystem $i"
|
|
|
|
done
|
|
|
|
SYSINCLUDES="$SYSINCLUDES \
|
2004-09-16 23:22:05 +00:00
|
|
|
-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
|
2005-12-28 06:53:43 +00:00
|
|
|
if test -n "$CXX"; then
|
2011-10-15 18:08:45 +00:00
|
|
|
CXX_SYSINCLUDES=
|
2012-11-25 06:58:38 +00:00
|
|
|
for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
|
|
|
|
| sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
|
|
|
|
test "x$cxxheaders" != x &&
|
|
|
|
CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
|
|
|
|
done
|
2005-12-28 06:53:43 +00:00
|
|
|
fi
|
1998-04-07 18:05:52 +00:00
|
|
|
fi
|
|
|
|
AC_SUBST(SYSINCLUDES)
|
2005-12-28 06:53:43 +00:00
|
|
|
AC_SUBST(CXX_SYSINCLUDES)
|
1998-04-07 18:05:52 +00:00
|
|
|
|
2016-09-21 08:45:32 +00:00
|
|
|
# Obtain some C++ header file paths. This is used to make a local
|
|
|
|
# copy of those headers in Makerules.
|
|
|
|
if test -n "$CXX"; then
|
|
|
|
find_cxx_header () {
|
2017-06-13 20:09:59 +00:00
|
|
|
echo "#include <$1>" | $CXX -M -MP -x c++ - 2>/dev/null \
|
|
|
|
| sed -n "\,$1:,{s/:\$//;p}"
|
2016-09-21 08:45:32 +00:00
|
|
|
}
|
|
|
|
CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
|
|
|
|
CXX_CMATH_HEADER="$(find_cxx_header cmath)"
|
2017-06-13 16:28:14 +00:00
|
|
|
CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
|
2016-09-21 08:45:32 +00:00
|
|
|
fi
|
|
|
|
AC_SUBST(CXX_CSTDLIB_HEADER)
|
|
|
|
AC_SUBST(CXX_CMATH_HEADER)
|
2017-06-13 16:28:14 +00:00
|
|
|
AC_SUBST(CXX_BITS_STD_ABS_H)
|
2016-09-21 08:45:32 +00:00
|
|
|
|
1998-03-23 12:30:14 +00:00
|
|
|
# Test if LD_LIBRARY_PATH contains the notation for the current directory
|
|
|
|
# since this would lead to problems installing/building glibc.
|
|
|
|
# LD_LIBRARY_PATH contains the current directory if one of the following
|
|
|
|
# is true:
|
|
|
|
# - one of the terminals (":" and ";") is the first or last sign
|
|
|
|
# - two terminals occur directly after each other
|
|
|
|
# - the path contains an element with a dot in it
|
|
|
|
AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
|
|
|
|
changequote(,)dnl
|
|
|
|
case ${LD_LIBRARY_PATH} in
|
|
|
|
[:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
|
1998-03-23 13:47:20 +00:00
|
|
|
ld_library_path_setting="contains current directory"
|
1998-03-23 12:30:14 +00:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
ld_library_path_setting="ok"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
changequote([,])dnl
|
|
|
|
AC_MSG_RESULT($ld_library_path_setting)
|
|
|
|
if test "$ld_library_path_setting" != "ok"; then
|
1998-04-02 17:42:53 +00:00
|
|
|
AC_MSG_ERROR([
|
|
|
|
*** LD_LIBRARY_PATH shouldn't contain the current directory when
|
|
|
|
*** building glibc. Please change the environment variable
|
|
|
|
*** and run configure again.])
|
1998-03-23 12:30:14 +00:00
|
|
|
fi
|
1998-03-20 12:41:37 +00:00
|
|
|
|
2007-06-08 03:17:15 +00:00
|
|
|
AC_PATH_PROG(BASH_SHELL, bash, no)
|
update from main archive 961119
Wed Nov 20 02:04:11 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/sigsuspend.c: Make sigsuspend a weak
alias of __sigsuspend.
* grp/grp.h: Correct comment about POSIX compliance.
* pwd/pwd.h: Likewise.
* login/utmp.h: Update copyright and pretty-print prototypes.
* sysdeps/generic/paths.h: Add _PATH_LASTLOG, _PATH_UTMP and
_PATH_WTMP from utmpbits.h.
* sysdeps/unix/sysv/linux/paths.h: Likewise.
* sysdeps/generic/utmpbits.h: Remove here.
* sysdeps/gnu/utmpbits.h: Likewise.
* misc/sys/uio.h: Place __BEGIN_DECLS correctly.
Pretty-print prototypes.
* sysdeps/unix/sysv/linux/sparc/clone.S: New file. Taken from
LinuxThreads-0.5.
Tue Nov 19 13:43:07 1996 Richard Henderson <rth@tamu.edu>
* inet/ether_hton.c: Include <string.h>.
* inet/ether_ntoh.c: Likewise.
* inet/rexec.c: Get errno, index, getpass, getlogin from headers.
* misc/search.h: Fix hcreate_r argument type (unsigned -> size_t).
* misc/sys/cdefs.h: Change __long_double_t definition from typedef
to define. Jim Nance reports problems building XEmacs otherwise.
* resolv/gethnamaddr.c: Protect h_errno redefinition.
* resolv/getnetnamadr.c: Likewise.
* resolv/herror.c: Likewise.
* sysdeps/generic/sigset.h (__SIGSETFN): Operator ## doesn't work
with -traditional. Reported by Eric Youngdale. While we're at this,
don't do error checking in the __ functions. This is consistent
with the sysv4 definitions and seems Right.
* signal/signal.h: Don't __OPTIMIZE__ sigops to __ versions. Add
prototype for __sigsuspend.
* sysdeps/posix/sigblock.c: Optimize sigmask <-> sigset_t conversions
for sigset_t == unsigned long. De-ansidecl-ify. Reformat copyright.
* sysdeps/posix/sigpause.c: Likewise.
* sysdeps/posix/sigsetmask.c: Likewise.
* sysdeps/posix/sigvec.c: Likewise.
* sysdeps/posix/sigintr.c: Reformat copyright.
* sysdeps/posix/signal.c: Check signal number out of range since
__sigismember doesn't anymore. Reformat copyright.
* sysdeps/posix/sigwait.c: Use __ versions of sigfillset, sigismember,
sigdelset, sigaction, and sigsuspend.
* stdlib/drand48-iter.c (__drand48_iterate): Cast state fragments
to the wider type before shifting.
* sysdeps/alpha/bsd-_setjmp.S: Silence assembler warning "$at used
without .set noat" in profiling hook.
* sysdeps/alpha/bsd-setjmp.S: Likewise.
* sysdeps/alpha/htonl.S: Likewise.
* sysdeps/alpha/htons.S: Likewise.
* sysdeps/alpha/s_copysign.S: Likewise.
* sysdeps/alpha/setjmp.S: Likewise.
* sysdeps/alpha/stpcpy.S: Likewise.
* sysdeps/alpha/strcat.S: Likewise.
* sysdeps/alpha/strcpy.S: Likewise.
* sysdeps/alpha/strncat.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/brk.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/clone.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/llseek.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Likewise. Rename
function to __sigsuspend and add weak alias.
* sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise. Add missing END.
* sysdeps/alpha/w_sqrt.S: Define _ERRNO_H so <errnos.h> defines EDOM.
* sysdeps/unix/execve.S: Match PSEUDO_END symbol with the symbol
SYSCALL__ actually generated.
* sysdeps/unix/sysv/linux/errnos.h [_LIBC_REENTRANT]: Reflexively
#define __set_errno, as several imported subsystems (eg. BIND) check
that the symbol is defined.
* sysdeps/unix/sysv/linux/getsysstats.c: Include <alloca.h>.
* sysdeps/alpha/memcpy.S: Temporarily remove until I can find a bug
that manifests in GCC.
Tue Nov 19 11:10:05 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/posix/writev.c (writev): COUNT parm is now int.
* sysdeps/posix/readv.c (readv): Likewise.
Tue Nov 19 15:28:29 1996 Ulrich Drepper <drepper@cygnus.com>
* nss/nss_dns/dns-network.c: Change return type of all functions
to enum nss_status.
Reported by NIIBE Yutaka.
* nss/nss_dns/dns-host.c: Update copyright.
Fri Nov 15 20:16:38 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* config.make.in: Remove definition of top_absdir.
* configure.in: Likewise. Use $(..) instead.
* Makerules (make-link): Use $(..) to find rellns-sh script.
Sat Nov 16 15:52:29 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* manual/nss.texi (Name Service Switch): Fix reference to
`frobnicate'.
Fri Nov 15 22:08:33 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
sys/mtio.h.
Mon Nov 18 05:51:13 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/generic/waitstatus.h (__WIFSIGNALED): Rename local
variable from __stat to __status to prevent shadowing.
* sunrpc/rpc/clnt.h (clntudp_create, clntudp_bufcreate): Likewise
for parameter __wait.
Reported by NIIBE Yutaka.
Mon Nov 18 02:05:38 1996 Ulrich Drepper <drepper@cygnus.com>
* misc/regexp.c: New file. Implementation of obsolete interface
to regular expression matcher (required in XPG4.2).
* misc/regexp.h: New file. Header for above.
* misc/Makefile (headers): Add regexp.h.
(routines): Add regexp.c.
Update copyright.
Sun Nov 17 21:50:24 1996 Andreas Jaeger <aj@arthur.pfalz.de>
* stdlib/tst-strtod.c (main): Add arguments for main.
* stdlib/tst-strtol.c (main): Likewise.
Sun Nov 17 21:15:05 1996 Ulrich Drepper <drepper@cygnus.com>
* configure.in: Substitute libc_cv_slibdir and libc_cv_sysconfdir
in output files.
* sysdepes/unix/sysv/linux/configure: Define libc_cv_slibdir to /lib
and sysconfdir to /etc if $prefix is /usr.
* config.make.in: Add slibdir, sysconfdir and BASH to be replaced.
* elf/Makefile ($(objpfx)ldd): Install ldd.bash.in if
$(have-bash2) is yes.
* elf/ldd.bash.in: Add copyright and various cleanups.
* elf/ldd.sh.in: Likewise.
Implement RTLD_NEXT.
* elf/dlfcn.h: Define RTLD_NEXT.
* elf/dl-deps.c: Build second searchlist which contains duplicates.
* elf/dl-lookup.c (_dl_lookup_symbol_skip): New function. Used
for RTLD_NEXT lookup.
Rewrite _dl_lookup_symbol to put common parts for both lookup
functions in a separate function.
* elf/dlsym.c: Handle RTLD_NEXT by calling _dl_lookup_symbol_skip.
* elf/link.h (struct link_map): Add l_dupsearchlist and
l_ndupsearchlist.
Add prototype for _dl_lookup_symbol_skip.
* sunrpc/Makefile (rpcsvc): Add rusers.
* sunrpc/rpcsvc/rnusers.x: Remove. Obsolteted by rusers.x.
* sunrpc/rpcsvc/rusers.x: New file.
Sun Nov 17 04:24:35 1996 Ulrich Drepper <drepper@cygnus.com>
* stdio-common/vfprintf.c [USE_IN_LIBIO] (buffered_vfprintf): Call
__libc_lock_init for local lock.
Reported by a sun <asun@zoology.washington.edu>.
[!USE_IN_LIBIO] (PAD): Optimize a bit.
1996-11-20 03:45:51 +00:00
|
|
|
|
1998-11-05 12:26:43 +00:00
|
|
|
AC_PATH_PROG(PERL, perl, no)
|
2000-03-09 21:48:28 +00:00
|
|
|
if test "$PERL" != no &&
|
|
|
|
(eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
|
|
|
|
PERL=no
|
2000-03-03 19:43:41 +00:00
|
|
|
fi
|
1999-03-22 06:51:09 +00:00
|
|
|
AC_PATH_PROG(INSTALL_INFO, install-info, no,
|
|
|
|
$PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
|
2001-02-05 22:58:04 +00:00
|
|
|
|
1995-07-27 09:00:07 +00:00
|
|
|
AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
|
1995-07-17 12:43:55 +00:00
|
|
|
cat > conftest.s <<EOF
|
2015-10-26 22:44:18 +00:00
|
|
|
.text
|
1997-06-26 22:23:01 +00:00
|
|
|
foo:
|
1995-06-13 22:16:50 +00:00
|
|
|
.set glibc_conftest_frobozz,foo
|
2012-07-10 12:30:24 +00:00
|
|
|
.globl glibc_conftest_frobozz
|
1995-04-14 03:52:54 +00:00
|
|
|
EOF
|
1995-06-13 22:16:50 +00:00
|
|
|
# The alpha-dec-osf1 assembler gives only a warning for `.set'
|
|
|
|
# (but it doesn't work), so we must do a linking check to be sure.
|
|
|
|
cat > conftest1.c <<\EOF
|
|
|
|
extern int glibc_conftest_frobozz;
|
2003-04-01 06:50:04 +00:00
|
|
|
void _start() { glibc_conftest_frobozz = 1; }
|
1995-06-13 22:16:50 +00:00
|
|
|
EOF
|
|
|
|
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
|
2016-12-26 09:08:54 +00:00
|
|
|
-nostartfiles -nostdlib $no_ssp \
|
2002-10-19 00:23:55 +00:00
|
|
|
-o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
|
1995-04-14 03:52:54 +00:00
|
|
|
libc_cv_asm_set_directive=yes
|
|
|
|
else
|
|
|
|
libc_cv_asm_set_directive=no
|
|
|
|
fi
|
1995-04-18 20:16:50 +00:00
|
|
|
rm -f conftest*])
|
1995-04-14 03:52:54 +00:00
|
|
|
if test $libc_cv_asm_set_directive = yes; then
|
|
|
|
AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
|
|
|
|
fi
|
|
|
|
|
2015-10-29 12:48:24 +00:00
|
|
|
AC_CACHE_CHECK(linker support for protected data symbol,
|
|
|
|
libc_cv_protected_data,
|
|
|
|
[cat > conftest.c <<EOF
|
|
|
|
int bar __attribute__ ((visibility ("protected"))) = 1;
|
2015-03-31 12:20:55 +00:00
|
|
|
EOF
|
2015-10-29 12:48:24 +00:00
|
|
|
libc_cv_protected_data=no
|
2016-12-26 09:08:54 +00:00
|
|
|
if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -o conftest.so); then
|
2015-10-29 12:48:24 +00:00
|
|
|
cat > conftest.c <<EOF
|
|
|
|
extern int bar;
|
|
|
|
int main (void) { return bar; }
|
2015-03-31 12:20:55 +00:00
|
|
|
EOF
|
2016-12-26 09:08:54 +00:00
|
|
|
if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp conftest.c -o conftest conftest.so); then
|
2015-10-29 12:48:24 +00:00
|
|
|
libc_cv_protected_data=yes
|
2015-03-31 12:20:55 +00:00
|
|
|
fi
|
2015-10-29 12:48:24 +00:00
|
|
|
fi
|
|
|
|
rm -f conftest.*
|
|
|
|
])
|
2015-03-31 12:20:55 +00:00
|
|
|
AC_SUBST(libc_cv_protected_data)
|
|
|
|
|
2017-08-04 19:17:15 +00:00
|
|
|
AC_CACHE_CHECK(linker support for INSERT in linker script,
|
|
|
|
libc_cv_insert,
|
|
|
|
[cat > conftest.c <<EOF
|
|
|
|
const int __attribute__ ((section(".bar"))) bar = 0x12345678;
|
|
|
|
int test (void) { return bar; }
|
|
|
|
EOF
|
|
|
|
cat > conftest.t <<EOF
|
|
|
|
SECTIONS
|
|
|
|
{
|
|
|
|
.bar : { *(.bar) }
|
|
|
|
}
|
|
|
|
INSERT AFTER .rela.dyn;
|
|
|
|
EOF
|
|
|
|
libc_cv_insert=no
|
|
|
|
if AC_TRY_COMMAND([${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -Wl,-T,conftest.t -o conftest.so]); then
|
|
|
|
libc_cv_insert=yes
|
|
|
|
fi
|
|
|
|
rm -f conftest.*
|
|
|
|
])
|
|
|
|
AC_SUBST(libc_cv_insert)
|
|
|
|
|
2012-01-08 05:45:01 +00:00
|
|
|
AC_CACHE_CHECK(for broken __attribute__((alias())),
|
|
|
|
libc_cv_broken_alias_attribute,
|
|
|
|
[cat > conftest.c <<EOF
|
|
|
|
extern int foo (int x) __asm ("xyzzy");
|
|
|
|
int bar (int x) { return x; }
|
|
|
|
extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
|
|
|
|
extern int dfoo;
|
|
|
|
extern __typeof (dfoo) dfoo __asm ("abccb");
|
|
|
|
int dfoo = 1;
|
Update.
2002-08-02 Ulrich Drepper <drepper@redhat.com>
* configure.in (HAVE_BROKEN_ALIAS_ATTRIBUTE): Add check for
broken alias attribute handling.
* config.h.in (HAVE_BROKEN_ALIAS_ATTRIBUTE): Add.
* assert/assert.c (__assert_fail): Fix typo in comment.
* include/rpc/rpc.h: Declare __libc_tsd_RPC_VARS if USE_TLS &&
HAVE___THREAD.
* sunrpc/rpc_thread.c: Don't define __libc_tsd_RPC_VARS as static
if USE_TLS && HAVE___THREAD.
* sunrpc/Versions [libc] (GLIBC_PRIVATE): Export __libc_tsd_RPC_VARS.
2002-08-02 Jakub Jelinek <jakub@redhat.com>
* assert/assert.c (__assert_fail): Remove undef.
Replace INTDEF with libc_hidden_def.
* assert/__assert.c (__assert): Remove INTUSE.
* elf/dl-minimal.c (__assert_fail): Replace INTDEF with
libc_hidden_weak.
* include/libc-symbols.h (hidden_proto, hidden_def, hidden_weak,
hidden_ver, libc_hidden_proto, libc_hidden_def, libc_hidden_weak,
libc_hidden_ver, rtld_hidden_proto, rtld_hidden_def, rtld_hidden_weak,
rltd_hidden_ver, libm_hidden_proto, libm_hidden_def, libm_hidden_weak,
libm_hiden_ver): Define.
* include/assert.h (__assert_fail_internal): Remove.
(__assert_fail): Add prototype. Add hidden_proto.
* include/libc-internal.h (__libc_freeres, __profile_frequency): Add
libc_hidden_proto.
* include/wchar.h (__mbrtowc_internal, __mbrlen_internal): Remove.
(__mbrtowc, __mbrlen): Use libc_hidden_proto. Remove macros.
* include/string.h (__mempcpy, __stpncpy, __rawmemchr, __strcasecmp):
Add libc_hidden_proto.
* include/fcntl.h (__open64, __libc_open, __libc_fcntl, __open,
__fcntl): Add libc_hidden_proto. Remove macros.
(__open_internal, __fcntl_internal): Remove.
* libio/iofdopen.c (_IO_fcntl): Remove INTUSE from __fcntl.
* malloc/set-freeres.c (__libc_freeres): Add libc_hidden_def.
* nss/nsswitch.h (__nss_database_lookup, __nss_next): Add
libc_hiden_proto.
* nss/nsswitch.c (__nss_database_lookup, __nss_next): Add
libc_hidden_def.
* sysdeps/generic/mempcpy.c (__mempcpy): Remove undef.
Add libc_hidden_def.
* sysdeps/generic/open64.c (__open64): Add libc_hidden_def.
* sysdeps/generic/open.c (__open): Remove undef.
Add libc_hidden_def. Remove INTDEF.
* sysdeps/generic/fcntl.c (__fcntl): Remove undef.
Add libc_hidden_def.
* sysdeps/mach/hurd/fcntl.c (__fcntl): Likewise.
* sysdeps/i386/i586/mempcpy.S (__mempcpy): Add libc_hidden_def.
* sysdeps/i386/i686/mempcpy.S (__mempcpy): Likewise.
* sysdeps/mach/hurd/fcntl.c (__libc_fcntl, __fcntl): Remove undef.
(__fcntl): Remove INTDEF2. Add libc_hidden_weak.
(__libc_fcntl): Add libc_hidden_def.
* sysdeps/mach/hurd/open.c (__libc_open, __open): Remove undef.
(__open): Remove INTDEF2. Add libc_hidden_weak.
(__libc_open): Add libc_hidden_def.
* sysdeps/posix/open64.c (__open64): Add libc_hidden_weak.
* sysdeps/standalone/open.c (__open): Add libc_hidden_def.
* sysdeps/unix/sysv/aix/fcntl.c (__libc_fcntl, __fcntl): Remove undef.
Add libc_hidden_def.
* sysdeps/unix/sysv/aix/open.c (__libc_open, __open): Remove undef.
Add libc_hidden_def.
* sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl, __fcntl): Remove
undef.
(__fcntl): Remove INTDEF2. Add libc_hidden_weak.
(__libc_fcntl): Add libc_hidden_def.
* sysdeps/unix/sysv/linux/syscalls.list (__fcntl_internal,
__getpgid_internal, __chown_internal): Remove.
(__GI___fcntl, __GI___libc_fcntl, __GI___getpgid, __GI___pipe,
__GI___sched_setscheduler, __GI___select, __GI___setpgid,
__GI___chown): Add.
* sysdeps/unix/syscalls.list (__close_internal, __dup2_internal,
__getpid_internal, __open_internal, __write_internal): Remove.
(__GI___fcntl, __GI___libc_fcntl, __GI___open, __GI___libc_open,
__GI___chown, __GI___close, __GI___dup2, __GI___getpid,
__GI___libc_open, __GI___open, __GI___read, __GI___libc_read,
__GI___select, __GI___statfs, __GI___write, __GI___libc_write): Add.
* wcsmbs/mbrlen.c (__mbrlen): Remove undef.
Replace INTDEF with libc_hidden_def.
* wcsmbs/mbrtowc.c (__mbrtowc): Likewise.
* catgets/catgetsinfo.h (__open_catalog): Add libc_hidden_proto.
* catgets/open_catalog.c (__open_catalog): Add libc_hidden_def.
* elf/dl-profile.c (__profile_frequency): Add libc_hidden_proto.
* include/rpc/rpc.h (__rpc_thread_svc_fdset, __rpc_thread_createerr):
Add libc_hidden_proto.
* include/sys/poll.h (__poll): Add libc_hidden_proto.
* include/sys/select.h (__select): Likewise.
* include/sys/socket.h (__send): Likewise.
* include/sys/statfs.h (__statfs): Likewise.
* include/unistd.h (__pwrite64, __libc_read, __pipe, __chown, __dup2,
__getpid, __getpgid, __setpgid, __close, __read, __write,
__getpagesize, __sbrk): Likewise.
(__chown_internal, __dup2_internal, __getpid_internal,
__getpgid_internal, __close_internal, __write_internal,
__getpagesize_internal): Remove.
(__close, __dup2, __getpagesize, __getpgid, __getpid, __libc_write):
Remove macros.
* include/printf.h (__printf_fp): Add libc_hidden_proto.
* include/sched.h (__sched_setscheduler): Likewise.
* include/resolv.h (__res_ninit, __res_randomid): Likewise.
* include/stdlib.h (__secure_getenv): Likewise.
* include/signal.h (__sigaction, __sigsuspend): Likewise.
* inet/getaliasent_r.c (NSS_attribute_hidden): Remove.
* inet/getaliasname_r.c (NSS_attribute_hidden): Remove.
* inet/getnetbyad_r.c (NSS_attribute_hidden): Remove.
* inet/getnetbynm_r.c (NSS_attribute_hidden): Remove.
* inet/getnetent_r.c (NSS_attribute_hidden): Remove.
* inet/getproto_r.c (NSS_attribute_hidden): Remove.
* inet/getprtent_r.c (NSS_attribute_hidden): Remove.
* inet/getprtname_r.c (NSS_attribute_hidden): Remove.
* inet/getrpcbyname_r.c (NSS_attribute_hidden): Remove.
* inet/getrpcbynumber_r.c (NSS_attribute_hidden): Remove.
* inet/getrpcent_r.c (NSS_attribute_hidden): Remove.
* inet/getservent_r.c (NSS_attribute_hidden): Remove.
* inet/getsrvbynm_r.c (NSS_attribute_hidden): Remove.
* inet/getsrvbypt_r.c (NSS_attribute_hidden): Remove.
* inet/gethstbyad_r.c (DB_LOOKUP_FCT): Remove INTUSE.
* inet/gethstbynm2_r.c (DB_LOOKUP_FCT): Likewise.
* inet/gethstbynm_r.c (DB_LOOKUP_FCT): Likewise.
* inet/gethstent_r.c (DB_LOOKUP_FCT): Likewise.
* libio/genops.c (__overflow): Add libc_hidden_def.
* libio/iovdprintf.c: Remove libio.h include.
* libio/libioP.h (libc_hidden_proto, libc_hidden_def,
libc_hidden_weak): Define to nothing if not defined.
(__overflow, __woverflow): Add libc_hidden_proto.
* libio/wgenops.c (__woverflow): Add libc_hidden_def.
* nss/getXXent_r.c (NSS_attribute_hidden): Remove.
(DB_LOOKUP_FCT): Add libc_hidden_proto.
* nss/getXXbyYY_r.c (NSS_attribute_hidden): Remove.
(DB_LOOKUP_FCT): Add libc_hidden_proto.
* nss/XXX-lookup.c (DB_LOOKUP_FCT): Add libc_hidden_proto
and libc_hidden_def.
* nss/hosts-lookup.c (__nss_hosts_lookup): Remove INTDEF.
* posix/bsd-getpgrp.c (__getpgid_internal): Remove.
(__getpgid): Add libc_hidden_proto.
(__bsd_getpgrp): Remove INTUSE.
* resolv/res_init.c (__res_ninit, __res_randomid): Add
libc_hidden_def.
* shadow/getspent_r.c (NSS_attribute_hidden): Remove.
* shadow/getspnam_r.c (NSS_attribute_hidden): Remove.
* stdio-common/printf_fp.c (__printf_fp): Add libc_hidden_def.
* stdlib/strfmon.c (__printf_fp): Add libc_hidden_proto.
* stdlib/secure-getenv.c (__secure_getenv): Add libc_hidden_def.
* sunrpc/rpc_thread.c (__rpc_thread_svc_fdset,
__rpc_thread_createerr): Add libc_hidden_def.
* sysdeps/alpha/alphaev67/rawmemchr.S (__rawmemchr): Add
libc_hidden_def.
* sysdeps/alpha/alphaev67/stpncpy.S (__stpncpy): Likewise.
* sysdeps/alpha/rawmemchr.S (__rawmemchr): Likewise.
* sysdeps/alpha/stpncpy.S (__stpncpy): Likewise.
* sysdeps/generic/chown.c (__chown): Likewise.
* sysdeps/generic/close.c (__close): Likewise.
* sysdeps/generic/dup2.c (__dup2): Likewise.
* sysdeps/generic/pipe.c (__pipe): Likewise.
* sysdeps/generic/prof-freq.c (__profile_frequency): Likewise.
* sysdeps/generic/pwrite64.c (__pwrite64): Likewise.
* sysdeps/generic/rawmemchr.c (__rawmemchr): Likewise.
* sysdeps/generic/read.c (__libc_read): Likewise.
(__read): Add libc_hidden_weak.
* sysdeps/generic/sbrk.c (__sbrk): Add libc_hidden_def.
* sysdeps/generic/sched_sets.c (__sched_setscheduler): Likewise.
* sysdeps/generic/select.c (__select): Likewise.
* sysdeps/generic/send.c (__send): Likewise.
* sysdeps/generic/setpgid.c (__setpgid): Likewise.
* sysdeps/generic/sigaction.c (__sigaction): Likewise.
* sysdeps/generic/sigsuspend.c (__sigsuspend): Likewise.
* sysdeps/generic/statfs.c (__statfs): Likewise.
* sysdeps/generic/stpncpy.c (__stpncpy): Likewise.
* sysdeps/generic/strcasecmp.c (__strcasecmp): Likewise.
* sysdeps/generic/getpagesize.c (__getpagesize): Likewise.
Remove undef and INTDEF.
* sysdeps/generic/getpgid.c (__getpgid): Likewise.
* sysdeps/generic/getpid.c (__getpid): Likewise.
* sysdeps/generic/write.c (__libc_write): Likewise.
(__write): Add libc_hidden_weak. Remove undef and INTDEF.
* sysdeps/i386/rawmemchr.S (__rawmemchr): Add libc_hidden_def.
* sysdeps/i386/stpncpy.S (__stpncpy): Likewise.
* sysdeps/m68k/rawmemchr.S (__rawmemchr): Likewise.
* sysdeps/mach/hurd/chown.c (__chown): Likewise. Remove INTDEF.
* sysdeps/mach/hurd/close.c (__close): Add libc_hidden_def.
Remove undef and INTDEF.
* sysdeps/mach/hurd/dup2.c (__dup2): Likewise.
* sysdeps/mach/hurd/getpgid.c (__getpgid): Likewise.
* sysdeps/mach/hurd/getpid.c (__getpid): Likewise.
* sysdeps/mach/getpagesize.c (__getpagesize): Likewise.
* sysdeps/mach/hurd/write.c (__libc_write): Likewise.
(__write): Add libc_hidden_weak. Remove undef and INTDEF.
* sysdeps/mach/hurd/pipe.c: Include unistd.h.
(__pipe): Add libc_hidden_def.
* sysdeps/mach/hurd/dl-sysdep.c (__libc_read, __libc_write): Add
libc_hidden_weak.
* sysdeps/mach/hurd/poll.c (__poll): Add libc_hidden_def.
* sysdeps/mach/hurd/profil.c (__profile_frequency): Likewise.
* sysdeps/mach/hurd/read.c (__libc_read): Likewise.
(__read): Add libc_hidden_weak.
* sysdeps/mach/hurd/pwrite64.c (__pwrite64): Likewise.
(__libc_pwrite64): Add libc_hidden_def.
* sysdeps/mach/hurd/sbrk.c (__sbrk): Likewise.
* sysdeps/mach/hurd/select.c (__select): Likewise.
* sysdeps/mach/hurd/send.c (__send): Likewise.
* sysdeps/mach/hurd/setpgid.c (__setpgid): Likewise.
* sysdeps/mach/hurd/sigaction.c (__sigaction): Likewise.
* sysdeps/mach/hurd/sigsuspend.c (__sigsuspend): Likewise.
* sysdeps/mach/hurd/statfs.c (__statfs): Likewise.
* sysdeps/posix/dup2.c: Likewise.
Remove undef and INTDEF.
* sysdeps/posix/getpagesize.c (__getpagesize): Likewise.
* sysdeps/posix/pwrite64.c (__libc_pwrite64): Add libc_hidden_def.
(__pwrite64): Add libc_hidden_weak.
* sysdeps/posix/sigsuspend.c (__sigsuspend): Add libc_hidden_def.
* sysdeps/sparc/sparc64/rawmemchr.S (__rawmemchr): Likewise.
* sysdeps/sparc/sparc64/stpncpy.S (__stpncpy): Likewise.
* sysdeps/standalone/close.c (__close): Likewise.
* sysdeps/standalone/write.c (__libc_write): Likewise.
(__write): Add libc_hidden_weak.
* sysdeps/standalone/read.c (__read): Likewise.
(__libc_read): Add libc_hidden_def.
* sysdeps/unix/grantpt.c (grantpt): Remove INTUSE.
* sysdeps/unix/bsd/m68k/pipe.S (__pipe): Add libc_hidden_def.
* sysdeps/unix/bsd/osf/alpha/pipe.S (__pipe): Likewise.
* sysdeps/unix/bsd/vax/pipe.S (__pipe): Likewise.
* sysdeps/unix/bsd/syscalls.list (__GI___getpagesize): Likewise.
* sysdeps/unix/bsd/poll.c (__poll): Likewise.
* sysdeps/unix/bsd/sigaction.c (__sigaction): Likewise.
* sysdeps/unix/bsd/sigsuspend.c (__sigsuspend): Likewise.
* sysdeps/unix/common/syscalls.list (__GI___getpgid, __GI___setpgid,
__GI___sigaction): Add.
* sysdeps/unix/i386/pipe.S (__pipe): Add libc_hidden_def.
* sysdeps/unix/inet/syscalls.list (__GI___send): Add.
* sysdeps/unix/mips/pipe.S (__pipe): Add libc_hidden_def.
* sysdeps/unix/sparc/pipe.S (__pipe): Likewise.
* sysdeps/unix/sysv/irix4/syscalls.list (__GI___getpgid,
__GI___setpgid): Add.
* sysdeps/unix/sysv/aix/chown.c (__chown): Add libc_hidden_def.
Remove undef and INTDEF.
* sysdeps/unix/sysv/aix/getpgid.c (__getpgid): Likewise.
* sysdeps/unix/sysv/aix/write.c (__write, __libc_write): Likewise.
* sysdeps/unix/sysv/aix/close.c (__close): Add libc_hidden_def.
* sysdeps/unix/sysv/aix/getpid.c (__getpid): Likewise.
* sysdeps/unix/sysv/aix/pipe.c (__pipe): Likewise.
* sysdeps/unix/sysv/aix/read.c (__read, __libc_read): Likewise.
* sysdeps/unix/sysv/aix/poll.c (__poll): Likewise.
* sysdeps/unix/sysv/aix/sbrk.c (__sbrk): Likewise.
* sysdeps/unix/sysv/aix/sigaction.c (__sigaction): Likewise.
* sysdeps/unix/sysv/aix/sigsuspend.c (__sigsuspend): Likewise.
* sysdeps/unix/sysv/aix/statfs.c (__statfs): Likewise.
* sysdeps/unix/sysv/aix/select.c (__select): Likewise.
* sysdeps/unix/sysv/aix/setpgid.c (__setpgid): Likewise.
* sysdeps/unix/sysv/linux/alpha/pipe.S (__pipe): Likewise.
* sysdeps/unix/sysv/linux/alpha/syscalls.list (__GI___pwrite64,
__GI___statfs, __GI___send): Add.
* sysdeps/unix/sysv/linux/alpha/select.S (__select): Add
libc_hidden_ver resp. libc_hidden_def.
* sysdeps/unix/sysv/linux/alpha/sigsuspend.S (__sigsuspend): Add
libc_hidden_def.
* sysdeps/unix/sysv/linux/ia64/getpagesize.c (__getpagesize):
Likewise. Remove undef and INTDEF.
* sysdeps/unix/sysv/linux/ia64/pipe.S (__pipe): Add libc_hidden_def.
* sysdeps/unix/sysv/linux/ia64/syscalls.list (__GI___pwrite64,
__GI___statfs, __GI___send): Add.
* sysdeps/unix/sysv/linux/ia64/sigaction.c (__sigaction): Add
libc_hidden_def.
* sysdeps/unix/sysv/linux/ia64/sigsuspend.c (__sigsuspend):
Likewise.
* sysdeps/unix/sysv/linux/sh/pipe.S (__pipe): Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/chown.c (__chown): Add
libc_hidden_ver resp. libc_hidden_def.
* sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (__GI___pwrite64,
__GI___send): Add.
* sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c (__sigaction):
Add libc_hidden_weak.
* sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c (__sigsuspend):
Add libc_hidden_def.
* sysdeps/unix/sysv/linux/hppa/syscalls.list (__GI___send): Add.
* sysdeps/unix/sysv/linux/arm/sigaction.c (__sigaction): Add
libc_hidden_weak.
* sysdeps/unix/sysv/linux/i386/chown.c (__chown): Add libc_hidden_ver
resp. libc_hidden_def.
* sysdeps/unix/sysv/linux/i386/sigaction.c (__sigaction): Add
libc_hidden_weak.
* sysdeps/unix/sysv/linux/m68k/chown.c (__chown): Likewise. Remove
INTDEF.
* sysdeps/unix/sysv/linux/m68k/getpagesize.c (__getpagesize):
Likewise. Remove undef.
* sysdeps/unix/sysv/linux/mips/pwrite64.c (__pwrite64): Add
libc_hidden_weak.
* sysdeps/unix/sysv/linux/mips/syscalls.list (__GI___send): Add.
* sysdeps/unix/sysv/linux/mips/sigaction.c (__sigaction): Add
libc_hidden_weak.
* sysdeps/unix/sysv/linux/powerpc/chown.c (__chown): Add
libc_hidden_def.
* sysdeps/unix/sysv/linux/powerpc/pwrite64.c (__pwrite64): Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c (__getpagesize):
Likewise. Remove undef and INTDEF.
* sysdeps/unix/sysv/linux/sparc/sparc32/pipe.S (__pipe): Add
libc_hidden_def.
* sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c (__sigaction): Add
libc_hidden_weak.
* sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S (__pipe): Add
libc_hidden_def.
* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
(__GI___pwrite64, __GI___statfs, __GI___select, __GI___send): Add.
* sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c (__sigaction): Add
libc_hidden_weak.
* sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c (__sigsuspend):
Add libc_hidden_def.
* sysdeps/unix/sysv/linux/x86_64/syscalls.list (__GI___pwrite64,
__GI___statfs): Add.
* sysdeps/unix/sysv/linux/x86_64/send.c (__send): Add
libc_hidden_weak.
* sysdeps/unix/sysv/linux/x86_64/sigaction.c (__sigaction): Likewise.
* sysdeps/unix/sysv/linux/getpagesize.c: Add libc_hidden_def.
Remove undef and INTDEF.
* sysdeps/unix/sysv/linux/poll.c (__poll): Add libc_hidden_def.
* sysdeps/unix/sysv/linux/pwrite64.c (__pwrite64): Add
libc_hidden_def.
* sysdeps/unix/sysv/linux/send.S (__send): Likewise.
* sysdeps/unix/sysv/linux/sigaction.c (__sigaction): Add
libc_hidden_weak.
* sysdeps/unix/sysv/linux/sigsuspend.c (__sigsuspend): Add
libc_hidden_def.
* sysdeps/unix/sysv/sco3.2.4/__setpgid.c (__setpgid): Likewise.
* sysdeps/unix/sysv/sco3.2.4/sigaction.S (__sigaction): Likewise.
* sysdeps/unix/sysv/sysv4/solaris2/syscalls.list (__GI___sigaction):
Add.
* sysdeps/unix/sysv/sysv4/__getpgid.c (__getpgid): Add
libc_hidden_def. Remove undef and INTDEF.
* sysdeps/unix/sysv/sysv4/getpgid.c (__getpgid): Likewise.
* sysdeps/unix/sysv/sysv4/__setpgid.c (__setpgid): Add
libc_hidden_def.
* sysdeps/unix/sysv/sysv4/setpgid.c (__setpgid): Likewise.
* sysdeps/unix/sysv/sysv4/sigaction.c (__sigaction): Likewise.
* sysdeps/unix/sysv/sigaction.c (__sigaction): Likewise.
* sysdeps/unix/getpagesize.c (__getpagesize): Add libc_hidden_def.
Remove undef and INTDEF.
* configure.in (HAVE_BROKEN_VISIBILITY_ATTRIBUTE): Add check for
broken visibility attribute handling.
* config.h.in (HAVE_BROKEN_VISIBILITY_ATTRIBUTE): Add.
2002-08-02 Ulrich Drepper <drepper@redhat.com>
2002-08-03 07:02:10 +00:00
|
|
|
EOF
|
2012-01-08 05:45:01 +00:00
|
|
|
libc_cv_broken_alias_attribute=yes
|
|
|
|
if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
|
|
|
|
if grep 'xyzzy' conftest.s >/dev/null &&
|
|
|
|
grep 'abccb' conftest.s >/dev/null; then
|
|
|
|
libc_cv_broken_alias_attribute=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
rm -f conftest.c conftest.s
|
|
|
|
])
|
|
|
|
if test $libc_cv_broken_alias_attribute = yes; then
|
|
|
|
AC_MSG_ERROR(working alias attribute support required)
|
|
|
|
fi
|
|
|
|
|
2015-10-29 12:48:24 +00:00
|
|
|
AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
|
|
|
|
libc_cv_have_sdata_section,
|
|
|
|
[echo "int i;" > conftest.c
|
|
|
|
libc_cv_have_sdata_section=no
|
|
|
|
if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
|
|
|
|
| grep '\.sdata' >/dev/null; then
|
|
|
|
libc_cv_have_sdata_section=yes
|
|
|
|
fi
|
|
|
|
rm -f conftest.c conftest.so
|
|
|
|
])
|
|
|
|
if test $libc_cv_have_sdata_section = yes; then
|
|
|
|
AC_DEFINE(HAVE_SDATA_SECTION)
|
2012-01-08 05:45:01 +00:00
|
|
|
fi
|
2002-02-28 22:38:00 +00:00
|
|
|
|
2012-01-08 05:45:01 +00:00
|
|
|
AC_CACHE_CHECK(for libunwind-support in compiler,
|
|
|
|
libc_cv_cc_with_libunwind, [
|
|
|
|
cat > conftest.c <<EOF
|
2004-12-15 18:54:41 +00:00
|
|
|
int main (void) { return 0; }
|
|
|
|
EOF
|
2012-01-08 05:45:01 +00:00
|
|
|
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
|
2012-10-24 02:37:50 +00:00
|
|
|
conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
|
2012-01-08 05:45:01 +00:00
|
|
|
libc_cv_cc_with_libunwind=yes
|
|
|
|
else
|
|
|
|
libc_cv_cc_with_libunwind=no
|
2003-12-10 23:02:33 +00:00
|
|
|
fi
|
2012-01-08 05:45:01 +00:00
|
|
|
rm -f conftest*])
|
|
|
|
AC_SUBST(libc_cv_cc_with_libunwind)
|
|
|
|
if test $libc_cv_cc_with_libunwind = yes; then
|
|
|
|
AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
|
|
|
|
fi
|
2003-12-10 23:02:33 +00:00
|
|
|
|
2012-01-08 05:45:01 +00:00
|
|
|
ASFLAGS_config=
|
|
|
|
AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
|
|
|
|
libc_cv_as_noexecstack, [dnl
|
|
|
|
cat > conftest.c <<EOF
|
2003-06-04 21:41:25 +00:00
|
|
|
void foo (void) { }
|
|
|
|
EOF
|
2012-01-08 05:45:01 +00:00
|
|
|
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
|
|
|
|
-S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
|
2012-10-24 02:37:50 +00:00
|
|
|
&& grep .note.GNU-stack conftest.s >/dev/null \
|
2012-01-08 05:45:01 +00:00
|
|
|
&& AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
|
|
|
|
-c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
|
|
|
|
then
|
|
|
|
libc_cv_as_noexecstack=yes
|
|
|
|
else
|
|
|
|
libc_cv_as_noexecstack=no
|
|
|
|
fi
|
|
|
|
rm -f conftest*])
|
|
|
|
if test $libc_cv_as_noexecstack = yes; then
|
|
|
|
ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
|
|
|
|
fi
|
|
|
|
AC_SUBST(ASFLAGS_config)
|
2003-09-23 12:07:26 +00:00
|
|
|
|
2012-01-08 05:45:01 +00:00
|
|
|
AC_CACHE_CHECK(for -z combreloc,
|
|
|
|
libc_cv_z_combreloc, [dnl
|
|
|
|
cat > conftest.c <<EOF
|
2002-02-07 17:54:45 +00:00
|
|
|
extern int bar (int);
|
|
|
|
extern int mumble;
|
|
|
|
int foo (void) { return bar (mumble); }
|
2001-08-26 09:17:23 +00:00
|
|
|
EOF
|
2012-01-08 05:45:01 +00:00
|
|
|
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
|
2016-12-26 09:08:54 +00:00
|
|
|
-fPIC -shared $no_ssp -o conftest.so conftest.c
|
2001-12-12 18:36:44 +00:00
|
|
|
-nostdlib -nostartfiles
|
2002-10-18 20:28:09 +00:00
|
|
|
-Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
|
2012-01-08 05:45:01 +00:00
|
|
|
then
|
2001-08-26 09:17:23 +00:00
|
|
|
dnl The following test is a bit weak. We must use a tool which can test
|
|
|
|
dnl cross-platform since the gcc used can be a cross compiler. Without
|
|
|
|
dnl introducing new options this is not easily doable. Instead use a tool
|
|
|
|
dnl which always is cross-platform: readelf. To detect whether -z combreloc
|
2017-03-12 20:16:18 +00:00
|
|
|
dnl look for a section named .rel.dyn or .rela.dyn.
|
|
|
|
if $READELF -S conftest.so | grep -E '.rela?.dyn' > /dev/null; then
|
2012-01-08 05:45:01 +00:00
|
|
|
libc_cv_z_combreloc=yes
|
2001-08-27 00:45:49 +00:00
|
|
|
else
|
|
|
|
libc_cv_z_combreloc=no
|
2001-08-26 09:17:23 +00:00
|
|
|
fi
|
2012-01-08 05:45:01 +00:00
|
|
|
else
|
|
|
|
libc_cv_z_combreloc=no
|
|
|
|
fi
|
|
|
|
rm -f conftest*])
|
|
|
|
if test "$libc_cv_z_combreloc" = yes; then
|
|
|
|
AC_DEFINE(HAVE_Z_COMBRELOC)
|
|
|
|
fi
|
|
|
|
AC_SUBST(libc_cv_z_combreloc)
|
2003-09-23 12:07:26 +00:00
|
|
|
|
2012-11-21 20:31:01 +00:00
|
|
|
LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
|
|
|
|
[libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
|
2012-01-08 05:45:01 +00:00
|
|
|
AC_SUBST(libc_cv_z_execstack)
|
2003-09-24 08:33:01 +00:00
|
|
|
|
2021-04-16 18:26:39 +00:00
|
|
|
LIBC_LINKER_FEATURE([-z start-stop-gc], [-Wl,-z,start-stop-gc],
|
|
|
|
[libc_cv_z_start_stop_gc=yes], [libc_cv_z_start_stop_gc=no])
|
|
|
|
LIBC_CONFIG_VAR([have-z-start-stop-gc], [$libc_cv_z_start_stop_gc])
|
|
|
|
|
Add --enable-static-pie configure option to build static PIE [BZ #19574]
Static PIE extends address space layout randomization to static
executables. It provides additional security hardening benefits at
the cost of some memory and performance.
Dynamic linker, ld.so, is a standalone program which can be loaded at
any address. This patch adds a configure option, --enable-static-pie,
to embed the part of ld.so in static executable to create static position
independent executable (static PIE). A static PIE is similar to static
executable, but can be loaded at any address without help from a dynamic
linker. When --enable-static-pie is used to configure glibc, libc.a is
built as PIE and all static executables, including tests, are built as
static PIE. The resulting libc.a can be used together with GCC 8 or
above to build static PIE with the compiler option, -static-pie. But
GCC 8 isn't required to build glibc with --enable-static-pie. Only GCC
with PIE support is needed. When an older GCC is used to build glibc
with --enable-static-pie, proper input files are passed to linker to
create static executables as static PIE, together with "-z text" to
prevent dynamic relocations in read-only segments, which are not allowed
in static PIE.
The following changes are made for static PIE:
1. Add a new function, _dl_relocate_static_pie, to:
a. Get the run-time load address.
b. Read the dynamic section.
c. Perform dynamic relocations.
Dynamic linker also performs these steps. But static PIE doesn't load
any shared objects.
2. Call _dl_relocate_static_pie at entrance of LIBC_START_MAIN in
libc.a. crt1.o, which is used to create dynamic and non-PIE static
executables, is updated to include a dummy _dl_relocate_static_pie.
rcrt1.o is added to create static PIE, which will link in the real
_dl_relocate_static_pie. grcrt1.o is also added to create static PIE
with -pg. GCC 8 has been updated to support rcrt1.o and grcrt1.o for
static PIE.
Static PIE can work on all architectures which support PIE, provided:
1. Target must support accessing of local functions without dynamic
relocations, which is needed in start.S to call __libc_start_main with
function addresses of __libc_csu_init, __libc_csu_fini and main. All
functions in static PIE are local functions. If PIE start.S can't reach
main () defined in a shared object, the code sequence:
pass address of local_main to __libc_start_main
...
local_main:
tail call to main via PLT
can be used.
2. start.S is updated to check PIC instead SHARED for PIC code path and
avoid dynamic relocation, when PIC is defined and SHARED isn't defined,
to support static PIE.
3. All assembly codes are updated check PIC instead SHARED for PIC code
path to avoid dynamic relocations in read-only sections.
4. All assembly codes are updated check SHARED instead PIC for static
symbol name.
5. elf_machine_load_address in dl-machine.h are updated to support static
PIE.
6. __brk works without TLS nor dynamic relocations in read-only section
so that it can be used by __libc_setup_tls to initializes TLS in static
PIE.
NB: When glibc is built with GCC defaulted to PIE, libc.a is compiled
with -fPIE, regardless if --enable-static-pie is used to configure glibc.
When glibc is configured with --enable-static-pie, libc.a is compiled
with -fPIE, regardless whether GCC defaults to PIE or not. The same
libc.a can be used to build both static executable and static PIE.
There is no need for separate PIE copy of libc.a.
On x86-64, the normal static sln:
text data bss dec hex filename
625425 8284 5456 639165 9c0bd elf/sln
the static PIE sln:
text data bss dec hex filename
657626 20636 5392 683654 a6e86 elf/sln
The code size is increased by 5% and the binary size is increased by 7%.
Linker requirements to build glibc with --enable-static-pie:
1. Linker supports --no-dynamic-linker to remove PT_INTERP segment from
static PIE.
2. Linker can create working static PIE. The x86-64 linker needs the
fix for
https://sourceware.org/bugzilla/show_bug.cgi?id=21782
The i386 linker needs to be able to convert "movl main@GOT(%ebx), %eax"
to "leal main@GOTOFF(%ebx), %eax" if main is defined locally.
Binutils 2.29 or above are OK for i686 and x86-64. But linker status for
other targets need to be verified.
3. Linker should resolve undefined weak symbols to 0 in static PIE:
https://sourceware.org/bugzilla/show_bug.cgi?id=22269
4. Many ELF backend linkers incorrectly check bfd_link_pic for TLS
relocations, which should check bfd_link_executable instead:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
Tested on aarch64, i686 and x86-64.
Using GCC 7 and binutils master branch, build-many-glibcs.py with
--enable-static-pie with all patches for static PIE applied have the
following build successes:
PASS: glibcs-aarch64_be-linux-gnu build
PASS: glibcs-aarch64-linux-gnu build
PASS: glibcs-armeb-linux-gnueabi-be8 build
PASS: glibcs-armeb-linux-gnueabi build
PASS: glibcs-armeb-linux-gnueabihf-be8 build
PASS: glibcs-armeb-linux-gnueabihf build
PASS: glibcs-arm-linux-gnueabi build
PASS: glibcs-arm-linux-gnueabihf build
PASS: glibcs-arm-linux-gnueabihf-v7a build
PASS: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch build
PASS: glibcs-m68k-linux-gnu build
PASS: glibcs-microblazeel-linux-gnu build
PASS: glibcs-microblaze-linux-gnu build
PASS: glibcs-mips64el-linux-gnu-n32 build
PASS: glibcs-mips64el-linux-gnu-n32-nan2008 build
PASS: glibcs-mips64el-linux-gnu-n32-nan2008-soft build
PASS: glibcs-mips64el-linux-gnu-n32-soft build
PASS: glibcs-mips64el-linux-gnu-n64 build
PASS: glibcs-mips64el-linux-gnu-n64-nan2008 build
PASS: glibcs-mips64el-linux-gnu-n64-nan2008-soft build
PASS: glibcs-mips64el-linux-gnu-n64-soft build
PASS: glibcs-mips64-linux-gnu-n32 build
PASS: glibcs-mips64-linux-gnu-n32-nan2008 build
PASS: glibcs-mips64-linux-gnu-n32-nan2008-soft build
PASS: glibcs-mips64-linux-gnu-n32-soft build
PASS: glibcs-mips64-linux-gnu-n64 build
PASS: glibcs-mips64-linux-gnu-n64-nan2008 build
PASS: glibcs-mips64-linux-gnu-n64-nan2008-soft build
PASS: glibcs-mips64-linux-gnu-n64-soft build
PASS: glibcs-mipsel-linux-gnu build
PASS: glibcs-mipsel-linux-gnu-nan2008 build
PASS: glibcs-mipsel-linux-gnu-nan2008-soft build
PASS: glibcs-mipsel-linux-gnu-soft build
PASS: glibcs-mips-linux-gnu build
PASS: glibcs-mips-linux-gnu-nan2008 build
PASS: glibcs-mips-linux-gnu-nan2008-soft build
PASS: glibcs-mips-linux-gnu-soft build
PASS: glibcs-nios2-linux-gnu build
PASS: glibcs-powerpc64le-linux-gnu build
PASS: glibcs-powerpc64-linux-gnu build
PASS: glibcs-tilegxbe-linux-gnu-32 build
PASS: glibcs-tilegxbe-linux-gnu build
PASS: glibcs-tilegx-linux-gnu-32 build
PASS: glibcs-tilegx-linux-gnu build
PASS: glibcs-tilepro-linux-gnu build
and the following build failures:
FAIL: glibcs-alpha-linux-gnu build
elf/sln is failed to link due to:
assertion fail bfd/elf64-alpha.c:4125
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-hppa-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
https://sourceware.org/bugzilla/show_bug.cgi?id=22537
FAIL: glibcs-ia64-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
FAIL: glibcs-powerpc-linux-gnu build
FAIL: glibcs-powerpc-linux-gnu-soft build
FAIL: glibcs-powerpc-linux-gnuspe build
FAIL: glibcs-powerpc-linux-gnuspe-e500v1 build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22264
FAIL: glibcs-powerpc-linux-gnu-power4 build
elf/sln is failed to link due to:
findlocale.c:96:(.text+0x22c): @local call to ifunc memchr
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-s390-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped
assertion fail bfd/elflink.c:14299
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-sh3eb-linux-gnu build
FAIL: glibcs-sh3-linux-gnu build
FAIL: glibcs-sh4eb-linux-gnu build
FAIL: glibcs-sh4eb-linux-gnu-soft build
FAIL: glibcs-sh4-linux-gnu build
FAIL: glibcs-sh4-linux-gnu-soft build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
Also TLS code sequence in SH assembly syscalls in glibc doesn't match TLS
code sequence expected by ld:
https://sourceware.org/bugzilla/show_bug.cgi?id=22270
FAIL: glibcs-sparc64-linux-gnu build
FAIL: glibcs-sparcv9-linux-gnu build
FAIL: glibcs-tilegxbe-linux-gnu build
FAIL: glibcs-tilegxbe-linux-gnu-32 build
FAIL: glibcs-tilegx-linux-gnu build
FAIL: glibcs-tilegx-linux-gnu-32 build
FAIL: glibcs-tilepro-linux-gnu build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
[BZ #19574]
* INSTALL: Regenerated.
* Makeconfig (real-static-start-installed-name): New.
(pic-default): Updated for --enable-static-pie.
(pie-default): New for --enable-static-pie.
(default-pie-ldflag): Likewise.
(+link-static-before-libc): Replace $(DEFAULT-LDFLAGS-$(@F))
with $(if $($(@F)-no-pie),$(no-pie-ldflag),$(default-pie-ldflag)).
Replace $(static-start-installed-name) with
$(real-static-start-installed-name).
(+prectorT): Updated for --enable-static-pie.
(+postctorT): Likewise.
(CFLAGS-.o): Add $(pie-default).
(CFLAGS-.op): Likewise.
* NEWS: Mention --enable-static-pie.
* config.h.in (ENABLE_STATIC_PIE): New.
* configure.ac (--enable-static-pie): New configure option.
(have-no-dynamic-linker): New LIBC_CONFIG_VAR.
(have-static-pie): Likewise.
Enable static PIE if linker supports --no-dynamic-linker.
(ENABLE_STATIC_PIE): New AC_DEFINE.
(enable-static-pie): New LIBC_CONFIG_VAR.
* configure: Regenerated.
* csu/Makefile (omit-deps): Add r$(start-installed-name) and
gr$(start-installed-name) for --enable-static-pie.
(extra-objs): Likewise.
(install-lib): Likewise.
(extra-objs): Add static-reloc.o and static-reloc.os
($(objpfx)$(start-installed-name)): Also depend on
$(objpfx)static-reloc.o.
($(objpfx)r$(start-installed-name)): New.
($(objpfx)g$(start-installed-name)): Also depend on
$(objpfx)static-reloc.os.
($(objpfx)gr$(start-installed-name)): New.
* csu/libc-start.c (LIBC_START_MAIN): Call _dl_relocate_static_pie
in libc.a.
* csu/libc-tls.c (__libc_setup_tls): Add main_map->l_addr to
initimage.
* csu/static-reloc.c: New file.
* elf/Makefile (routines): Add dl-reloc-static-pie.
(elide-routines.os): Likewise.
(DEFAULT-LDFLAGS-tst-tls1-static-non-pie): Removed.
(tst-tls1-static-non-pie-no-pie): New.
* elf/dl-reloc-static-pie.c: New file.
* elf/dl-support.c (_dl_get_dl_main_map): New function.
* elf/dynamic-link.h (ELF_DURING_STARTUP): Also check
STATIC_PIE_BOOTSTRAP.
* elf/get-dynamic-info.h (elf_get_dynamic_info): Likewise.
* gmon/Makefile (tests): Add tst-gmon-static-pie.
(tests-static): Likewise.
(DEFAULT-LDFLAGS-tst-gmon-static): Removed.
(tst-gmon-static-no-pie): New.
(CFLAGS-tst-gmon-static-pie.c): Likewise.
(CRT-tst-gmon-static-pie): Likewise.
(tst-gmon-static-pie-ENV): Likewise.
(tests-special): Likewise.
($(objpfx)tst-gmon-static-pie.out): Likewise.
(clean-tst-gmon-static-pie-data): Likewise.
($(objpfx)tst-gmon-static-pie-gprof.out): Likewise.
* gmon/tst-gmon-static-pie.c: New file.
* manual/install.texi: Document --enable-static-pie.
* sysdeps/generic/ldsodefs.h (_dl_relocate_static_pie): New.
(_dl_get_dl_main_map): Likewise.
* sysdeps/i386/configure.ac: Check if linker supports static PIE.
* sysdeps/x86_64/configure.ac: Likewise.
* sysdeps/i386/configure: Regenerated.
* sysdeps/x86_64/configure: Likewise.
* sysdeps/mips/Makefile (ASFLAGS-.o): Add $(pie-default).
(ASFLAGS-.op): Likewise.
2017-12-16 00:59:33 +00:00
|
|
|
LIBC_LINKER_FEATURE([--no-dynamic-linker],
|
|
|
|
[-Wl,--no-dynamic-linker],
|
|
|
|
[libc_cv_no_dynamic_linker=yes],
|
|
|
|
[libc_cv_no_dynamic_linker=no])
|
|
|
|
LIBC_CONFIG_VAR([have-no-dynamic-linker], [$libc_cv_no_dynamic_linker])
|
|
|
|
|
|
|
|
AC_CACHE_CHECK(for -static-pie, libc_cv_static_pie, [dnl
|
|
|
|
LIBC_TRY_CC_OPTION([-static-pie],
|
|
|
|
[libc_cv_static_pie=yes],
|
|
|
|
[libc_cv_static_pie=no])
|
|
|
|
])
|
|
|
|
LIBC_CONFIG_VAR([have-static-pie], [$libc_cv_static_pie])
|
|
|
|
|
2012-01-08 05:45:01 +00:00
|
|
|
AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
|
2012-05-30 09:50:40 +00:00
|
|
|
LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
|
|
|
|
])
|
2003-09-24 08:33:01 +00:00
|
|
|
|
2012-01-08 05:45:01 +00:00
|
|
|
AC_SUBST(libc_cv_fpie)
|
2006-07-10 21:59:43 +00:00
|
|
|
|
2012-01-08 05:45:01 +00:00
|
|
|
AC_CACHE_CHECK(for --hash-style option,
|
|
|
|
libc_cv_hashstyle, [dnl
|
|
|
|
cat > conftest.c <<EOF
|
2006-07-10 21:59:43 +00:00
|
|
|
int _start (void) { return 42; }
|
|
|
|
EOF
|
2016-12-26 09:08:54 +00:00
|
|
|
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
|
2012-01-08 05:45:01 +00:00
|
|
|
-fPIC -shared -o conftest.so conftest.c
|
|
|
|
-Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
|
|
|
|
then
|
|
|
|
libc_cv_hashstyle=yes
|
|
|
|
else
|
|
|
|
libc_cv_hashstyle=no
|
|
|
|
fi
|
|
|
|
rm -f conftest*])
|
|
|
|
AC_SUBST(libc_cv_hashstyle)
|
|
|
|
|
|
|
|
# The linker's default -shared behavior is good enough if it
|
|
|
|
# does these things that our custom linker scripts ensure that
|
|
|
|
# all allocated NOTE sections come first.
|
|
|
|
if test "$use_default_link" = default; then
|
|
|
|
AC_CACHE_CHECK([for sufficient default -shared layout],
|
|
|
|
libc_cv_use_default_link, [dnl
|
|
|
|
libc_cv_use_default_link=no
|
|
|
|
cat > conftest.s <<\EOF
|
2011-06-11 12:14:37 +00:00
|
|
|
.section .note.a,"a",%note
|
|
|
|
.balign 4
|
|
|
|
.long 4,4,9
|
|
|
|
.string "GNU"
|
|
|
|
.string "foo"
|
|
|
|
.section .note.b,"a",%note
|
|
|
|
.balign 4
|
|
|
|
.long 4,4,9
|
|
|
|
.string "GNU"
|
|
|
|
.string "bar"
|
|
|
|
EOF
|
2012-01-08 05:45:01 +00:00
|
|
|
if AC_TRY_COMMAND([dnl
|
2011-06-11 12:14:37 +00:00
|
|
|
${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
|
|
|
|
ac_try=`$READELF -S conftest.so | sed -n \
|
|
|
|
['${x;p;}
|
|
|
|
s/^ *\[ *[1-9][0-9]*\] *\([^ ][^ ]*\) *\([^ ][^ ]*\) .*$/\2 \1/
|
|
|
|
t a
|
|
|
|
b
|
|
|
|
: a
|
|
|
|
H']`
|
2012-01-08 05:45:01 +00:00
|
|
|
then
|
|
|
|
libc_seen_a=no libc_seen_b=no
|
|
|
|
set -- $ac_try
|
|
|
|
while test $# -ge 2 -a "$1" = NOTE; do
|
|
|
|
case "$2" in
|
|
|
|
.note.a) libc_seen_a=yes ;;
|
|
|
|
.note.b) libc_seen_b=yes ;;
|
|
|
|
esac
|
|
|
|
shift 2
|
|
|
|
done
|
|
|
|
case "$libc_seen_a$libc_seen_b" in
|
|
|
|
yesyes)
|
|
|
|
libc_cv_use_default_link=yes
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo >&AS_MESSAGE_LOG_FD "\
|
2011-06-11 12:14:37 +00:00
|
|
|
$libc_seen_a$libc_seen_b from:
|
|
|
|
$ac_try"
|
2012-01-08 05:45:01 +00:00
|
|
|
;;
|
|
|
|
esac
|
2011-06-11 12:14:37 +00:00
|
|
|
fi
|
2012-01-08 05:45:01 +00:00
|
|
|
rm -f conftest*])
|
|
|
|
use_default_link=$libc_cv_use_default_link
|
1997-01-21 06:10:42 +00:00
|
|
|
fi
|
2003-12-02 07:37:28 +00:00
|
|
|
|
2015-11-14 20:00:16 +00:00
|
|
|
AC_CACHE_CHECK(for GLOB_DAT reloc,
|
|
|
|
libc_cv_has_glob_dat, [dnl
|
|
|
|
cat > conftest.c <<EOF
|
|
|
|
extern int mumble;
|
|
|
|
int foo (void) { return mumble; }
|
|
|
|
EOF
|
|
|
|
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
|
|
|
|
-fPIC -shared -o conftest.so conftest.c
|
2016-12-26 09:08:54 +00:00
|
|
|
-nostdlib -nostartfiles $no_ssp
|
2015-11-14 20:00:16 +00:00
|
|
|
1>&AS_MESSAGE_LOG_FD])
|
|
|
|
then
|
|
|
|
dnl look for GLOB_DAT relocation.
|
|
|
|
if $READELF -rW conftest.so | grep '_GLOB_DAT' > /dev/null; then
|
|
|
|
libc_cv_has_glob_dat=yes
|
|
|
|
else
|
|
|
|
libc_cv_has_glob_dat=no
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
libc_cv_has_glob_dat=no
|
|
|
|
fi
|
|
|
|
rm -f conftest*])
|
|
|
|
AC_SUBST(libc_cv_has_glob_dat)
|
|
|
|
|
2008-04-11 17:53:44 +00:00
|
|
|
AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
|
2003-12-02 07:37:28 +00:00
|
|
|
cat > conftest.c <<EOF
|
|
|
|
int foo;
|
|
|
|
EOF
|
2008-04-11 17:53:44 +00:00
|
|
|
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
|
2003-12-02 07:37:28 +00:00
|
|
|
conftest.c 1>&AS_MESSAGE_LOG_FD])
|
|
|
|
then
|
2006-01-30 22:41:14 +00:00
|
|
|
libc_cv_fno_toplevel_reorder=yes
|
2003-12-02 07:37:28 +00:00
|
|
|
else
|
2006-01-30 22:41:14 +00:00
|
|
|
libc_cv_fno_toplevel_reorder=no
|
2003-12-02 07:37:28 +00:00
|
|
|
fi
|
|
|
|
rm -f conftest*])
|
2006-01-30 22:41:14 +00:00
|
|
|
if test $libc_cv_fno_toplevel_reorder = yes; then
|
2008-04-11 17:53:44 +00:00
|
|
|
fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
|
2006-01-30 22:41:14 +00:00
|
|
|
else
|
2003-12-02 07:37:28 +00:00
|
|
|
fno_unit_at_a_time=-fno-unit-at-a-time
|
|
|
|
fi
|
|
|
|
AC_SUBST(fno_unit_at_a_time)
|
1997-01-21 06:10:42 +00:00
|
|
|
|
2016-07-12 13:29:54 +00:00
|
|
|
AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2,
|
|
|
|
[dnl
|
|
|
|
cat > conftest.c <<EOF
|
|
|
|
__thread int i;
|
|
|
|
void foo (void)
|
|
|
|
{
|
|
|
|
i = 10;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fPIC -mtls-dialect=gnu2
|
|
|
|
conftest.c 1>&AS_MESSAGE_LOG_FD])
|
|
|
|
then
|
|
|
|
libc_cv_mtls_dialect_gnu2=yes
|
|
|
|
else
|
|
|
|
libc_cv_mtls_dialect_gnu2=no
|
|
|
|
fi
|
|
|
|
rm -f conftest*])
|
|
|
|
AC_SUBST(libc_cv_mtls_dialect_gnu2)
|
|
|
|
LIBC_CONFIG_VAR([have-mtls-dialect-gnu2], [$libc_cv_mtls_dialect_gnu2])
|
|
|
|
|
2012-01-08 05:45:01 +00:00
|
|
|
AC_CACHE_CHECK(whether cc puts quotes around section names,
|
|
|
|
libc_cv_have_section_quotes,
|
|
|
|
[cat > conftest.c <<EOF
|
|
|
|
static const int foo
|
|
|
|
__attribute__ ((section ("bar"))) = 1;
|
2000-06-14 16:39:34 +00:00
|
|
|
EOF
|
2012-01-08 05:45:01 +00:00
|
|
|
if ${CC-cc} -S conftest.c -o conftest.s; then
|
|
|
|
if grep '\.section.*"bar"' conftest.s >/dev/null; then
|
|
|
|
libc_cv_have_section_quotes=yes
|
2000-06-14 16:39:34 +00:00
|
|
|
else
|
2012-01-08 05:45:01 +00:00
|
|
|
libc_cv_have_section_quotes=no
|
2000-06-14 16:39:34 +00:00
|
|
|
fi
|
2012-01-08 05:45:01 +00:00
|
|
|
else
|
|
|
|
libc_cv_have_section_quotes=unknown
|
|
|
|
fi
|
|
|
|
rm -f conftest.{c,s}
|
|
|
|
])
|
|
|
|
if test $libc_cv_have_section_quotes = yes; then
|
|
|
|
AC_DEFINE(HAVE_SECTION_QUOTES)
|
1998-03-14 22:01:46 +00:00
|
|
|
fi
|
|
|
|
|
2002-02-07 17:54:45 +00:00
|
|
|
AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
|
|
|
|
cat > conftest.c <<\EOF
|
|
|
|
void zero (void *x)
|
|
|
|
{
|
2002-02-09 01:41:44 +00:00
|
|
|
__builtin_memset (x, 0, 1000);
|
2002-02-07 17:54:45 +00:00
|
|
|
}
|
|
|
|
EOF
|
|
|
|
dnl
|
2017-03-12 20:16:18 +00:00
|
|
|
if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "memset" > /dev/null]);
|
2002-02-07 17:54:45 +00:00
|
|
|
then
|
|
|
|
libc_cv_gcc_builtin_memset=no
|
|
|
|
else
|
|
|
|
libc_cv_gcc_builtin_memset=yes
|
|
|
|
fi
|
|
|
|
rm -f conftest* ])
|
|
|
|
if test "$libc_cv_gcc_builtin_memset" = yes ; then
|
|
|
|
AC_DEFINE(HAVE_BUILTIN_MEMSET)
|
|
|
|
fi
|
|
|
|
|
Update.
* sysdeps/i386/fpu/ftestexcept.c: Also check SSE status word.
* include/signal.h: Use libc_hidden_proto for sigaddset and sigdelset.
* signal/sigaddset.c: Add libc_hidden_def.
* signal/sigdelset.c: Likewise.
2003-04-29 Jakub Jelinek <jakub@redhat.com>
* sysdeps/i386/i486/string-inlines.c (__memcpy_g, __strchr_g): Move
to the end of the file.
* configure.in: Change __oline__ to $LINENO.
(HAVE_BUILTIN_REDIRECTION): New check.
* config.h.in (HAVE_BUILTIN_REDIRECTION): Add.
* include/libc-symbols.h (libc_hidden_builtin_proto,
libc_hidden_builtin_def, libc_hidden_builtin_weak,
libc_hidden_builtin_ver): Define.
* include/string.h (memchr, memcpy, memmove, memset, strcat, strchr,
strcmp, strcpy, strcspn, strlen, strncmp, strncpy, strpbrk, strrchr,
strspn, strstr): Add libc_hidden_builtin_proto.
* intl/plural.y: Include string.h.
* sysdeps/alpha/alphaev6/memchr.S (memchr): Add
libc_hidden_builtin_def.
* sysdeps/alpha/alphaev6/memcpy.S (memcpy): Likewise.
* sysdeps/alpha/alphaev6/memset.S (memset): Likewise.
* sysdeps/alpha/alphaev67/strcat.S (strcat): Likewise.
* sysdeps/alpha/alphaev67/strchr.S (strchr): Likewise.
* sysdeps/alpha/alphaev67/strlen.S (strlen): Likewise.
* sysdeps/alpha/alphaev67/strrchr.S (strrchr): Likewise.
* sysdeps/alpha/memchr.S (memchr): Likewise.
* sysdeps/alpha/memset.S (memset): Likewise.
* sysdeps/alpha/strcat.S (strcat): Likewise.
* sysdeps/alpha/strchr.S (strchr): Likewise.
* sysdeps/alpha/strcmp.S (strcmp): Likewise.
* sysdeps/alpha/strcpy.S (strcpy): Likewise.
* sysdeps/alpha/strlen.S (strlen): Likewise.
* sysdeps/alpha/strncmp.S (strncmp): Likewise.
* sysdeps/alpha/strncpy.S (strncpy): Likewise.
* sysdeps/alpha/strrchr.S (strrchr): Likewise.
* sysdeps/arm/memset.S (memset): Likewise.
* sysdeps/arm/strlen.S (strlen): Likewise.
* sysdeps/generic/memchr.c (memchr): Likewise.
* sysdeps/generic/memcpy.c (memcpy): Likewise.
* sysdeps/generic/memmove.c (memmove): Likewise.
* sysdeps/generic/memset.c (memset): Likewise.
* sysdeps/generic/strcat.c (strcat): Likewise.
* sysdeps/generic/strchr.c (strchr): Likewise.
* sysdeps/generic/strcmp.c (strcmp): Likewise.
* sysdeps/generic/strcpy.c (strcpy): Likewise.
* sysdeps/generic/strcspn.c (strcspn): Likewise.
* sysdeps/generic/strlen.c (strlen): Likewise.
* sysdeps/generic/strncmp.c (strncmp): Likewise.
* sysdeps/generic/strncpy.c (strncpy): Likewise.
* sysdeps/generic/strpbrk.c (strpbrk): Likewise.
* sysdeps/generic/strrchr.c (strrchr): Likewise.
* sysdeps/generic/strspn.c (strspn): Likewise.
* sysdeps/generic/strstr.c (strstr): Likewise.
* sysdeps/i386/i486/strcat.S (strcat): Likewise.
* sysdeps/i386/i486/strlen.S (strlen): Likewise.
* sysdeps/i386/i586/memcpy.S (memcpy): Likewise.
* sysdeps/i386/i586/memset.S (memset): Likewise.
* sysdeps/i386/i586/strchr.S (strchr): Likewise.
* sysdeps/i386/i586/strcpy.S (strcpy): Likewise.
* sysdeps/i386/i586/strlen.S (strlen): Likewise.
* sysdeps/i386/i686/memcpy.S (memcpy): Likewise.
* sysdeps/i386/i686/memmove.S (memmove): Likewise.
* sysdeps/i386/i686/memset.S (memset): Likewise.
* sysdeps/i386/i686/strcmp.S (strcmp): Likewise.
* sysdeps/i386/memchr.S (memchr): Likewise.
* sysdeps/i386/memset.c (memset): Likewise.
* sysdeps/i386/strchr.S (strchr): Likewise.
* sysdeps/i386/strcspn.S (strcspn): Likewise.
* sysdeps/i386/strlen.c (strlen): Likewise.
* sysdeps/i386/strpbrk.S (strpbrk): Likewise.
* sysdeps/i386/strrchr.S (strrchr): Likewise.
* sysdeps/i386/strspn.S (strspn): Likewise.
* sysdeps/ia64/memchr.S (memchr): Likewise.
* sysdeps/ia64/memcpy.S (memcpy): Likewise.
* sysdeps/ia64/memmove.S (memmove): Likewise.
* sysdeps/ia64/memset.S (memset): Likewise.
* sysdeps/ia64/strcat.S (strcat): Likewise.
* sysdeps/ia64/strchr.S (strchr): Likewise.
* sysdeps/ia64/strcmp.S (strcmp): Likewise.
* sysdeps/ia64/strcpy.S (strcpy): Likewise.
* sysdeps/ia64/strlen.S (strlen): Likewise.
* sysdeps/ia64/strncmp.S (strncmp): Likewise.
* sysdeps/ia64/strncpy.S (strncpy): Likewise.
* sysdeps/m68k/memchr.S (memchr): Likewise.
* sysdeps/m68k/strchr.S (strchr): Likewise.
* sysdeps/mips/mips64/memcpy.S (memcpy): Likewise.
* sysdeps/mips/mips64/memset.S (memset): Likewise.
* sysdeps/mips/memcpy.S (memcpy): Likewise.
* sysdeps/mips/memset.S (memset): Likewise.
* sysdeps/powerpc/powerpc32/memset.S (memset): Likewise.
* sysdeps/powerpc/powerpc32/strchr.S (strchr): Likewise.
* sysdeps/powerpc/powerpc32/strcmp.S (strcmp): Likewise.
* sysdeps/powerpc/powerpc32/strcpy.S (strcpy): Likewise.
* sysdeps/powerpc/powerpc32/strlen.S (strlen): Likewise.
* sysdeps/powerpc/powerpc64/memcpy.S (memcpy): Likewise.
* sysdeps/powerpc/powerpc64/memset.S (memset): Likewise.
* sysdeps/powerpc/powerpc64/strchr.S (strchr): Likewise.
* sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Likewise.
* sysdeps/powerpc/powerpc64/strcpy.S (strcpy): Likewise.
* sysdeps/powerpc/powerpc64/strlen.S (strlen): Likewise.
* sysdeps/powerpc/strcat.c (strcat): Likewise.
* sysdeps/sparc/sparc32/memchr.S (memchr): Likewise.
* sysdeps/sparc/sparc32/memcpy.S (memcpy): Likewise.
* sysdeps/sparc/sparc32/memset.S (memset): Likewise.
* sysdeps/sparc/sparc32/strcat.S (strcat): Likewise.
* sysdeps/sparc/sparc32/strchr.S (strchr, strrchr): Likewise.
* sysdeps/sparc/sparc32/strcmp.S (strcmp): Likewise.
* sysdeps/sparc/sparc32/strcpy.S (strcpy): Likewise.
* sysdeps/sparc/sparc32/strlen.S (strlen): Likewise.
* sysdeps/sparc/sparc64/sparcv9b/memcpy.S (memcpy, memmove): Likewise.
* sysdeps/sparc/sparc64/memchr.S (memchr): Likewise.
* sysdeps/sparc/sparc64/memcpy.S (memcpy, memmove): Likewise.
* sysdeps/sparc/sparc64/memset.S (memset): Likewise.
* sysdeps/sparc/sparc64/strcat.S (strcat): Likewise.
* sysdeps/sparc/sparc64/strchr.S (strchr, strrchr): Likewise.
* sysdeps/sparc/sparc64/strcmp.S (strcmp): Likewise.
* sysdeps/sparc/sparc64/strcpy.S (strcpy): Likewise.
* sysdeps/sparc/sparc64/strcspn.S (strcspn): Likewise.
* sysdeps/sparc/sparc64/strlen.S (strlen): Likewise.
* sysdeps/sparc/sparc64/strncmp.S (strncmp): Likewise.
* sysdeps/sparc/sparc64/strncpy.S (strncpy): Likewise.
* sysdeps/sparc/sparc64/strpbrk.S (strpbrk): Likewise.
* sysdeps/sparc/sparc64/strspn.S (strspn): Likewise.
* sysdeps/sh/memcpy.S (memcpy): Likewise.
* sysdeps/sh/memset.S (memset): Likewise.
* sysdeps/sh/strlen.S (strlen): Likewise.
* sysdeps/s390/s390-32/memchr.S (memchr): Likewise.
* sysdeps/s390/s390-32/memcpy.S (memcpy): Likewise.
* sysdeps/s390/s390-32/memset.S (memset): Likewise.
* sysdeps/s390/s390-32/strcmp.S (strcmp): Likewise.
* sysdeps/s390/s390-32/strcpy.S (strcpy): Likewise.
* sysdeps/s390/s390-32/strncpy.S (strncpy): Likewise.
* sysdeps/s390/s390-64/memchr.S (memchr): Likewise.
* sysdeps/s390/s390-64/memcpy.S (memcpy): Likewise.
* sysdeps/s390/s390-64/memset.S (memset): Likewise.
* sysdeps/s390/s390-64/strcmp.S (strcmp): Likewise.
* sysdeps/s390/s390-64/strcpy.S (strcpy): Likewise.
* sysdeps/s390/s390-64/strncpy.S (strncpy): Likewise.
* sysdeps/x86_64/memcpy.S (memcpy): Likewise.
* sysdeps/x86_64/memset.S (memset): Likewise.
* sysdeps/x86_64/strcat.S (strcat): Likewise.
* sysdeps/x86_64/strchr.S (strchr): Likewise.
* sysdeps/x86_64/strcmp.S (strcmp): Likewise.
* sysdeps/x86_64/strcpy.S (strcpy): Likewise.
* sysdeps/x86_64/strcspn.S (strcspn): Likewise.
* sysdeps/x86_64/strlen.S (strlen): Likewise.
* sysdeps/x86_64/strspn.S (strspn): Likewise.
* string/string-inlines.c: Move...
* sysdeps/generic/string-inlines.c: ...here.
(__memcpy_g, __strchr_g): Remove.
(__NO_INLINE__): Define before including <string.h>,
undefine after. Include bits/string.h and bits/string2.h.
* sysdeps/i386/i486/string-inlines.c: New file.
* sysdeps/i386/string-inlines.c: New file.
* sysdeps/i386/i486/Versions: Remove.
All GLIBC_2.1.1 symbols moved...
* sysdeps/i386/Versions (libc): ...here.
2003-04-29 Ulrich Drepper <drepper@redhat.com>
2003-04-29 22:49:58 +00:00
|
|
|
AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
|
|
|
|
cat > conftest.c <<\EOF
|
|
|
|
extern char *strstr (const char *, const char *) __asm ("my_strstr");
|
|
|
|
char *foo (const char *a, const char *b)
|
|
|
|
{
|
|
|
|
return __builtin_strstr (a, b);
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
dnl
|
2017-03-12 20:16:18 +00:00
|
|
|
if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "my_strstr" > /dev/null]);
|
Update.
* sysdeps/i386/fpu/ftestexcept.c: Also check SSE status word.
* include/signal.h: Use libc_hidden_proto for sigaddset and sigdelset.
* signal/sigaddset.c: Add libc_hidden_def.
* signal/sigdelset.c: Likewise.
2003-04-29 Jakub Jelinek <jakub@redhat.com>
* sysdeps/i386/i486/string-inlines.c (__memcpy_g, __strchr_g): Move
to the end of the file.
* configure.in: Change __oline__ to $LINENO.
(HAVE_BUILTIN_REDIRECTION): New check.
* config.h.in (HAVE_BUILTIN_REDIRECTION): Add.
* include/libc-symbols.h (libc_hidden_builtin_proto,
libc_hidden_builtin_def, libc_hidden_builtin_weak,
libc_hidden_builtin_ver): Define.
* include/string.h (memchr, memcpy, memmove, memset, strcat, strchr,
strcmp, strcpy, strcspn, strlen, strncmp, strncpy, strpbrk, strrchr,
strspn, strstr): Add libc_hidden_builtin_proto.
* intl/plural.y: Include string.h.
* sysdeps/alpha/alphaev6/memchr.S (memchr): Add
libc_hidden_builtin_def.
* sysdeps/alpha/alphaev6/memcpy.S (memcpy): Likewise.
* sysdeps/alpha/alphaev6/memset.S (memset): Likewise.
* sysdeps/alpha/alphaev67/strcat.S (strcat): Likewise.
* sysdeps/alpha/alphaev67/strchr.S (strchr): Likewise.
* sysdeps/alpha/alphaev67/strlen.S (strlen): Likewise.
* sysdeps/alpha/alphaev67/strrchr.S (strrchr): Likewise.
* sysdeps/alpha/memchr.S (memchr): Likewise.
* sysdeps/alpha/memset.S (memset): Likewise.
* sysdeps/alpha/strcat.S (strcat): Likewise.
* sysdeps/alpha/strchr.S (strchr): Likewise.
* sysdeps/alpha/strcmp.S (strcmp): Likewise.
* sysdeps/alpha/strcpy.S (strcpy): Likewise.
* sysdeps/alpha/strlen.S (strlen): Likewise.
* sysdeps/alpha/strncmp.S (strncmp): Likewise.
* sysdeps/alpha/strncpy.S (strncpy): Likewise.
* sysdeps/alpha/strrchr.S (strrchr): Likewise.
* sysdeps/arm/memset.S (memset): Likewise.
* sysdeps/arm/strlen.S (strlen): Likewise.
* sysdeps/generic/memchr.c (memchr): Likewise.
* sysdeps/generic/memcpy.c (memcpy): Likewise.
* sysdeps/generic/memmove.c (memmove): Likewise.
* sysdeps/generic/memset.c (memset): Likewise.
* sysdeps/generic/strcat.c (strcat): Likewise.
* sysdeps/generic/strchr.c (strchr): Likewise.
* sysdeps/generic/strcmp.c (strcmp): Likewise.
* sysdeps/generic/strcpy.c (strcpy): Likewise.
* sysdeps/generic/strcspn.c (strcspn): Likewise.
* sysdeps/generic/strlen.c (strlen): Likewise.
* sysdeps/generic/strncmp.c (strncmp): Likewise.
* sysdeps/generic/strncpy.c (strncpy): Likewise.
* sysdeps/generic/strpbrk.c (strpbrk): Likewise.
* sysdeps/generic/strrchr.c (strrchr): Likewise.
* sysdeps/generic/strspn.c (strspn): Likewise.
* sysdeps/generic/strstr.c (strstr): Likewise.
* sysdeps/i386/i486/strcat.S (strcat): Likewise.
* sysdeps/i386/i486/strlen.S (strlen): Likewise.
* sysdeps/i386/i586/memcpy.S (memcpy): Likewise.
* sysdeps/i386/i586/memset.S (memset): Likewise.
* sysdeps/i386/i586/strchr.S (strchr): Likewise.
* sysdeps/i386/i586/strcpy.S (strcpy): Likewise.
* sysdeps/i386/i586/strlen.S (strlen): Likewise.
* sysdeps/i386/i686/memcpy.S (memcpy): Likewise.
* sysdeps/i386/i686/memmove.S (memmove): Likewise.
* sysdeps/i386/i686/memset.S (memset): Likewise.
* sysdeps/i386/i686/strcmp.S (strcmp): Likewise.
* sysdeps/i386/memchr.S (memchr): Likewise.
* sysdeps/i386/memset.c (memset): Likewise.
* sysdeps/i386/strchr.S (strchr): Likewise.
* sysdeps/i386/strcspn.S (strcspn): Likewise.
* sysdeps/i386/strlen.c (strlen): Likewise.
* sysdeps/i386/strpbrk.S (strpbrk): Likewise.
* sysdeps/i386/strrchr.S (strrchr): Likewise.
* sysdeps/i386/strspn.S (strspn): Likewise.
* sysdeps/ia64/memchr.S (memchr): Likewise.
* sysdeps/ia64/memcpy.S (memcpy): Likewise.
* sysdeps/ia64/memmove.S (memmove): Likewise.
* sysdeps/ia64/memset.S (memset): Likewise.
* sysdeps/ia64/strcat.S (strcat): Likewise.
* sysdeps/ia64/strchr.S (strchr): Likewise.
* sysdeps/ia64/strcmp.S (strcmp): Likewise.
* sysdeps/ia64/strcpy.S (strcpy): Likewise.
* sysdeps/ia64/strlen.S (strlen): Likewise.
* sysdeps/ia64/strncmp.S (strncmp): Likewise.
* sysdeps/ia64/strncpy.S (strncpy): Likewise.
* sysdeps/m68k/memchr.S (memchr): Likewise.
* sysdeps/m68k/strchr.S (strchr): Likewise.
* sysdeps/mips/mips64/memcpy.S (memcpy): Likewise.
* sysdeps/mips/mips64/memset.S (memset): Likewise.
* sysdeps/mips/memcpy.S (memcpy): Likewise.
* sysdeps/mips/memset.S (memset): Likewise.
* sysdeps/powerpc/powerpc32/memset.S (memset): Likewise.
* sysdeps/powerpc/powerpc32/strchr.S (strchr): Likewise.
* sysdeps/powerpc/powerpc32/strcmp.S (strcmp): Likewise.
* sysdeps/powerpc/powerpc32/strcpy.S (strcpy): Likewise.
* sysdeps/powerpc/powerpc32/strlen.S (strlen): Likewise.
* sysdeps/powerpc/powerpc64/memcpy.S (memcpy): Likewise.
* sysdeps/powerpc/powerpc64/memset.S (memset): Likewise.
* sysdeps/powerpc/powerpc64/strchr.S (strchr): Likewise.
* sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Likewise.
* sysdeps/powerpc/powerpc64/strcpy.S (strcpy): Likewise.
* sysdeps/powerpc/powerpc64/strlen.S (strlen): Likewise.
* sysdeps/powerpc/strcat.c (strcat): Likewise.
* sysdeps/sparc/sparc32/memchr.S (memchr): Likewise.
* sysdeps/sparc/sparc32/memcpy.S (memcpy): Likewise.
* sysdeps/sparc/sparc32/memset.S (memset): Likewise.
* sysdeps/sparc/sparc32/strcat.S (strcat): Likewise.
* sysdeps/sparc/sparc32/strchr.S (strchr, strrchr): Likewise.
* sysdeps/sparc/sparc32/strcmp.S (strcmp): Likewise.
* sysdeps/sparc/sparc32/strcpy.S (strcpy): Likewise.
* sysdeps/sparc/sparc32/strlen.S (strlen): Likewise.
* sysdeps/sparc/sparc64/sparcv9b/memcpy.S (memcpy, memmove): Likewise.
* sysdeps/sparc/sparc64/memchr.S (memchr): Likewise.
* sysdeps/sparc/sparc64/memcpy.S (memcpy, memmove): Likewise.
* sysdeps/sparc/sparc64/memset.S (memset): Likewise.
* sysdeps/sparc/sparc64/strcat.S (strcat): Likewise.
* sysdeps/sparc/sparc64/strchr.S (strchr, strrchr): Likewise.
* sysdeps/sparc/sparc64/strcmp.S (strcmp): Likewise.
* sysdeps/sparc/sparc64/strcpy.S (strcpy): Likewise.
* sysdeps/sparc/sparc64/strcspn.S (strcspn): Likewise.
* sysdeps/sparc/sparc64/strlen.S (strlen): Likewise.
* sysdeps/sparc/sparc64/strncmp.S (strncmp): Likewise.
* sysdeps/sparc/sparc64/strncpy.S (strncpy): Likewise.
* sysdeps/sparc/sparc64/strpbrk.S (strpbrk): Likewise.
* sysdeps/sparc/sparc64/strspn.S (strspn): Likewise.
* sysdeps/sh/memcpy.S (memcpy): Likewise.
* sysdeps/sh/memset.S (memset): Likewise.
* sysdeps/sh/strlen.S (strlen): Likewise.
* sysdeps/s390/s390-32/memchr.S (memchr): Likewise.
* sysdeps/s390/s390-32/memcpy.S (memcpy): Likewise.
* sysdeps/s390/s390-32/memset.S (memset): Likewise.
* sysdeps/s390/s390-32/strcmp.S (strcmp): Likewise.
* sysdeps/s390/s390-32/strcpy.S (strcpy): Likewise.
* sysdeps/s390/s390-32/strncpy.S (strncpy): Likewise.
* sysdeps/s390/s390-64/memchr.S (memchr): Likewise.
* sysdeps/s390/s390-64/memcpy.S (memcpy): Likewise.
* sysdeps/s390/s390-64/memset.S (memset): Likewise.
* sysdeps/s390/s390-64/strcmp.S (strcmp): Likewise.
* sysdeps/s390/s390-64/strcpy.S (strcpy): Likewise.
* sysdeps/s390/s390-64/strncpy.S (strncpy): Likewise.
* sysdeps/x86_64/memcpy.S (memcpy): Likewise.
* sysdeps/x86_64/memset.S (memset): Likewise.
* sysdeps/x86_64/strcat.S (strcat): Likewise.
* sysdeps/x86_64/strchr.S (strchr): Likewise.
* sysdeps/x86_64/strcmp.S (strcmp): Likewise.
* sysdeps/x86_64/strcpy.S (strcpy): Likewise.
* sysdeps/x86_64/strcspn.S (strcspn): Likewise.
* sysdeps/x86_64/strlen.S (strlen): Likewise.
* sysdeps/x86_64/strspn.S (strspn): Likewise.
* string/string-inlines.c: Move...
* sysdeps/generic/string-inlines.c: ...here.
(__memcpy_g, __strchr_g): Remove.
(__NO_INLINE__): Define before including <string.h>,
undefine after. Include bits/string.h and bits/string2.h.
* sysdeps/i386/i486/string-inlines.c: New file.
* sysdeps/i386/string-inlines.c: New file.
* sysdeps/i386/i486/Versions: Remove.
All GLIBC_2.1.1 symbols moved...
* sysdeps/i386/Versions (libc): ...here.
2003-04-29 Ulrich Drepper <drepper@redhat.com>
2003-04-29 22:49:58 +00:00
|
|
|
then
|
|
|
|
libc_cv_gcc_builtin_redirection=yes
|
|
|
|
else
|
|
|
|
libc_cv_gcc_builtin_redirection=no
|
|
|
|
fi
|
|
|
|
rm -f conftest* ])
|
2011-09-10 18:34:15 +00:00
|
|
|
if test "$libc_cv_gcc_builtin_redirection" = no; then
|
|
|
|
AC_MSG_ERROR([support for the symbol redirection needed])
|
Update.
* sysdeps/i386/fpu/ftestexcept.c: Also check SSE status word.
* include/signal.h: Use libc_hidden_proto for sigaddset and sigdelset.
* signal/sigaddset.c: Add libc_hidden_def.
* signal/sigdelset.c: Likewise.
2003-04-29 Jakub Jelinek <jakub@redhat.com>
* sysdeps/i386/i486/string-inlines.c (__memcpy_g, __strchr_g): Move
to the end of the file.
* configure.in: Change __oline__ to $LINENO.
(HAVE_BUILTIN_REDIRECTION): New check.
* config.h.in (HAVE_BUILTIN_REDIRECTION): Add.
* include/libc-symbols.h (libc_hidden_builtin_proto,
libc_hidden_builtin_def, libc_hidden_builtin_weak,
libc_hidden_builtin_ver): Define.
* include/string.h (memchr, memcpy, memmove, memset, strcat, strchr,
strcmp, strcpy, strcspn, strlen, strncmp, strncpy, strpbrk, strrchr,
strspn, strstr): Add libc_hidden_builtin_proto.
* intl/plural.y: Include string.h.
* sysdeps/alpha/alphaev6/memchr.S (memchr): Add
libc_hidden_builtin_def.
* sysdeps/alpha/alphaev6/memcpy.S (memcpy): Likewise.
* sysdeps/alpha/alphaev6/memset.S (memset): Likewise.
* sysdeps/alpha/alphaev67/strcat.S (strcat): Likewise.
* sysdeps/alpha/alphaev67/strchr.S (strchr): Likewise.
* sysdeps/alpha/alphaev67/strlen.S (strlen): Likewise.
* sysdeps/alpha/alphaev67/strrchr.S (strrchr): Likewise.
* sysdeps/alpha/memchr.S (memchr): Likewise.
* sysdeps/alpha/memset.S (memset): Likewise.
* sysdeps/alpha/strcat.S (strcat): Likewise.
* sysdeps/alpha/strchr.S (strchr): Likewise.
* sysdeps/alpha/strcmp.S (strcmp): Likewise.
* sysdeps/alpha/strcpy.S (strcpy): Likewise.
* sysdeps/alpha/strlen.S (strlen): Likewise.
* sysdeps/alpha/strncmp.S (strncmp): Likewise.
* sysdeps/alpha/strncpy.S (strncpy): Likewise.
* sysdeps/alpha/strrchr.S (strrchr): Likewise.
* sysdeps/arm/memset.S (memset): Likewise.
* sysdeps/arm/strlen.S (strlen): Likewise.
* sysdeps/generic/memchr.c (memchr): Likewise.
* sysdeps/generic/memcpy.c (memcpy): Likewise.
* sysdeps/generic/memmove.c (memmove): Likewise.
* sysdeps/generic/memset.c (memset): Likewise.
* sysdeps/generic/strcat.c (strcat): Likewise.
* sysdeps/generic/strchr.c (strchr): Likewise.
* sysdeps/generic/strcmp.c (strcmp): Likewise.
* sysdeps/generic/strcpy.c (strcpy): Likewise.
* sysdeps/generic/strcspn.c (strcspn): Likewise.
* sysdeps/generic/strlen.c (strlen): Likewise.
* sysdeps/generic/strncmp.c (strncmp): Likewise.
* sysdeps/generic/strncpy.c (strncpy): Likewise.
* sysdeps/generic/strpbrk.c (strpbrk): Likewise.
* sysdeps/generic/strrchr.c (strrchr): Likewise.
* sysdeps/generic/strspn.c (strspn): Likewise.
* sysdeps/generic/strstr.c (strstr): Likewise.
* sysdeps/i386/i486/strcat.S (strcat): Likewise.
* sysdeps/i386/i486/strlen.S (strlen): Likewise.
* sysdeps/i386/i586/memcpy.S (memcpy): Likewise.
* sysdeps/i386/i586/memset.S (memset): Likewise.
* sysdeps/i386/i586/strchr.S (strchr): Likewise.
* sysdeps/i386/i586/strcpy.S (strcpy): Likewise.
* sysdeps/i386/i586/strlen.S (strlen): Likewise.
* sysdeps/i386/i686/memcpy.S (memcpy): Likewise.
* sysdeps/i386/i686/memmove.S (memmove): Likewise.
* sysdeps/i386/i686/memset.S (memset): Likewise.
* sysdeps/i386/i686/strcmp.S (strcmp): Likewise.
* sysdeps/i386/memchr.S (memchr): Likewise.
* sysdeps/i386/memset.c (memset): Likewise.
* sysdeps/i386/strchr.S (strchr): Likewise.
* sysdeps/i386/strcspn.S (strcspn): Likewise.
* sysdeps/i386/strlen.c (strlen): Likewise.
* sysdeps/i386/strpbrk.S (strpbrk): Likewise.
* sysdeps/i386/strrchr.S (strrchr): Likewise.
* sysdeps/i386/strspn.S (strspn): Likewise.
* sysdeps/ia64/memchr.S (memchr): Likewise.
* sysdeps/ia64/memcpy.S (memcpy): Likewise.
* sysdeps/ia64/memmove.S (memmove): Likewise.
* sysdeps/ia64/memset.S (memset): Likewise.
* sysdeps/ia64/strcat.S (strcat): Likewise.
* sysdeps/ia64/strchr.S (strchr): Likewise.
* sysdeps/ia64/strcmp.S (strcmp): Likewise.
* sysdeps/ia64/strcpy.S (strcpy): Likewise.
* sysdeps/ia64/strlen.S (strlen): Likewise.
* sysdeps/ia64/strncmp.S (strncmp): Likewise.
* sysdeps/ia64/strncpy.S (strncpy): Likewise.
* sysdeps/m68k/memchr.S (memchr): Likewise.
* sysdeps/m68k/strchr.S (strchr): Likewise.
* sysdeps/mips/mips64/memcpy.S (memcpy): Likewise.
* sysdeps/mips/mips64/memset.S (memset): Likewise.
* sysdeps/mips/memcpy.S (memcpy): Likewise.
* sysdeps/mips/memset.S (memset): Likewise.
* sysdeps/powerpc/powerpc32/memset.S (memset): Likewise.
* sysdeps/powerpc/powerpc32/strchr.S (strchr): Likewise.
* sysdeps/powerpc/powerpc32/strcmp.S (strcmp): Likewise.
* sysdeps/powerpc/powerpc32/strcpy.S (strcpy): Likewise.
* sysdeps/powerpc/powerpc32/strlen.S (strlen): Likewise.
* sysdeps/powerpc/powerpc64/memcpy.S (memcpy): Likewise.
* sysdeps/powerpc/powerpc64/memset.S (memset): Likewise.
* sysdeps/powerpc/powerpc64/strchr.S (strchr): Likewise.
* sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Likewise.
* sysdeps/powerpc/powerpc64/strcpy.S (strcpy): Likewise.
* sysdeps/powerpc/powerpc64/strlen.S (strlen): Likewise.
* sysdeps/powerpc/strcat.c (strcat): Likewise.
* sysdeps/sparc/sparc32/memchr.S (memchr): Likewise.
* sysdeps/sparc/sparc32/memcpy.S (memcpy): Likewise.
* sysdeps/sparc/sparc32/memset.S (memset): Likewise.
* sysdeps/sparc/sparc32/strcat.S (strcat): Likewise.
* sysdeps/sparc/sparc32/strchr.S (strchr, strrchr): Likewise.
* sysdeps/sparc/sparc32/strcmp.S (strcmp): Likewise.
* sysdeps/sparc/sparc32/strcpy.S (strcpy): Likewise.
* sysdeps/sparc/sparc32/strlen.S (strlen): Likewise.
* sysdeps/sparc/sparc64/sparcv9b/memcpy.S (memcpy, memmove): Likewise.
* sysdeps/sparc/sparc64/memchr.S (memchr): Likewise.
* sysdeps/sparc/sparc64/memcpy.S (memcpy, memmove): Likewise.
* sysdeps/sparc/sparc64/memset.S (memset): Likewise.
* sysdeps/sparc/sparc64/strcat.S (strcat): Likewise.
* sysdeps/sparc/sparc64/strchr.S (strchr, strrchr): Likewise.
* sysdeps/sparc/sparc64/strcmp.S (strcmp): Likewise.
* sysdeps/sparc/sparc64/strcpy.S (strcpy): Likewise.
* sysdeps/sparc/sparc64/strcspn.S (strcspn): Likewise.
* sysdeps/sparc/sparc64/strlen.S (strlen): Likewise.
* sysdeps/sparc/sparc64/strncmp.S (strncmp): Likewise.
* sysdeps/sparc/sparc64/strncpy.S (strncpy): Likewise.
* sysdeps/sparc/sparc64/strpbrk.S (strpbrk): Likewise.
* sysdeps/sparc/sparc64/strspn.S (strspn): Likewise.
* sysdeps/sh/memcpy.S (memcpy): Likewise.
* sysdeps/sh/memset.S (memset): Likewise.
* sysdeps/sh/strlen.S (strlen): Likewise.
* sysdeps/s390/s390-32/memchr.S (memchr): Likewise.
* sysdeps/s390/s390-32/memcpy.S (memcpy): Likewise.
* sysdeps/s390/s390-32/memset.S (memset): Likewise.
* sysdeps/s390/s390-32/strcmp.S (strcmp): Likewise.
* sysdeps/s390/s390-32/strcpy.S (strcpy): Likewise.
* sysdeps/s390/s390-32/strncpy.S (strncpy): Likewise.
* sysdeps/s390/s390-64/memchr.S (memchr): Likewise.
* sysdeps/s390/s390-64/memcpy.S (memcpy): Likewise.
* sysdeps/s390/s390-64/memset.S (memset): Likewise.
* sysdeps/s390/s390-64/strcmp.S (strcmp): Likewise.
* sysdeps/s390/s390-64/strcpy.S (strcpy): Likewise.
* sysdeps/s390/s390-64/strncpy.S (strncpy): Likewise.
* sysdeps/x86_64/memcpy.S (memcpy): Likewise.
* sysdeps/x86_64/memset.S (memset): Likewise.
* sysdeps/x86_64/strcat.S (strcat): Likewise.
* sysdeps/x86_64/strchr.S (strchr): Likewise.
* sysdeps/x86_64/strcmp.S (strcmp): Likewise.
* sysdeps/x86_64/strcpy.S (strcpy): Likewise.
* sysdeps/x86_64/strcspn.S (strcspn): Likewise.
* sysdeps/x86_64/strlen.S (strlen): Likewise.
* sysdeps/x86_64/strspn.S (strspn): Likewise.
* string/string-inlines.c: Move...
* sysdeps/generic/string-inlines.c: ...here.
(__memcpy_g, __strchr_g): Remove.
(__NO_INLINE__): Define before including <string.h>,
undefine after. Include bits/string.h and bits/string2.h.
* sysdeps/i386/i486/string-inlines.c: New file.
* sysdeps/i386/string-inlines.c: New file.
* sysdeps/i386/i486/Versions: Remove.
All GLIBC_2.1.1 symbols moved...
* sysdeps/i386/Versions (libc): ...here.
2003-04-29 Ulrich Drepper <drepper@redhat.com>
2003-04-29 22:49:58 +00:00
|
|
|
fi
|
|
|
|
|
2012-03-16 15:07:57 +00:00
|
|
|
dnl Determine how to disable generation of FMA instructions.
|
|
|
|
AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
|
|
|
|
libc_cv_cc_nofma, [dnl
|
|
|
|
libc_cv_cc_nofma=
|
|
|
|
for opt in -ffp-contract=off -mno-fused-madd; do
|
|
|
|
LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
|
|
|
|
done])
|
2013-03-20 22:37:06 +00:00
|
|
|
AC_SUBST(libc_cv_cc_nofma)
|
2012-03-16 15:07:57 +00:00
|
|
|
|
2008-08-18 09:42:17 +00:00
|
|
|
if test -n "$submachine"; then
|
|
|
|
AC_CACHE_CHECK([for compiler option for CPU variant],
|
2011-05-21 12:00:14 +00:00
|
|
|
libc_cv_cc_submachine, [dnl
|
2008-08-18 09:42:17 +00:00
|
|
|
libc_cv_cc_submachine=no
|
|
|
|
for opt in "-march=$submachine" "-mcpu=$submachine"; do
|
2012-03-21 16:33:57 +00:00
|
|
|
LIBC_TRY_CC_OPTION([$opt], [
|
2008-08-18 09:42:17 +00:00
|
|
|
libc_cv_cc_submachine="$opt"
|
2012-03-21 16:33:57 +00:00
|
|
|
break], [])
|
2008-08-18 09:42:17 +00:00
|
|
|
done])
|
|
|
|
if test "x$libc_cv_cc_submachine" = xno; then
|
|
|
|
AC_MSG_ERROR([${CC-cc} does not support $submachine])
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
AC_SUBST(libc_cv_cc_submachine)
|
|
|
|
|
2013-06-21 00:40:55 +00:00
|
|
|
AC_CACHE_CHECK(if $CC accepts -fno-tree-loop-distribute-patterns with \
|
|
|
|
__attribute__ ((__optimize__)), libc_cv_cc_loop_to_function, [dnl
|
|
|
|
cat > conftest.c <<EOF
|
|
|
|
void
|
|
|
|
__attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
|
|
|
|
foo (void) {}
|
|
|
|
EOF
|
|
|
|
libc_cv_cc_loop_to_function=no
|
|
|
|
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c])
|
|
|
|
then
|
|
|
|
libc_cv_cc_loop_to_function=yes
|
|
|
|
fi
|
|
|
|
rm -f conftest*])
|
|
|
|
if test $libc_cv_cc_loop_to_function = yes; then
|
|
|
|
AC_DEFINE(HAVE_CC_INHIBIT_LOOP_TO_LIBCALL)
|
|
|
|
fi
|
|
|
|
AC_SUBST(libc_cv_cc_loop_to_function)
|
|
|
|
|
1999-10-04 04:37:58 +00:00
|
|
|
dnl Check whether we have the gd library available.
|
|
|
|
AC_MSG_CHECKING(for libgd)
|
2001-02-21 15:45:26 +00:00
|
|
|
if test "$with_gd" != "no"; then
|
|
|
|
old_CFLAGS="$CFLAGS"
|
|
|
|
CFLAGS="$CFLAGS $libgd_include"
|
|
|
|
old_LDFLAGS="$LDFLAGS"
|
|
|
|
LDFLAGS="$LDFLAGS $libgd_ldflags"
|
|
|
|
old_LIBS="$LIBS"
|
|
|
|
LIBS="$LIBS -lgd -lpng -lz -lm"
|
2021-02-17 01:20:17 +00:00
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <gd.h>]], [[gdImagePng (0, 0)]])],
|
|
|
|
[LIBGD=yes], [LIBGD=no])
|
2001-02-21 15:45:26 +00:00
|
|
|
CFLAGS="$old_CFLAGS"
|
|
|
|
LDFLAGS="$old_LDFLAGS"
|
|
|
|
LIBS="$old_LIBS"
|
|
|
|
else
|
|
|
|
LIBGD=no
|
|
|
|
fi
|
1999-10-04 04:37:58 +00:00
|
|
|
AC_MSG_RESULT($LIBGD)
|
|
|
|
AC_SUBST(LIBGD)
|
1999-07-31 05:15:48 +00:00
|
|
|
|
2004-09-16 23:54:21 +00:00
|
|
|
# SELinux detection
|
|
|
|
if test x$with_selinux = xno ; then
|
|
|
|
have_selinux=no;
|
|
|
|
else
|
|
|
|
# See if we have the SELinux library
|
|
|
|
AC_CHECK_LIB(selinux, is_selinux_enabled,
|
|
|
|
have_selinux=yes, have_selinux=no)
|
2004-09-20 21:53:15 +00:00
|
|
|
if test x$with_selinux = xyes ; then
|
2004-09-16 23:54:21 +00:00
|
|
|
if test x$have_selinux = xno ; then
|
2014-04-10 22:31:53 +00:00
|
|
|
AC_MSG_ERROR([SELinux explicitly required, but SELinux library not found])
|
2004-09-16 23:54:21 +00:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
# Check if we're building with SELinux support.
|
|
|
|
if test "x$have_selinux" = xyes; then
|
2006-01-04 06:26:39 +00:00
|
|
|
AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
|
2005-06-14 22:52:30 +00:00
|
|
|
|
|
|
|
# See if we have the libaudit library
|
2006-01-04 06:26:39 +00:00
|
|
|
AC_CHECK_LIB(audit, audit_log_user_avc_message,
|
2011-01-17 02:29:41 +00:00
|
|
|
have_libaudit=yes, have_libaudit=no)
|
2005-06-14 22:52:30 +00:00
|
|
|
if test "x$have_libaudit" = xyes; then
|
2006-01-04 06:26:39 +00:00
|
|
|
AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
|
2005-06-14 22:52:30 +00:00
|
|
|
fi
|
|
|
|
AC_SUBST(have_libaudit)
|
2006-04-26 16:29:29 +00:00
|
|
|
|
|
|
|
# See if we have the libcap library
|
|
|
|
AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
|
|
|
|
if test "x$have_libcap" = xyes; then
|
|
|
|
AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
|
|
|
|
fi
|
|
|
|
AC_SUBST(have_libcap)
|
2004-09-16 23:54:21 +00:00
|
|
|
fi
|
|
|
|
AC_SUBST(have_selinux)
|
|
|
|
|
2012-05-14 22:42:52 +00:00
|
|
|
CPPUNDEFS=
|
|
|
|
dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
|
|
|
|
dnl Since we are building the implementations of the fortified functions here,
|
|
|
|
dnl having the macro defined interacts very badly.
|
2021-05-22 02:42:48 +00:00
|
|
|
dnl _FORTIFY_SOURCE requires compiler optimization level 1 (gcc -O1)
|
|
|
|
dnl and above (see "man FEATURE_TEST_MACROS").
|
|
|
|
dnl So do NOT replace AC_COMPILE_IFELSE with AC_PREPROC_IFELSE.
|
2012-05-14 22:42:52 +00:00
|
|
|
AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
|
2021-05-22 02:42:48 +00:00
|
|
|
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
|
2012-05-14 22:42:52 +00:00
|
|
|
#ifdef _FORTIFY_SOURCE
|
|
|
|
# error bogon
|
2021-05-22 02:42:48 +00:00
|
|
|
#endif]])],
|
2012-05-14 22:42:52 +00:00
|
|
|
[libc_cv_predef_fortify_source=no],
|
|
|
|
[libc_cv_predef_fortify_source=yes])])
|
|
|
|
if test $libc_cv_predef_fortify_source = yes; then
|
|
|
|
CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
|
|
|
|
fi
|
|
|
|
AC_SUBST(CPPUNDEFS)
|
|
|
|
|
2014-08-07 03:44:29 +00:00
|
|
|
# Some linkers on some architectures support __ehdr_start but with
|
|
|
|
# bugs. Make sure usage of it does not create relocations in the
|
|
|
|
# output (as the linker should resolve them all for us).
|
|
|
|
AC_CACHE_CHECK([whether the linker provides working __ehdr_start],
|
2014-03-13 17:38:27 +00:00
|
|
|
libc_cv_ehdr_start, [
|
|
|
|
old_CFLAGS="$CFLAGS"
|
|
|
|
old_LDFLAGS="$LDFLAGS"
|
|
|
|
old_LIBS="$LIBS"
|
|
|
|
CFLAGS="$CFLAGS -fPIC"
|
2016-12-26 09:08:54 +00:00
|
|
|
LDFLAGS="$LDFLAGS -nostdlib -nostartfiles -shared $no_ssp"
|
2014-03-13 17:38:27 +00:00
|
|
|
LIBS=
|
|
|
|
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
2014-08-07 03:44:29 +00:00
|
|
|
typedef struct {
|
|
|
|
char foo;
|
|
|
|
long val;
|
|
|
|
} Ehdr;
|
|
|
|
extern const Ehdr __ehdr_start __attribute__ ((visibility ("hidden")));
|
|
|
|
long ehdr (void) { return __ehdr_start.val; }
|
2014-03-13 17:38:27 +00:00
|
|
|
])],
|
2017-03-12 20:16:18 +00:00
|
|
|
[if $READELF -r conftest | grep -F __ehdr_start >/dev/null; then
|
2014-08-07 03:44:29 +00:00
|
|
|
libc_cv_ehdr_start=broken
|
|
|
|
else
|
|
|
|
libc_cv_ehdr_start=yes
|
|
|
|
fi], [libc_cv_ehdr_start=no])
|
2014-03-13 17:38:27 +00:00
|
|
|
CFLAGS="$old_CFLAGS"
|
|
|
|
LDFLAGS="$old_LDFLAGS"
|
|
|
|
LIBS="$old_LIBS"
|
|
|
|
])
|
2014-08-07 03:44:29 +00:00
|
|
|
if test "$libc_cv_ehdr_start" = yes; then
|
2014-03-13 17:38:27 +00:00
|
|
|
AC_DEFINE([HAVE_EHDR_START])
|
2014-08-07 03:44:29 +00:00
|
|
|
elif test "$libc_cv_ehdr_start" = broken; then
|
|
|
|
AC_MSG_WARN([linker is broken -- you should upgrade])
|
2014-07-31 20:07:19 +00:00
|
|
|
fi
|
|
|
|
|
2021-03-25 10:05:37 +00:00
|
|
|
dnl Starting with binutils 2.35, GAS can attach multiple symbol versions
|
|
|
|
dnl to one symbol (PR 23840).
|
|
|
|
AC_CACHE_CHECK(whether the assembler requires one version per symbol,
|
|
|
|
libc_cv_symver_needs_alias, [dnl
|
|
|
|
cat > conftest.s <<EOF
|
|
|
|
.text
|
|
|
|
testfunc:
|
|
|
|
.globl testfunc
|
|
|
|
.symver testfunc, testfunc1@VERSION1
|
|
|
|
.symver testfunc, testfunc1@VERSION2
|
|
|
|
EOF
|
|
|
|
libc_cv_symver_needs_alias=no
|
|
|
|
if ${CC-cc} $ASFLAGS -c conftest.s 2>&AS_MESSAGE_LOG_FD; then
|
|
|
|
libc_cv_symver_needs_alias=no
|
|
|
|
else
|
|
|
|
libc_cv_symver_needs_alias=yes
|
|
|
|
fi
|
|
|
|
rm conftest.*
|
|
|
|
])
|
|
|
|
if test "$libc_cv_symver_needs_alias" = yes; then
|
|
|
|
AC_DEFINE(SYMVER_NEEDS_ALIAS)
|
|
|
|
fi
|
|
|
|
|
2014-07-31 20:07:19 +00:00
|
|
|
AC_CACHE_CHECK(for __builtin_trap with no external dependencies,
|
|
|
|
libc_cv_builtin_trap, [dnl
|
|
|
|
libc_cv_builtin_trap=no
|
2021-05-22 02:42:48 +00:00
|
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[__builtin_trap ()]])],[
|
2014-07-31 20:07:19 +00:00
|
|
|
libc_undefs=`$NM -u conftest.o |
|
|
|
|
LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
|
|
|
|
2>&AS_MESSAGE_LOG_FD` || {
|
|
|
|
AC_MSG_ERROR([confusing output from $NM -u])
|
|
|
|
}
|
|
|
|
echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
|
|
|
|
if test -z "$libc_undefs"; then
|
|
|
|
libc_cv_builtin_trap=yes
|
2021-05-22 02:42:48 +00:00
|
|
|
fi],[])])
|
2014-07-31 20:07:19 +00:00
|
|
|
if test $libc_cv_builtin_trap = yes; then
|
|
|
|
AC_DEFINE([HAVE_BUILTIN_TRAP])
|
2014-03-13 17:38:27 +00:00
|
|
|
fi
|
|
|
|
|
2015-10-06 19:27:55 +00:00
|
|
|
dnl C++ feature tests.
|
|
|
|
AC_LANG_PUSH([C++])
|
|
|
|
|
|
|
|
AC_CACHE_CHECK([whether the C++ compiler supports thread_local],
|
|
|
|
libc_cv_cxx_thread_local, [
|
|
|
|
old_CXXFLAGS="$CXXFLAGS"
|
|
|
|
CXXFLAGS="$CXXFLAGS -std=gnu++11"
|
|
|
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
|
|
|
|
#include <thread>
|
|
|
|
|
|
|
|
// Compiler support.
|
|
|
|
struct S
|
|
|
|
{
|
|
|
|
S ();
|
|
|
|
~S ();
|
|
|
|
};
|
|
|
|
thread_local S s;
|
|
|
|
S * get () { return &s; }
|
|
|
|
|
|
|
|
// libstdc++ support.
|
|
|
|
#ifndef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL
|
|
|
|
#error __cxa_thread_atexit_impl not supported
|
|
|
|
#endif
|
|
|
|
])],
|
|
|
|
[libc_cv_cxx_thread_local=yes],
|
|
|
|
[libc_cv_cxx_thread_local=no])
|
|
|
|
CXXFLAGS="$old_CXXFLAGS"
|
|
|
|
])
|
|
|
|
AC_SUBST(libc_cv_cxx_thread_local)
|
|
|
|
|
|
|
|
AC_LANG_POP([C++])
|
|
|
|
dnl End of C++ feature tests.
|
|
|
|
|
1996-03-19 21:10:11 +00:00
|
|
|
### End of automated tests.
|
|
|
|
### Now run sysdeps configure fragments.
|
|
|
|
|
1998-03-29 17:03:23 +00:00
|
|
|
# They also can set these variables.
|
1999-12-04 08:00:00 +00:00
|
|
|
use_ldconfig=no
|
1998-03-29 17:03:23 +00:00
|
|
|
ldd_rewrite_script=no
|
2001-07-09 11:51:53 +00:00
|
|
|
libc_cv_sysconfdir=$sysconfdir
|
2012-06-22 17:11:07 +00:00
|
|
|
libc_cv_localstatedir=$localstatedir
|
2001-11-16 01:27:24 +00:00
|
|
|
libc_cv_gcc_unwind_find_fde=no
|
2004-03-08 04:10:31 +00:00
|
|
|
libc_cv_idn=no
|
2021-05-03 06:12:11 +00:00
|
|
|
pthread_in_libc=yes
|
1998-03-29 17:03:23 +00:00
|
|
|
|
1995-02-18 01:27:10 +00:00
|
|
|
# Iterate over all the sysdep directories we will use, running their
|
2010-08-24 18:55:53 +00:00
|
|
|
# configure fragments.
|
1995-02-18 01:27:10 +00:00
|
|
|
for dir in $sysnames; do
|
1996-09-05 02:49:18 +00:00
|
|
|
case $dir in
|
|
|
|
/*) dest=$dir ;;
|
|
|
|
*) dest=$srcdir/$dir ;;
|
|
|
|
esac
|
|
|
|
if test -r $dest/configure; then
|
2003-03-01 22:40:30 +00:00
|
|
|
AC_MSG_RESULT(running configure fragment for $dir)
|
1996-09-05 02:49:18 +00:00
|
|
|
. $dest/configure
|
1995-02-18 01:27:10 +00:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
2015-05-14 14:28:06 +00:00
|
|
|
if test x"$build_mathvec" = xnotset; then
|
|
|
|
build_mathvec=no
|
|
|
|
fi
|
|
|
|
LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec])
|
|
|
|
|
2014-04-06 21:26:32 +00:00
|
|
|
AC_SUBST(libc_extra_cflags)
|
|
|
|
AC_SUBST(libc_extra_cppflags)
|
|
|
|
|
2001-11-16 01:27:24 +00:00
|
|
|
if test x$libc_cv_gcc_unwind_find_fde = xyes; then
|
|
|
|
AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
|
|
|
|
fi
|
|
|
|
AC_SUBST(libc_cv_gcc_unwind_find_fde)
|
|
|
|
|
2012-10-24 21:50:46 +00:00
|
|
|
# A sysdeps configure fragment can reset this if IFUNC is not actually
|
|
|
|
# usable even though the assembler knows how to generate the symbol type.
|
|
|
|
if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
|
|
|
|
AC_DEFINE(HAVE_IFUNC)
|
|
|
|
fi
|
2019-02-27 21:21:46 +00:00
|
|
|
LIBC_CONFIG_VAR([have-ifunc], [$libc_cv_ld_gnu_indirect_function])
|
2012-10-24 21:50:46 +00:00
|
|
|
|
2016-10-07 07:56:46 +00:00
|
|
|
if test x"$libc_cv_gcc_indirect_function" = xyes; then
|
|
|
|
AC_DEFINE(HAVE_GCC_IFUNC)
|
|
|
|
fi
|
2021-03-24 00:10:38 +00:00
|
|
|
LIBC_CONFIG_VAR([have-gcc-ifunc], [$libc_cv_gcc_indirect_function])
|
2016-10-07 07:56:46 +00:00
|
|
|
|
2012-08-22 20:31:12 +00:00
|
|
|
# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
|
|
|
|
# configure fragment can override the value to prevent this AC_DEFINE.
|
|
|
|
AC_SUBST(use_nscd)
|
|
|
|
if test "x$use_nscd" != xno; then
|
|
|
|
AC_DEFINE([USE_NSCD])
|
|
|
|
fi
|
2012-08-22 20:35:55 +00:00
|
|
|
if test "x$build_nscd" = xdefault; then
|
|
|
|
build_nscd=$use_nscd
|
|
|
|
fi
|
2012-08-22 20:31:12 +00:00
|
|
|
|
update from main archive 961119
Wed Nov 20 02:04:11 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/sigsuspend.c: Make sigsuspend a weak
alias of __sigsuspend.
* grp/grp.h: Correct comment about POSIX compliance.
* pwd/pwd.h: Likewise.
* login/utmp.h: Update copyright and pretty-print prototypes.
* sysdeps/generic/paths.h: Add _PATH_LASTLOG, _PATH_UTMP and
_PATH_WTMP from utmpbits.h.
* sysdeps/unix/sysv/linux/paths.h: Likewise.
* sysdeps/generic/utmpbits.h: Remove here.
* sysdeps/gnu/utmpbits.h: Likewise.
* misc/sys/uio.h: Place __BEGIN_DECLS correctly.
Pretty-print prototypes.
* sysdeps/unix/sysv/linux/sparc/clone.S: New file. Taken from
LinuxThreads-0.5.
Tue Nov 19 13:43:07 1996 Richard Henderson <rth@tamu.edu>
* inet/ether_hton.c: Include <string.h>.
* inet/ether_ntoh.c: Likewise.
* inet/rexec.c: Get errno, index, getpass, getlogin from headers.
* misc/search.h: Fix hcreate_r argument type (unsigned -> size_t).
* misc/sys/cdefs.h: Change __long_double_t definition from typedef
to define. Jim Nance reports problems building XEmacs otherwise.
* resolv/gethnamaddr.c: Protect h_errno redefinition.
* resolv/getnetnamadr.c: Likewise.
* resolv/herror.c: Likewise.
* sysdeps/generic/sigset.h (__SIGSETFN): Operator ## doesn't work
with -traditional. Reported by Eric Youngdale. While we're at this,
don't do error checking in the __ functions. This is consistent
with the sysv4 definitions and seems Right.
* signal/signal.h: Don't __OPTIMIZE__ sigops to __ versions. Add
prototype for __sigsuspend.
* sysdeps/posix/sigblock.c: Optimize sigmask <-> sigset_t conversions
for sigset_t == unsigned long. De-ansidecl-ify. Reformat copyright.
* sysdeps/posix/sigpause.c: Likewise.
* sysdeps/posix/sigsetmask.c: Likewise.
* sysdeps/posix/sigvec.c: Likewise.
* sysdeps/posix/sigintr.c: Reformat copyright.
* sysdeps/posix/signal.c: Check signal number out of range since
__sigismember doesn't anymore. Reformat copyright.
* sysdeps/posix/sigwait.c: Use __ versions of sigfillset, sigismember,
sigdelset, sigaction, and sigsuspend.
* stdlib/drand48-iter.c (__drand48_iterate): Cast state fragments
to the wider type before shifting.
* sysdeps/alpha/bsd-_setjmp.S: Silence assembler warning "$at used
without .set noat" in profiling hook.
* sysdeps/alpha/bsd-setjmp.S: Likewise.
* sysdeps/alpha/htonl.S: Likewise.
* sysdeps/alpha/htons.S: Likewise.
* sysdeps/alpha/s_copysign.S: Likewise.
* sysdeps/alpha/setjmp.S: Likewise.
* sysdeps/alpha/stpcpy.S: Likewise.
* sysdeps/alpha/strcat.S: Likewise.
* sysdeps/alpha/strcpy.S: Likewise.
* sysdeps/alpha/strncat.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/brk.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/clone.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/llseek.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Likewise. Rename
function to __sigsuspend and add weak alias.
* sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise. Add missing END.
* sysdeps/alpha/w_sqrt.S: Define _ERRNO_H so <errnos.h> defines EDOM.
* sysdeps/unix/execve.S: Match PSEUDO_END symbol with the symbol
SYSCALL__ actually generated.
* sysdeps/unix/sysv/linux/errnos.h [_LIBC_REENTRANT]: Reflexively
#define __set_errno, as several imported subsystems (eg. BIND) check
that the symbol is defined.
* sysdeps/unix/sysv/linux/getsysstats.c: Include <alloca.h>.
* sysdeps/alpha/memcpy.S: Temporarily remove until I can find a bug
that manifests in GCC.
Tue Nov 19 11:10:05 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/posix/writev.c (writev): COUNT parm is now int.
* sysdeps/posix/readv.c (readv): Likewise.
Tue Nov 19 15:28:29 1996 Ulrich Drepper <drepper@cygnus.com>
* nss/nss_dns/dns-network.c: Change return type of all functions
to enum nss_status.
Reported by NIIBE Yutaka.
* nss/nss_dns/dns-host.c: Update copyright.
Fri Nov 15 20:16:38 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* config.make.in: Remove definition of top_absdir.
* configure.in: Likewise. Use $(..) instead.
* Makerules (make-link): Use $(..) to find rellns-sh script.
Sat Nov 16 15:52:29 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* manual/nss.texi (Name Service Switch): Fix reference to
`frobnicate'.
Fri Nov 15 22:08:33 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
sys/mtio.h.
Mon Nov 18 05:51:13 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/generic/waitstatus.h (__WIFSIGNALED): Rename local
variable from __stat to __status to prevent shadowing.
* sunrpc/rpc/clnt.h (clntudp_create, clntudp_bufcreate): Likewise
for parameter __wait.
Reported by NIIBE Yutaka.
Mon Nov 18 02:05:38 1996 Ulrich Drepper <drepper@cygnus.com>
* misc/regexp.c: New file. Implementation of obsolete interface
to regular expression matcher (required in XPG4.2).
* misc/regexp.h: New file. Header for above.
* misc/Makefile (headers): Add regexp.h.
(routines): Add regexp.c.
Update copyright.
Sun Nov 17 21:50:24 1996 Andreas Jaeger <aj@arthur.pfalz.de>
* stdlib/tst-strtod.c (main): Add arguments for main.
* stdlib/tst-strtol.c (main): Likewise.
Sun Nov 17 21:15:05 1996 Ulrich Drepper <drepper@cygnus.com>
* configure.in: Substitute libc_cv_slibdir and libc_cv_sysconfdir
in output files.
* sysdepes/unix/sysv/linux/configure: Define libc_cv_slibdir to /lib
and sysconfdir to /etc if $prefix is /usr.
* config.make.in: Add slibdir, sysconfdir and BASH to be replaced.
* elf/Makefile ($(objpfx)ldd): Install ldd.bash.in if
$(have-bash2) is yes.
* elf/ldd.bash.in: Add copyright and various cleanups.
* elf/ldd.sh.in: Likewise.
Implement RTLD_NEXT.
* elf/dlfcn.h: Define RTLD_NEXT.
* elf/dl-deps.c: Build second searchlist which contains duplicates.
* elf/dl-lookup.c (_dl_lookup_symbol_skip): New function. Used
for RTLD_NEXT lookup.
Rewrite _dl_lookup_symbol to put common parts for both lookup
functions in a separate function.
* elf/dlsym.c: Handle RTLD_NEXT by calling _dl_lookup_symbol_skip.
* elf/link.h (struct link_map): Add l_dupsearchlist and
l_ndupsearchlist.
Add prototype for _dl_lookup_symbol_skip.
* sunrpc/Makefile (rpcsvc): Add rusers.
* sunrpc/rpcsvc/rnusers.x: Remove. Obsolteted by rusers.x.
* sunrpc/rpcsvc/rusers.x: New file.
Sun Nov 17 04:24:35 1996 Ulrich Drepper <drepper@cygnus.com>
* stdio-common/vfprintf.c [USE_IN_LIBIO] (buffered_vfprintf): Call
__libc_lock_init for local lock.
Reported by a sun <asun@zoology.washington.edu>.
[!USE_IN_LIBIO] (PAD): Optimize a bit.
1996-11-20 03:45:51 +00:00
|
|
|
AC_SUBST(libc_cv_slibdir)
|
2013-03-18 11:44:47 +00:00
|
|
|
AC_SUBST(libc_cv_rtlddir)
|
2015-11-27 15:09:45 +00:00
|
|
|
AC_SUBST(libc_cv_complocaledir)
|
2001-07-09 11:51:53 +00:00
|
|
|
AC_SUBST(libc_cv_sysconfdir)
|
2012-06-22 17:11:07 +00:00
|
|
|
AC_SUBST(libc_cv_localstatedir)
|
update from main archive 970121
1997-01-21 Paul Eggert <eggert@twinsun.com>
* posix/getopt.c (_getopt_internal): Return -1, not EOF, when args
are exhausted; this is required by POSIX.2.
* catgets/gencat.c, db/makedb.c, locale/programs/locale.c,
locale/programs/localedef.c, manual/examples/subopt.c,
posix/getopt.c, posix/getopt1.c, stdio-common/bug4.c,
sunrpc/rpcinfo.c (main): Check getopt return value against -1, not EOF.
Tue Jan 21 23:10:40 1997 Ulrich Drepper <drepper@cygnus.com>
* version.h (VERSION): Bump to 1.102.
* sysdeps/unix/sysv/linux/alpha/Dist: Add kernel_sigaction.h.
* elf/Makefile: Don't use CFLAGS-dl-load.c, but instead
CPPFLAGS-dl-load.c so that dependencies can be determined correctly.
* elf/dl-load.c: Fix comment.
* time/Banner: New file.
* time/Makefile (distribute): Add Banner.
Update from ADO tzcode1997a and tzdata1997a.
* time/antarctica: Update.
* time/australia: Update.
* time/zdump.c: Update.
* time/zic.c: Update.
* time/zone.tab: Update.
Mon Jan 20 08:38:32 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
* config.make.in (has-ldconfig): New variable.
* configure, configure.in (has_ldconfig): New substitute.
* sysdeps/unix/sysv/linux/configure.in (has_ldconfig): New,
check if $srcdir/elf/ldconfig.c exists.
* Makeconfig (rootsbindir): New, default as
$(exec_prefix)/sbin.
(rtld-version-installed-name): New, default as
ld-$(version).so.
* Makefile (install): Call `$(common-objpfx)elf/ldconfig -d'
only if $(cross-compiling) is no and $(build-shared) is yes.
* Makerules (make-shlib-link): New macro.
($(slibdir)/libfoo.so.$(libfoo.so-version)): Use
$(make-shlib-link) for symlink.
(install-rootsbin, install-rootsbin-nosubdir): New.
(install-no-libc.a-nosubdir): Add
install-rootsbin-nosubdir.
* Rules (others): Add $(install-rootsbin).
* config.make.in (rootsbindir): New.
* configure, configure.in (libc_cv_rootsbindir): New
substitute.
* elf/Makefile (others, install-rootsbin): New, set to
ldconfig.
(+link): New for static linking.
($(slibdir)/$(rtld-version-installed-name)): New.
($(slibdir)/$(rtld-installed-name)): Depend on
$(slibdir)/$(rtld-version-installed-name) and use
$(make-shlib-link) for symlink.
* sunrpc/xdr.c (xdr_string): Return FALSE if sp == NULL
while XDR_ENCODE.
* sysdeps/unix/sysv/linux/a.out.h: Use #include_next for
glibc internals.
* sysdeps/unix/sysv/linux/configure.in (libc_cv_rootsbindir):
New, set to "/sbin" if "$prefix" == "/usr".
Tue Jan 21 13:38:39 1997 Ulrich Drepper <drepper@cygnus.com>
* Makefile (distribute): Add glibcbug.in.
Reported by Philip Blundell <pjb27@cam.ac.uk>.
* elf/Makefile ($(objpfx)trusted-dirs.h): Create elf/ subdir in
build directory if necessary.
Reported by marcus@shannon.sysc.pdx.edu (Marcus G. Daniels).
1997-01-22 05:26:05 +00:00
|
|
|
AC_SUBST(libc_cv_rootsbindir)
|
|
|
|
|
2012-10-03 23:13:14 +00:00
|
|
|
if test x$use_ldconfig = xyes; then
|
|
|
|
AC_DEFINE(USE_LDCONFIG)
|
|
|
|
fi
|
1999-12-04 08:00:00 +00:00
|
|
|
AC_SUBST(use_ldconfig)
|
1998-03-29 17:03:23 +00:00
|
|
|
AC_SUBST(ldd_rewrite_script)
|
update from main archive 961119
Wed Nov 20 02:04:11 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/sigsuspend.c: Make sigsuspend a weak
alias of __sigsuspend.
* grp/grp.h: Correct comment about POSIX compliance.
* pwd/pwd.h: Likewise.
* login/utmp.h: Update copyright and pretty-print prototypes.
* sysdeps/generic/paths.h: Add _PATH_LASTLOG, _PATH_UTMP and
_PATH_WTMP from utmpbits.h.
* sysdeps/unix/sysv/linux/paths.h: Likewise.
* sysdeps/generic/utmpbits.h: Remove here.
* sysdeps/gnu/utmpbits.h: Likewise.
* misc/sys/uio.h: Place __BEGIN_DECLS correctly.
Pretty-print prototypes.
* sysdeps/unix/sysv/linux/sparc/clone.S: New file. Taken from
LinuxThreads-0.5.
Tue Nov 19 13:43:07 1996 Richard Henderson <rth@tamu.edu>
* inet/ether_hton.c: Include <string.h>.
* inet/ether_ntoh.c: Likewise.
* inet/rexec.c: Get errno, index, getpass, getlogin from headers.
* misc/search.h: Fix hcreate_r argument type (unsigned -> size_t).
* misc/sys/cdefs.h: Change __long_double_t definition from typedef
to define. Jim Nance reports problems building XEmacs otherwise.
* resolv/gethnamaddr.c: Protect h_errno redefinition.
* resolv/getnetnamadr.c: Likewise.
* resolv/herror.c: Likewise.
* sysdeps/generic/sigset.h (__SIGSETFN): Operator ## doesn't work
with -traditional. Reported by Eric Youngdale. While we're at this,
don't do error checking in the __ functions. This is consistent
with the sysv4 definitions and seems Right.
* signal/signal.h: Don't __OPTIMIZE__ sigops to __ versions. Add
prototype for __sigsuspend.
* sysdeps/posix/sigblock.c: Optimize sigmask <-> sigset_t conversions
for sigset_t == unsigned long. De-ansidecl-ify. Reformat copyright.
* sysdeps/posix/sigpause.c: Likewise.
* sysdeps/posix/sigsetmask.c: Likewise.
* sysdeps/posix/sigvec.c: Likewise.
* sysdeps/posix/sigintr.c: Reformat copyright.
* sysdeps/posix/signal.c: Check signal number out of range since
__sigismember doesn't anymore. Reformat copyright.
* sysdeps/posix/sigwait.c: Use __ versions of sigfillset, sigismember,
sigdelset, sigaction, and sigsuspend.
* stdlib/drand48-iter.c (__drand48_iterate): Cast state fragments
to the wider type before shifting.
* sysdeps/alpha/bsd-_setjmp.S: Silence assembler warning "$at used
without .set noat" in profiling hook.
* sysdeps/alpha/bsd-setjmp.S: Likewise.
* sysdeps/alpha/htonl.S: Likewise.
* sysdeps/alpha/htons.S: Likewise.
* sysdeps/alpha/s_copysign.S: Likewise.
* sysdeps/alpha/setjmp.S: Likewise.
* sysdeps/alpha/stpcpy.S: Likewise.
* sysdeps/alpha/strcat.S: Likewise.
* sysdeps/alpha/strcpy.S: Likewise.
* sysdeps/alpha/strncat.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/brk.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/clone.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/llseek.S: Likewise.
* sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Likewise. Rename
function to __sigsuspend and add weak alias.
* sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise. Add missing END.
* sysdeps/alpha/w_sqrt.S: Define _ERRNO_H so <errnos.h> defines EDOM.
* sysdeps/unix/execve.S: Match PSEUDO_END symbol with the symbol
SYSCALL__ actually generated.
* sysdeps/unix/sysv/linux/errnos.h [_LIBC_REENTRANT]: Reflexively
#define __set_errno, as several imported subsystems (eg. BIND) check
that the symbol is defined.
* sysdeps/unix/sysv/linux/getsysstats.c: Include <alloca.h>.
* sysdeps/alpha/memcpy.S: Temporarily remove until I can find a bug
that manifests in GCC.
Tue Nov 19 11:10:05 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/posix/writev.c (writev): COUNT parm is now int.
* sysdeps/posix/readv.c (readv): Likewise.
Tue Nov 19 15:28:29 1996 Ulrich Drepper <drepper@cygnus.com>
* nss/nss_dns/dns-network.c: Change return type of all functions
to enum nss_status.
Reported by NIIBE Yutaka.
* nss/nss_dns/dns-host.c: Update copyright.
Fri Nov 15 20:16:38 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* config.make.in: Remove definition of top_absdir.
* configure.in: Likewise. Use $(..) instead.
* Makerules (make-link): Use $(..) to find rellns-sh script.
Sat Nov 16 15:52:29 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* manual/nss.texi (Name Service Switch): Fix reference to
`frobnicate'.
Fri Nov 15 22:08:33 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
sys/mtio.h.
Mon Nov 18 05:51:13 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/generic/waitstatus.h (__WIFSIGNALED): Rename local
variable from __stat to __status to prevent shadowing.
* sunrpc/rpc/clnt.h (clntudp_create, clntudp_bufcreate): Likewise
for parameter __wait.
Reported by NIIBE Yutaka.
Mon Nov 18 02:05:38 1996 Ulrich Drepper <drepper@cygnus.com>
* misc/regexp.c: New file. Implementation of obsolete interface
to regular expression matcher (required in XPG4.2).
* misc/regexp.h: New file. Header for above.
* misc/Makefile (headers): Add regexp.h.
(routines): Add regexp.c.
Update copyright.
Sun Nov 17 21:50:24 1996 Andreas Jaeger <aj@arthur.pfalz.de>
* stdlib/tst-strtod.c (main): Add arguments for main.
* stdlib/tst-strtol.c (main): Likewise.
Sun Nov 17 21:15:05 1996 Ulrich Drepper <drepper@cygnus.com>
* configure.in: Substitute libc_cv_slibdir and libc_cv_sysconfdir
in output files.
* sysdepes/unix/sysv/linux/configure: Define libc_cv_slibdir to /lib
and sysconfdir to /etc if $prefix is /usr.
* config.make.in: Add slibdir, sysconfdir and BASH to be replaced.
* elf/Makefile ($(objpfx)ldd): Install ldd.bash.in if
$(have-bash2) is yes.
* elf/ldd.bash.in: Add copyright and various cleanups.
* elf/ldd.sh.in: Likewise.
Implement RTLD_NEXT.
* elf/dlfcn.h: Define RTLD_NEXT.
* elf/dl-deps.c: Build second searchlist which contains duplicates.
* elf/dl-lookup.c (_dl_lookup_symbol_skip): New function. Used
for RTLD_NEXT lookup.
Rewrite _dl_lookup_symbol to put common parts for both lookup
functions in a separate function.
* elf/dlsym.c: Handle RTLD_NEXT by calling _dl_lookup_symbol_skip.
* elf/link.h (struct link_map): Add l_dupsearchlist and
l_ndupsearchlist.
Add prototype for _dl_lookup_symbol_skip.
* sunrpc/Makefile (rpcsvc): Add rusers.
* sunrpc/rpcsvc/rnusers.x: Remove. Obsolteted by rusers.x.
* sunrpc/rpcsvc/rusers.x: New file.
Sun Nov 17 04:24:35 1996 Ulrich Drepper <drepper@cygnus.com>
* stdio-common/vfprintf.c [USE_IN_LIBIO] (buffered_vfprintf): Call
__libc_lock_init for local lock.
Reported by a sun <asun@zoology.washington.edu>.
[!USE_IN_LIBIO] (PAD): Optimize a bit.
1996-11-20 03:45:51 +00:00
|
|
|
|
Update.
1997-09-25 00:23 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-profile.c: Correct implementation.
* io/ftwtest-sh: Don't depend on TMPDIR == /tmp.
* locale/setlocale.c: Rewrite a bit for more clarity.
* math/Makefile (libm-calls): Add w_exp2.
* math/math_private.h: Add prototypes for __ieee754_exp2{,f,l}.
* sysdeps/libm-i387/s_exp2.S: Change name to __ieee754_exp2.
* sysdeps/libm-i387/s_exp2f.S: Likewise.
* sysdeps/libm-i387/s_exp2l.S: Likewise.
* sysdeps/libm-ieee754/k_standard.c: Add error cases for exp2.
* string/bits/string2.h (__strcpy_small): Optimize.
(__stpcpy_small): Likewise.
(strncpy): Use variable for dest argument since it's used more than
once.
(strncat): Likewise.
(strcmp): Add optimization for this function.
* sysdeps/i386/i486/string.h (strlen): Correctly use __builtin_strlen.
(__strcpy_small): Optimize.
(__stpcpy_small): Likewise.
(__stpcpy_c): Correctly use __mempcpy_* macros.
(__mempcpy_by2, __mempcpy_by4, __mempcpy_byn): Return pointer to
byte following last copied.
(strncat): Use variable for dest argument since it's used more than
once.
(strcmp): Add optimization for this function.
* sysdeps/i386/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Use
.text and .previous to select correct section.
1997-09-23 19:56 Philip Blundell <Philip.Blundell@pobox.com>
* configure.in: Add `--disable-versioning' option to suppress the
use of symbol versions even if binutils claims to support it.
1997-09-24 20:10 Philip Blundell <Philip.Blundell@pobox.com>
* csu/Makefile (before-compile): Don't try to build abi-tags.h if
not using ELF.
1997-09-21 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/sofini.c [HAVE_DWARF2_UNWIND_INFO]: Supply termination for
the frame unwind info section.
* elf/soinit.c [HAVE_DWARF2_UNWIND_INFO]: Register and unregister
the frame unwind info.
* config.h.in (HAVE_DWARF2_UNWIND_INFO): Add #undef.
* configure.in: Check whether gcc supports DWARF2 unwind info.
* libc.map: Export frame handling tables.
1997-09-10 06:56 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/unix/sysv/linux/powerpc/bits/kernel_termios.h:
Use the size of the kernel's termios structure for ioctls.
* sysdeps/powerpc/dl-machine.h: Prepare for library profiling.
* sysdeps/powerpc/bits/mathinline.h: Add slightly slower versions
of the C9X FP comparison macros. Delete 'fabs' and 'sqrt' inline
routines, because gcc has them as internals.
* sysdeps/powerpc/Makefile (pic-ccflags): Define this instead of
CFLAGS-.os.
* sysdeps/powerpc/bzero.S: New file.
* sysdeps/powerpc/strcat.c: New file.
* sysdeps/powerpc/strcpy.S: New file.
* sysdeps/powerpc/stpcpy.S: New file.
* math/Makefile: Add atest_exp2, test-reduce.
* math/atest_exp2.c: New file.
* math/test-reduce.c: New file.
* sysdeps/libm-ieee754/Dist: New file.
* sysdeps/libm-ieee754/s_exp2.c: New file.
* sysdeps/libm-ieee754/s_exp2f.c: New file.
* sysdeps/libm-ieee754/t_exp2.h: New file.
* sysdeps/libm-ieee754/t_exp2f.h: New file.
* math/libm-test.c (exp2_test): Add some more tests.
* Rules: Use empty.os instead of empty.o, since it gets linked into
libc.so...
* configure.in: Add --disable-static to disable building .a files.
* config.make.in: Substitute the new variable.
* Makeconfig: Don't build .o files if not building .a files.
* elf/dl-runtime.c (fixup): Factor out call to elf_machine_relplt.
(profile_fixup): Likewise.
1997-09-23 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* posix/globtest.c (main): Change to directory passed as first
argument.
* posix/globtest.sh: Don't cd before running the program, instead
pass testdir as argument, so that $common_objpfx remains valid.
1997-09-23 18:01 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/nis_call.c (__do_niscall2): Fix multiple Server support.
* nis/nis_findserver.c: Save latest working sockaddr_in.
1997-09-17 22:07 Zack Weinberg <zack@rabi.phys.columbia.edu>
* configure.in: Automatically determine whether as and ld are the
GNU versions.
(options): --with-gnu-{as,ld,binutils} replaced by
single option --with-binutils=PATH specifying a -B option to gcc.
* aclocal.m4: Two new macros defined, LIBC_PROG_FOO_GNU and
LIBC_PROG_BINUTILS.
* configure.in: Allow the user to force configuration for
unsupported platforms with an undocumented option.
1997-09-22 16:55 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* sunrpc/get_myaddr.c (get_myaddress): Avoid loopback interfaces,
return loopback address only if there is no other interface.
* nis/Makefile: Add nis_callback libnsl-routines.
* nis/nis_add.c: Use new __do_niscall* interface.
* nis/nis_cache.c: Likewise.
* nis/nis_checkpoint.c: Likewise.
* nis/nis_lookup.c: Likewise.
* nis/nis_mkdir.c: Likewise.
* nis/nis_modify.c: Likewise.
* nis/nis_ping.c: Likewise.
* nis/nis_remove.c: Likewise.
* nis/nis_rmdir.c: Likewise.
* nis/nis_server.c: Likewise.
* nis/nis_util.c: Likewise.
* nis/rpcsvc/nis.h: Make C++ safe.
* nis/nss_nisplus/nisplus-publickey.c (getsecretkey): Fix use
of variables.
* nis/nis_findserv.c: Make thread safe.
* nis/nis_call.c: Add support for callback, Fix use of variables.
* nis/nis_table.c: Add support for callback, FOLLOW_PATH and
ALL_RESULTS.
* nis/nis_callback.c: New, callback functions.
* nis/nis_intern.h: Add callback declarations.
1997-09-20 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* string/bits/string2.h: Fix logic in preprocessor directive.
(__strsep_1c, __strsep_g): Don't declare __retval as pointing to
const, to save a cast and a possible warning.
1997-09-22 04:12 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/i386/i486/atomicity.h (exchange_and_add): Really address
memory in xadd not %1.
1997-09-21 13:56 Ulrich Drepper <drepper@cygnus.com>
* manual/maint.texi (Supported Configurations): Add SPARC64 to
list of supported platforms.
1997-09-24 23:03:42 +00:00
|
|
|
AC_SUBST(static)
|
1995-03-10 04:12:12 +00:00
|
|
|
AC_SUBST(shared)
|
2004-12-22 20:10:10 +00:00
|
|
|
|
2009-04-02 17:00:46 +00:00
|
|
|
AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
|
|
|
|
[libc_cv_pic_default=yes
|
Update.
1997-11-11 21:30 Ulrich Drepper <drepper@cygnus.com>
* include/sys/stat.h: Define stat, fstat, lstat and *64 variants
as macros so the the library compiles correctly even without
optimization.
* io/fstat.c: Undef fstat.
* io/fstat64.c: Undef fstat64
* io/lstat.c: Undef lstat.
* io/lstat64.c: Undef lstat64
* io/stat.c: Undef stat.
* io/stat64.c: Undef stat64
* io/fts.c: Include <include/sys/stat.h> to get macro definitions.
* io/ftw.c: Likewise.
* io/getdirname.c: Likewise.
* Makefile (install): Run test-installation.pl if possible.
* db2/Makefile: Update from db-2.3.12.
* db2/db.h: Likewise.
* db2/db_int.h: Likewise.
* db2/btree/bt_cursor.c: Likewise.
* db2/btree/bt_delete.c: Likewise.
* db2/btree/bt_open.c: Likewise.
* db2/btree/bt_put.c: Likewise.
* db2/btree/bt_rec.c: Likewise.
* db2/btree/bt_recno.c: Likewise.
* db2/btree/bt_search.c: Likewise.
* db2/btree/bt_split.c: Likewise.
* db2/btree/bt_stat.c: Likewise.
* db2/btree/btree.src: Likewise.
* db2/btree/btree_auto.c: Likewise.
* db2/btree/bt_cursor.c: Likewise.
* db2/btree/bt_delete.c: Likewise.
* db2/btree/bt_open.c: Likewise.
* db2/btree/bt_put.c: Likewise.
* db2/btree/bt_rec.c: Likewise.
* db2/btree/bt_recno.c: Likewise.
* db2/btree/bt_search.c: Likewise.
* db2/btree/bt_split.c: Likewise.
* db2/btree/bt_stat.c: Likewise.
* db2/btree/btree.src: Likewise.
* db2/btree/btree_auto.c: Likewise.
* db2/common/db_appinit.c: Likewise.
* db2/common/db_apprec.c: Likewise.
* db2/common/db_byteorder.c: Likewise.
* db2/common/db_region.c: Likewise.
* db2/db/db.c: Likewise
* db2/db/db.src: Likewise
* db2/db/db_auto.c: Likewise
* db2/db/db_dispatch.c: Likewise
* db2/db/db_dup.c: Likewise
* db2/db/db_overflow.c: Likewise
* db2/db/db_pr.c: Likewise
* db2/db/db_rec.c: Likewise
* db2/db/db_ret.c: Likewise
* db2/db/db_thread.c: Likewise
* db2/db185/db185.c: Likewise.
* db2/hash/hash.c: Likewise.
* db2/hash/hash.src: Likewise.
* db2/hash/hash_auto.c: Likewise.
* db2/hash/hash_dup.c: Likewise.
* db2/hash/hash_page.c: Likewise.
* db2/hash/hash_rec.c: Likewise.
* db2/include/btree_auto.h: Likewise.
* db2/include/btree_ext.h: Likewise.
* db2/include/clib_ext.h: Likewise.
* db2/include/common_ext.h: Likewise.
* db2/include/db.h.src: Likewise.
* db2/include/db_am.h: Likewise.
* db2/include/db_auto.h: Likewise.
* db2/include/db_cxx.h: Likewise.
* db2/include/db_ext.h: Likewise.
* db2/include/db_int.h.src: Likewise.
* db2/include/hash.h: Likewise.
* db2/include/hash_auto.h: Likewise.
* db2/include/hash_ext.h: Likewise.
* db2/include/lock.h: Likewise.
* db2/include/lock_ext.h: Likewise.
* db2/include/log.h: Likewise.
* db2/include/log_ext.h: Likewise.
* db2/include/mp.h: Likewise.
* db2/include/mp_ext.h: Likewise.
* db2/include/mutex_ext.h: Likewise.
* db2/include/os_ext.h: Likewise.
* db2/include/os_func.h: Likewise.
* db2/include/txn.h: Likewise.
* db2/include/txn_ext.h: Likewise.
* db2/lock/lock.c: Likewise.
* db2/lock/lock_deadlock.c: Likewise.
* db2/log/log.c: Likewise.
* db2/log/log_archive.c: Likewise.
* db2/log/log_auto.c: Likewise.
* db2/log/log_findckp.c: Likewise.
* db2/log/log_get.c: Likewise.
* db2/log/log_put.c: Likewise.
* db2/log/log_rec.c: Likewise.
* db2/log/log_register.c: Likewise.
* db2/mp/mp_bh.c: Likewise.
* db2/mp/mp_fget.c: Likewise.
* db2/mp/mp_fopen.c: Likewise.
* db2/mp/mp_fput.c: Likewise.
* db2/mp/mp_fset.c: Likewise.
* db2/mp/mp_open.c: Likewise.
* db2/mp/mp_pr.c: Likewise.
* db2/mp/mp_region.c: Likewise.
* db2/mp/mp_sync.c: Likewise.
* db2/mutex/mutex.c: Likewise.
* db2/os/os_abs.c: Likewise.
* db2/os/os_dir.c: Likewise.
* db2/os/os_fid.c: Likewise.
* db2/os/os_fsync.c: Likewise.
* db2/os/os_func.c: Likewise.
* db2/os/os_map.c: Likewise.
* db2/os/os_oflags.c: Likewise.
* db2/os/os_open.c: Likewise.
* db2/os/os_rpath.c: Likewise.
* db2/os/os_rw.c: Likewise.
* db2/os/os_seek.c: Likewise.
* db2/os/os_sleep.c: Likewise.
* db2/os/os_stat.c: Likewise.
* db2/os/os_unlink.c: Likewise.
* db2/progs/db_deadlock/db_deadlock.c: Likewise.
* db2/progs/db_dump/db_dump.c: Likewise.
* db2/progs/db_load/db_load.c: Likewise.
* db2/progs/db_recover/db_recover.c: Likewise.
* db2/progs/db_stat/db_stat.c: Likewise.
* db2/txn/txn.c: Likewise.
* db2/txn/txn_auto.c: Likewise.
* db2/txn/txn_rec.c: Likewise.
* db2/os/db_os_abs.c: Removed.
* db2/os/db_os_dir.c: Removed.
* db2/os/db_os_fid.c: Removed.
* db2/os/db_os_lseek.c: Removed.
* db2/os/db_os_mmap.c: Removed.
* db2/os/db_os_open.c: Removed.
* db2/os/db_os_rw.c: Removed.
* db2/os/db_os_sleep.c: Removed.
* db2/os/db_os_stat.c: Removed.
* db2/os/db_os_unlink.c: Removed.
* libio/stdio.h (fopen): Add __restrict to parameters.
* manual/process.texi (system): Describe behaviour for NULL argument.
* stdio-common/printf-parse.h: Parse hh modifier.
* stdio-common/vfprintf.c: Handle hh modifier.
* stdio-common/vfscanf.c: Likewise.
* manual/stdio.texi: Describe hh modifier for scanf/printf.
* math/complex.h: Don't define _Imaginary_I, but instead _Complex_I.
gcc does no yet know the `imaginary' keyword.
* math/test-math.c: Add little test for know gcc bug.
* math/tgmath.h: Make complex versions of log10() only available
if __USE_GNU.
* stdlib/test-canon.c: Fix typo.
* sysdeps/generic/setenv.c: Avoid compilation warnings.
Reported by Jim Meyering.
* sysdeps/generic/bits/errno.h: EILSEQ is an ISO C error number.
* sysdeps/mach/hurd/bits/errno.h: Likewise.
* sysdeps/standalone/bits/errno.h: Likewise.
* sysdeps/unix/sysv/linux/bits/errno.h: Likewise.
* sysdeps/i386/i586/memcpy.S: New file.
* sysdeps/i386/i586/mempcpy.S: New file.
* sysdeps/i386/i586/memset.S: Fix typo.
* sysdeps/posix/getcwd.c: Define HAVE_MEMPCPY for _LIBC. Add casts.
* sysdeps/posix/system.c: Add comment to explain code.
* sysdeps/wordsize-32/inttypes.h: Include <stddef.h> for wchar_t.
Define PTRDIFF_{MIN,MAX}, SIG_ATOMIC_{MIN,MAX}, SIZE_MAX,
WCHAR_{MIN,MAX}, WINT_{MIN,MAX}.
Define wcstoimax, wcstoumax.
* sysdeps/wordsize-64/inttypes.h: Likewise.
* wcsmbs/wchar.h: Define WCHAR_{MIN,MAX} if not already defined.
Declare __wcsto{l,ul,ll,ull}_internal only if not already done.
* time/Makefile (routines): Add strfxtime.
* time/strftime.c: Implement %F and %f format.
* time/strfxtime.c: New file.
* time/time.h: Define new types and symbols from ISO C 9X.
* time/mktime.c: Little comment correction.
1997-11-10 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/libm-ieee754/s_sincosl.c: Fix typo.
* sysdeps/libm-ieee754/s_tanl.c: Fix typo.
* sysdeps/libm-ieee754/s_floorl.c: Correct typos.
* sysdeps/libm-ieee754/e_remainderl.c: Replace
EXTRACT_LDOUBLE_WORDS by GET_LDOUBLE_WORDS.
* sysdeps/libm-ieee754/e_atan2l.c: Replace EXTRACT_LDOUBLE_WORDS
by GET_LDOUBLE_WORDS.
* sysdeps/libm-ieee754/s_scalbnl.c: Replace ";" by "," for correct
variable declaration.
* sysdeps/libm-ieee754/s_scalblnl.c: Likewise.
* sysdeps/libm-ieee754/s_lrint.c (__lrint): Correct function.
* math/libm-test.c (sqrt_test): Add test for sqrt (0.25).
(asin_test): Add more test.
1997-11-10 23:34 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/libm-ieee754/e_asin.c: Add braces to make code clearer
and to not confuse the poor compiler.
* sysdeps/libm-ieee754/e_asinf.c: Likewise.
Reported by vertex@cagent.com.
1997-11-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/dl-lookup.c (do_lookup): Don't accept the base version if we
require a specific one.
* libio/oldfreopen.c: Bind old symbols to version GLIBC_2.0.
* libio/oldiofopen.c: Likewise.
* libio/oldstdfiles.c: Likewise.
* libc.map: Export them.
1997-11-10 07:40 H.J. Lu <hjl@gnu.ai.mit.edu>
* stdlib/exit.c (exit): Handle recursive calls to exit ().
1997-11-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/m68k/fpu/s_llrint.c: Fixed to take double argument
instead of long double.
* sysdeps/m68k/fpu/s_llrintf.c: New file.
* sysdeps/m68k/fpu/s_llrintl.c: New file.
* sysdeps/libm-ieee754/s_llrint.c: Make compilable and fix
overflow condition.
* sysdeps/libm-ieee754/s_llrintf.c: Fix overflow condition.
* sysdeps/libm-ieee754/s_llrintl.c: Likewise.
* sysdeps/libm-ieee754/s_llround.c: Likewise.
* sysdeps/libm-ieee754/s_llroundf.c: Likewise.
* sysdeps/libm-ieee754/s_llroundl.c: Likewise.
* sysdeps/libm-ieee754/s_lrint.c: Likewise.
* sysdeps/libm-ieee754/s_lrintf.c: Likewise.
* sysdeps/libm-ieee754/s_lrintl.c: Likewise.
* sysdeps/libm-ieee754/s_lround.c: Likewise.
* sysdeps/libm-ieee754/s_lroundf.c: Likewise.
* sysdeps/libm-ieee754/s_lroundl.c: Likewise.
* math/libm-test.c: Test all three variants of lrint and llrint.
Fix typos in lround and llround tests. Add tests for boundary
cases for lrint and llround.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* manual/arith.texi: Misc doc fixes.
* manual/ctype.texi: Likewise.
* manual/pattern.texi: Likewise.
* manual/terminal.texi: Likewise.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/xstatconv.c: Use struct assignment
instead of memcpy to let the compiler use whatever it regards as
optimal.
* sysdeps/unix/sysv/linux/alpha/xstatconv.c: Likewise.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/Makefile (sysdep_headers)
[$(subdir)=misc]: Add sys/prctl.h.
* sysdeps/unix/sysv/linux/Dist: Distribute it.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* io/ftwtest-sh: Don't use the unknown which command, instead try
pwd as /bin/pwd and /usr/bin/pwd.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* manual/maint.texi (Tools for Installation): Don't recommend
broken version 3.76.1 of make.
(Porting): Fix wording.
1997-11-06 06:13 H.J. Lu <hjl@gnu.ai.mit.edu>
* config.make.in (build-pic-default): New, defined with
pic_default.
* configure.in (pic_default): New, set to yes if PIC is
default.
* Makeconfig (CPPFLAGS-.o, CPPFLAGS-.op, CPPFLAGS-.og,
CPPFLAGS-.ob): Add -DPIC if $(build-pic-default) is yes.
1997-11-09 18:15 Ulrich Drepper <drepper@cygnus.com>
* Makerules (libc.so): Fix typo.
* csu/Makefile (CFLAGS-initfini.s): Correctly fix moving function
definition. Patch by Zack Weinberg <zack@rabi.phys.columbia.edu>.
* stdlib/strtod.c: Handle numbers like 0.0e10000 correctly which
produce 0.0. Reported by Joe Keane <jgk@jgk.org>.
* sysdeps/libm-ieee754/s_ceill.c: Fix typos.
* sysdeps/libm-ieee754/s_llrint.c: Correct code, it never worked.
1997-11-06 07:00 H.J. Lu <hjl@gnu.ai.mit.edu>
* sysdeps/unix/sysv/i386/i686/time.S: Removed.
1997-11-08 14:07 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/libnsl.map: Add __do_niscall2 for nis_cachemgr.
* nis/nis_call.c: Set UDP resend timeout correct.
* nis/nss_compat/compat-grp.c: Rewritten to make it faster.
* nis/nss_compat/compat-pwd.c: Likewise.
* nis/nss_compat/compat-spwd.c: Likewise.
* nis/ypclnt.c: Fix UDP resend timeout, fix yp_bind/do_ypcall
interaction.
* inet/protocols/routed.h: Include sys/socket.h.
* inet/protocols/talkd.h: Likewise.
* inet/protocols/timed.h: Include rpc/types.h.
* sunrpc/rpc/pmap_clnt.h: Include rpc/clnt.h.
1997-11-06 01:39 Ulrich Drepper <drepper@cygnus.com>
* Makerules (libc.so): Add missing closing brace.
1997-11-05 Brendan Kehoe <brendan@lisa.cygnus.com>
* libio.h (__P): Name its arg `p' instead of `params'.
This was added solely to work around problems with
the definition of __P in the Solaris math.h header.
1997-11-12 00:06:02 +00:00
|
|
|
cat > conftest.c <<EOF
|
Update.
1997-12-22 18:10 Ulrich Drepper <drepper@cygnus.com>
* configure.in: Stop with error if --disable-static is used when
the shared lib uses this library.
* gen-FAQ.pl: I've perl installed in /usr/bin.
* include/bits/xopen_lim.h (STREAM_MAX): Define using FOPEN_MAX.
Fix Unix98 conformance problems in the headers.
* catgets/nl_types.h: Define nl_item.
* grp/grp.h: Define gid_t.
* include/features.h [_POSIX_C_SOURCE]: Don't define _XOPEN_SOURCE.
* include/nl_types.h: New file.
* include/ulimit.h: New file.
* io/fcntl.h: Include sys/stat.h for Unix98. Don't define locking
constants in POSIX mode.
* io/utime.h: Get definition for time_t.
* io/sys/stat.h: Define dev_t, gid_t, ino_t, mode_t, nlink_t, off_t,
uid_t, pid_t. Define D_IFLNK and S_IFSOCK only if !__USE_UNIX98.
* libio/stdio.h: Define va_list. Make snprintf also available is
__USE_UNIX98. Declare getopt function and variables.
* locale/langinfo.h: Include nl_types.h. Don't define nl_item.
Define CODESET, CRNCYSTR, RADIXCHAR and THOUSEP as aliases.
* math/math.h: Defined M_* constants as double for Unix98 mode.
* posix/fnmatch.h: Pretty print. Define FNM_NOSYS.
* posix/glob.h: Pretty print. Define GLOB_NOSYS.
* posix/regex.h: Define REG_NOSYS.
* posix/wordexp.h: Define WRDE_NOSYS.
* posix/unistd.h: Define _POSIX2_VERSION. Define _XOPEN_VERSION to
500 for Unix98.
* posix/sys/types.h: Alloc dev_t, mode_t, nlink_t to be defined
somewhere else as well. Define clock_t for Unix98.
* posix/sys/wait.h: Define pid_t.
* pwd/pwd.h: Define gid_t, uid_t.
* resource/Makefile (headers): Add ulimit.h.
* resource/ulimit.h: New file.
* sysdeps/generic/ulimit.c: Define according to X/Open using varargs
instead of second argument.
* sysdeps/unix/bsd/ulimit.c: Likewise. Use UL_* constants.
* sysdeps/unix/sysv/linux/ulimit.c: Likewise.
* resource/sys/resource.h: Don't declare ulimit here, include ulimit.h.
* signal/signal.h: Define pid_t.
* string/string.h: Don't declare BSD string functions in POSIX mode.
* sysdeps/generic/bits/confname.h: Define _PC_VDISABLE. Add
_SC_XOPEN_LEGACY, _SC_XOPEN_REALTIME and _SC_XOPEN_REALTIME_THREADS.
* sysdeps/unix/sysv/linux/bits/termios.h: Clean namespace for Unix98
and POSIX.
* inet/test_ifindex.c: Change test so that it does not fail for
interface aliases.
* locale/programs/locale.c (show_info): Use correct cast sequence
for 64bit machines.
* malloc/malloc.c: __malloc_initialized now signals three states:
uninitialized, initializing, initialized. Used in mcheck.
* malloc/mcheck.c (mabort): Add '\n' to messages.
(mcheck): Allow installation when malloc is uninitialized or is
just initializing.
* manual/memory.texi: Explain mtrace output a bit more.
* math/libm-test.c: Add more epsilons.
* misc/regexp.h (compile): Remove __ prefix from parameter names.
* nis/nss_nis/nis-ethers.c (internal_nis_getetherent_r): Use strncpy
instead of strcpy for security.
* nis/nss_nis/nis-proto.c (internal_nis_getprotoent_r): Likewise.
* nis/nss_nis/nis-rpc.c (internal_nis_getrpcent_r): Likewise.
* nis/nss_nis/nis-service.c (internal_nis_getservent_r): Likewise.
* nss/digits_dots.c: Pretty print.
* posix/getconf.c (vars): Add symbols for programming environment
recognition. Recognize --version.
* sysdeps/generic/sysconf.c: Handle _SC_XBS5_*, _SC_XOPEN_LEGACY,
_SC_XOPEN_REALTIME, and _SC_XOPEN_REALTIME_THREADS.
* sysdeps/posix/sysconf.c: Handle _SC_XBS5_* and new _XOPEN_* symbols.
* sysdeps/generic/bits/stdio_lim.h: Implement handling of
__need_FOPEN_MAX.
* sysdeps/unix/sysv/linux/stdio_lim.h.in: Likewise.
* sysdeps/posix/mk-stdiolim.c: Change to generate file handling
__need_FOPEN_MAX.
* sysdeps/unix/sysv/linux/Dist: Add rt_sigpending.c.
* sysdeps/unix/sysv/linux/rt_sigpending.c: New file.
* sysdeps/unix/sysv/linux/alpha/bits/types.h: Define __ipc_pid_t.
* sysdeps/unix/sysv/linux/bits/types.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h: Likewise.
* sysdeps/unix/sysv/linux/bits/msq.h: Use __ipc_pid_t.
* sysdeps/unix/sysv/linux/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/types.h: New file.
* sysdeps/wordsize-32/inttypes.h: Add SCNd8, SCNi8, SCNo8, SCNx8,
SCNu*.
* sysdeps/wordsize-64/inttypes.h: Likewise.
* time/africa: Update from tzdata1997j.
* time/antarctica: Likewise.
* time/asia: Likewise.
* time/australasia: Likewise.
* time/backward: Likewise.
* time/etcetera: Likewise.
* time/europe: Likewise.
* time/factory: Likewise.
* time/northamerica: Likewise.
* time/pacificnew: Likewise.
* time/southamerica: Likewise.
* time/tzfile.h: Update from tzcode1997h.
* time/zic.c: Likewise.
* wcsmbs/wchar.h: Get definition of FILE. Define `struct tm' tag.
Declare wcwidth and wcswidth for __USE_XOPEN. Declare the
isw*() functions for Unix98.
* wctype/towctrans.c: Define as __towctrans, make towctrans weak alias.
* wctype/wctype.h: Declare isw*() functions also if __need_iswxxx
is defined.
1997-12-21 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* locale/duplocale.c: Increase usage_count only if less than
MAX_USAGE_COUNT.
* locale/freelocale.c: Test usage_count against UNDELETABLE, not
MAX_USAGE_COUNT.
* locale/setlocale.c: Likewise.
1997-12-20 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* Makefile ($(inst_includedir)/gnu/stubs.h): Use a more direct
dependency to make it easier to install it selectively.
* Makerules (.SUFFIXES): Don't define any suffixes.
1997-12-20 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/fstatfs64.c: Emulate using fstatfs.
* sysdeps/generic/statfs64.c: Emulate using statfs.
* sysdeps/generic/getrlimit64.c: Emulate using getrlimit.
* sysdeps/generic/setrlimit64.c: Emulate using setrlimit.
* sysdpes/generic/ftruncate64.c: New file.
* sysdpes/generic/truncate64.c: New file.
* sysdeps/generic/bits/stat.h: Add LFS support.
* sysdeps/generic/bits/statfs.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/bits/resource.h (RLIM_INFINITY)
[__USE_FILE_OFFSET64]: Make long long constant.
(RLIM64_INFINITY): Likewise.
* sysdeps/unix/sysv/linux/bits/resource.h (RLIM_INFINITY): Correct
for LFS support.
(RLIM64_INFINITY) [__USE_LARGEFILE64]: Define.
* sysdeps/generic/bits/resource.h: Likewise.
* misc/Makefile (routines): Add truncate64 and ftruncate64.
* include/features.h: Don't prevent LFS support from defining BSD
and SYSV things.
* dirent/dirent.h [__USE_FILE_OFFSET64]: Don't use xxx64 names.
* io/ftw.h [__USE_FILE_OFFSET64]: Likewise.
* io/sys/stat.h [__USE_FILE_OFFSET64]: Likewise.
* sysdeps/unix/sysv/linux/alpha/syscalls.list: Add xxx64 alias for
fstatfs, statfs, getrlimit, setrlimit, ftruncate and truncate.
* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/alpha/fstatfs64.c: New file.
* sysdeps/unix/sysv/linux/alpha/statfs64.c: New file.
* sysdeps/unix/sysv/linux/alpha/getrlimit64.c: New file.
* sysdeps/unix/sysv/linux/alpha/setrlimit64.c: New file.
* sysdeps/unix/sysv/linux/alpha/ftruncate64.c: New file.
* sysdeps/unix/sysv/linux/alpha/truncate64.c: New file.
* sysdeps/unix/sysv/linux/alpha/readdir.c: New file.
* sysdeps/unix/sysv/linux/alpha/readdir64.c: New file.
* sysdeps/unix/sysv/linux/alpha/readdir64_r.c: New file.
* sysdeps/unix/sysv/linux/alpha/readdir_r.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/fstatfs64.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/statfs64.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/getrlimit64.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/setrlimit64.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/ftruncate64.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/truncate64.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/readdir.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/readdir64.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/readdir64_r.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/readdir_r.c: New file.
* sysdeps/unix/sysv/linux/fxstat64.c: New file.
* sysdeps/unix/sysv/linux/lxstat64.c: New file.
* sysdeps/unix/sysv/linux/xstat64.c: New file.
* sysdeps/unix/sysv/linux/readdir64.c: New file.
* sysdeps/unix/sysv/linux/readdir64_r.c: New file.
* sysdeps/unix/sysv/linux/getdents64.c: New file.
* sysdeps/unix/sysv/linux/Makefile (sysdep_routines)
[$(subdir)=dirent]: Add getdents64.
* sysdeps/unix/sysv/linux/Dist: Add getdents64.c.
* sysdeps/unix/sysv/linux/xstatconv.c: LFS support.
1997-12-18 12:07 Philip Blundell <pb@nexus.co.uk>
* sysdeps/generic/bits/statfs.h (struct statfs64): Added.
* sysdeps/generic/getrlimit.c: Include <sys/types.h>.
* sysdeps/generic/getrlimit64.c: Likewise.
* sysdeps/generic/setrlimit.c: Likewise.
* sysdeps/generic/setrlimit64.c: Likewise.
1997-12-17 13:57 Philip Blundell <pb@nexus.co.uk>
* sysdeps/unix/sysv/linux/siglist.c: Fix compile problem if not
using versioning.
* sysdeps/generic/waitid.c: Include <sys/types.h> for id_t.
* sysdeps/standalone/arm/bits/errno.h (EBUSY): Added.
1997-12-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* locale/programs/ld-ctype.c (ctype_output): Clear out the padding
after the codeset name.
1997-12-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Add get_kernel_syms.
1997-12-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/testrtsig.h (kernel_has_rtsig): Make
static.
* sysdeps/unix/sysv/linux/testrtsig.h (kernel_has_rtsig):
Likewise. Fix condition.
1997-12-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libio/Makefile (routines) [$(versioning)=yes]: Add oldiofdopen.
1997-12-15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/m68k/fpu/bits/mathinline.h: Don't define exp2 inline.
Define scalbln{,f,l} under __USE_ISOC9X, not __USE_MISC.
1997-12-15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/powerpc/syscall.S: Put back.
* sysdeps/unix/sysv/linux/powerpc/sigreturn.S: Delete this
instead. Oops.
1997-12-16 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* configure.in (libc_cv_gcc_alpha_ng_prefix): Correct quoting.
1997-12-16 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* math/libm-test.c (catanh_test): Change epsilon.
Reported by H.J. Lu.
1997-12-14 19:39 H.J. Lu <hjl@gnu.org>
* libc.map (__getpid): Added for linuxthreads.
1997-12-13 21:09 H.J. Lu <hjl@gnu.org>
* configure.in (HAVE_DWARF2_UNWIND_INFO_STATIC): Define
it if gcc uses static variable in DWARF2 unwind information
for exception support.
* config.h.in (HAVE_DWARF2_UNWIND_INFO_STATIC): New.
* elf/soinit.c (__libc_global_ctors, _fini): Handle
HAVE_DWARF2_UNWIND_INFO_STATIC.
* libc.map (__register_frame*, __deregister_frame*): Make them
global.
1997-12-15 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* math/libm-test.c: Add more tests for "normal" values.
1997-12-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* stdio-common/printf_fphex.c: Fix printing of long double number
with a biased exponent of zero. Fix rounding.
1997-12-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sunrpc/rpc_main.c: Accept new flag -$.
* sunrpc/Makefile (rpcgen-cmd): Pass it here.
1997-12-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* Makefile ($(inst_slibdir)/libc-$(version).so): Install the
dynamic linker first, in case the interface has changed.
1997-12-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* nss/nss_files/files-alias.c (get_next_alias): Fix parameter
order.
1997-12-12 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* math/tgmath.h: Check for double first, for architectures where
sizeof (long double) == sizeof (double).
1997-12-07 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* math/libm-test.c: New tests for "normal" values added for most
functions.
1997-12-22 20:53:38 +00:00
|
|
|
#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
|
Update.
1997-11-11 21:30 Ulrich Drepper <drepper@cygnus.com>
* include/sys/stat.h: Define stat, fstat, lstat and *64 variants
as macros so the the library compiles correctly even without
optimization.
* io/fstat.c: Undef fstat.
* io/fstat64.c: Undef fstat64
* io/lstat.c: Undef lstat.
* io/lstat64.c: Undef lstat64
* io/stat.c: Undef stat.
* io/stat64.c: Undef stat64
* io/fts.c: Include <include/sys/stat.h> to get macro definitions.
* io/ftw.c: Likewise.
* io/getdirname.c: Likewise.
* Makefile (install): Run test-installation.pl if possible.
* db2/Makefile: Update from db-2.3.12.
* db2/db.h: Likewise.
* db2/db_int.h: Likewise.
* db2/btree/bt_cursor.c: Likewise.
* db2/btree/bt_delete.c: Likewise.
* db2/btree/bt_open.c: Likewise.
* db2/btree/bt_put.c: Likewise.
* db2/btree/bt_rec.c: Likewise.
* db2/btree/bt_recno.c: Likewise.
* db2/btree/bt_search.c: Likewise.
* db2/btree/bt_split.c: Likewise.
* db2/btree/bt_stat.c: Likewise.
* db2/btree/btree.src: Likewise.
* db2/btree/btree_auto.c: Likewise.
* db2/btree/bt_cursor.c: Likewise.
* db2/btree/bt_delete.c: Likewise.
* db2/btree/bt_open.c: Likewise.
* db2/btree/bt_put.c: Likewise.
* db2/btree/bt_rec.c: Likewise.
* db2/btree/bt_recno.c: Likewise.
* db2/btree/bt_search.c: Likewise.
* db2/btree/bt_split.c: Likewise.
* db2/btree/bt_stat.c: Likewise.
* db2/btree/btree.src: Likewise.
* db2/btree/btree_auto.c: Likewise.
* db2/common/db_appinit.c: Likewise.
* db2/common/db_apprec.c: Likewise.
* db2/common/db_byteorder.c: Likewise.
* db2/common/db_region.c: Likewise.
* db2/db/db.c: Likewise
* db2/db/db.src: Likewise
* db2/db/db_auto.c: Likewise
* db2/db/db_dispatch.c: Likewise
* db2/db/db_dup.c: Likewise
* db2/db/db_overflow.c: Likewise
* db2/db/db_pr.c: Likewise
* db2/db/db_rec.c: Likewise
* db2/db/db_ret.c: Likewise
* db2/db/db_thread.c: Likewise
* db2/db185/db185.c: Likewise.
* db2/hash/hash.c: Likewise.
* db2/hash/hash.src: Likewise.
* db2/hash/hash_auto.c: Likewise.
* db2/hash/hash_dup.c: Likewise.
* db2/hash/hash_page.c: Likewise.
* db2/hash/hash_rec.c: Likewise.
* db2/include/btree_auto.h: Likewise.
* db2/include/btree_ext.h: Likewise.
* db2/include/clib_ext.h: Likewise.
* db2/include/common_ext.h: Likewise.
* db2/include/db.h.src: Likewise.
* db2/include/db_am.h: Likewise.
* db2/include/db_auto.h: Likewise.
* db2/include/db_cxx.h: Likewise.
* db2/include/db_ext.h: Likewise.
* db2/include/db_int.h.src: Likewise.
* db2/include/hash.h: Likewise.
* db2/include/hash_auto.h: Likewise.
* db2/include/hash_ext.h: Likewise.
* db2/include/lock.h: Likewise.
* db2/include/lock_ext.h: Likewise.
* db2/include/log.h: Likewise.
* db2/include/log_ext.h: Likewise.
* db2/include/mp.h: Likewise.
* db2/include/mp_ext.h: Likewise.
* db2/include/mutex_ext.h: Likewise.
* db2/include/os_ext.h: Likewise.
* db2/include/os_func.h: Likewise.
* db2/include/txn.h: Likewise.
* db2/include/txn_ext.h: Likewise.
* db2/lock/lock.c: Likewise.
* db2/lock/lock_deadlock.c: Likewise.
* db2/log/log.c: Likewise.
* db2/log/log_archive.c: Likewise.
* db2/log/log_auto.c: Likewise.
* db2/log/log_findckp.c: Likewise.
* db2/log/log_get.c: Likewise.
* db2/log/log_put.c: Likewise.
* db2/log/log_rec.c: Likewise.
* db2/log/log_register.c: Likewise.
* db2/mp/mp_bh.c: Likewise.
* db2/mp/mp_fget.c: Likewise.
* db2/mp/mp_fopen.c: Likewise.
* db2/mp/mp_fput.c: Likewise.
* db2/mp/mp_fset.c: Likewise.
* db2/mp/mp_open.c: Likewise.
* db2/mp/mp_pr.c: Likewise.
* db2/mp/mp_region.c: Likewise.
* db2/mp/mp_sync.c: Likewise.
* db2/mutex/mutex.c: Likewise.
* db2/os/os_abs.c: Likewise.
* db2/os/os_dir.c: Likewise.
* db2/os/os_fid.c: Likewise.
* db2/os/os_fsync.c: Likewise.
* db2/os/os_func.c: Likewise.
* db2/os/os_map.c: Likewise.
* db2/os/os_oflags.c: Likewise.
* db2/os/os_open.c: Likewise.
* db2/os/os_rpath.c: Likewise.
* db2/os/os_rw.c: Likewise.
* db2/os/os_seek.c: Likewise.
* db2/os/os_sleep.c: Likewise.
* db2/os/os_stat.c: Likewise.
* db2/os/os_unlink.c: Likewise.
* db2/progs/db_deadlock/db_deadlock.c: Likewise.
* db2/progs/db_dump/db_dump.c: Likewise.
* db2/progs/db_load/db_load.c: Likewise.
* db2/progs/db_recover/db_recover.c: Likewise.
* db2/progs/db_stat/db_stat.c: Likewise.
* db2/txn/txn.c: Likewise.
* db2/txn/txn_auto.c: Likewise.
* db2/txn/txn_rec.c: Likewise.
* db2/os/db_os_abs.c: Removed.
* db2/os/db_os_dir.c: Removed.
* db2/os/db_os_fid.c: Removed.
* db2/os/db_os_lseek.c: Removed.
* db2/os/db_os_mmap.c: Removed.
* db2/os/db_os_open.c: Removed.
* db2/os/db_os_rw.c: Removed.
* db2/os/db_os_sleep.c: Removed.
* db2/os/db_os_stat.c: Removed.
* db2/os/db_os_unlink.c: Removed.
* libio/stdio.h (fopen): Add __restrict to parameters.
* manual/process.texi (system): Describe behaviour for NULL argument.
* stdio-common/printf-parse.h: Parse hh modifier.
* stdio-common/vfprintf.c: Handle hh modifier.
* stdio-common/vfscanf.c: Likewise.
* manual/stdio.texi: Describe hh modifier for scanf/printf.
* math/complex.h: Don't define _Imaginary_I, but instead _Complex_I.
gcc does no yet know the `imaginary' keyword.
* math/test-math.c: Add little test for know gcc bug.
* math/tgmath.h: Make complex versions of log10() only available
if __USE_GNU.
* stdlib/test-canon.c: Fix typo.
* sysdeps/generic/setenv.c: Avoid compilation warnings.
Reported by Jim Meyering.
* sysdeps/generic/bits/errno.h: EILSEQ is an ISO C error number.
* sysdeps/mach/hurd/bits/errno.h: Likewise.
* sysdeps/standalone/bits/errno.h: Likewise.
* sysdeps/unix/sysv/linux/bits/errno.h: Likewise.
* sysdeps/i386/i586/memcpy.S: New file.
* sysdeps/i386/i586/mempcpy.S: New file.
* sysdeps/i386/i586/memset.S: Fix typo.
* sysdeps/posix/getcwd.c: Define HAVE_MEMPCPY for _LIBC. Add casts.
* sysdeps/posix/system.c: Add comment to explain code.
* sysdeps/wordsize-32/inttypes.h: Include <stddef.h> for wchar_t.
Define PTRDIFF_{MIN,MAX}, SIG_ATOMIC_{MIN,MAX}, SIZE_MAX,
WCHAR_{MIN,MAX}, WINT_{MIN,MAX}.
Define wcstoimax, wcstoumax.
* sysdeps/wordsize-64/inttypes.h: Likewise.
* wcsmbs/wchar.h: Define WCHAR_{MIN,MAX} if not already defined.
Declare __wcsto{l,ul,ll,ull}_internal only if not already done.
* time/Makefile (routines): Add strfxtime.
* time/strftime.c: Implement %F and %f format.
* time/strfxtime.c: New file.
* time/time.h: Define new types and symbols from ISO C 9X.
* time/mktime.c: Little comment correction.
1997-11-10 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/libm-ieee754/s_sincosl.c: Fix typo.
* sysdeps/libm-ieee754/s_tanl.c: Fix typo.
* sysdeps/libm-ieee754/s_floorl.c: Correct typos.
* sysdeps/libm-ieee754/e_remainderl.c: Replace
EXTRACT_LDOUBLE_WORDS by GET_LDOUBLE_WORDS.
* sysdeps/libm-ieee754/e_atan2l.c: Replace EXTRACT_LDOUBLE_WORDS
by GET_LDOUBLE_WORDS.
* sysdeps/libm-ieee754/s_scalbnl.c: Replace ";" by "," for correct
variable declaration.
* sysdeps/libm-ieee754/s_scalblnl.c: Likewise.
* sysdeps/libm-ieee754/s_lrint.c (__lrint): Correct function.
* math/libm-test.c (sqrt_test): Add test for sqrt (0.25).
(asin_test): Add more test.
1997-11-10 23:34 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/libm-ieee754/e_asin.c: Add braces to make code clearer
and to not confuse the poor compiler.
* sysdeps/libm-ieee754/e_asinf.c: Likewise.
Reported by vertex@cagent.com.
1997-11-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/dl-lookup.c (do_lookup): Don't accept the base version if we
require a specific one.
* libio/oldfreopen.c: Bind old symbols to version GLIBC_2.0.
* libio/oldiofopen.c: Likewise.
* libio/oldstdfiles.c: Likewise.
* libc.map: Export them.
1997-11-10 07:40 H.J. Lu <hjl@gnu.ai.mit.edu>
* stdlib/exit.c (exit): Handle recursive calls to exit ().
1997-11-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/m68k/fpu/s_llrint.c: Fixed to take double argument
instead of long double.
* sysdeps/m68k/fpu/s_llrintf.c: New file.
* sysdeps/m68k/fpu/s_llrintl.c: New file.
* sysdeps/libm-ieee754/s_llrint.c: Make compilable and fix
overflow condition.
* sysdeps/libm-ieee754/s_llrintf.c: Fix overflow condition.
* sysdeps/libm-ieee754/s_llrintl.c: Likewise.
* sysdeps/libm-ieee754/s_llround.c: Likewise.
* sysdeps/libm-ieee754/s_llroundf.c: Likewise.
* sysdeps/libm-ieee754/s_llroundl.c: Likewise.
* sysdeps/libm-ieee754/s_lrint.c: Likewise.
* sysdeps/libm-ieee754/s_lrintf.c: Likewise.
* sysdeps/libm-ieee754/s_lrintl.c: Likewise.
* sysdeps/libm-ieee754/s_lround.c: Likewise.
* sysdeps/libm-ieee754/s_lroundf.c: Likewise.
* sysdeps/libm-ieee754/s_lroundl.c: Likewise.
* math/libm-test.c: Test all three variants of lrint and llrint.
Fix typos in lround and llround tests. Add tests for boundary
cases for lrint and llround.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* manual/arith.texi: Misc doc fixes.
* manual/ctype.texi: Likewise.
* manual/pattern.texi: Likewise.
* manual/terminal.texi: Likewise.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/xstatconv.c: Use struct assignment
instead of memcpy to let the compiler use whatever it regards as
optimal.
* sysdeps/unix/sysv/linux/alpha/xstatconv.c: Likewise.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/Makefile (sysdep_headers)
[$(subdir)=misc]: Add sys/prctl.h.
* sysdeps/unix/sysv/linux/Dist: Distribute it.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* io/ftwtest-sh: Don't use the unknown which command, instead try
pwd as /bin/pwd and /usr/bin/pwd.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* manual/maint.texi (Tools for Installation): Don't recommend
broken version 3.76.1 of make.
(Porting): Fix wording.
1997-11-06 06:13 H.J. Lu <hjl@gnu.ai.mit.edu>
* config.make.in (build-pic-default): New, defined with
pic_default.
* configure.in (pic_default): New, set to yes if PIC is
default.
* Makeconfig (CPPFLAGS-.o, CPPFLAGS-.op, CPPFLAGS-.og,
CPPFLAGS-.ob): Add -DPIC if $(build-pic-default) is yes.
1997-11-09 18:15 Ulrich Drepper <drepper@cygnus.com>
* Makerules (libc.so): Fix typo.
* csu/Makefile (CFLAGS-initfini.s): Correctly fix moving function
definition. Patch by Zack Weinberg <zack@rabi.phys.columbia.edu>.
* stdlib/strtod.c: Handle numbers like 0.0e10000 correctly which
produce 0.0. Reported by Joe Keane <jgk@jgk.org>.
* sysdeps/libm-ieee754/s_ceill.c: Fix typos.
* sysdeps/libm-ieee754/s_llrint.c: Correct code, it never worked.
1997-11-06 07:00 H.J. Lu <hjl@gnu.ai.mit.edu>
* sysdeps/unix/sysv/i386/i686/time.S: Removed.
1997-11-08 14:07 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/libnsl.map: Add __do_niscall2 for nis_cachemgr.
* nis/nis_call.c: Set UDP resend timeout correct.
* nis/nss_compat/compat-grp.c: Rewritten to make it faster.
* nis/nss_compat/compat-pwd.c: Likewise.
* nis/nss_compat/compat-spwd.c: Likewise.
* nis/ypclnt.c: Fix UDP resend timeout, fix yp_bind/do_ypcall
interaction.
* inet/protocols/routed.h: Include sys/socket.h.
* inet/protocols/talkd.h: Likewise.
* inet/protocols/timed.h: Include rpc/types.h.
* sunrpc/rpc/pmap_clnt.h: Include rpc/clnt.h.
1997-11-06 01:39 Ulrich Drepper <drepper@cygnus.com>
* Makerules (libc.so): Add missing closing brace.
1997-11-05 Brendan Kehoe <brendan@lisa.cygnus.com>
* libio.h (__P): Name its arg `p' instead of `params'.
This was added solely to work around problems with
the definition of __P in the Solaris math.h header.
1997-11-12 00:06:02 +00:00
|
|
|
# error PIC is default.
|
|
|
|
#endif
|
|
|
|
EOF
|
2002-10-19 00:23:55 +00:00
|
|
|
if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
|
2009-04-02 17:00:46 +00:00
|
|
|
libc_cv_pic_default=no
|
Update.
1997-11-11 21:30 Ulrich Drepper <drepper@cygnus.com>
* include/sys/stat.h: Define stat, fstat, lstat and *64 variants
as macros so the the library compiles correctly even without
optimization.
* io/fstat.c: Undef fstat.
* io/fstat64.c: Undef fstat64
* io/lstat.c: Undef lstat.
* io/lstat64.c: Undef lstat64
* io/stat.c: Undef stat.
* io/stat64.c: Undef stat64
* io/fts.c: Include <include/sys/stat.h> to get macro definitions.
* io/ftw.c: Likewise.
* io/getdirname.c: Likewise.
* Makefile (install): Run test-installation.pl if possible.
* db2/Makefile: Update from db-2.3.12.
* db2/db.h: Likewise.
* db2/db_int.h: Likewise.
* db2/btree/bt_cursor.c: Likewise.
* db2/btree/bt_delete.c: Likewise.
* db2/btree/bt_open.c: Likewise.
* db2/btree/bt_put.c: Likewise.
* db2/btree/bt_rec.c: Likewise.
* db2/btree/bt_recno.c: Likewise.
* db2/btree/bt_search.c: Likewise.
* db2/btree/bt_split.c: Likewise.
* db2/btree/bt_stat.c: Likewise.
* db2/btree/btree.src: Likewise.
* db2/btree/btree_auto.c: Likewise.
* db2/btree/bt_cursor.c: Likewise.
* db2/btree/bt_delete.c: Likewise.
* db2/btree/bt_open.c: Likewise.
* db2/btree/bt_put.c: Likewise.
* db2/btree/bt_rec.c: Likewise.
* db2/btree/bt_recno.c: Likewise.
* db2/btree/bt_search.c: Likewise.
* db2/btree/bt_split.c: Likewise.
* db2/btree/bt_stat.c: Likewise.
* db2/btree/btree.src: Likewise.
* db2/btree/btree_auto.c: Likewise.
* db2/common/db_appinit.c: Likewise.
* db2/common/db_apprec.c: Likewise.
* db2/common/db_byteorder.c: Likewise.
* db2/common/db_region.c: Likewise.
* db2/db/db.c: Likewise
* db2/db/db.src: Likewise
* db2/db/db_auto.c: Likewise
* db2/db/db_dispatch.c: Likewise
* db2/db/db_dup.c: Likewise
* db2/db/db_overflow.c: Likewise
* db2/db/db_pr.c: Likewise
* db2/db/db_rec.c: Likewise
* db2/db/db_ret.c: Likewise
* db2/db/db_thread.c: Likewise
* db2/db185/db185.c: Likewise.
* db2/hash/hash.c: Likewise.
* db2/hash/hash.src: Likewise.
* db2/hash/hash_auto.c: Likewise.
* db2/hash/hash_dup.c: Likewise.
* db2/hash/hash_page.c: Likewise.
* db2/hash/hash_rec.c: Likewise.
* db2/include/btree_auto.h: Likewise.
* db2/include/btree_ext.h: Likewise.
* db2/include/clib_ext.h: Likewise.
* db2/include/common_ext.h: Likewise.
* db2/include/db.h.src: Likewise.
* db2/include/db_am.h: Likewise.
* db2/include/db_auto.h: Likewise.
* db2/include/db_cxx.h: Likewise.
* db2/include/db_ext.h: Likewise.
* db2/include/db_int.h.src: Likewise.
* db2/include/hash.h: Likewise.
* db2/include/hash_auto.h: Likewise.
* db2/include/hash_ext.h: Likewise.
* db2/include/lock.h: Likewise.
* db2/include/lock_ext.h: Likewise.
* db2/include/log.h: Likewise.
* db2/include/log_ext.h: Likewise.
* db2/include/mp.h: Likewise.
* db2/include/mp_ext.h: Likewise.
* db2/include/mutex_ext.h: Likewise.
* db2/include/os_ext.h: Likewise.
* db2/include/os_func.h: Likewise.
* db2/include/txn.h: Likewise.
* db2/include/txn_ext.h: Likewise.
* db2/lock/lock.c: Likewise.
* db2/lock/lock_deadlock.c: Likewise.
* db2/log/log.c: Likewise.
* db2/log/log_archive.c: Likewise.
* db2/log/log_auto.c: Likewise.
* db2/log/log_findckp.c: Likewise.
* db2/log/log_get.c: Likewise.
* db2/log/log_put.c: Likewise.
* db2/log/log_rec.c: Likewise.
* db2/log/log_register.c: Likewise.
* db2/mp/mp_bh.c: Likewise.
* db2/mp/mp_fget.c: Likewise.
* db2/mp/mp_fopen.c: Likewise.
* db2/mp/mp_fput.c: Likewise.
* db2/mp/mp_fset.c: Likewise.
* db2/mp/mp_open.c: Likewise.
* db2/mp/mp_pr.c: Likewise.
* db2/mp/mp_region.c: Likewise.
* db2/mp/mp_sync.c: Likewise.
* db2/mutex/mutex.c: Likewise.
* db2/os/os_abs.c: Likewise.
* db2/os/os_dir.c: Likewise.
* db2/os/os_fid.c: Likewise.
* db2/os/os_fsync.c: Likewise.
* db2/os/os_func.c: Likewise.
* db2/os/os_map.c: Likewise.
* db2/os/os_oflags.c: Likewise.
* db2/os/os_open.c: Likewise.
* db2/os/os_rpath.c: Likewise.
* db2/os/os_rw.c: Likewise.
* db2/os/os_seek.c: Likewise.
* db2/os/os_sleep.c: Likewise.
* db2/os/os_stat.c: Likewise.
* db2/os/os_unlink.c: Likewise.
* db2/progs/db_deadlock/db_deadlock.c: Likewise.
* db2/progs/db_dump/db_dump.c: Likewise.
* db2/progs/db_load/db_load.c: Likewise.
* db2/progs/db_recover/db_recover.c: Likewise.
* db2/progs/db_stat/db_stat.c: Likewise.
* db2/txn/txn.c: Likewise.
* db2/txn/txn_auto.c: Likewise.
* db2/txn/txn_rec.c: Likewise.
* db2/os/db_os_abs.c: Removed.
* db2/os/db_os_dir.c: Removed.
* db2/os/db_os_fid.c: Removed.
* db2/os/db_os_lseek.c: Removed.
* db2/os/db_os_mmap.c: Removed.
* db2/os/db_os_open.c: Removed.
* db2/os/db_os_rw.c: Removed.
* db2/os/db_os_sleep.c: Removed.
* db2/os/db_os_stat.c: Removed.
* db2/os/db_os_unlink.c: Removed.
* libio/stdio.h (fopen): Add __restrict to parameters.
* manual/process.texi (system): Describe behaviour for NULL argument.
* stdio-common/printf-parse.h: Parse hh modifier.
* stdio-common/vfprintf.c: Handle hh modifier.
* stdio-common/vfscanf.c: Likewise.
* manual/stdio.texi: Describe hh modifier for scanf/printf.
* math/complex.h: Don't define _Imaginary_I, but instead _Complex_I.
gcc does no yet know the `imaginary' keyword.
* math/test-math.c: Add little test for know gcc bug.
* math/tgmath.h: Make complex versions of log10() only available
if __USE_GNU.
* stdlib/test-canon.c: Fix typo.
* sysdeps/generic/setenv.c: Avoid compilation warnings.
Reported by Jim Meyering.
* sysdeps/generic/bits/errno.h: EILSEQ is an ISO C error number.
* sysdeps/mach/hurd/bits/errno.h: Likewise.
* sysdeps/standalone/bits/errno.h: Likewise.
* sysdeps/unix/sysv/linux/bits/errno.h: Likewise.
* sysdeps/i386/i586/memcpy.S: New file.
* sysdeps/i386/i586/mempcpy.S: New file.
* sysdeps/i386/i586/memset.S: Fix typo.
* sysdeps/posix/getcwd.c: Define HAVE_MEMPCPY for _LIBC. Add casts.
* sysdeps/posix/system.c: Add comment to explain code.
* sysdeps/wordsize-32/inttypes.h: Include <stddef.h> for wchar_t.
Define PTRDIFF_{MIN,MAX}, SIG_ATOMIC_{MIN,MAX}, SIZE_MAX,
WCHAR_{MIN,MAX}, WINT_{MIN,MAX}.
Define wcstoimax, wcstoumax.
* sysdeps/wordsize-64/inttypes.h: Likewise.
* wcsmbs/wchar.h: Define WCHAR_{MIN,MAX} if not already defined.
Declare __wcsto{l,ul,ll,ull}_internal only if not already done.
* time/Makefile (routines): Add strfxtime.
* time/strftime.c: Implement %F and %f format.
* time/strfxtime.c: New file.
* time/time.h: Define new types and symbols from ISO C 9X.
* time/mktime.c: Little comment correction.
1997-11-10 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/libm-ieee754/s_sincosl.c: Fix typo.
* sysdeps/libm-ieee754/s_tanl.c: Fix typo.
* sysdeps/libm-ieee754/s_floorl.c: Correct typos.
* sysdeps/libm-ieee754/e_remainderl.c: Replace
EXTRACT_LDOUBLE_WORDS by GET_LDOUBLE_WORDS.
* sysdeps/libm-ieee754/e_atan2l.c: Replace EXTRACT_LDOUBLE_WORDS
by GET_LDOUBLE_WORDS.
* sysdeps/libm-ieee754/s_scalbnl.c: Replace ";" by "," for correct
variable declaration.
* sysdeps/libm-ieee754/s_scalblnl.c: Likewise.
* sysdeps/libm-ieee754/s_lrint.c (__lrint): Correct function.
* math/libm-test.c (sqrt_test): Add test for sqrt (0.25).
(asin_test): Add more test.
1997-11-10 23:34 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/libm-ieee754/e_asin.c: Add braces to make code clearer
and to not confuse the poor compiler.
* sysdeps/libm-ieee754/e_asinf.c: Likewise.
Reported by vertex@cagent.com.
1997-11-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/dl-lookup.c (do_lookup): Don't accept the base version if we
require a specific one.
* libio/oldfreopen.c: Bind old symbols to version GLIBC_2.0.
* libio/oldiofopen.c: Likewise.
* libio/oldstdfiles.c: Likewise.
* libc.map: Export them.
1997-11-10 07:40 H.J. Lu <hjl@gnu.ai.mit.edu>
* stdlib/exit.c (exit): Handle recursive calls to exit ().
1997-11-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/m68k/fpu/s_llrint.c: Fixed to take double argument
instead of long double.
* sysdeps/m68k/fpu/s_llrintf.c: New file.
* sysdeps/m68k/fpu/s_llrintl.c: New file.
* sysdeps/libm-ieee754/s_llrint.c: Make compilable and fix
overflow condition.
* sysdeps/libm-ieee754/s_llrintf.c: Fix overflow condition.
* sysdeps/libm-ieee754/s_llrintl.c: Likewise.
* sysdeps/libm-ieee754/s_llround.c: Likewise.
* sysdeps/libm-ieee754/s_llroundf.c: Likewise.
* sysdeps/libm-ieee754/s_llroundl.c: Likewise.
* sysdeps/libm-ieee754/s_lrint.c: Likewise.
* sysdeps/libm-ieee754/s_lrintf.c: Likewise.
* sysdeps/libm-ieee754/s_lrintl.c: Likewise.
* sysdeps/libm-ieee754/s_lround.c: Likewise.
* sysdeps/libm-ieee754/s_lroundf.c: Likewise.
* sysdeps/libm-ieee754/s_lroundl.c: Likewise.
* math/libm-test.c: Test all three variants of lrint and llrint.
Fix typos in lround and llround tests. Add tests for boundary
cases for lrint and llround.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* manual/arith.texi: Misc doc fixes.
* manual/ctype.texi: Likewise.
* manual/pattern.texi: Likewise.
* manual/terminal.texi: Likewise.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/xstatconv.c: Use struct assignment
instead of memcpy to let the compiler use whatever it regards as
optimal.
* sysdeps/unix/sysv/linux/alpha/xstatconv.c: Likewise.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/Makefile (sysdep_headers)
[$(subdir)=misc]: Add sys/prctl.h.
* sysdeps/unix/sysv/linux/Dist: Distribute it.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* io/ftwtest-sh: Don't use the unknown which command, instead try
pwd as /bin/pwd and /usr/bin/pwd.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* manual/maint.texi (Tools for Installation): Don't recommend
broken version 3.76.1 of make.
(Porting): Fix wording.
1997-11-06 06:13 H.J. Lu <hjl@gnu.ai.mit.edu>
* config.make.in (build-pic-default): New, defined with
pic_default.
* configure.in (pic_default): New, set to yes if PIC is
default.
* Makeconfig (CPPFLAGS-.o, CPPFLAGS-.op, CPPFLAGS-.og,
CPPFLAGS-.ob): Add -DPIC if $(build-pic-default) is yes.
1997-11-09 18:15 Ulrich Drepper <drepper@cygnus.com>
* Makerules (libc.so): Fix typo.
* csu/Makefile (CFLAGS-initfini.s): Correctly fix moving function
definition. Patch by Zack Weinberg <zack@rabi.phys.columbia.edu>.
* stdlib/strtod.c: Handle numbers like 0.0e10000 correctly which
produce 0.0. Reported by Joe Keane <jgk@jgk.org>.
* sysdeps/libm-ieee754/s_ceill.c: Fix typos.
* sysdeps/libm-ieee754/s_llrint.c: Correct code, it never worked.
1997-11-06 07:00 H.J. Lu <hjl@gnu.ai.mit.edu>
* sysdeps/unix/sysv/i386/i686/time.S: Removed.
1997-11-08 14:07 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/libnsl.map: Add __do_niscall2 for nis_cachemgr.
* nis/nis_call.c: Set UDP resend timeout correct.
* nis/nss_compat/compat-grp.c: Rewritten to make it faster.
* nis/nss_compat/compat-pwd.c: Likewise.
* nis/nss_compat/compat-spwd.c: Likewise.
* nis/ypclnt.c: Fix UDP resend timeout, fix yp_bind/do_ypcall
interaction.
* inet/protocols/routed.h: Include sys/socket.h.
* inet/protocols/talkd.h: Likewise.
* inet/protocols/timed.h: Include rpc/types.h.
* sunrpc/rpc/pmap_clnt.h: Include rpc/clnt.h.
1997-11-06 01:39 Ulrich Drepper <drepper@cygnus.com>
* Makerules (libc.so): Add missing closing brace.
1997-11-05 Brendan Kehoe <brendan@lisa.cygnus.com>
* libio.h (__P): Name its arg `p' instead of `params'.
This was added solely to work around problems with
the definition of __P in the Solaris math.h header.
1997-11-12 00:06:02 +00:00
|
|
|
fi
|
|
|
|
rm -f conftest.*])
|
2009-04-02 17:00:46 +00:00
|
|
|
AC_SUBST(libc_cv_pic_default)
|
Update.
1997-11-11 21:30 Ulrich Drepper <drepper@cygnus.com>
* include/sys/stat.h: Define stat, fstat, lstat and *64 variants
as macros so the the library compiles correctly even without
optimization.
* io/fstat.c: Undef fstat.
* io/fstat64.c: Undef fstat64
* io/lstat.c: Undef lstat.
* io/lstat64.c: Undef lstat64
* io/stat.c: Undef stat.
* io/stat64.c: Undef stat64
* io/fts.c: Include <include/sys/stat.h> to get macro definitions.
* io/ftw.c: Likewise.
* io/getdirname.c: Likewise.
* Makefile (install): Run test-installation.pl if possible.
* db2/Makefile: Update from db-2.3.12.
* db2/db.h: Likewise.
* db2/db_int.h: Likewise.
* db2/btree/bt_cursor.c: Likewise.
* db2/btree/bt_delete.c: Likewise.
* db2/btree/bt_open.c: Likewise.
* db2/btree/bt_put.c: Likewise.
* db2/btree/bt_rec.c: Likewise.
* db2/btree/bt_recno.c: Likewise.
* db2/btree/bt_search.c: Likewise.
* db2/btree/bt_split.c: Likewise.
* db2/btree/bt_stat.c: Likewise.
* db2/btree/btree.src: Likewise.
* db2/btree/btree_auto.c: Likewise.
* db2/btree/bt_cursor.c: Likewise.
* db2/btree/bt_delete.c: Likewise.
* db2/btree/bt_open.c: Likewise.
* db2/btree/bt_put.c: Likewise.
* db2/btree/bt_rec.c: Likewise.
* db2/btree/bt_recno.c: Likewise.
* db2/btree/bt_search.c: Likewise.
* db2/btree/bt_split.c: Likewise.
* db2/btree/bt_stat.c: Likewise.
* db2/btree/btree.src: Likewise.
* db2/btree/btree_auto.c: Likewise.
* db2/common/db_appinit.c: Likewise.
* db2/common/db_apprec.c: Likewise.
* db2/common/db_byteorder.c: Likewise.
* db2/common/db_region.c: Likewise.
* db2/db/db.c: Likewise
* db2/db/db.src: Likewise
* db2/db/db_auto.c: Likewise
* db2/db/db_dispatch.c: Likewise
* db2/db/db_dup.c: Likewise
* db2/db/db_overflow.c: Likewise
* db2/db/db_pr.c: Likewise
* db2/db/db_rec.c: Likewise
* db2/db/db_ret.c: Likewise
* db2/db/db_thread.c: Likewise
* db2/db185/db185.c: Likewise.
* db2/hash/hash.c: Likewise.
* db2/hash/hash.src: Likewise.
* db2/hash/hash_auto.c: Likewise.
* db2/hash/hash_dup.c: Likewise.
* db2/hash/hash_page.c: Likewise.
* db2/hash/hash_rec.c: Likewise.
* db2/include/btree_auto.h: Likewise.
* db2/include/btree_ext.h: Likewise.
* db2/include/clib_ext.h: Likewise.
* db2/include/common_ext.h: Likewise.
* db2/include/db.h.src: Likewise.
* db2/include/db_am.h: Likewise.
* db2/include/db_auto.h: Likewise.
* db2/include/db_cxx.h: Likewise.
* db2/include/db_ext.h: Likewise.
* db2/include/db_int.h.src: Likewise.
* db2/include/hash.h: Likewise.
* db2/include/hash_auto.h: Likewise.
* db2/include/hash_ext.h: Likewise.
* db2/include/lock.h: Likewise.
* db2/include/lock_ext.h: Likewise.
* db2/include/log.h: Likewise.
* db2/include/log_ext.h: Likewise.
* db2/include/mp.h: Likewise.
* db2/include/mp_ext.h: Likewise.
* db2/include/mutex_ext.h: Likewise.
* db2/include/os_ext.h: Likewise.
* db2/include/os_func.h: Likewise.
* db2/include/txn.h: Likewise.
* db2/include/txn_ext.h: Likewise.
* db2/lock/lock.c: Likewise.
* db2/lock/lock_deadlock.c: Likewise.
* db2/log/log.c: Likewise.
* db2/log/log_archive.c: Likewise.
* db2/log/log_auto.c: Likewise.
* db2/log/log_findckp.c: Likewise.
* db2/log/log_get.c: Likewise.
* db2/log/log_put.c: Likewise.
* db2/log/log_rec.c: Likewise.
* db2/log/log_register.c: Likewise.
* db2/mp/mp_bh.c: Likewise.
* db2/mp/mp_fget.c: Likewise.
* db2/mp/mp_fopen.c: Likewise.
* db2/mp/mp_fput.c: Likewise.
* db2/mp/mp_fset.c: Likewise.
* db2/mp/mp_open.c: Likewise.
* db2/mp/mp_pr.c: Likewise.
* db2/mp/mp_region.c: Likewise.
* db2/mp/mp_sync.c: Likewise.
* db2/mutex/mutex.c: Likewise.
* db2/os/os_abs.c: Likewise.
* db2/os/os_dir.c: Likewise.
* db2/os/os_fid.c: Likewise.
* db2/os/os_fsync.c: Likewise.
* db2/os/os_func.c: Likewise.
* db2/os/os_map.c: Likewise.
* db2/os/os_oflags.c: Likewise.
* db2/os/os_open.c: Likewise.
* db2/os/os_rpath.c: Likewise.
* db2/os/os_rw.c: Likewise.
* db2/os/os_seek.c: Likewise.
* db2/os/os_sleep.c: Likewise.
* db2/os/os_stat.c: Likewise.
* db2/os/os_unlink.c: Likewise.
* db2/progs/db_deadlock/db_deadlock.c: Likewise.
* db2/progs/db_dump/db_dump.c: Likewise.
* db2/progs/db_load/db_load.c: Likewise.
* db2/progs/db_recover/db_recover.c: Likewise.
* db2/progs/db_stat/db_stat.c: Likewise.
* db2/txn/txn.c: Likewise.
* db2/txn/txn_auto.c: Likewise.
* db2/txn/txn_rec.c: Likewise.
* db2/os/db_os_abs.c: Removed.
* db2/os/db_os_dir.c: Removed.
* db2/os/db_os_fid.c: Removed.
* db2/os/db_os_lseek.c: Removed.
* db2/os/db_os_mmap.c: Removed.
* db2/os/db_os_open.c: Removed.
* db2/os/db_os_rw.c: Removed.
* db2/os/db_os_sleep.c: Removed.
* db2/os/db_os_stat.c: Removed.
* db2/os/db_os_unlink.c: Removed.
* libio/stdio.h (fopen): Add __restrict to parameters.
* manual/process.texi (system): Describe behaviour for NULL argument.
* stdio-common/printf-parse.h: Parse hh modifier.
* stdio-common/vfprintf.c: Handle hh modifier.
* stdio-common/vfscanf.c: Likewise.
* manual/stdio.texi: Describe hh modifier for scanf/printf.
* math/complex.h: Don't define _Imaginary_I, but instead _Complex_I.
gcc does no yet know the `imaginary' keyword.
* math/test-math.c: Add little test for know gcc bug.
* math/tgmath.h: Make complex versions of log10() only available
if __USE_GNU.
* stdlib/test-canon.c: Fix typo.
* sysdeps/generic/setenv.c: Avoid compilation warnings.
Reported by Jim Meyering.
* sysdeps/generic/bits/errno.h: EILSEQ is an ISO C error number.
* sysdeps/mach/hurd/bits/errno.h: Likewise.
* sysdeps/standalone/bits/errno.h: Likewise.
* sysdeps/unix/sysv/linux/bits/errno.h: Likewise.
* sysdeps/i386/i586/memcpy.S: New file.
* sysdeps/i386/i586/mempcpy.S: New file.
* sysdeps/i386/i586/memset.S: Fix typo.
* sysdeps/posix/getcwd.c: Define HAVE_MEMPCPY for _LIBC. Add casts.
* sysdeps/posix/system.c: Add comment to explain code.
* sysdeps/wordsize-32/inttypes.h: Include <stddef.h> for wchar_t.
Define PTRDIFF_{MIN,MAX}, SIG_ATOMIC_{MIN,MAX}, SIZE_MAX,
WCHAR_{MIN,MAX}, WINT_{MIN,MAX}.
Define wcstoimax, wcstoumax.
* sysdeps/wordsize-64/inttypes.h: Likewise.
* wcsmbs/wchar.h: Define WCHAR_{MIN,MAX} if not already defined.
Declare __wcsto{l,ul,ll,ull}_internal only if not already done.
* time/Makefile (routines): Add strfxtime.
* time/strftime.c: Implement %F and %f format.
* time/strfxtime.c: New file.
* time/time.h: Define new types and symbols from ISO C 9X.
* time/mktime.c: Little comment correction.
1997-11-10 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/libm-ieee754/s_sincosl.c: Fix typo.
* sysdeps/libm-ieee754/s_tanl.c: Fix typo.
* sysdeps/libm-ieee754/s_floorl.c: Correct typos.
* sysdeps/libm-ieee754/e_remainderl.c: Replace
EXTRACT_LDOUBLE_WORDS by GET_LDOUBLE_WORDS.
* sysdeps/libm-ieee754/e_atan2l.c: Replace EXTRACT_LDOUBLE_WORDS
by GET_LDOUBLE_WORDS.
* sysdeps/libm-ieee754/s_scalbnl.c: Replace ";" by "," for correct
variable declaration.
* sysdeps/libm-ieee754/s_scalblnl.c: Likewise.
* sysdeps/libm-ieee754/s_lrint.c (__lrint): Correct function.
* math/libm-test.c (sqrt_test): Add test for sqrt (0.25).
(asin_test): Add more test.
1997-11-10 23:34 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/libm-ieee754/e_asin.c: Add braces to make code clearer
and to not confuse the poor compiler.
* sysdeps/libm-ieee754/e_asinf.c: Likewise.
Reported by vertex@cagent.com.
1997-11-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/dl-lookup.c (do_lookup): Don't accept the base version if we
require a specific one.
* libio/oldfreopen.c: Bind old symbols to version GLIBC_2.0.
* libio/oldiofopen.c: Likewise.
* libio/oldstdfiles.c: Likewise.
* libc.map: Export them.
1997-11-10 07:40 H.J. Lu <hjl@gnu.ai.mit.edu>
* stdlib/exit.c (exit): Handle recursive calls to exit ().
1997-11-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/m68k/fpu/s_llrint.c: Fixed to take double argument
instead of long double.
* sysdeps/m68k/fpu/s_llrintf.c: New file.
* sysdeps/m68k/fpu/s_llrintl.c: New file.
* sysdeps/libm-ieee754/s_llrint.c: Make compilable and fix
overflow condition.
* sysdeps/libm-ieee754/s_llrintf.c: Fix overflow condition.
* sysdeps/libm-ieee754/s_llrintl.c: Likewise.
* sysdeps/libm-ieee754/s_llround.c: Likewise.
* sysdeps/libm-ieee754/s_llroundf.c: Likewise.
* sysdeps/libm-ieee754/s_llroundl.c: Likewise.
* sysdeps/libm-ieee754/s_lrint.c: Likewise.
* sysdeps/libm-ieee754/s_lrintf.c: Likewise.
* sysdeps/libm-ieee754/s_lrintl.c: Likewise.
* sysdeps/libm-ieee754/s_lround.c: Likewise.
* sysdeps/libm-ieee754/s_lroundf.c: Likewise.
* sysdeps/libm-ieee754/s_lroundl.c: Likewise.
* math/libm-test.c: Test all three variants of lrint and llrint.
Fix typos in lround and llround tests. Add tests for boundary
cases for lrint and llround.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* manual/arith.texi: Misc doc fixes.
* manual/ctype.texi: Likewise.
* manual/pattern.texi: Likewise.
* manual/terminal.texi: Likewise.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/xstatconv.c: Use struct assignment
instead of memcpy to let the compiler use whatever it regards as
optimal.
* sysdeps/unix/sysv/linux/alpha/xstatconv.c: Likewise.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/Makefile (sysdep_headers)
[$(subdir)=misc]: Add sys/prctl.h.
* sysdeps/unix/sysv/linux/Dist: Distribute it.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* io/ftwtest-sh: Don't use the unknown which command, instead try
pwd as /bin/pwd and /usr/bin/pwd.
1997-11-08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* manual/maint.texi (Tools for Installation): Don't recommend
broken version 3.76.1 of make.
(Porting): Fix wording.
1997-11-06 06:13 H.J. Lu <hjl@gnu.ai.mit.edu>
* config.make.in (build-pic-default): New, defined with
pic_default.
* configure.in (pic_default): New, set to yes if PIC is
default.
* Makeconfig (CPPFLAGS-.o, CPPFLAGS-.op, CPPFLAGS-.og,
CPPFLAGS-.ob): Add -DPIC if $(build-pic-default) is yes.
1997-11-09 18:15 Ulrich Drepper <drepper@cygnus.com>
* Makerules (libc.so): Fix typo.
* csu/Makefile (CFLAGS-initfini.s): Correctly fix moving function
definition. Patch by Zack Weinberg <zack@rabi.phys.columbia.edu>.
* stdlib/strtod.c: Handle numbers like 0.0e10000 correctly which
produce 0.0. Reported by Joe Keane <jgk@jgk.org>.
* sysdeps/libm-ieee754/s_ceill.c: Fix typos.
* sysdeps/libm-ieee754/s_llrint.c: Correct code, it never worked.
1997-11-06 07:00 H.J. Lu <hjl@gnu.ai.mit.edu>
* sysdeps/unix/sysv/i386/i686/time.S: Removed.
1997-11-08 14:07 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/libnsl.map: Add __do_niscall2 for nis_cachemgr.
* nis/nis_call.c: Set UDP resend timeout correct.
* nis/nss_compat/compat-grp.c: Rewritten to make it faster.
* nis/nss_compat/compat-pwd.c: Likewise.
* nis/nss_compat/compat-spwd.c: Likewise.
* nis/ypclnt.c: Fix UDP resend timeout, fix yp_bind/do_ypcall
interaction.
* inet/protocols/routed.h: Include sys/socket.h.
* inet/protocols/talkd.h: Likewise.
* inet/protocols/timed.h: Include rpc/types.h.
* sunrpc/rpc/pmap_clnt.h: Include rpc/clnt.h.
1997-11-06 01:39 Ulrich Drepper <drepper@cygnus.com>
* Makerules (libc.so): Add missing closing brace.
1997-11-05 Brendan Kehoe <brendan@lisa.cygnus.com>
* libio.h (__P): Name its arg `p' instead of `params'.
This was added solely to work around problems with
the definition of __P in the Solaris math.h header.
1997-11-12 00:06:02 +00:00
|
|
|
|
2017-12-18 20:24:26 +00:00
|
|
|
AC_CACHE_CHECK([whether -fPIE is default], libc_cv_cc_pie_default,
|
|
|
|
[libc_cv_cc_pie_default=yes
|
2015-06-25 09:37:04 +00:00
|
|
|
cat > conftest.c <<EOF
|
|
|
|
#if defined __PIE__ || defined __pie__ || defined PIE || defined pie
|
|
|
|
# error PIE is default.
|
|
|
|
#endif
|
|
|
|
EOF
|
|
|
|
if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
|
2017-12-18 20:24:26 +00:00
|
|
|
libc_cv_cc_pie_default=no
|
2015-06-25 09:37:04 +00:00
|
|
|
fi
|
|
|
|
rm -f conftest.*])
|
2017-12-18 20:24:26 +00:00
|
|
|
libc_cv_pie_default=$libc_cv_cc_pie_default
|
|
|
|
AC_SUBST(libc_cv_cc_pie_default)
|
2015-06-25 09:37:04 +00:00
|
|
|
AC_SUBST(libc_cv_pie_default)
|
|
|
|
|
2017-11-06 16:29:48 +00:00
|
|
|
# Set the `multidir' variable by grabbing the variable from the compiler.
|
|
|
|
# We do it once and save the result in a generated makefile.
|
|
|
|
libc_cv_multidir=`${CC-cc} $CFLAGS $CPPFLAGS -print-multi-directory`
|
|
|
|
AC_SUBST(libc_cv_multidir)
|
|
|
|
|
Add --enable-static-pie configure option to build static PIE [BZ #19574]
Static PIE extends address space layout randomization to static
executables. It provides additional security hardening benefits at
the cost of some memory and performance.
Dynamic linker, ld.so, is a standalone program which can be loaded at
any address. This patch adds a configure option, --enable-static-pie,
to embed the part of ld.so in static executable to create static position
independent executable (static PIE). A static PIE is similar to static
executable, but can be loaded at any address without help from a dynamic
linker. When --enable-static-pie is used to configure glibc, libc.a is
built as PIE and all static executables, including tests, are built as
static PIE. The resulting libc.a can be used together with GCC 8 or
above to build static PIE with the compiler option, -static-pie. But
GCC 8 isn't required to build glibc with --enable-static-pie. Only GCC
with PIE support is needed. When an older GCC is used to build glibc
with --enable-static-pie, proper input files are passed to linker to
create static executables as static PIE, together with "-z text" to
prevent dynamic relocations in read-only segments, which are not allowed
in static PIE.
The following changes are made for static PIE:
1. Add a new function, _dl_relocate_static_pie, to:
a. Get the run-time load address.
b. Read the dynamic section.
c. Perform dynamic relocations.
Dynamic linker also performs these steps. But static PIE doesn't load
any shared objects.
2. Call _dl_relocate_static_pie at entrance of LIBC_START_MAIN in
libc.a. crt1.o, which is used to create dynamic and non-PIE static
executables, is updated to include a dummy _dl_relocate_static_pie.
rcrt1.o is added to create static PIE, which will link in the real
_dl_relocate_static_pie. grcrt1.o is also added to create static PIE
with -pg. GCC 8 has been updated to support rcrt1.o and grcrt1.o for
static PIE.
Static PIE can work on all architectures which support PIE, provided:
1. Target must support accessing of local functions without dynamic
relocations, which is needed in start.S to call __libc_start_main with
function addresses of __libc_csu_init, __libc_csu_fini and main. All
functions in static PIE are local functions. If PIE start.S can't reach
main () defined in a shared object, the code sequence:
pass address of local_main to __libc_start_main
...
local_main:
tail call to main via PLT
can be used.
2. start.S is updated to check PIC instead SHARED for PIC code path and
avoid dynamic relocation, when PIC is defined and SHARED isn't defined,
to support static PIE.
3. All assembly codes are updated check PIC instead SHARED for PIC code
path to avoid dynamic relocations in read-only sections.
4. All assembly codes are updated check SHARED instead PIC for static
symbol name.
5. elf_machine_load_address in dl-machine.h are updated to support static
PIE.
6. __brk works without TLS nor dynamic relocations in read-only section
so that it can be used by __libc_setup_tls to initializes TLS in static
PIE.
NB: When glibc is built with GCC defaulted to PIE, libc.a is compiled
with -fPIE, regardless if --enable-static-pie is used to configure glibc.
When glibc is configured with --enable-static-pie, libc.a is compiled
with -fPIE, regardless whether GCC defaults to PIE or not. The same
libc.a can be used to build both static executable and static PIE.
There is no need for separate PIE copy of libc.a.
On x86-64, the normal static sln:
text data bss dec hex filename
625425 8284 5456 639165 9c0bd elf/sln
the static PIE sln:
text data bss dec hex filename
657626 20636 5392 683654 a6e86 elf/sln
The code size is increased by 5% and the binary size is increased by 7%.
Linker requirements to build glibc with --enable-static-pie:
1. Linker supports --no-dynamic-linker to remove PT_INTERP segment from
static PIE.
2. Linker can create working static PIE. The x86-64 linker needs the
fix for
https://sourceware.org/bugzilla/show_bug.cgi?id=21782
The i386 linker needs to be able to convert "movl main@GOT(%ebx), %eax"
to "leal main@GOTOFF(%ebx), %eax" if main is defined locally.
Binutils 2.29 or above are OK for i686 and x86-64. But linker status for
other targets need to be verified.
3. Linker should resolve undefined weak symbols to 0 in static PIE:
https://sourceware.org/bugzilla/show_bug.cgi?id=22269
4. Many ELF backend linkers incorrectly check bfd_link_pic for TLS
relocations, which should check bfd_link_executable instead:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
Tested on aarch64, i686 and x86-64.
Using GCC 7 and binutils master branch, build-many-glibcs.py with
--enable-static-pie with all patches for static PIE applied have the
following build successes:
PASS: glibcs-aarch64_be-linux-gnu build
PASS: glibcs-aarch64-linux-gnu build
PASS: glibcs-armeb-linux-gnueabi-be8 build
PASS: glibcs-armeb-linux-gnueabi build
PASS: glibcs-armeb-linux-gnueabihf-be8 build
PASS: glibcs-armeb-linux-gnueabihf build
PASS: glibcs-arm-linux-gnueabi build
PASS: glibcs-arm-linux-gnueabihf build
PASS: glibcs-arm-linux-gnueabihf-v7a build
PASS: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch build
PASS: glibcs-m68k-linux-gnu build
PASS: glibcs-microblazeel-linux-gnu build
PASS: glibcs-microblaze-linux-gnu build
PASS: glibcs-mips64el-linux-gnu-n32 build
PASS: glibcs-mips64el-linux-gnu-n32-nan2008 build
PASS: glibcs-mips64el-linux-gnu-n32-nan2008-soft build
PASS: glibcs-mips64el-linux-gnu-n32-soft build
PASS: glibcs-mips64el-linux-gnu-n64 build
PASS: glibcs-mips64el-linux-gnu-n64-nan2008 build
PASS: glibcs-mips64el-linux-gnu-n64-nan2008-soft build
PASS: glibcs-mips64el-linux-gnu-n64-soft build
PASS: glibcs-mips64-linux-gnu-n32 build
PASS: glibcs-mips64-linux-gnu-n32-nan2008 build
PASS: glibcs-mips64-linux-gnu-n32-nan2008-soft build
PASS: glibcs-mips64-linux-gnu-n32-soft build
PASS: glibcs-mips64-linux-gnu-n64 build
PASS: glibcs-mips64-linux-gnu-n64-nan2008 build
PASS: glibcs-mips64-linux-gnu-n64-nan2008-soft build
PASS: glibcs-mips64-linux-gnu-n64-soft build
PASS: glibcs-mipsel-linux-gnu build
PASS: glibcs-mipsel-linux-gnu-nan2008 build
PASS: glibcs-mipsel-linux-gnu-nan2008-soft build
PASS: glibcs-mipsel-linux-gnu-soft build
PASS: glibcs-mips-linux-gnu build
PASS: glibcs-mips-linux-gnu-nan2008 build
PASS: glibcs-mips-linux-gnu-nan2008-soft build
PASS: glibcs-mips-linux-gnu-soft build
PASS: glibcs-nios2-linux-gnu build
PASS: glibcs-powerpc64le-linux-gnu build
PASS: glibcs-powerpc64-linux-gnu build
PASS: glibcs-tilegxbe-linux-gnu-32 build
PASS: glibcs-tilegxbe-linux-gnu build
PASS: glibcs-tilegx-linux-gnu-32 build
PASS: glibcs-tilegx-linux-gnu build
PASS: glibcs-tilepro-linux-gnu build
and the following build failures:
FAIL: glibcs-alpha-linux-gnu build
elf/sln is failed to link due to:
assertion fail bfd/elf64-alpha.c:4125
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-hppa-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
https://sourceware.org/bugzilla/show_bug.cgi?id=22537
FAIL: glibcs-ia64-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
FAIL: glibcs-powerpc-linux-gnu build
FAIL: glibcs-powerpc-linux-gnu-soft build
FAIL: glibcs-powerpc-linux-gnuspe build
FAIL: glibcs-powerpc-linux-gnuspe-e500v1 build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22264
FAIL: glibcs-powerpc-linux-gnu-power4 build
elf/sln is failed to link due to:
findlocale.c:96:(.text+0x22c): @local call to ifunc memchr
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-s390-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped
assertion fail bfd/elflink.c:14299
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-sh3eb-linux-gnu build
FAIL: glibcs-sh3-linux-gnu build
FAIL: glibcs-sh4eb-linux-gnu build
FAIL: glibcs-sh4eb-linux-gnu-soft build
FAIL: glibcs-sh4-linux-gnu build
FAIL: glibcs-sh4-linux-gnu-soft build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
Also TLS code sequence in SH assembly syscalls in glibc doesn't match TLS
code sequence expected by ld:
https://sourceware.org/bugzilla/show_bug.cgi?id=22270
FAIL: glibcs-sparc64-linux-gnu build
FAIL: glibcs-sparcv9-linux-gnu build
FAIL: glibcs-tilegxbe-linux-gnu build
FAIL: glibcs-tilegxbe-linux-gnu-32 build
FAIL: glibcs-tilegx-linux-gnu build
FAIL: glibcs-tilegx-linux-gnu-32 build
FAIL: glibcs-tilepro-linux-gnu build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
[BZ #19574]
* INSTALL: Regenerated.
* Makeconfig (real-static-start-installed-name): New.
(pic-default): Updated for --enable-static-pie.
(pie-default): New for --enable-static-pie.
(default-pie-ldflag): Likewise.
(+link-static-before-libc): Replace $(DEFAULT-LDFLAGS-$(@F))
with $(if $($(@F)-no-pie),$(no-pie-ldflag),$(default-pie-ldflag)).
Replace $(static-start-installed-name) with
$(real-static-start-installed-name).
(+prectorT): Updated for --enable-static-pie.
(+postctorT): Likewise.
(CFLAGS-.o): Add $(pie-default).
(CFLAGS-.op): Likewise.
* NEWS: Mention --enable-static-pie.
* config.h.in (ENABLE_STATIC_PIE): New.
* configure.ac (--enable-static-pie): New configure option.
(have-no-dynamic-linker): New LIBC_CONFIG_VAR.
(have-static-pie): Likewise.
Enable static PIE if linker supports --no-dynamic-linker.
(ENABLE_STATIC_PIE): New AC_DEFINE.
(enable-static-pie): New LIBC_CONFIG_VAR.
* configure: Regenerated.
* csu/Makefile (omit-deps): Add r$(start-installed-name) and
gr$(start-installed-name) for --enable-static-pie.
(extra-objs): Likewise.
(install-lib): Likewise.
(extra-objs): Add static-reloc.o and static-reloc.os
($(objpfx)$(start-installed-name)): Also depend on
$(objpfx)static-reloc.o.
($(objpfx)r$(start-installed-name)): New.
($(objpfx)g$(start-installed-name)): Also depend on
$(objpfx)static-reloc.os.
($(objpfx)gr$(start-installed-name)): New.
* csu/libc-start.c (LIBC_START_MAIN): Call _dl_relocate_static_pie
in libc.a.
* csu/libc-tls.c (__libc_setup_tls): Add main_map->l_addr to
initimage.
* csu/static-reloc.c: New file.
* elf/Makefile (routines): Add dl-reloc-static-pie.
(elide-routines.os): Likewise.
(DEFAULT-LDFLAGS-tst-tls1-static-non-pie): Removed.
(tst-tls1-static-non-pie-no-pie): New.
* elf/dl-reloc-static-pie.c: New file.
* elf/dl-support.c (_dl_get_dl_main_map): New function.
* elf/dynamic-link.h (ELF_DURING_STARTUP): Also check
STATIC_PIE_BOOTSTRAP.
* elf/get-dynamic-info.h (elf_get_dynamic_info): Likewise.
* gmon/Makefile (tests): Add tst-gmon-static-pie.
(tests-static): Likewise.
(DEFAULT-LDFLAGS-tst-gmon-static): Removed.
(tst-gmon-static-no-pie): New.
(CFLAGS-tst-gmon-static-pie.c): Likewise.
(CRT-tst-gmon-static-pie): Likewise.
(tst-gmon-static-pie-ENV): Likewise.
(tests-special): Likewise.
($(objpfx)tst-gmon-static-pie.out): Likewise.
(clean-tst-gmon-static-pie-data): Likewise.
($(objpfx)tst-gmon-static-pie-gprof.out): Likewise.
* gmon/tst-gmon-static-pie.c: New file.
* manual/install.texi: Document --enable-static-pie.
* sysdeps/generic/ldsodefs.h (_dl_relocate_static_pie): New.
(_dl_get_dl_main_map): Likewise.
* sysdeps/i386/configure.ac: Check if linker supports static PIE.
* sysdeps/x86_64/configure.ac: Likewise.
* sysdeps/i386/configure: Regenerated.
* sysdeps/x86_64/configure: Likewise.
* sysdeps/mips/Makefile (ASFLAGS-.o): Add $(pie-default).
(ASFLAGS-.op): Likewise.
2017-12-16 00:59:33 +00:00
|
|
|
if test "$static_pie" = yes; then
|
2021-01-20 12:26:31 +00:00
|
|
|
# Check target support for static PIE
|
|
|
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#ifndef SUPPORT_STATIC_PIE
|
|
|
|
# error static PIE is not supported
|
|
|
|
#endif]])], , AC_MSG_ERROR([the architecture does not support static PIE]))
|
Add --enable-static-pie configure option to build static PIE [BZ #19574]
Static PIE extends address space layout randomization to static
executables. It provides additional security hardening benefits at
the cost of some memory and performance.
Dynamic linker, ld.so, is a standalone program which can be loaded at
any address. This patch adds a configure option, --enable-static-pie,
to embed the part of ld.so in static executable to create static position
independent executable (static PIE). A static PIE is similar to static
executable, but can be loaded at any address without help from a dynamic
linker. When --enable-static-pie is used to configure glibc, libc.a is
built as PIE and all static executables, including tests, are built as
static PIE. The resulting libc.a can be used together with GCC 8 or
above to build static PIE with the compiler option, -static-pie. But
GCC 8 isn't required to build glibc with --enable-static-pie. Only GCC
with PIE support is needed. When an older GCC is used to build glibc
with --enable-static-pie, proper input files are passed to linker to
create static executables as static PIE, together with "-z text" to
prevent dynamic relocations in read-only segments, which are not allowed
in static PIE.
The following changes are made for static PIE:
1. Add a new function, _dl_relocate_static_pie, to:
a. Get the run-time load address.
b. Read the dynamic section.
c. Perform dynamic relocations.
Dynamic linker also performs these steps. But static PIE doesn't load
any shared objects.
2. Call _dl_relocate_static_pie at entrance of LIBC_START_MAIN in
libc.a. crt1.o, which is used to create dynamic and non-PIE static
executables, is updated to include a dummy _dl_relocate_static_pie.
rcrt1.o is added to create static PIE, which will link in the real
_dl_relocate_static_pie. grcrt1.o is also added to create static PIE
with -pg. GCC 8 has been updated to support rcrt1.o and grcrt1.o for
static PIE.
Static PIE can work on all architectures which support PIE, provided:
1. Target must support accessing of local functions without dynamic
relocations, which is needed in start.S to call __libc_start_main with
function addresses of __libc_csu_init, __libc_csu_fini and main. All
functions in static PIE are local functions. If PIE start.S can't reach
main () defined in a shared object, the code sequence:
pass address of local_main to __libc_start_main
...
local_main:
tail call to main via PLT
can be used.
2. start.S is updated to check PIC instead SHARED for PIC code path and
avoid dynamic relocation, when PIC is defined and SHARED isn't defined,
to support static PIE.
3. All assembly codes are updated check PIC instead SHARED for PIC code
path to avoid dynamic relocations in read-only sections.
4. All assembly codes are updated check SHARED instead PIC for static
symbol name.
5. elf_machine_load_address in dl-machine.h are updated to support static
PIE.
6. __brk works without TLS nor dynamic relocations in read-only section
so that it can be used by __libc_setup_tls to initializes TLS in static
PIE.
NB: When glibc is built with GCC defaulted to PIE, libc.a is compiled
with -fPIE, regardless if --enable-static-pie is used to configure glibc.
When glibc is configured with --enable-static-pie, libc.a is compiled
with -fPIE, regardless whether GCC defaults to PIE or not. The same
libc.a can be used to build both static executable and static PIE.
There is no need for separate PIE copy of libc.a.
On x86-64, the normal static sln:
text data bss dec hex filename
625425 8284 5456 639165 9c0bd elf/sln
the static PIE sln:
text data bss dec hex filename
657626 20636 5392 683654 a6e86 elf/sln
The code size is increased by 5% and the binary size is increased by 7%.
Linker requirements to build glibc with --enable-static-pie:
1. Linker supports --no-dynamic-linker to remove PT_INTERP segment from
static PIE.
2. Linker can create working static PIE. The x86-64 linker needs the
fix for
https://sourceware.org/bugzilla/show_bug.cgi?id=21782
The i386 linker needs to be able to convert "movl main@GOT(%ebx), %eax"
to "leal main@GOTOFF(%ebx), %eax" if main is defined locally.
Binutils 2.29 or above are OK for i686 and x86-64. But linker status for
other targets need to be verified.
3. Linker should resolve undefined weak symbols to 0 in static PIE:
https://sourceware.org/bugzilla/show_bug.cgi?id=22269
4. Many ELF backend linkers incorrectly check bfd_link_pic for TLS
relocations, which should check bfd_link_executable instead:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
Tested on aarch64, i686 and x86-64.
Using GCC 7 and binutils master branch, build-many-glibcs.py with
--enable-static-pie with all patches for static PIE applied have the
following build successes:
PASS: glibcs-aarch64_be-linux-gnu build
PASS: glibcs-aarch64-linux-gnu build
PASS: glibcs-armeb-linux-gnueabi-be8 build
PASS: glibcs-armeb-linux-gnueabi build
PASS: glibcs-armeb-linux-gnueabihf-be8 build
PASS: glibcs-armeb-linux-gnueabihf build
PASS: glibcs-arm-linux-gnueabi build
PASS: glibcs-arm-linux-gnueabihf build
PASS: glibcs-arm-linux-gnueabihf-v7a build
PASS: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch build
PASS: glibcs-m68k-linux-gnu build
PASS: glibcs-microblazeel-linux-gnu build
PASS: glibcs-microblaze-linux-gnu build
PASS: glibcs-mips64el-linux-gnu-n32 build
PASS: glibcs-mips64el-linux-gnu-n32-nan2008 build
PASS: glibcs-mips64el-linux-gnu-n32-nan2008-soft build
PASS: glibcs-mips64el-linux-gnu-n32-soft build
PASS: glibcs-mips64el-linux-gnu-n64 build
PASS: glibcs-mips64el-linux-gnu-n64-nan2008 build
PASS: glibcs-mips64el-linux-gnu-n64-nan2008-soft build
PASS: glibcs-mips64el-linux-gnu-n64-soft build
PASS: glibcs-mips64-linux-gnu-n32 build
PASS: glibcs-mips64-linux-gnu-n32-nan2008 build
PASS: glibcs-mips64-linux-gnu-n32-nan2008-soft build
PASS: glibcs-mips64-linux-gnu-n32-soft build
PASS: glibcs-mips64-linux-gnu-n64 build
PASS: glibcs-mips64-linux-gnu-n64-nan2008 build
PASS: glibcs-mips64-linux-gnu-n64-nan2008-soft build
PASS: glibcs-mips64-linux-gnu-n64-soft build
PASS: glibcs-mipsel-linux-gnu build
PASS: glibcs-mipsel-linux-gnu-nan2008 build
PASS: glibcs-mipsel-linux-gnu-nan2008-soft build
PASS: glibcs-mipsel-linux-gnu-soft build
PASS: glibcs-mips-linux-gnu build
PASS: glibcs-mips-linux-gnu-nan2008 build
PASS: glibcs-mips-linux-gnu-nan2008-soft build
PASS: glibcs-mips-linux-gnu-soft build
PASS: glibcs-nios2-linux-gnu build
PASS: glibcs-powerpc64le-linux-gnu build
PASS: glibcs-powerpc64-linux-gnu build
PASS: glibcs-tilegxbe-linux-gnu-32 build
PASS: glibcs-tilegxbe-linux-gnu build
PASS: glibcs-tilegx-linux-gnu-32 build
PASS: glibcs-tilegx-linux-gnu build
PASS: glibcs-tilepro-linux-gnu build
and the following build failures:
FAIL: glibcs-alpha-linux-gnu build
elf/sln is failed to link due to:
assertion fail bfd/elf64-alpha.c:4125
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-hppa-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
https://sourceware.org/bugzilla/show_bug.cgi?id=22537
FAIL: glibcs-ia64-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
FAIL: glibcs-powerpc-linux-gnu build
FAIL: glibcs-powerpc-linux-gnu-soft build
FAIL: glibcs-powerpc-linux-gnuspe build
FAIL: glibcs-powerpc-linux-gnuspe-e500v1 build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22264
FAIL: glibcs-powerpc-linux-gnu-power4 build
elf/sln is failed to link due to:
findlocale.c:96:(.text+0x22c): @local call to ifunc memchr
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-s390-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped
assertion fail bfd/elflink.c:14299
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-sh3eb-linux-gnu build
FAIL: glibcs-sh3-linux-gnu build
FAIL: glibcs-sh4eb-linux-gnu build
FAIL: glibcs-sh4eb-linux-gnu-soft build
FAIL: glibcs-sh4-linux-gnu build
FAIL: glibcs-sh4-linux-gnu-soft build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
Also TLS code sequence in SH assembly syscalls in glibc doesn't match TLS
code sequence expected by ld:
https://sourceware.org/bugzilla/show_bug.cgi?id=22270
FAIL: glibcs-sparc64-linux-gnu build
FAIL: glibcs-sparcv9-linux-gnu build
FAIL: glibcs-tilegxbe-linux-gnu build
FAIL: glibcs-tilegxbe-linux-gnu-32 build
FAIL: glibcs-tilegx-linux-gnu build
FAIL: glibcs-tilegx-linux-gnu-32 build
FAIL: glibcs-tilepro-linux-gnu build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
[BZ #19574]
* INSTALL: Regenerated.
* Makeconfig (real-static-start-installed-name): New.
(pic-default): Updated for --enable-static-pie.
(pie-default): New for --enable-static-pie.
(default-pie-ldflag): Likewise.
(+link-static-before-libc): Replace $(DEFAULT-LDFLAGS-$(@F))
with $(if $($(@F)-no-pie),$(no-pie-ldflag),$(default-pie-ldflag)).
Replace $(static-start-installed-name) with
$(real-static-start-installed-name).
(+prectorT): Updated for --enable-static-pie.
(+postctorT): Likewise.
(CFLAGS-.o): Add $(pie-default).
(CFLAGS-.op): Likewise.
* NEWS: Mention --enable-static-pie.
* config.h.in (ENABLE_STATIC_PIE): New.
* configure.ac (--enable-static-pie): New configure option.
(have-no-dynamic-linker): New LIBC_CONFIG_VAR.
(have-static-pie): Likewise.
Enable static PIE if linker supports --no-dynamic-linker.
(ENABLE_STATIC_PIE): New AC_DEFINE.
(enable-static-pie): New LIBC_CONFIG_VAR.
* configure: Regenerated.
* csu/Makefile (omit-deps): Add r$(start-installed-name) and
gr$(start-installed-name) for --enable-static-pie.
(extra-objs): Likewise.
(install-lib): Likewise.
(extra-objs): Add static-reloc.o and static-reloc.os
($(objpfx)$(start-installed-name)): Also depend on
$(objpfx)static-reloc.o.
($(objpfx)r$(start-installed-name)): New.
($(objpfx)g$(start-installed-name)): Also depend on
$(objpfx)static-reloc.os.
($(objpfx)gr$(start-installed-name)): New.
* csu/libc-start.c (LIBC_START_MAIN): Call _dl_relocate_static_pie
in libc.a.
* csu/libc-tls.c (__libc_setup_tls): Add main_map->l_addr to
initimage.
* csu/static-reloc.c: New file.
* elf/Makefile (routines): Add dl-reloc-static-pie.
(elide-routines.os): Likewise.
(DEFAULT-LDFLAGS-tst-tls1-static-non-pie): Removed.
(tst-tls1-static-non-pie-no-pie): New.
* elf/dl-reloc-static-pie.c: New file.
* elf/dl-support.c (_dl_get_dl_main_map): New function.
* elf/dynamic-link.h (ELF_DURING_STARTUP): Also check
STATIC_PIE_BOOTSTRAP.
* elf/get-dynamic-info.h (elf_get_dynamic_info): Likewise.
* gmon/Makefile (tests): Add tst-gmon-static-pie.
(tests-static): Likewise.
(DEFAULT-LDFLAGS-tst-gmon-static): Removed.
(tst-gmon-static-no-pie): New.
(CFLAGS-tst-gmon-static-pie.c): Likewise.
(CRT-tst-gmon-static-pie): Likewise.
(tst-gmon-static-pie-ENV): Likewise.
(tests-special): Likewise.
($(objpfx)tst-gmon-static-pie.out): Likewise.
(clean-tst-gmon-static-pie-data): Likewise.
($(objpfx)tst-gmon-static-pie-gprof.out): Likewise.
* gmon/tst-gmon-static-pie.c: New file.
* manual/install.texi: Document --enable-static-pie.
* sysdeps/generic/ldsodefs.h (_dl_relocate_static_pie): New.
(_dl_get_dl_main_map): Likewise.
* sysdeps/i386/configure.ac: Check if linker supports static PIE.
* sysdeps/x86_64/configure.ac: Likewise.
* sysdeps/i386/configure: Regenerated.
* sysdeps/x86_64/configure: Likewise.
* sysdeps/mips/Makefile (ASFLAGS-.o): Add $(pie-default).
(ASFLAGS-.op): Likewise.
2017-12-16 00:59:33 +00:00
|
|
|
# The linker must support --no-dynamic-linker.
|
|
|
|
if test "$libc_cv_no_dynamic_linker" != yes; then
|
|
|
|
AC_MSG_ERROR([linker support for --no-dynamic-linker needed])
|
|
|
|
fi
|
|
|
|
# Default to PIE.
|
|
|
|
libc_cv_pie_default=yes
|
|
|
|
AC_DEFINE(ENABLE_STATIC_PIE)
|
|
|
|
fi
|
|
|
|
LIBC_CONFIG_VAR([enable-static-pie], [$static_pie])
|
|
|
|
|
1995-03-10 04:12:12 +00:00
|
|
|
AC_SUBST(profile)
|
1997-06-21 02:59:26 +00:00
|
|
|
AC_SUBST(static_nss)
|
1995-03-10 04:12:12 +00:00
|
|
|
|
update from main archive 960906
Sat Sep 7 05:15:45 1996 Ulrich Drepper <drepper@cygnus.com>
* libio/iofdopen: Initialize _lock field only if _IO_MTSAFE_IO.
* libio/iofopen: Likewise.
* libio/iofopncook.c: Likewise.
* libio/iopopen.c: Likewise.
* libio/iovsprintf.c: Likewise.
* libio/iovsscanf.c: Likewise.
* libio/memstream.c: Likewise.
* libio/vasprintf.c: Likewise.
* libio/vdprintf.c: Likewise.
* libio/vsnprintf.c: Likewise.
Sat Sep 7 03:55:47 1996 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig (soversions.mk): Also use shlib-versions files
in add-on directories.
* config.make.in (config-defines): Remove. Not used anymore.
(defines): New variable. Initiliazed by @DEFINES@.
* configure.in: Add AC_SUBST(DEFINES).
* libio/Makefile (routines): When compiling reentrant libc add
clearerr_u, feof_u, ferror_u, fputc_u, getc_u, getchar_u,
iofflush_u, putc_u, putchar_u, ioflockfile.
(CPPFLAGS): Add -D_IO_MTSAFE_IO for reentrant libc.
* sysdeps/stub/libc-lock.h: Add stubs for __libc_cleanup_region_start
and __libc_cleanup_region_end.
* sysdeps/unix/i386/sysdep.S [_LIBC_REENTRANT]: Set errno
using __errno_location function.
* sysdeps/unix/sysv/linux/i386/sysdep.S [_LIBC_REENTRANT]: Set errno
using __errno_location function.
(__errno_location): New function.
* sysdeps/unix/sysv/linux/i386/sysdep.h [PIC]: Add second
syscall_error handler for reentrant libc.
* sysdeps/unix/opendir.c: Remove unneeded `;'.
* libio.h [_IO_MTSAFE_IO]: Include <pthread.h>.
[!_IO_MTSAFE_IO]: Define _IO_flockfile and _IO_funlockfile
as empty macros.
* libioP.h: Include <libc-lock.h>.
* libio/stdio.h: Add prototypes for *_locked and *_unlocked
functions.
* libio/clearerr.c: Use _IO_ protected versions of flockfile
and funlockfile to be namespace clean.
* libio/genops.c: Use __libc_lock_* macros for handling lock.
* libio/iofdopen: Add initialization of _lock in _IO_FILE.
* libio/iofopen: Likewise.
* libio/iofopncook.c: Likewise.
* libio/iopopen.c: Likewise.
* libio/iovsprintf.c: Likewise.
* libio/iovsscanf.c: Likewise.
* libio/memstream.c: Likewise.
* libio/vasprintf.c: Likewise.
* libio/vdprintf.c: Likewise.
* libio/vsnprintf.c: Likewise.
* libio/fgetc.c: Use __libc_cleanup_region_* macros instead
of flockfile etc.
* libio/fputc.c: Likewise.
* libio/freopen.c: Likewise.
* libio/fseek.c: Likewise.
* libio/getc.c: Likewise.
* libio/getchar.c: Likewise.
* libio/iofclose.c: Likewise.
* libio/iofflush.c: Likewise.
* libio/iofgetpos.c: Likewise.
* libio/iofgets.c: Likewise.
* libio/iofputs.c: Likewise.
* libio/iofread.c: Likewise.
* libio/iofsetpos.c: Likewise.
* libio/ioftell.c: Likewise.
* libio/iofwrite.c: Likewise.
* libio/iogetdelim.c: Likewise.
* libio/iogets.c: Likewise.
* libio/ioputs.c: Likewise.
* libio/iosetbuffer.c: Likewise.
* libio/iosetvbuf.c: Likewise.
* libio/ioungetc.c: Likewise.
* libio/putc.c: Likewise.
* libio/putchar.c: Likewise.
* libio/rewind.c: Likewise.
* stdio-common/vfprintf.c: Likewise.
* stdio-common/vfscanf.c: Likewise.
* libio/clearerr_u.c: Correct alias name.
* libio/ferror_u.c: Likewise.
* libio/fileno.c: Likewise.
* libio/fputc_u.c: Likewise.
* libio/getc.c: Likewise.
* libio/getc_u.c: Likewise.
* libio/getchar.c: Likewise.
* libio/getchar_u.c: Likewise.
* libio/putc.c: Likewise.
* libio/putchar.c: Likewise.
* libio/feof_u.c: Undefine macro with name of function before
definition of function itself.
* libio/ioflockfile.c: New file. Implementation of flockfile and
funlockfile.
* libio/putchar_u.c: Fix typo. Use stdout instead of fp.
* malloc/malloc.h: Don't include <libc-lock.h> and don't declare
_malloc_loc.
* malloc/free.c: Include <libc-lock.h>.
* malloc/realloc.c: Likewise.
* malloc/malloc-find.c: Likewise.
* malloc/malloc-size.c: Likewise.
* malloc/malloc-walk.c: Likewise.
* malloc/memalign.c: Likewise.
* malloc/malloc.c: Likewise.
* sysdeps/i386/dl-machine.h: Correct clearing of _dl_starting_up.
Fri Sep 6 19:38:49 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/stub/libc-lock.h: Define __libc_lock_critical_start
and __libc_lock_critical_end as empty macros.
* malloc/malloc.h: Don't include <libc-lock.h> and don't declare
__libc_malloc_lock.
* malloc/free.c: Include <libc-lock.h>.
* malloc/malloc-find.c: Likewise.
* malloc/malloc-size.c: Likewise.
* malloc/malloc-walk.c: Likewise.
* malloc/malloc.c: Likewise.
* malloc/memalign.c: Likewise.
* malloc/realloc.c: Likewise.
* Makefile: Undo change from Mon Sep 2 22:15:14 1996. No more
extra_solibs pass.
* Rules: Likewise.
* extra-lib.mk: Likewise.
* manual/Makefile: Likewise.
* db/Makefile (makedb): Choose dependecies based on build-shared.
Patch by Andres Schwab.
* sysdeps/posix/sysconf.c: Don't use PTHREAD_DESTRUCTOR_ITERATIONS
but _POSIX_THREAD_DESTRUCTOR_ITERATIONS.
* sysdeps/unix/sysv/linux/errnos.h: New file.
* sysdeps/unix/sysv/linux/schedbits.h: New file.
* sysdeps/unix/sysv/linux/waitflags.h: New file.
* sysdeps/unix/sysv/linux/gnu/types.h: Add definition of `key_t'.
Fri Sep 6 08:26:31 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* rpm/template: Fix typo in %build section.
Fri Sep 6 03:31:07 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/errnos.h: Don't define errno macro when
building libc without thread support.
* resolv/netdb.h: Likewise for h_errno macro.
Thu Sep 5 23:01:48 1996 Ulrich Drepper <drepper@cygnus.com>
* libc-symbols.h: Add new macro weak_const_function. It's like
weak_function, but the function is additionally marked as const.
* features.h: Only include <sys/cdefs.h> if !__ASSEMBLER__.
Thu Sep 5 22:55:49 1996 Richard Henderson <rth@tamu.edu>
* inet/herrno.c (__h_errno_location): New function.
(h_errno): Make strong_alias __h_errno so that we can access
the variable even if `h_errno' is a macro.
* resolv/netdb.h: Define macro h_errno to access thread specific
version of h_errno variable. Declare alias __h_errno for h_errno.
* resolv/res_query (h_errno): Remove definition.
* sysdeps/unix/sysv/linux/errnos.h [!__ASSEMBLER__ && __USE_REENTRANT]:
Add macro `errno' to get thread specific variable.
* sysdeps/unix/alpha/sysdep.S [_LIBC_REENTRANT]: Set errno using
__errno_location function.
(__errno_location): New function.
Thu Sep 5 21:08:44 1996 Ulrich Drepper <drepper@cygnus.com>
* posix/gnu/types.h: Remove definition of key_t.
* sysdeps/generic/gnu/types.h: Move it to here.
* sysdeps/unix/sysv/linux/gnu/types.h: Add Linux specific
definition of key_t.
* sysdeps/unix/sysv/linux/waitflags.h: New file. Linux specific
definitions.
* sysdeps/unix/sysv/linux/schedbits.h: New file. Include
clone prototypes and associated flags.
Thu Sep 5 08:58:47 1996 Richard Henderson <rth@tamu.edu>
* sysdeps/alpha/elf/start.S: Make _start global again.
hertz.
here.
Wed Sep 4 16:16:13 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/send.c (__send): De-ANSI-fy.
* sysdeps/mach/hurd/sendto.c (sendto): Likewise.
1996-09-07 04:10:57 +00:00
|
|
|
AC_SUBST(DEFINES)
|
|
|
|
|
2013-10-30 03:20:52 +00:00
|
|
|
dnl See sysdeps/mach/configure.ac for this variable.
|
2002-02-17 07:19:11 +00:00
|
|
|
AC_SUBST(mach_interface_list)
|
|
|
|
|
1998-05-12 12:22:17 +00:00
|
|
|
VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
|
|
|
|
RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
|
1997-01-06 22:07:28 +00:00
|
|
|
AC_SUBST(VERSION)
|
1998-05-12 12:22:17 +00:00
|
|
|
AC_SUBST(RELEASE)
|
1997-01-06 22:07:28 +00:00
|
|
|
|
2021-05-03 06:12:11 +00:00
|
|
|
if test "$pthread_in_libc" = yes; then
|
|
|
|
AC_DEFINE(PTHREAD_IN_LIBC)
|
|
|
|
fi
|
|
|
|
AC_SUBST(pthread_in_libc)
|
|
|
|
|
2012-10-19 20:03:12 +00:00
|
|
|
AC_CONFIG_FILES([config.make Makefile])
|
2002-10-18 22:17:48 +00:00
|
|
|
AC_CONFIG_COMMANDS([default],[[
|
1998-06-05 20:59:11 +00:00
|
|
|
case $CONFIG_FILES in *config.make*)
|
|
|
|
echo "$config_vars" >> config.make;;
|
|
|
|
esac
|
2002-10-18 22:17:48 +00:00
|
|
|
test -d bits || mkdir bits]],[[config_vars='$config_vars']])
|
|
|
|
AC_OUTPUT
|