glibc/Makeconfig

1469 lines
54 KiB
Plaintext
Raw Normal View History

# Copyright (C) 1991-2024 Free Software Foundation, Inc.
# Copyright The GNU Toolchain Authors.
1995-02-18 09:27:10 +08:00
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
1995-02-18 09:27:10 +08:00
# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
1995-02-18 09:27:10 +08:00
# You should have received a copy of the GNU Lesser General Public
# License along with the GNU C Library; if not, see
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 13:40:42 +08:00
# <https://www.gnu.org/licenses/>.
1995-02-18 09:27:10 +08:00
#
# Makefile configuration options for the GNU C library.
#
ifneq (,)
This makefile requires GNU Make.
endif
Update. 1997-03-25 02:15 Ulrich Drepper <drepper@cygnus.com> * gmon/gmon.c: Optimize a bit by using more sets of records to write in a single writev call. * math/math.h: Add definitions of macros __MATHCALLX and __MATHDECLX. * math/mathcalls.h: Use __MATHCALLX for fabs, infnan, copysign, nan, isnan, nextafter, trunc, __fpclassify and signbit to mark as `const'. Use __MATHDECLX for isinf and finite. * sysdeps/generic/setenv.c [_LIBC]: Define __clearenv and make clearenv a weak alias. Implement complex exponential function. * sysdeps/libm-ieee754/s_cexp.c: New file. * sysdeps/libm-ieee754/s_cexpf.c: New file. * sysdeps/libm-ieee754/s_cexpl.c: New file. * sysdeps/libm-ieee754/s_nan.c: Define function as __nan and make nan a weak alias. * sysdeps/libm-ieee754/s_nanf.c: Likewise for nanf. * sysdeps/libm-ieee754/s_nanl.c: Likewise for nanl. * sysdeps/unix/sysv/linux/iovec.h: Don't use kernel header because of type clashes. Add all definitions here. * sysdeps/unix/sysv/linux/shmat.c: Likewise. Correct types according to XPG4.2. * sysdeps/unix/sysv/linux/shmdt.c: Likewise. * sysdeps/unix/sysv/linux/msgrcv.c: Likewise. * sysvipc/sys/shm.h (shmat, shmdt): Correct types. * sysdeps/unix/sysv/linux/sys/kd.h: Define _LINUX_TYPES_H to avoid use of kernel types. 1997-03-25 00:00 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/netinet/ip.h (struct ip_timestamp): Correct typos. Reported by a sun <asun@zoology.washington.edu>. 1997-03-20 21:58 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/libm-ieee754/s_asinhl.c: Fix sign of result. 1997-03-20 16:20 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/libm-ieee754/e_atan2l.c: Fix typo. 1997-03-20 14:23 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/fpu/__math.h (__logb, logb): Don't define. * sysdeps/m68k/fpu/s_logb.c: Removed. * sysdeps/m68k/fpu/s_logbf.c: Removed. * sysdeps/m68k/fpu/s_logbl.c: Removed. * sysdeps/m68k/fpu/__math.h (__ieee754_atan2, __ieee754_pow): Don't define here. * sysdeps/m68k/fpu/e_atan2.c: Rewritten. * sysdeps/m68k/fpu/e_pow.c: Likewise. * sysdeps/m68k/fpu/e_atan2f.c: Based on e_atan2.c. * sysdeps/m68k/fpu/e_atan2l.c: Likewise. * sysdeps/m68k/fpu/e_powf.c: Based on e_pow.c. * sysdeps/m68k/fpu/e_powl.c: Likewise. * sysdeps/m68k/fpu/s_log2.c: New file. * sysdeps/m68k/fpu/s_log2f.c: New file. * sysdeps/m68k/fpu/s_log2l.c: New file. * sysdeps/m68k/fpu/s_exp2.c: New file. * sysdeps/m68k/fpu/s_exp2f.c: New file. * sysdeps/m68k/fpu/s_exp2l.c: New file. 1997-03-20 14:46 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makeconfig (all): Make sure this is always the default goal. 1997-03-20 11:09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * math/libm-test.c: Increase epsilon in many places. Fix many typos. Allow optinal argument also for short option. 1997-03-20 11:09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * math/Makefile ($(objpfx)$(tests)): Link against libm. 1997-03-24 23:14 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-ieee754/s_fpclassifyl.c: Correct recognition of denormalized numbers. * sysdeps/i386/huge_val.h: Remove references to byte order macros. Don't include <endian.h>. 1997-03-19 15:18 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/huge_val.h: Remove references to byte order macros. Don't include <endian.h>. 1997-03-24 23:09 Ulrich Drepper <drepper@cygnus.com> * inet/rcmd.c (iruserok): Use access instead of euidaccess. 1997-03-15 18:08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * math/cmathcalls.h: Remove whitespace before function name in use of __MATHDECL macro, to make it compilable with a traditional preprocessor. 1997-03-24 15:31 Ulrich Drepper <drepper@cygnus.com> * configure.in: Use AC_PROG_CC instead of AC_PROG_TOOL to find compiler. 1997-03-24 02:34 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-ieee754/s_finitel.c (__finitel): Shift return value by 31 positions to get 0/1 result. Patch by Joe Keane <jgk@jgk.org>. 1997-03-23 12:15 H.J. Lu <hjl@gnu.ai.mit.edu> * posix/getopt.c (__getopt_nonoption_flags): Make it extern to prevent from ld linking in getopt.o even if there is another incompatible one. * posix/getopt_init.c (__getopt_nonoption_flags): Remove extern. 1997-03-23 23:30 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * nis/nis_call.c (__do_niscall): Print message if cold start file does not exist. * nis/nis_file.c: Don't print error messages. * nis/nis_local_name.c (nis_local_host): Fix pointer errors. * nis/rpcsvc/ypclnt.h: Fix copyright and prototypes. * nis/rpcsvc/nis.h: Likewise. * nis/ypclnt.c: Fix prototypes. 1997-03-24 01:36 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-i387/e_scalb.S: Pop additional result before returning. * sysdeps/libm-i387/e_scalbf.S: Likewise. * sysdeps/libm-i387/e_scalbl.S: Likewise. Reported by Andreas Jaeger <aj@arthur.pfalz.de>. * elf/rtld.c (dl_main): Set main_map->l_opencount to 1 also if dynamic linker was called implicitly by the kernel. Reported by Eric Youngdale <eric@andante.jic.com>. * math/Makefile (CFLAGS-test-float.c, CFLAGS-test-double.c, CFLAGS-test-longdouble.c): New variables. Set to -fno-inline to prevent clever optimizations which corrupt the tests. 1997-03-23 21:33 Andreas Jaeger <aj@arthur.pfalz.de> * math/libm-test.c (scalb_test): New function. (sqrt_test): New function. (scalbn_test): New function. (ilogb_test): New function. (main): Added calls for new test functions. (ldexp_test): Add another test for ldexp(x,0). 1997-03-23 12:35 Andreas Jaeger <aj@arthur.pfalz.de> * math/libm-test.c (remquo_test): Correct messages so that they match the tests. (copysign_test): Likewise. 1997-03-23 16:28 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile (routines): Add printf_size. * stdio-common/printf.h: Add declarations for printf_size and printf_size_info. * stdio-common/printf-parse.h (__printf_arginfo_table): Correct declaration. (parse_one_spec): Test whether __printf_function_table is not NULL before using registered handlers and don't test __printf_arginfo_table. Update nargs also when handler is registered. * stdio-common/vfprintf.c (vfprintf): Count number of specifiers processed in fast loop. * stdio-common/printf_size: New file. 1997-03-22 04:53 Ulgmon_out_readrich Drepper <drepper@cygnus.com>
1997-03-25 09:45:04 +08:00
all: # Make this the default goal
1995-02-18 09:27:10 +08:00
ifneq "$(origin +included-Makeconfig)" "file"
+included-Makeconfig := yes
ifdef subdir
.. := ../
endif
# $(common-objdir) is the place to put objects and
1995-02-18 09:27:10 +08:00
# such that are not specific to a single subdir.
ifdef objdir
update from main archive 960829 Fri Aug 30 01:26:44 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/Dist: Add close.S. * sysdeps/unix/sysv/linux/m68k/Dist: Likewise. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * version.c: Add comment about where to report bugs to. * catgets/gencat.c (usage): Likewise. * db/makedb.c (usage): Likewise. * locale/programs/locale.c (usage): Likewise. * locale/programs/localedef.c (usage): Likewise. * manual/socket.texi: A little bit better wording. Thu Aug 29 18:03:06 1996 Ulrich Drepper <drepper@cygnus.com> * Makerules: Make sure directory exists before generating stamp file. (BUILD_CFLAGS): Always refer to using $(..). * manual/Makefile: Make sure directory exists before generating stamp file. (make-target-directory): Add macro definition. * sysdeps/generic/Makefile: Make sure directory exists before generating stamp file. * Makefile (distribute): Add autolock.sh. Reported by Fila Kolodny. Tue Aug 27 10:06:22 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> When compiling in separate directory put objects into subdirectories matching the source layout. * Makeconfig (objpfx) [ifdef objdir]: Append $(subdir). When looking for configparms try in $(common-objpfx). Use $(common-objpfx)SUBDIR to find objects from other subdirectory builds. * Makerules: Add $(objpfx) to vpath list. (make-dummy-dep): Use $(common-objpfx) to avoid creating dummy.d more than once. All uses in dependency lists changed. (+make-deps): Make target directory. (sed-remove-objpfx): Substitute $(common-objpfx). (do-ar, build-extra-lib, $(common-objpfx)stub-$(subdir)): Use $(objpfx) instead of $(objdir) for cd command. (O%-lib): Always find libc relative to $(..). (subdir-stamps): Collect stamp files from subdirs. (common-mostlyclean): Remove stub file in $(common-objpfx). * MakeTAGS ($P/siglist.pot): Find siglist.c in stdio-common. * Rules (dep-dummy-lib): Use $(common-objpfx) to avoid creating to more than once. ($(objpfx)dummy.c, $(objpfx)empty.c): Change target name to use $(common-objfpx). All uses in dependency lists changed. (generated): Prepend $(..) to names. * bare/Makefile ($(objpfx)lib$(config-vendor).a): Remove $(objpfx) from $@. * nss/Makefile ($(objpfx)libnss_dns.so, $(objpfx)libnss_db.so): Use $(common-objpfx) instead of $(..) in dependencies. * sysdeps/mach/Makefile (mach-objpfx): Unconditionally use $(common-objpfx) instead of $(..) and (objpfx). * sysdeps/mach/hurd/Makefile (hurd-objpfx): Likewise. (rpath-link): Likewise. (rpcuserlibs): Likewise. * sysdeps/unix/Makefile [$(subdir) = stdio-common]: Check for errlist.c in $(objpfx), not $(common-objpfx). ($(common-objpfx)s-proto.d): Special rule not covered by pattern rule. * sysdeps/unix/make-syscalls.sh: Make syscall rules depending on s-proto.d in $(common-objpfx), not $(objpfx). Thu Aug 29 17:45:49 1996 Ulrich Drepper <drepper@cygnus.com> * nss/nsswitch.c (nss_dlerror_run): Free returned error string. Thu Aug 29 15:53:33 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-ieee754/e_acoshl.c: New file. `long double' implementation. * sysdeps/libm-ieee754/e_atanhl.c: Likewise. * sysdeps/libm-ieee754/e_remainderl.c: Likewise. * sysdeps/libm-ieee754/e_scalbl.c: Likewise. * sysdeps/libm-ieee754/s_asinhl.c: Likewise. * sysdeps/libm-ieee754/s_cosl.c: Likewise. * sysdeps/libm-ieee754/s_sinl.c: Likewise. * sysdeps/libm-ieee754/s_tanhl.c: Likewise. * sysdeps/libm-ieee754/s_tanl.c: Likewise. * stdio-common/printf_fp.c (__printf_fp): Use default value '.' if
1996-08-30 08:58:28 +08:00
objpfx := $(patsubst %//,%/,$(objdir)/$(subdir)/)
common-objpfx = $(objdir)/
1995-02-18 09:27:10 +08:00
common-objdir = $(objdir)
else
$(error objdir must be defined by the build-directory Makefile)
1995-02-18 09:27:10 +08:00
endif
# Did we request 'make -s' run? "yes" or "no".
# Starting from make-4.4 MAKEFLAGS now contains long
# options like '--shuffle'. To detect presence of 's'
# we pick first word with short options. Long options
# are guaranteed to come after whitespace. We use '-'
# prefix to always have a word before long options
# even if no short options were passed.
# Typical MAKEFLAGS values to watch for:
# "rs --shuffle=42" (silent)
# " --shuffle" (not silent)
ifeq ($(findstring s, $(firstword -$(MAKEFLAGS))),)
silent-make := no
else
silent-make := yes
endif
# Root of the sysdeps tree.
sysdep_dir := $(..)sysdeps
export sysdep_dir := $(sysdep_dir)
1995-02-18 09:27:10 +08:00
# Get the values defined by options to `configure'.
include $(common-objpfx)config.make
# What flags to give to sources which call user provided callbacks
Remove -fexceptions configure test. There is a configure test for -fexceptions. This option was added in GCC 2.8, so the test is obsolete - and indeed plenty of code is using -fexceptions directly. This patch removes the configure test and makes all uses of $(exceptions) use -fexceptions directly. Tested for x86_64 and x86 (testsuite, and that installed shared libraries are unchanged by the patch). * configure.ac (libc_cv_gcc_exceptions): Remove configure test. * configure: Regenerated. * sysdeps/arm/configure.ac (libc_cv_gcc_exceptions): Do not set variable. (exceptions): Likewise. * sysdeps/arm/configure: Regenerated. * config.make.in (exceptions): Remove variable. * Makeconfig (uses-callbacks): Use -fexceptions instead of $(exceptions). * debug/Makefile (CFLAGS-dprintf_chk.c): Likewise. (CFLAGS-vdprintf_chk.c): Likewise. (CFLAGS-printf_chk.c): Likewise. (CFLAGS-fprintf_chk.c): Likewise. (CFLAGS-vprintf_chk.c): Likewise. (CFLAGS-vfprintf_chk.c): Likewise. (CFLAGS-gets_chk.c): Likewise. (CFLAGS-fgets_chk.c): Likewise. (CFLAGS-fgets_u_chk.c): Likewise. (CFLAGS-fread_chk.c): Likewise. (CFLAGS-fread_u_chk.c): Likewise. (CFLAGS-wprintf_chk.c): Likewise. (CFLAGS-fwprintf_chk.c): Likewise. (CFLAGS-vwprintf_chk.c): Likewise. (CFLAGS-vfwprintf_chk.c): Likewise. (CFLAGS-fgetws_chk.c): Likewise. (CFLAGS-fgetws_u_chk.c): Likewise. * libio/Makefile (CFLAGS-fileops.c): Likewise. (CFLAGS-fputc.c): Likewise. (CFLAGS-fputwc.c): Likewise. (CFLAGS-freopen64.c): Likewise. (CFLAGS-freopen.c): Likewise. (CFLAGS-fseek.c): Likewise. (CFLAGS-fseeko64.c): Likewise. (CFLAGS-fseeko.c): Likewise. (CFLAGS-ftello64.c): Likewise. (CFLAGS-ftello.c): Likewise. (CFLAGS-fwide.c): Likewise. (CFLAGS-genops.c): Likewise. (CFLAGS-getc.c): Likewise. (CFLAGS-getchar.c): Likewise. (CFLAGS-getwc.c): Likewise. (CFLAGS-getwchar.c): Likewise. (CFLAGS-iofclose.c): Likewise. (CFLAGS-iofflush.c): Likewise. (CFLAGS-iofgetpos64.c): Likewise. (CFLAGS-iofgetpos.c): Likewise. (CFLAGS-iofgets.c): Likewise. (CFLAGS-iofgetws.c): Likewise. (CFLAGS-iofputs.c): Likewise. (CFLAGS-iofputws.c): Likewise. (CFLAGS-iofread.c): Likewise. (CFLAGS-iofsetpos64.c): Likewise. (CFLAGS-iofsetpos.c): Likewise. (CFLAGS-ioftell.c): Likewise. (CFLAGS-iofwrite.c): Likewise. (CFLAGS-iogetdelim.c): Likewise. (CFLAGS-iogetline.c): Likewise. (CFLAGS-iogets.c): Likewise. (CFLAGS-iogetwline.c): Likewise. (CFLAGS-ioputs.c): Likewise. (CFLAGS-ioseekoff.c): Likewise. (CFLAGS-ioseekpos.c): Likewise. (CFLAGS-iosetbuffer.c): Likewise. (CFLAGS-iosetvbuf.c): Likewise. (CFLAGS-ioungetc.c): Likewise. (CFLAGS-ioungetwc.c): Likewise. (CFLAGS-oldfileops.c): Likewise. (CFLAGS-oldiofclose.c): Likewise. (CFLAGS-oldiofgetpos64.c): Likewise. (CFLAGS-oldiofgetpos.c): Likewise. (CFLAGS-oldiofsetpos64.c): Likewise. (CFLAGS-oldiofsetpos.c): Likewise. (CFLAGS-peekc.c): Likewise. (CFLAGS-putc.c): Likewise. (CFLAGS-putchar.c): Likewise. (CFLAGS-putwc.c): Likewise. (CFLAGS-putwchar.c): Likewise. (CFLAGS-rewind.c): Likewise. (CFLAGS-wfileops.c): Likewise. (CFLAGS-wgenops.c): Likewise. (CFLAGS-oldiofopen.c): Likewise. (CFLAGS-iofopen.c): Likewise. (CFLAGS-iofopen64.c): Likewise. (CFLAGS-oldtmpfile.c): Likewise. * stdio-common/Makefile (CFLAGS-vfprintf.c): Likewise. (CFLAGS-fprintf.c): Likewise. (CFLAGS-printf.c): Likewise. (CFLAGS-vfwprintf.c): Likewise. (CFLAGS-vfscanf.c): Likewise. (CFLAGS-vfwscanf.c): Likewise. (CFLAGS-fscanf.c): Likewise. (CFLAGS-scanf.c): Likewise. (CFLAGS-isoc99_vfscanf.c): Likewise. (CFLAGS-isoc99_vscanf.c): Likewise. (CFLAGS-isoc99_fscanf.c): Likewise. (CFLAGS-isoc99_scanf.c): Likewise. * wcsmbs/Makefile (CFLAGS-isoc99_wscanf.c): Likewise. (CFLAGS-isoc99_fwscanf.c): Likewise. (CFLAGS-isoc99_vwscanf.c): Likewise. (CFLAGS-isoc99_vfwscanf.c): Likewise.
2015-10-16 06:35:13 +08:00
uses-callbacks = -fexceptions
# What flags to give to tests which test stack alignment
stack-align-test-flags =
update from main archive 960904 Thu Sep 5 03:20:42 1996 Ulrich Drepper <drepper@cygnus.com> Change configuration and Makefiles to allow add-ons to have a sysdeps/ directory hierachy. * configure.in: Test for sysdeps/ directory in add-ons. Before all test and searches in these hierachies, too. * Makeconfig (full-config-subdirs): Define based on $(config-sysdirs). Extend with $(..) if not absolute path. Use $(full-config-subdirs) where $(config-sysdirs) was used. * Makefile ($(objpfx)sysd-dirs): Use config-sysdirs. * MakeTAGS: Use $(full-config-subdirs). * Makerules: Change comment to libc.so link script. (sysdirs): Define based on $(full-config-subdirs). (sysd-Makefile): Define using config-sysdirs. (sysd-rules): Likewise. * sysdeps/unix/Makefile (sysd-syscalls): Define based on +sysdep-dirs. * sysdeps/unix/make-syscalls.sh: Remove basedir argument. Wed Sep 4 01:32:21 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/fpu/k_cos.c: Rewritten for better accuracy. * sysdeps/m68k/fpu/k_sin.c: Likewise. * sysdeps/m68k/fpu/k_tan.c: Likewise. Thu Sep 5 01:06:09 1996 Richard Henderson <rth@tamu.edu> * malloc/free.c (free): Protect by using __libc_malloc_lock. * malloc/malloc-find.c (malloc_find_object_address): Likewise. * malloc/malloc-size.c (malloc_usable_size): Likewise. * malloc/malloc-walk.c (malloc_walk): Likewise. * malloc/memalign.c (memalign): Likewise. * malloc/realloc.c (realloc): Likewise. * malloc/malloc.c: Define __libc_malloc_lock. (_malloc_internal): Don't use `malloc'. Instead look for `__malloc_hook' or call `_malloc_internal'. (malloc): Protect by using `__libc_malloc_lock'. * malloc/malloc.h: Declare `__libc_malloc_lock'. Mon Sep 2 22:42:59 1996 Richard Henderson <rth@tamu.edu> * sysdeps/alpha/elf/start.S: Use weak_alias for __start instead of the hard definition. * sysdeps/alpha/dl-machine.h (RTLD_START): Add type info for _start and _dl_start_user. * sysdeps/unix/sysv/linux/alpha/init-first.h (SYSDEP_CALL_INIT): Make _dl_starting_up weak. Add type info for NAME. Mon Sep 2 22:15:14 1996 Richard Henderson <rth@tamu.edu> * Makefile (all): Add extra_solibs pass. (+subdir_targets): Same. * Rules (extra_solibs): New phony empty target for subdirs without extra libs. * extra-lib.mk: Build lib*.so* in extra_solibs not lib-noranlib. * manual/Makefile: Add dummy extra_solibs target. Sun Sep 1 15:41:22 1996 Richard Henderson <rth@tamu.edu> * Makeconfig (+link): Add $(link-extra-libs). (link-extra-libs): New variable which expands to the full paths of the other libraries needed by a program, as controled by LDLIBS-$(@F). * db/Makefile: Use LDLIBS-makedb to link libdb not a dependency, as the later attempts to install the library before linking it. * sysdeps/unix/alpha/sysdep.S: Align errno. * sysdeps/unix/sysv/linux/alpha/ioperm.c (struct platform): Add hae_shift entry. (io): Move bus_memory_base and sparse_bus_memory_base into struct. (_hae_shift): New function. * sysdeps/unix/sysv/linux/alpha/sys/io.h: New file. Prototypes for the bus query functions. Sat Aug 31 18:14:54 1996 Richard Henderson <rth@tamu.edu> * elf/dl-close.c (_dl_close): In static executables, map->l_prev can be NULL when unloading a library. * elf/dl-open.c (_dl_open): Pass __environ instead of __libc_envp to the library .init function. * sysdeps/alpha/dl-machine.h (elf_machine_rela): Since we omitted part of the COPY reloc processing earlier, omit the rest now -- we'll get into less trouble later when some fool does use a COPY. * sysdeps/unix/sysv/linux/init-first.c (init): Accept argc et al as parameters. Move all argc and __libc_multiple_libcs calculation out to init-first.h. Use __environ not __libc_envp. * sysdeps/unix/sysv/linux/alpha/init-first.h: Rewrite. * sysdeps/unix/sysv/linux/i386/init-first.h: Rewrite. Thu Aug 29 20:26:40 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/posix/profil.c (profil): Don't clobber saved timer and signal settings when profiling was already turned on. * csu/gmon-start.c (__gmon_start__) [HAVE_INITFINI]: Protect from being called twice. Wed Sep 4 01:31:50 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/mmap.S: Test for 0 < return value < -4096 and not < 0 to decide about failure. Reported by Andreas Jaeger. Tue Sep 3 19:04:05 1996 Ulrich Drepper <drepper@cygnus.com> * stdio-common/vfscanf.c (__vfscanf): Don't count EOF char in %c format. Sat Aug 31 18:10:51 1996 Ulrich Drepper <drepper@cygnus.com> * wcsmbs/wchar.h: Define prototypes for wcstoq and wcstouq only #ifdef __USE_GNU. Sat Aug 31 12:34:29 1996 Ulrich Drepper <drepper@cygnus.com> * version.c: Add missing newline character in banner. * sysdeps/unix/sysv/linux/alpha/Dist: Correct typo. * sysdeps/unix/sysv/linux/i386/Dist: Likewise. Sat Aug 31 03:07:39 1996 Ulrich Drepper <drepper@cygnus.com> * intl/l10nflist.c (_nl_normalize_codeset): We convert to lower case, so don't prepend uppercase `ISO' for only numeric arg.
1996-09-05 10:49:18 +08:00
# Complete path to sysdep dirs.
* Makefile (subdir-target-args): New variable. ($(all-subdirs-targets)): Use it in place of -C option. * Rules: Use $(..) instead of ../ if it's already defined. * Makeconfig (subdir-srcdirs): New variable. * csu/Makefile (all-Banner-files): Use it. * configure.in (--enable-add-ons): Set to "yes" by default. Handle absolute add-on directory names when looking for configure fragments. Also look for sysdeps/*/preconfigure fragments in add-ons. Require add-on configure to set $libc_add_on_canonical, use that in $add_ons_sfx. Substitute add_on_subdirs with computed list of subdir names each add-on configure set in libc_add_on_subdirs. * configure: Regenerated. * Makefile (%/preconfigure: %/preconfigure.in): New pattern rule. * config.make.in (add-on-subdirs): New substituted variable. * Makeconfig (all-subdirs): Include $(add-on-subdirs). Remove $(add-ons), $(sysdep-subdirs). Don't filter out $(sysdep-inhibit-subdirs). ($(common-objpfx)sysd-dirs): Target removed. Don't include it. ($(common-objpfx)sysd-sorted): Rewritten to feed Depend and Subdirs files together to gen-sorted.awk, and $(subdirs) via -v. (subdirs): Remove magic reordering for mach and hurd. * scripts/gen-sorted.awk: Use subdirs from command line. Process Subdirs and Depend files directly. Let Subdirs files use "first dir" and "inhibit dir". Always move elf to the end of the list. * hurd/Depend: New file. * sysdeps/mach/Subdirs: Use "first mach". * Makefile (dist-separate): Remove linuxthreads. (dist-separate-linuxthreads): Variable removed. (glibc-%.tar rule): Use $(sysdeps-add-ons). * Makerules ($(common-objpfx)Versions.v.i): Use $(subdirs), not $(all-subdirs). (sysdep-makefiles): Use $(sysdirs). (sysdirs): Remove export. ($(+sysdir_pfx)sysd-rules): Handle absolute directory names in $(config-sysdirs). (+sysdir_pfx): Variable removed. (sysd-rules): Use $(common-objpfx) in place of it. (sysdirs): Variable moved to ... * Makeconfig (sysdirs): ... here. Handle absolute directory names in $(config-sysdirs). (full_config_sysdirs): Variable removed. * csu/Makefile: Use $(sysdirs) in vpath directive. * math/Makefile (ulps-file): Use $(sysdirs). * sysdeps/gnu/Makefile (errlist-c): Likewise. ($(objpfx)errlist-compat.c): Likewise. * Makeconfig (all-Subdirs-files): Likewise. ($(common-objpfx)config.status): Likewise. * configure.in (sysnames): Handle absolute add-on directory names. (sysdeps_add_ons): New variable, AC_SUBST it. Compute which add-ons contributed sysdeps directories. * configure: Regenerated. * config.make.in (sysdeps-add-ons): New substituted variable. * Makerules (+sysdep_dirs, +sysdep-includes): Variables moved ... * Makeconfig: ... to here. (+sysdep_dirs): Append $(sysdeps-add-ons) here. (+includes): Remove $(objpfx) include, already in $(+sysdep_dirs). Remove $(includes). (sysdep-makeconfigs): Use $(+sysdep_dirs). ($(common-objpfx)shlib-versions.v.i): Likewise. * Makeconfig: Remove hair to set Makeconfig-add-on. * sysdeps/unix/Makefile (sysdirs): Remove export. (asm_CPP): Variable removed. ($(common-objpfx)sysd-syscalls): Pass them directly for the script. * sysdeps/posix/Makefile: New file. * Makerules (L_tmpnam, TMP_MAX, L_ctermid, L_cuserid): Set non-posix values here with ?=. * stdlib/gen-mpn-copy: File removed. * stdlib/Makefile (distribute): Remove it. * configure.in: Don't grok --with-gmp. * configure: Regenerated. * configure.in (libc_cv_idn): Don't check it; libidn/configure does it. * configure: Regenerated. * bare: Directory removed, saved in ports repository.
2006-02-28 15:11:04 +08:00
# `configure' writes a definition of `config-sysdirs' in `config.make'.
sysdirs := $(foreach D,$(config-sysdirs),$(firstword $(filter /%,$D) $(..)$D))
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 23:58:13 +08:00
+sysdep_dirs = $(sysdirs)
* Makefile (subdir-target-args): New variable. ($(all-subdirs-targets)): Use it in place of -C option. * Rules: Use $(..) instead of ../ if it's already defined. * Makeconfig (subdir-srcdirs): New variable. * csu/Makefile (all-Banner-files): Use it. * configure.in (--enable-add-ons): Set to "yes" by default. Handle absolute add-on directory names when looking for configure fragments. Also look for sysdeps/*/preconfigure fragments in add-ons. Require add-on configure to set $libc_add_on_canonical, use that in $add_ons_sfx. Substitute add_on_subdirs with computed list of subdir names each add-on configure set in libc_add_on_subdirs. * configure: Regenerated. * Makefile (%/preconfigure: %/preconfigure.in): New pattern rule. * config.make.in (add-on-subdirs): New substituted variable. * Makeconfig (all-subdirs): Include $(add-on-subdirs). Remove $(add-ons), $(sysdep-subdirs). Don't filter out $(sysdep-inhibit-subdirs). ($(common-objpfx)sysd-dirs): Target removed. Don't include it. ($(common-objpfx)sysd-sorted): Rewritten to feed Depend and Subdirs files together to gen-sorted.awk, and $(subdirs) via -v. (subdirs): Remove magic reordering for mach and hurd. * scripts/gen-sorted.awk: Use subdirs from command line. Process Subdirs and Depend files directly. Let Subdirs files use "first dir" and "inhibit dir". Always move elf to the end of the list. * hurd/Depend: New file. * sysdeps/mach/Subdirs: Use "first mach". * Makefile (dist-separate): Remove linuxthreads. (dist-separate-linuxthreads): Variable removed. (glibc-%.tar rule): Use $(sysdeps-add-ons). * Makerules ($(common-objpfx)Versions.v.i): Use $(subdirs), not $(all-subdirs). (sysdep-makefiles): Use $(sysdirs). (sysdirs): Remove export. ($(+sysdir_pfx)sysd-rules): Handle absolute directory names in $(config-sysdirs). (+sysdir_pfx): Variable removed. (sysd-rules): Use $(common-objpfx) in place of it. (sysdirs): Variable moved to ... * Makeconfig (sysdirs): ... here. Handle absolute directory names in $(config-sysdirs). (full_config_sysdirs): Variable removed. * csu/Makefile: Use $(sysdirs) in vpath directive. * math/Makefile (ulps-file): Use $(sysdirs). * sysdeps/gnu/Makefile (errlist-c): Likewise. ($(objpfx)errlist-compat.c): Likewise. * Makeconfig (all-Subdirs-files): Likewise. ($(common-objpfx)config.status): Likewise. * configure.in (sysnames): Handle absolute add-on directory names. (sysdeps_add_ons): New variable, AC_SUBST it. Compute which add-ons contributed sysdeps directories. * configure: Regenerated. * config.make.in (sysdeps-add-ons): New substituted variable. * Makerules (+sysdep_dirs, +sysdep-includes): Variables moved ... * Makeconfig: ... to here. (+sysdep_dirs): Append $(sysdeps-add-ons) here. (+includes): Remove $(objpfx) include, already in $(+sysdep_dirs). Remove $(includes). (sysdep-makeconfigs): Use $(+sysdep_dirs). ($(common-objpfx)shlib-versions.v.i): Likewise. * Makeconfig: Remove hair to set Makeconfig-add-on. * sysdeps/unix/Makefile (sysdirs): Remove export. (asm_CPP): Variable removed. ($(common-objpfx)sysd-syscalls): Pass them directly for the script. * sysdeps/posix/Makefile: New file. * Makerules (L_tmpnam, TMP_MAX, L_ctermid, L_cuserid): Set non-posix values here with ?=. * stdlib/gen-mpn-copy: File removed. * stdlib/Makefile (distribute): Remove it. * configure.in: Don't grok --with-gmp. * configure: Regenerated. * configure.in (libc_cv_idn): Don't check it; libidn/configure does it. * configure: Regenerated. * bare: Directory removed, saved in ports repository.
2006-02-28 15:11:04 +08:00
ifdef objdir
+sysdep_dirs := $(objdir) $(+sysdep_dirs)
endif
update from main archive 960904 Thu Sep 5 03:20:42 1996 Ulrich Drepper <drepper@cygnus.com> Change configuration and Makefiles to allow add-ons to have a sysdeps/ directory hierachy. * configure.in: Test for sysdeps/ directory in add-ons. Before all test and searches in these hierachies, too. * Makeconfig (full-config-subdirs): Define based on $(config-sysdirs). Extend with $(..) if not absolute path. Use $(full-config-subdirs) where $(config-sysdirs) was used. * Makefile ($(objpfx)sysd-dirs): Use config-sysdirs. * MakeTAGS: Use $(full-config-subdirs). * Makerules: Change comment to libc.so link script. (sysdirs): Define based on $(full-config-subdirs). (sysd-Makefile): Define using config-sysdirs. (sysd-rules): Likewise. * sysdeps/unix/Makefile (sysd-syscalls): Define based on +sysdep-dirs. * sysdeps/unix/make-syscalls.sh: Remove basedir argument. Wed Sep 4 01:32:21 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/fpu/k_cos.c: Rewritten for better accuracy. * sysdeps/m68k/fpu/k_sin.c: Likewise. * sysdeps/m68k/fpu/k_tan.c: Likewise. Thu Sep 5 01:06:09 1996 Richard Henderson <rth@tamu.edu> * malloc/free.c (free): Protect by using __libc_malloc_lock. * malloc/malloc-find.c (malloc_find_object_address): Likewise. * malloc/malloc-size.c (malloc_usable_size): Likewise. * malloc/malloc-walk.c (malloc_walk): Likewise. * malloc/memalign.c (memalign): Likewise. * malloc/realloc.c (realloc): Likewise. * malloc/malloc.c: Define __libc_malloc_lock. (_malloc_internal): Don't use `malloc'. Instead look for `__malloc_hook' or call `_malloc_internal'. (malloc): Protect by using `__libc_malloc_lock'. * malloc/malloc.h: Declare `__libc_malloc_lock'. Mon Sep 2 22:42:59 1996 Richard Henderson <rth@tamu.edu> * sysdeps/alpha/elf/start.S: Use weak_alias for __start instead of the hard definition. * sysdeps/alpha/dl-machine.h (RTLD_START): Add type info for _start and _dl_start_user. * sysdeps/unix/sysv/linux/alpha/init-first.h (SYSDEP_CALL_INIT): Make _dl_starting_up weak. Add type info for NAME. Mon Sep 2 22:15:14 1996 Richard Henderson <rth@tamu.edu> * Makefile (all): Add extra_solibs pass. (+subdir_targets): Same. * Rules (extra_solibs): New phony empty target for subdirs without extra libs. * extra-lib.mk: Build lib*.so* in extra_solibs not lib-noranlib. * manual/Makefile: Add dummy extra_solibs target. Sun Sep 1 15:41:22 1996 Richard Henderson <rth@tamu.edu> * Makeconfig (+link): Add $(link-extra-libs). (link-extra-libs): New variable which expands to the full paths of the other libraries needed by a program, as controled by LDLIBS-$(@F). * db/Makefile: Use LDLIBS-makedb to link libdb not a dependency, as the later attempts to install the library before linking it. * sysdeps/unix/alpha/sysdep.S: Align errno. * sysdeps/unix/sysv/linux/alpha/ioperm.c (struct platform): Add hae_shift entry. (io): Move bus_memory_base and sparse_bus_memory_base into struct. (_hae_shift): New function. * sysdeps/unix/sysv/linux/alpha/sys/io.h: New file. Prototypes for the bus query functions. Sat Aug 31 18:14:54 1996 Richard Henderson <rth@tamu.edu> * elf/dl-close.c (_dl_close): In static executables, map->l_prev can be NULL when unloading a library. * elf/dl-open.c (_dl_open): Pass __environ instead of __libc_envp to the library .init function. * sysdeps/alpha/dl-machine.h (elf_machine_rela): Since we omitted part of the COPY reloc processing earlier, omit the rest now -- we'll get into less trouble later when some fool does use a COPY. * sysdeps/unix/sysv/linux/init-first.c (init): Accept argc et al as parameters. Move all argc and __libc_multiple_libcs calculation out to init-first.h. Use __environ not __libc_envp. * sysdeps/unix/sysv/linux/alpha/init-first.h: Rewrite. * sysdeps/unix/sysv/linux/i386/init-first.h: Rewrite. Thu Aug 29 20:26:40 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/posix/profil.c (profil): Don't clobber saved timer and signal settings when profiling was already turned on. * csu/gmon-start.c (__gmon_start__) [HAVE_INITFINI]: Protect from being called twice. Wed Sep 4 01:31:50 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/mmap.S: Test for 0 < return value < -4096 and not < 0 to decide about failure. Reported by Andreas Jaeger. Tue Sep 3 19:04:05 1996 Ulrich Drepper <drepper@cygnus.com> * stdio-common/vfscanf.c (__vfscanf): Don't count EOF char in %c format. Sat Aug 31 18:10:51 1996 Ulrich Drepper <drepper@cygnus.com> * wcsmbs/wchar.h: Define prototypes for wcstoq and wcstouq only #ifdef __USE_GNU. Sat Aug 31 12:34:29 1996 Ulrich Drepper <drepper@cygnus.com> * version.c: Add missing newline character in banner. * sysdeps/unix/sysv/linux/alpha/Dist: Correct typo. * sysdeps/unix/sysv/linux/i386/Dist: Likewise. Sat Aug 31 03:07:39 1996 Ulrich Drepper <drepper@cygnus.com> * intl/l10nflist.c (_nl_normalize_codeset): We convert to lower case, so don't prepend uppercase `ISO' for only numeric arg.
1996-09-05 10:49:18 +08:00
# Run config.status to update config.make and config.h. We don't show the
# dependence of config.h to Make, because it is only touched when it
# changes and so config.status would be run every time; the dependence of
# config.make should suffice to force regeneration and re-exec, and the new
# image will notice if config.h changed.
update from main archive 970129 1997-01-30 03:24 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/elf/start.S (_start): Align stack pointer to double word boundary before pushing args for main. This way we don't get penalties for misaligned memory accesses. Reported by Edward Seidl <seidl@janed.com>. * Makefile: Correct *my* changes of Richards patch of 1997-01-28 10:51. Patch by HJ Lu. * misc/bsd-compat.c: Update copyright. * misc/efgcvt.c: Likewise. * misc/efgcvt_r.c: Likewise. * misc/error.c: Likewise. * misc/error.h: Likewise. * misc/fstab.c: Likewise. * misc/init-misc.c: Likewise. * misc/lsearch.c: Likewise. * misc/mntent.c: Likewise. * misc/qefgcvt.c: Likewise. * misc/qefgcvt_r.c: Likewise. * nss/databases.def: Likewise. * nss/db-Makefile: Likewise. * nss/ethers-lookup.c: Likewise. * nss/hosts-lookup.c: Likewise. * nss/netgrp-lookup.c: Likewise. * nss/nsswitch.h: Likewise. * nss/proto-lookup.c: Likewise. * nss/rpc-lookup.c: Likewise. * nss/service-lookup.c: Likewise. * nss/nss_db/db-netgrp.c: Likewise. * nss/nss_files/files-grp.c: Likewise. * nss/nss_files/files-hosts.c: Likewise. * nss/nss_files/files-network.c: Likewise. * nss/nss_files/files-proto.c: Likewise. * nss/nss_files/files-pwd.c: Likewise. * nss/nss_files/files-rpc.c: Likewise. * nss/nss_files/files-service.c: Likewise. * nss/nss_files/files-spwd.c: Likewise. * shadow/fgetspent.c: Likewise. * shadow/fgetspent_r.c: Likewise. * shadow/getspent.c: Likewise. * shadow/getspent_r.c: Likewise. * shadow/getspnam.c: Likewise. * shadow/getspnam_r.c: Likewise. * shadow/putspent.c: Likewise. * shadow/sgetspent.c: Likewise. * shadow/sgetspent_r.c: Likewise. * sysdeps/i386/init-first.c: Likewise. * sysdeps/unix/i386/sysdep.S: Likewise. * shadow/shadow.h: Don't use __USE_REENTRENT. All code must be prepared to be running in a multi-threaded environment. Change to __USE_MISC unless the function is defined in POSIX.1 (in this case also test for __USE_POSIX). * dirent/dirent.h: Likewise. * grp/grp.h: Likewise. * inet/aliases.h: Likewise. * libio/libio.h: Likewise. * libio/stdio.h: Likewise. * login/utmp.h: Likewise. * math/mathcalls.h: Likewise. * misc/mntent.h: Likewise. * pwd/pwd.h: Likewise. * resolv/netdb.h: Likewise. * stdlib/stdlib.h: Likewise. * string/string.h: Likewise. * sunrpc/rpc/netdb.h: Likewise. * sysdeps/generic/crypt.h: Likewise. * sysdeps/unix/sysv/linux/errnos.h: Likewise. * time/time.h: Likewise. 1997-01-30 00:27 Fila Kolodny <fila@ibi.com> * sunrpc/Makefile (install-others): Add rpcsvc/bootparam_prot.h only if not cross compiling. 1997-01-29 16:16 Fila Kolodny <fila@ibi.com> * sysdeps/posix/sigpause.c: Include <stddef.h> to get definition of NULL. * sysdeps/posix/sigwait.c: Likewise. 1997-01-28 23:42 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makeconfig ($(common-objpfx)config.make): Depend on $(..)config.make.in.
1997-01-30 12:09:36 +08:00
$(common-objpfx)config.make: $(common-objpfx)config.status \
$(..)config.make.in $(..)config.h.in
cd $(<D); $(SHELL) $(<F)
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 23:58:13 +08:00
# Find all the sysdeps configure fragments, to make sure we re-run
# configure when any of them changes.
update from main archive 970118 Sun Jan 19 04:38:20 1997 Ulrich Drepper <drepper@cygnus.com> * config.make.in (have-ksh, KSH): New variables. Will be filled in by configure. * configure.in: Add test for ksh like shell (prefer bash). * time/Makefile (tests): Depend on install-test-data. (distribute): Add simplebackw. (generated-dirs): New variable. [$(have-ksh)==yes] (install-others): Add iso3166.tab and zone.tab. (install-bin): Add tzselect. (install-test-data): Install the zoneinfo files which are needed for the test case in the build directory. (test-tz-ENV): New variable. Call test-tz program using data in build directory. * time/simpleback: New file. * time/test-tz.c: Pretty print. * time/tzfile.c: Use value of environment variable TZDIR as directory to look for zone info files. don't let search for DST data destroy already found values. * time/tzselect.ksh: Use @KSH@ and @TZDIR@ to be substituted when installing. * time/tzset.c (__tzset_internal): Avoid freeing string twice. Set DST zone name to normal zone name if no information is provided. * time/mktime.c (mktime): Call __tzset_internal to use current value of TZ. * Makerules (common-clean): Remove $(generated-dirs) inclusing content. * glibcbug.in: Fix several bugs. Reported by several people. * elf/Makefile: Correct dependecies for $(objpfx)ldd. * inet/netinet/ip.h: Define IPTOS_LOWCOST and IPTOS_MINCOST. * locale/C-time.c: Update copyright. * locale/localeinfo.h: Likewise. * sysdeps/unix/bsd/bsd4.4/direntry.h: Likewise. * locale/programs/ld-time.c (time_finish): Correct message string. * locale/programs/linereader.c (lr_token): Use correctly `number' not `digit' in message string. * stdlib/strtol.c [UNSIGNED]: Don't punt immediately when `-' is seen. Instead return ULONG_MAX and set ERANGE. * stdlib/tst-strtol.c: Correct test to reflect above change. Sun Jan 19 03:22:30 1997 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/sys/mtio.h: Don't use <linux/mtio.h>. We must not use <linux/posix_types.h>. * sysdeps/unix/sysv/linux/sys/ipc_buf.h: Don't use __kernel_* types since we must not use <linux/posix_types.h>. * sysdeps/unix/sysv/linux/sys/procfs.h: Likewise. * sysdeps/unix/sysv/linux/alpha/sys/ipc_buf.h: New file. Similar to sysdeps/unix/sysv/linux/sys/ipc_buf.h, but use alpha relavent types. * sysdeps/unix/sysv/linux/alpha/sys/procfs.h: New file. Similar to sysdeps/unix/sysv/linux/sys/procfs.h, but use alpha relavent types. Sun Jan 19 01:48:20 1997 H.J. Lu <hjl@gnu.ai.mit.edu> * sysdeps/libm-i387/e_exp.S: Correct computation of fractional part. * sysdeps/libm-i387/e_expf.S: Likewise. * sysdeps/libm-i387/e_expl.S: Likewise. * sysdeps/libm-i387/s_expm1.S: Correct computation of fractional part. Take care of additional value left on stack by fscale. * sysdeps/libm-i387/s_expm1f.S: Likewise. * sysdeps/libm-i387/s_expm1l.S: Likewise. Fri Jan 17 17:45:32 1997 Ulrich Drepper <drepper@cygnus.com> * posix/getopt.c: Change all direct usages of `gettext' to `_'. * sysdeps/generic/sysd-stdio.c (__stdio_reopen): Add missing parameter. Reported by Harmanjit Singh <harman@netearth.iitd.ernet.in>. Thu Jan 16 23:39:25 1997 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile (tests): Add scanf11. * stdio-common/scanf11.c: New file. * stdio-common/vfscanf.c (__vfscanf): Increment `done' when %n was processed and value is not suppressed. * stdio-common/bug10.c: Correct test to expect %n increment the return value of scanf. * stdio-common/scanf1.c: Likewise. * stdio-common/scanf3.c: Likewise. * stdio-common/scanf10.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * time/strptime.c: Add lots of conditional compiling to enable use outside glibc. When used in glibc, make sure C locale format strings will always be recognized. Sat Jan 11 18:53:47 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/sysmacros.h (major, minor, makedev): Fix definitions so that they work with __kernel_dev_t. Sat Jan 11 14:24:10 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/kernel_sigaction.h, sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h, sysdeps/unix/sysv/linux/sigaction.c: New files. * sysdeps/unix/sysv/linux/syscalls.list: Add s_sigaction. Sun Jan 12 15:22:33 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * libc-symbols.h (link_warning): Make sure that the .gnu.warning section is not allocated. Update and reformat copyright. Sun Jan 12 12:19:28 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/Makefile ($(objpfx)ldd): Fix depedency list. Sat Jan 11 15:11:26 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/Makefile ($(common-objpfx)sysd-syscalls): Fix command so that it works in subdirectories. Wed Jan 8 22:07:58 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/i386/syscalls.list: Add s_getgroups and s_setgroups. * sysdeps/unix/sysv/linux/m68k/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/i386/getgroups.c, sysdeps/unix/sysv/linux/i386/setgroups.c, sysdeps/unix/sysv/linux/m68k/getgroups.c, sysdeps/unix/sysv/linux/m68k/setgroups.c: New files. Wed Jan 8 19:42:59 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makefile (config.status): Delete bogus rule. ($(objpfx)glibcbug): Renamed from plain `glibcbug', depend on config.status in build directory, fix command to change to build directory. * Makeconfig ($(common-objpfx)config.status): Depend on version.h. Thu Jan 9 08:47:54 1997 Andreas Jaeger <aj@arthur.pfalz.de> * glibcbug.in (while): We test for four and not five conditions, set MAIL_AGENT instead of RMAIL, filter spaces and tabs. Thu Jan 16 22:00:27 1997 Ulrich Drepper <drepper@cygnus.com> * misc/syslog.c: Don't define cancel_handler if _LIBC_REENTRANT is not defined. Reported by Andreas Jaeger. Thu Jan 9 08:47:54 1997 Andreas Jaeger <aj@arthur.pfalz.de> * new-malloc/malloc.c (__MALLOC_P): define call to pthread initializer only if NO_THREADS is not defined. Wed Jan 8 21:28:58 1997 Andreas Jaeger <aj@arthur.pfalz.de> * resolv/nss_dns/dns-host.c: Clean-up: delete unnecessary includes and variables. Thu Jan 16 21:50:27 1997 Ulrich Drepper <drepper@cygnus.com> * inet/arpa/inet.h: Include <netinet/in.h> to get struct in_addr defined. Tue Jan 7 17:29:59 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makerules (LDLIBS-c.so): New variable. Tue Jan 7 19:22:00 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makefile ($(includedir)/gnu/lib-names.h): Define the library names as strings, not as sequence of tokens that may fall apart. Fri Jan 10 14:08:41 1997 Roland McGrath <roland@fmh.frob.com> * time/tzfile.c (__tzfile_read): Check for bogus type and zone name indices in data file and punt, so a bogus file can't crash us. Thu Jan 16 20:29:15 1997 Ulrich Drepper <drepper@cygnus.com> * values.h [__USE_MISC]: Define BITSPERBYTE. Fri Jan 17 14:16:28 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * stdio/vdprintf.c: Moved file to ... * sysdeps/posix/vdprintf.c: Here. De-ansideclificate. * sysdeps/stub/vdprintf.c: New file. * sysdeps/mach/hurd/vdprintf.c: New file. Thu Jan 9 15:59:35 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * sysdeps/mach/hurd/posix_opt.h: New file. * sysdeps/mach/hurd/sigwait.c (sigwait): Don't affect signal mask. * sysdeps/unix/bsd/tcsendbrk.c (tcsendbreak): Finish deansideclification. * sysdeps/mach/libc-lock.h: Add kludges to pretend to implement recursive locks. Tue Jan 7 09:48:15 1997 Andreas Jaeger <aj@arthur.pfalz.de> * signal/sigempty.c (sigemptyset): Correct typo: Empty set should have all bits zero.
1997-01-19 12:54:28 +08:00
$(common-objpfx)config.status: $(..)version.h $(..)configure \
* Makefile (subdir-target-args): New variable. ($(all-subdirs-targets)): Use it in place of -C option. * Rules: Use $(..) instead of ../ if it's already defined. * Makeconfig (subdir-srcdirs): New variable. * csu/Makefile (all-Banner-files): Use it. * configure.in (--enable-add-ons): Set to "yes" by default. Handle absolute add-on directory names when looking for configure fragments. Also look for sysdeps/*/preconfigure fragments in add-ons. Require add-on configure to set $libc_add_on_canonical, use that in $add_ons_sfx. Substitute add_on_subdirs with computed list of subdir names each add-on configure set in libc_add_on_subdirs. * configure: Regenerated. * Makefile (%/preconfigure: %/preconfigure.in): New pattern rule. * config.make.in (add-on-subdirs): New substituted variable. * Makeconfig (all-subdirs): Include $(add-on-subdirs). Remove $(add-ons), $(sysdep-subdirs). Don't filter out $(sysdep-inhibit-subdirs). ($(common-objpfx)sysd-dirs): Target removed. Don't include it. ($(common-objpfx)sysd-sorted): Rewritten to feed Depend and Subdirs files together to gen-sorted.awk, and $(subdirs) via -v. (subdirs): Remove magic reordering for mach and hurd. * scripts/gen-sorted.awk: Use subdirs from command line. Process Subdirs and Depend files directly. Let Subdirs files use "first dir" and "inhibit dir". Always move elf to the end of the list. * hurd/Depend: New file. * sysdeps/mach/Subdirs: Use "first mach". * Makefile (dist-separate): Remove linuxthreads. (dist-separate-linuxthreads): Variable removed. (glibc-%.tar rule): Use $(sysdeps-add-ons). * Makerules ($(common-objpfx)Versions.v.i): Use $(subdirs), not $(all-subdirs). (sysdep-makefiles): Use $(sysdirs). (sysdirs): Remove export. ($(+sysdir_pfx)sysd-rules): Handle absolute directory names in $(config-sysdirs). (+sysdir_pfx): Variable removed. (sysd-rules): Use $(common-objpfx) in place of it. (sysdirs): Variable moved to ... * Makeconfig (sysdirs): ... here. Handle absolute directory names in $(config-sysdirs). (full_config_sysdirs): Variable removed. * csu/Makefile: Use $(sysdirs) in vpath directive. * math/Makefile (ulps-file): Use $(sysdirs). * sysdeps/gnu/Makefile (errlist-c): Likewise. ($(objpfx)errlist-compat.c): Likewise. * Makeconfig (all-Subdirs-files): Likewise. ($(common-objpfx)config.status): Likewise. * configure.in (sysnames): Handle absolute add-on directory names. (sysdeps_add_ons): New variable, AC_SUBST it. Compute which add-ons contributed sysdeps directories. * configure: Regenerated. * config.make.in (sysdeps-add-ons): New substituted variable. * Makerules (+sysdep_dirs, +sysdep-includes): Variables moved ... * Makeconfig: ... to here. (+sysdep_dirs): Append $(sysdeps-add-ons) here. (+includes): Remove $(objpfx) include, already in $(+sysdep_dirs). Remove $(includes). (sysdep-makeconfigs): Use $(+sysdep_dirs). ($(common-objpfx)shlib-versions.v.i): Likewise. * Makeconfig: Remove hair to set Makeconfig-add-on. * sysdeps/unix/Makefile (sysdirs): Remove export. (asm_CPP): Variable removed. ($(common-objpfx)sysd-syscalls): Pass them directly for the script. * sysdeps/posix/Makefile: New file. * Makerules (L_tmpnam, TMP_MAX, L_ctermid, L_cuserid): Set non-posix values here with ?=. * stdlib/gen-mpn-copy: File removed. * stdlib/Makefile (distribute): Remove it. * configure.in: Don't grok --with-gmp. * configure: Regenerated. * configure.in (libc_cv_idn): Don't check it; libidn/configure does it. * configure: Regenerated. * bare: Directory removed, saved in ports repository.
2006-02-28 15:11:04 +08:00
$(foreach dir,$(sysdirs),\
$(wildcard $(dir)/Implies) \
2014-05-09 02:27:14 +08:00
$(patsubst %.ac,%,\
$(firstword $(wildcard \
$(addprefix $(dir)/,configure configure.ac))))) \
2014-05-09 02:27:14 +08:00
$(patsubst %.ac,%,\
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 23:58:13 +08:00
$(wildcard $(..)sysdeps/*/preconfigure $(..)sysdeps/*/preconfigure.ac))
@cd $(@D); if test -f $(@F); then exec $(SHELL) $(@F) --recheck; else \
echo The GNU C library has not been configured. >&2; \
echo Run \`configure\' to configure it before building. >&2; \
echo Try \`configure --help\' for more details. >&2; \
exit 1; fi
1995-02-18 09:27:10 +08:00
Update. 1998-01-22 00:55 Ulrich Drepper <drepper@happy.cygnus.com> * libc.map: Add __libc_uid, __libc_pid, __syscall_rt_sigqueueinfo, __pread64, __pwrite64, and __getpid. * libc/rt/aio_misc.c: Use pread and pwrite instead of __ protected versions. 1998-01-06 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/alpha/syscalls.list: Define the cancelable socket functions as __libc_xxx with __xxx as weak alias. * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/m68k/socket.S: Allow __socket to be redefined. * sysdeps/unix/sysv/linux/i386/socket.S: Likewise. * sysdeps/unix/sysv/linux/arm/socket.S: Likewise. * sysdeps/unix/sysv/linux/powerpc/socket.S: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/socket.S: Likewise. * sysdeps/unix/sysv/linux/accept.S: Make __libc_xxx the main name and __xxx a weak alias. * sysdeps/unix/sysv/linux/connect.S: Likewise. * sysdeps/unix/sysv/linux/recv.S: Likewise. * sysdeps/unix/sysv/linux/recvfrom.S: Likewise. * sysdeps/unix/sysv/linux/recvmsg.S: Likewise. * sysdeps/unix/sysv/linux/send.S: Likewise. * sysdeps/unix/sysv/linux/sendmsg.S: Likewise. * sysdeps/unix/sysv/linux/sendto.S: Likewise. 1998-01-21 Andreas Jaeger <aj@arthur.rhein-neckar.de> * locale/langinfo.h: Add defines. * dirent/dirent.h: Add defines for DT_*, check also for _DIRENT_HAVE_D_TYPE. Suggested by Roland McGrath. 1998-01-16 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/netinet/ip_fw.h: Update from Linux 2.1.73+79. * README.template: Update information about possible configurations. * manual/mbyte.texi (Wide String Conversion): Fix declaration of wcstombs. Pointed out by Jochen Voss <voss@mathematik.uni-kl.de>. [PR libc/417]. * manual/time.texi (Priority): Correct description of PRIO_MAX. Pointed out by Jochen Voss <voss@mathematik.uni-kl.de>. [PR libc/416]. 11998-01-21 21:34 Ulrich Drepper <drepper@cygnus.com> * sysdeps/alpha/fpu/bits/mathdef.h: Add definition of FP_ILOGB0 and FP_ILOGNAN. Patch by a sun <asun@zoology.washington.edu>. 1998-01-21 17:53 Ulrich Drepper <drepper@cygnus.com> * sysdeps/generic/_strerror.c: Handle BUFLEN == 0. Reported by Andreas Jaeger. 1998-01-20 18:13 Ulrich Drepper <drepper@cygnus.com> * locale/programs/ld-collate.c: Little optimizations. * stdio-common/xbug.c: Unset LD_LIBRRARY_PATH variable. * string/Makefile (tests): Add tst-inlcall. * string/tst-inlcall.c: New file. * string/strsignal.c: Add support for real-time signals. * sysdeps/generic/_strerror.c: Fix Handling of unknown error in presense of small buffer. * sysdeps/i386/bits/string.h: Define _HAVE_STRING_ARCH_* macros. * sysdeps/i386/i486/bits/string.h: Correct strrchr implementation for i686. * sysdeps/unix/sysv/linux/siglist.c: Change length of arrays to _NSIG + 1. 1998-01-02 15:10 Matthias Urlichs <urlichs@noris.de> * Rules: Add explicit rule for dummy.o; at least one library needs it and it isn't autogenerated by the default rules. 1997-12-31 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * math/libm-test.c: Tweak epsilons. 1997-12-31 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * math/test-fenv.c (feenv_nomask_test): Avoid dumping core in the child. (feenv_mask_test): Likewise. 1998-01-01 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makeconfig: Don't export CPPFLAGS. 1998-01-01 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sunrpc/rpc_main.c (parseargs): Use perror to print error message. 1998-01-15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * nss/nss_db/db-alias.c (_nss_db_getaliasent_r): Don't include terminating null in key size. 1998-01-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * nss/nss_files/files-service.c: Fix allocation size to include length of PROTO. * nss/nss_db/db-XXX.c (lookup): Always set errno and h_errno if applicable. Fix return value and error checking. (CONCAT(_nss_db_get,ENTNAME_r)): Loop around to skip over unparsable lines. (DB_LOOKUP): Allocate space for terminating null byte. * nss/db-Makefile ($(VAR_DB)/passwd.db): Don't handle duplicate uids specially. * db2/makedb.c (process_input): Continue processing if a duplicate key is encountered. 1998-01-19 15:20 Ulrich Drepper <drepper@cygnus.com> * time/tzfile.h: Updated from tzcode1998b. * time/zdump.c: Likewise. * time/zic.c: Likewise. * time/africa: Update from tzdata1998b. * time/antarctica: Likewise. * time/asia: Likewise. * time/australasia: Likewise. * time/etcetera: Likewise. * time/europe: Likewise. * time/leapseconds: Likewise. * time/northamerica: Likewise. * time/southamerica: Likewise. 1998-01-12 Andreas Jaeger <aj@arthur.rhein-neckar.de> * nss/nss_files/files-alias.c (get_next_alias): Do mail alias lookups ignoring case. * nss/nss_files/files-network.c: Do network lookups ignoring case. * nss/nss_files/files-hosts.c: Do hostname lookups ignoring case. * nss/nss_files/files-parse.c (LOOKUP_NAME_CASE): New macro for case insensitive comparing. Patches by Cristian Gafton <gafton@redhat.com>. 1998-01-09 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/net/if.h: Add IFF_*defines. Suggested by Roland McGrath. [PR libc/395] 1998-01-08 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/arith.texi (Parsing of Integers): Correct description of strtoul. Pointed out by Scott Snyder <snyder@fnald0.fnal.gov>. [PR libc/396] 1997-12-30 14:14 Matthias Urlichs <urlichs@noris.de> * misc/lsearch.c (lsearch): Return a pointer to the new element if one was "allocated". 1997-12-26 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * string/strsignal.c: NSIG is not a valid index into _sys_siglist. Don't zap the last character of the "Unknown signal" message. 1998-01-19 15:08 Ulrich Drepper <drepper@cygnus.com> * locale/programs/charmap.c (parse_charmap): Correct parsing of ellipsis expressions. * locale/programs/charset.c (insert_char): Correctly insert value of eliipsis expression.
1998-01-22 01:04:36 +08:00
# We don't want CPPFLAGS to be exported to the command running configure.
unexport CPPFLAGS
1995-02-18 09:27:10 +08:00
# Get the user's configuration parameters.
ifneq ($(wildcard $(..)configparms),)
include $(..)configparms
endif
ifneq ($(objpfx),)
update from main archive 960829 Fri Aug 30 01:26:44 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/Dist: Add close.S. * sysdeps/unix/sysv/linux/m68k/Dist: Likewise. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * version.c: Add comment about where to report bugs to. * catgets/gencat.c (usage): Likewise. * db/makedb.c (usage): Likewise. * locale/programs/locale.c (usage): Likewise. * locale/programs/localedef.c (usage): Likewise. * manual/socket.texi: A little bit better wording. Thu Aug 29 18:03:06 1996 Ulrich Drepper <drepper@cygnus.com> * Makerules: Make sure directory exists before generating stamp file. (BUILD_CFLAGS): Always refer to using $(..). * manual/Makefile: Make sure directory exists before generating stamp file. (make-target-directory): Add macro definition. * sysdeps/generic/Makefile: Make sure directory exists before generating stamp file. * Makefile (distribute): Add autolock.sh. Reported by Fila Kolodny. Tue Aug 27 10:06:22 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> When compiling in separate directory put objects into subdirectories matching the source layout. * Makeconfig (objpfx) [ifdef objdir]: Append $(subdir). When looking for configparms try in $(common-objpfx). Use $(common-objpfx)SUBDIR to find objects from other subdirectory builds. * Makerules: Add $(objpfx) to vpath list. (make-dummy-dep): Use $(common-objpfx) to avoid creating dummy.d more than once. All uses in dependency lists changed. (+make-deps): Make target directory. (sed-remove-objpfx): Substitute $(common-objpfx). (do-ar, build-extra-lib, $(common-objpfx)stub-$(subdir)): Use $(objpfx) instead of $(objdir) for cd command. (O%-lib): Always find libc relative to $(..). (subdir-stamps): Collect stamp files from subdirs. (common-mostlyclean): Remove stub file in $(common-objpfx). * MakeTAGS ($P/siglist.pot): Find siglist.c in stdio-common. * Rules (dep-dummy-lib): Use $(common-objpfx) to avoid creating to more than once. ($(objpfx)dummy.c, $(objpfx)empty.c): Change target name to use $(common-objfpx). All uses in dependency lists changed. (generated): Prepend $(..) to names. * bare/Makefile ($(objpfx)lib$(config-vendor).a): Remove $(objpfx) from $@. * nss/Makefile ($(objpfx)libnss_dns.so, $(objpfx)libnss_db.so): Use $(common-objpfx) instead of $(..) in dependencies. * sysdeps/mach/Makefile (mach-objpfx): Unconditionally use $(common-objpfx) instead of $(..) and (objpfx). * sysdeps/mach/hurd/Makefile (hurd-objpfx): Likewise. (rpath-link): Likewise. (rpcuserlibs): Likewise. * sysdeps/unix/Makefile [$(subdir) = stdio-common]: Check for errlist.c in $(objpfx), not $(common-objpfx). ($(common-objpfx)s-proto.d): Special rule not covered by pattern rule. * sysdeps/unix/make-syscalls.sh: Make syscall rules depending on s-proto.d in $(common-objpfx), not $(objpfx). Thu Aug 29 17:45:49 1996 Ulrich Drepper <drepper@cygnus.com> * nss/nsswitch.c (nss_dlerror_run): Free returned error string. Thu Aug 29 15:53:33 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-ieee754/e_acoshl.c: New file. `long double' implementation. * sysdeps/libm-ieee754/e_atanhl.c: Likewise. * sysdeps/libm-ieee754/e_remainderl.c: Likewise. * sysdeps/libm-ieee754/e_scalbl.c: Likewise. * sysdeps/libm-ieee754/s_asinhl.c: Likewise. * sysdeps/libm-ieee754/s_cosl.c: Likewise. * sysdeps/libm-ieee754/s_sinl.c: Likewise. * sysdeps/libm-ieee754/s_tanhl.c: Likewise. * sysdeps/libm-ieee754/s_tanl.c: Likewise. * stdio-common/printf_fp.c (__printf_fp): Use default value '.' if
1996-08-30 08:58:28 +08:00
ifneq ($(wildcard $(common-objpfx)configparms),)
include $(common-objpfx)configparms
1995-02-18 09:27:10 +08:00
endif
endif
####
#### These are the configuration variables. You can define values for
#### the variables below in the file `configparms'.
#### Do NOT edit this file.
####
# Common prefix for machine-independent installation directories.
ifeq ($(origin prefix),undefined) # ifndef would override explicit empty value.
1995-02-18 09:27:10 +08:00
prefix = /usr/local
endif
Update. 1997-08-10 18:48 Ulrich Drepper <drepper@cygnus.com> * Makeconfig: Define build-programs to no if not set and $(config-os) is none. * Makerules (+depfiles): Don't add $(others) if not build-programs. * Rules (others): Don't depend on $(install-bin), $(install-rootbin) and $(install-sbin) if not build-programs. * Makefile (subdirs): Remove login. * sysdeps/mach/hurd/Subdirs: Add login. * sysdeps/unix/Subdirs: Add login. * sysdeps/generic/sys/mman.h: Test feature macros before defining non-POSIX things. Add MAP_FAILED. * sysdeps/unix/bsd/osf/sys/mman.h: Likewise. * sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise. * sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise. * sysdeps/unix/sysv/irix4/sys/mman.h: Likewise. * sysdeps/unix/sysv/linux/sys/mman.h: Rewrite to not use kernel header but bits/mman.h. Test feature macros before definitions non-POSIX functions. * sysdeps/unix/sysv/linux/alpha/bits/mman.h: New file. * sysdeps/unix/sysv/linux/i386/bits/mman.h: New file. * sysdeps/unix/sysv/linux/m68k/bits/mman.h: New file. * sysdeps/unix/sysv/linux/mips/bits/mman.h: New file. * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: New file. * sysdeps/unix/sysv/linux/sparc/bits/mman.h: New file. * sysdeps/unix/sysv/linux/sparc64/bits/mman.h: New file. * sysdeps/unix/sysv/linux/alpha/Dist: Add bits/mman.h. * sysdeps/unix/sysv/linux/i386/Dist: Likewise. * sysdeps/unix/sysv/linux/m68k/Dist: Likewise. * sysdeps/unix/sysv/linux/mips/Dist: Likewise. * sysdeps/unix/sysv/linux/powerpc/Dist: Likewise. * sysdeps/unix/sysv/linux/sparc/Dist: Likewise. * sysdeps/unix/sysv/linux/sparc64/Dist: New file. Likewise. * catgets/open_catalog.c (__open_catalog): Compare result of mmap with MAP_FAILED and not -1. * elf/dl-load.c (_dl_map_object_from_fd): Likewise. * elf/dl-minimal.c (malloc): Likewise. * elf/dl-misc.c (_dl_sysdep_read_whole_file): Likewise. * locale/loadlocale.c (_nl_load_locale): Likewise. * locale/programs/localedef.c: Likewise. * malloc/malloc.c (mmap_chunk): Likewise. (new_heap): Likewise. * string/stratcliff.c: Likewise. * string/tester.c: Add tests for stpcpy. * gmon/gmon.c (__monstartup): Use calloc instead of malloc+memset. * gmon/sys/gmon.h: Add prototype for write_profiling. * elf/dl-profile.c: Add decsriptions and implement reading of existing data in profiling file. * gmon/sys/gmon_out.h (GMON_SHOBJ_VERSION): New macro for shared lib profiling data. * sysdeps/stub/bits/libc-lock.h (__libc_once_define): Add new first parameter for class. * inet/inet_ntoa.c: Make once control variable static. Correctly handle case where key cannot be retrieved. * inet/Makefile (tests): Add tst-ntoa. * inet/tst-ntoa.c: New file. * manual/time.texi: Document localtime_r, gmtime_r, asctime_r, and ctime_r. Mention that tzname values must not be changed. * manual/users.texi: Document UTMP/WTMP handling functions. Mainly written by Mark Kettenis. * math/libm-test.c (cbrt_test): Add test for number with aboslute value < 1.0. * nss/nss_files/files-XXX.c (internal_setent): If opening of file failed with EGAIN return NSS_STATUS_TRYAGAIN. * nss/nss_files/files-alias.c (internal_setent): Likewise. * sysdeps/generic/bits/utmp.h: Pretty print. * sysdeps/i386/i586/strcpy.S: New file. Much faster implementation. * sysdeps/i386/i586/stpcpy.S: New file. * sysdeps/i386/i686/Implies: Don't fall back on i586 versions since these are less efficient than i486/i386 versions. * sysdeps/libm-i387/e_rem_pio2.c: Add empty file to prevent the version from libm-ieee754 be compiled since the later is not needed. * sysdeps/libm-i387/e_rem_pio2f.c: Likewise. * sysdeps/libm-i387/e_rem_pio2l.c: Likewise. * sysdeps/libm-i387/k_rem_pio2.c: Likewise. * sysdeps/libm-i387/k_rem_pio2f.c: Likewise. * sysdeps/libm-i387/k_rem_pio2l.c: Likewise. * sysdeps/m68k/fpu/e_rem_pio2.c: Likewise. * sysdeps/m68k/fpu/e_rem_pio2f.c: Likewise. * sysdeps/m68k/fpu/e_rem_pio2l.c: Likewise. * sysdeps/m68k/fpu/k_rem_pio2.c: Likewise. * sysdeps/m68k/fpu/k_rem_pio2f.c: Likewise. * sysdeps/m68k/fpu/k_rem_pio2l.c: Likewise. * sysdeps/libm-i387/s_cbrt.S: Fix several bugs. * sysdeps/libm-i387/s_cbrtf.S: Likewise. * sysdeps/libm-i387/s_cbrtl.S: Likewise. * sysdeps/unix/sysv/linux/if_index.c (if_indextoname): Correct little bug. * sysdeps/unix/sysv/linux/bits/socket.h (struct msghdr): Make field msg_iovlen of type int. * time/tzfile.c: Change return type of __tzstring to char *. * time/tzset.c: Likewise. Change definition of __tzstring. * time/tzset.c: Interpret no DST information in user provided time zone specification as it is meant: no DST. Patch by Paul Eggert <eggert@twinsun.com>. 1997-07-20 03:01 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/elf/dl-load.c (add_name_to_object): New procedure. (_dl_map_object_from_fd): Use add_name_to_object. (_dl_map_object): If an object's SONAME is used to resolve a dependency, add it to the list of the object's names. * inet/getnameinfo.c: Make `domain' non-const. * sysdeps/unix/sysv/linux/powerpc/kernel_termios.c: Clean up. * math/test-fenv.c (feenv_nomask_test): Don't execute if FE_NOMASK_ENV is not defined, or if fesetenv(FE_NOMASK_ENV) sets errno to ENOSYS. * sysdeps/powerpc/dl-machine.h: Print proper error message on unknown reloc type (rather than using assert). * sysdeps/unix/sysv/linux/powerpc/profil-counter.h: New file. * sysdeps/unix/sysv/linux/powerpc/profil.c: Deleted. 1997-07-16 12:47 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/powerpc/bits/fenv.h (feraiseexcept): New optimising macro. (feclearexcept): New optimising macro. (FE_NOMASK_ENV): Change to procedure so it can enable exceptions. (FE_ENABLED_ENV): Add. (FE_NONIEEE_ENV): Add. * sysdeps/powerpc/bits/fenv_const.c: Add __fe_enabled_env, __fe_nonieee_env; delete __fe_nomask_env. * sysdeps/powerpc/bits/fe_nomask.c: New file (stub warning until it gets implemented in the kernel). * sysdeps/powerpc/fraiseenv.c: Deal with chips that don't have FE_INVALID_SOFTWARE implemented. Use macros for bit names for clarity. * sysdeps/powerpc/fsetexcptflag.c: Likewise. * io/ftw.c: Don't compare holes in structures. * sysdeps/unix/sysv/linux/sys/sysmacros.h: Cast the result of the macros to `int', because otherwise it might be `long long' which the calling code is probably not expecting. * sysdeps/libm-ieee754/s_lround.c [NO_LONG_DOUBLE]: Fix a few bugs, document the existence of some more. * sysdeps/powerpc/s_llrint.c: New file. * sysdeps/powerpc/s_lrint.c: New file. * sysdeps/powerpc/s_llround.c: New file. * sysdeps/powerpc/s_lround.c: New file. * sysdeps/powerpc/s_sqrt.c: New file. * sysdeps/powerpc/s_sqrtf.c: New file. * sysdeps/powerpc/w_sqrt.s: New empty file. * sysdeps/powerpc/w_sqrtf.s: New empty file. * sysdeps/powerpc/t_sqrt.c: New file. * sysdeps/powerpc/test-arithf.c: New file. * sysdeps/powerpc/Makefile [subdir=math]: Add t_sqrt to support routines. Add test-arithf to test programs. * sysdeps/powerpc/bits/mathdef.h: Add FP_ILOGB0, FP_ILOGBNAN. * sysdeps/powerpc/strcmp.s: Simplify drastically. Now much neater, and possibly faster (or possibly slower, depending on input). 1997-06-08 22:55 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/powerpc/fenvbits.h: Correct FE_DFL_ENV and FE_NOMASK_ENV macros. * sysdeps/powerpc/s_rint.c: New file. 1997-05-22 08:47 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/powerpc/Makefile [subdir=math]: Add q_* routines. * sysdeps/powerpc/Dist: Add quad_float.h. * sysdeps/powerpc/q_dtoq.c: New file. * sysdeps/powerpc/q_itoq.c: New file. * sysdeps/powerpc/q_lltoq.c: New file. * sysdeps/powerpc/q_neg.c: New file. * sysdeps/powerpc/q_qtoi.c: New file. * sysdeps/powerpc/q_qtoll.c: New file. * sysdeps/powerpc/q_qtos.c: New file. * sysdeps/powerpc/q_qtou.c: New file. * sysdeps/powerpc/q_qtoull.c: New file. * sysdeps/powerpc/q_stoq.c: New file. * sysdeps/powerpc/q_ulltoq.c: New file. * sysdeps/powerpc/q_utoq.c: New file. * sysdeps/powerpc/quad_float.h: New file. * sysdeps/powerpc/test-arith.c: New file. * sysdeps/powerpc/fpu_control.h: Fix _FPU_GETCW. * sysdeps/powerpc/fegetround.c: Use mcrfs to be faster and not require a stack frame. * sysdeps/powerpc/bits/fenv.h: Include inline macro for fegetround. 1997-05-18 05:55 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/powerpc/fenv_libc.h (fegetenv_register, fesetenv_register): Add 'volatile'. (set_fpscr_bit, reset_fpscr_bit): New macros, FPSCR_* constants to use with them. * sysdeps/powerpc/s_copysign.S: New file. * sysdeps/powerpc/s_copysignf.s: New file. * sysdeps/powerpc/s_fabs.S: New file. * sysdeps/powerpc/s_fabsf.s: New file. * sysdeps/powerpc/s_isnan.c: New file. * sysdeps/powerpc/s_isnanf.s: New file. * sysdeps/powerpc/s_rintf.c: New file. * sysdeps/powerpc/fenvbits.h: Make FE_INVALID the summary bit in the FPSCR, not the enable bit. * sysdeps/powerpc/fraiseexcpt.c: Consequent change to the above. * sysdeps/powerpc/fclrexcpt.c: Correct. * sysdeps/powerpc/fsetexcptflag.c: Correct. * sysdeps/powerpc/ftestexcpt.c: Is now much simpler. * sysdeps/powerpc/fgetexcptflg.c: Simplify. * sysdeps/powerpc/strlen.s: Schedule better, save 3 clocks :-). * sysdeps/powerpc/dl-machine.h (elf_machine_rela): Add comment explaining some reentrancy issues with lazy PLT entries. 1997-08-09 13:04 Mark Kettenis <kettenis@phys.uva.nl> * login/logout.c (logout): utmpname returns -1 on error. * login/libutil.map: Remove updwtmp. * login/getutline.c: Rename getutline to __getutline and make getutline a weak alias. Make getutxline a weak alias for __getutline. * login/getutid.c: Rename getutid to __getutid and make getutid a weak alias. Make getutxid a weak alias for __getutid. * libc.map: Add getutxid, getutxline. * login/utmpname.c (__utmpname): Reset backend right after backend endutent call. * login/utmp_file.c: Reordered functions. Remove unecessary header files. (getutent_r_file, pututline_file): Do not call setutent_file. At this point the file is guaranteed to be open (assert!). (getutid_r_file, getutline_r_file): Remove check for validity of file descriptor. At this point the file is guaranteed to be open. (getutent_r_file, internal_getut_r, getutline_r_file, pututline_file, updwtmp_file): Do not wait when unlocking file. * login/utmp_daemon.c: General cleanup and a bit of reordering. (getutent_r_daemon, pututline_daemon): Do not call setutent_daemon. At this point the socket is guaranteed to be open (assert!). (getutid_r_daemon, getutline_r_daemon): Do not check if daemon_sock is valid. At this point the socket is guaranteed to be open (assert!). * login/getutline_r.c: Remove unnecessary header files. (__getutline_r): Do not call backend setutent. * login/getutid_r.c: Remove unnecessary header files. (__getutid_r): Do not call backend setutent. * login/getutent_r.c: Remove unneccesary header files. (__libc_utmp_unknown_functions): Added getutid_r_unknown, getutline_r_unknown. (setutent_unknown): Only set file backend if setutent for the file backend was successful. (getutent_r_unknown, pututline_unknown): Call setutent_unknown instead of __setutent. Report failure if no backend was selected. (getutid_r_unknown): New function. (getutline_r_unknown): New function. (__endutent): Reset backend. This makes sure all backends are checked on the next setutent call. 1997-08-08 20:20 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * nis_cache.c: Replace dummy functions. * libc.map: Add xdr_sizeof symbol. * sunrpc/Makefile: Add xdr_sizeof to routines. * sunrpc/rpc/xdr.h: Add xdr_sizeof prototype. * sunrpc/xdr_sizeof.c: New, from tirpc 2.3. 1997-08-08 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * sysdeps/mach/bits/libc-lock.h (__libc_once): Define correctly. 1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * sysdeps/mach/hurd/profil.c (fetch_samples): Put parens in the right place. 1997-08-06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * sysdeps/mach/hurd/profil.c (fetch_samples): Do arithmetic on PC's in long long to avoid overflow. 1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * sysdeps/mach/bits/libc-lock.h (__libc_once, __libc_once_define): New macros. 1997-08-06 Andreas Jaeger <aj@arthur.rhein-neckar.de> * nis/Makefile (headers): Remove bits/nislib.h. 1997-08-06 14:54 Ulrich Drepper <drepper@cygnus.com> * sysdeps/mach/hurd/Subdirs: Add login. 1997-08-06 14:23 Klaus Espenlaub <kespenla@hydra.informatik.uni-ulm.de> * db/hash/hash.c (init_hash): Don't use stat() if it doesn't provide the preferred block size. * login/programs/database.c (store_state_entry): Don't compile if there is no ut_type field. (store_state_entry, store_process_entry): Use the ut_tv field for timestamps if supported. * login/programs/utmpdump.c (print_entry): Always use ut_tv field. * login/programs/xtmp.c: Fix numerous xtmp/utmp typos. Use the ut_tv field for timestamps if supported. * login/programs/xtmp.h: Fix xtmp/utmp typo. * sysdeps/posix/defs.c (stdstream): Change (PTR) to (void *). * sysdeps/stub/connect.c (connect): Change to __connect, add alias. * sysdeps/stub/send.c (send): Likewise. * sysdeps/stub/s_exp2f.c: Emit correct stub_warning(). * sysdeps/stub/statfs.c: Move stub_warning() to the usual place. * sysdeps/stub/init-first.c: Add definition of __libc_pid. 1997-08-05 13:28 Philip Blundell <pb@spring.nexus.co.uk> * sysdeps/standalone/arm/bits/errno.h: Add EISDIR, EOPNOTSUPP; tidy up formatting. * Makefile (subdirs): Remove `login'. * sysdeps/unix/Subdirs: New file; build `login' subdirectory for Unix systems. 1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/generic/bits/utmpx.h: New file. * sysdeps/mach/hurd/Dist: Add some files. * sysdeps/mips/Dist: Likewise. * sysdeps/mips/mips64/Dist: Likewise. * sysdeps/sparc/Dist: Likewise. * sysdeps/unix/sysv/linux/mips/Dist: Likewise. * sysdeps/unix/sysv/linux/sparc/Dist: Likewise. * sysdeps/mips/mipsel/Dist: New file. * sysdeps/sparc64/elf/Dist: New file. * sysdeps/unix/sysv/linux/sparc64/Dist: New file. 1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * libc.map: Add missing symbols. 1997-08-05 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/socket.texi: Correct typos. * manual/math.texi: Correct typos. * manual/time.texi (Formatting Date and Time): Likewise. 1997-08-04 13:06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * gmon/gmon.c (write_gmon): New function; guts from _mcleanup. (_mcleanup): Use write_gmon. (write_profiling): This function can be safely called at any time to write a current histogram without interfering with ongoing profiling. * sysdeps/mach/hurd/profil.c (fetch_samples): Initialize NSAMPLES. 1997-08-01 17:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * sysdeps/mach/hurd/profil.c (fetch_samples): Sample buffer need not be vm_deallocated; it's a stack buffer. (profil_vm_deallocate): Delete prototype. (#include <../mach/RPC_vm_deallocate_rpc.c>): Drop this inclusion. * sysdeps/mach/hurd/Makefile ($(common-objpfx)hurd/../mach/RPC_vm_deallocate_rpc.c): Delete this rule. * sysdeps/mach/hurd/profil.c (fetch_samples): New function, guts from profile_waiter. (profile_waiter): Use fetch_samples. (profil): When turning off profiling, fetch the last bunch of samples before disabling PC sampling. (fetch_samples): Add prototype. 1997-07-30 12:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * sysdeps/mach/hurd/Makefile: Give normal rules for the mach RPC source included by profil.c instead of trying to use before-compile grot. 1997-07-23 15:04 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * sysdeps/mach/hurd/profil.c (profile_waiter): Do vm_deallocate after releasing lock. Use special RPC stubs and avoid assert, thus making this function entirely independent of the threadvar mechanism and of cthreads. (lock): Convert to be a spin lock instead of a mutex, so that the waiter thread need not use cthreads. Use a fork prepare hook instead of _hurd_fork_locks to make sure we are clean before forking. (fork_profil_child): Renamed from fork_profil. (profil_reply_port): New variable. (profil_vm_deallocate, profil_task_get_sampled_pcs): Special RPC stubs made by special hacks. * sysdeps/mach/hurd/Makefile (before-compile): Add the mach RPC source files that profil.c needs if we are in the gmon directory. * mach/setup-thread.c (__mach_setup_thread): Delete avoidance of a cthreads bug that hasn't existed for two years. * stdio-common/printf_fp.c (__printf_fp): Correct rounding of numbers * locale/programs/locale.c (print_escaped): New function. * time/australasia: Likewise. (open_database, synchronize_database, initialize_database): * nss/nss_files/files-netgrp.c (_nss_netgroup_parseline): Don't * Makerules (load-map-file): Currectly handle missing map file. cannot rely on M_SQRT2 being defined. (log1p): Use __M_SQRT2 not M_SQRT2.
1997-08-11 02:37:15 +08:00
# Decide whether we shall build the programs or not. We always do this
# unless the user tells us (in configparms) or we are building for a
# standalone target.
ifndef build-programs
ifneq ($(config-os),none)
build-programs=yes
else
build-programs=no
endif
endif
1995-02-18 09:27:10 +08:00
# Common prefix for machine-dependent installation directories.
ifeq ($(origin exec_prefix),undefined)
1995-02-18 09:27:10 +08:00
exec_prefix = $(prefix)
endif
# Where to install the library and object files.
ifndef libdir
libdir = $(exec_prefix)/lib
endif
update from main archive 970121 Thu Jan 23 04:06:42 1997 Ulrich Drepper <drepper@cygnus.com> * Make-dist (.PHONY: dist): Remove duplicate declaration. (README): Depend on version.h not version.c. * Makefile (README): Depend on version.h not version.c. * Makeconfig (inst_libdir, inst_slibdir, inst_includedir, inst_datadir, inst_zonedir, inst_localedir, inst_i18ndir, inst_bindir, inst_sbindir, inst_infodir, inst_sysconfdir): New variables. Same as variable withough inst_ but prepended with $(install_root). (localtime-time): Use $(inst_sysconfdir) not $(sysconfdir). * Makefile (install-others): Use $(inst_includedir). (gnu/stabs.h, gnu/lib-names.h): Use $(inst_includedir). * Makerules (tons of install rules): Use inst_% variables. * elf/Makefile: Likewise. * hurd/Makefile: Likewise. * intl/Makefile: Likewise. * manual/Makefile: Likewise. * po/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/mach/hurd/Makefile: Likewise. * sysdeps/standalone/i386/force_cpu386/Makefile: Likewise. * time/Makefile: Likewise. * config.make.in: Revert patch from Sat Jan 18 22:15:26 1997, leave install_root in place. * gnu-versions.h (_GNU_GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt.c (GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt1.c (GETOPT_INTERFACE_VERSION): Define to 2. * elf/Makefile [yes==$(has-ldconfig)]: Correct dependencies of ldconfig. (CFLAGS-dl-load.c): New variable, avoid gcc warning. * sysdeps/mach/hurd/configure.in: Add _LIBC_REENTRENT to DEFINES. * sysdeps/mach/hurd/getdents.c: Update copyright. De-ANSI-declfy. * sysdeps/stub/getdents.c: Likewise. Correct return value. * sysdeps/unix/getdents.c: Likewise. * sysdeps/unix/sysv/getdents.c: Likewise. * sysdeps/unix/readdir.c: Update copyright. * sysdeps/unix/bsd/sony/newsos4/Makefile: Correct ifeq arguments. * sysdeps/unix/bsd/sun/sunos4/Makefile: Likewise. * sysdeps/unix/sysv/Makefile: Likewise. * sysdeps/unix/sysv/linux/Makefile: Likewise. * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. * sysdeps/unix/sysv/linux/Dist: Don't distribute kernel_termios.h, but sys/kernel_termios.h. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir)==termios] (sysdep_headers): Add sys/kernel_termios.h. * sysdeps/unix/sysv/linux/kernel_termios.h: Moved to... * sysdeps/unix/sysv/linux/sys/kernel_termios.h: ...here. * sysdeps/unix/sysv/linux/sys/tcgetattr.c: Use __kernel_termios and __KERNEL_NCCS instead of kernel_termios and KERNEL_NCCS resp. * sysdeps/unix/sysv/linux/alpha/ioctls.h: New file. * sysdeps/unix/sysv/linux/getdents.c: Correct problems with alignment. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove getdents. Reported by Eirik Fuller <eirik@netcom.com>. * time/Banner: Removed. Wrong and unnecessary information. It's now in... * time/README: New file. * time/Makefile (distribute): Remove Banner, add README. Wed Jan 22 13:19:56 1997 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/ioperm.c (platforms): Add Sable. (init_iosys): Recognize /etc/alpha_systype as a four-tuple for the purpose of supporting brand new systems. (*): The type of iosys variables should be iosys_t. 1997-01-22 Paul Eggert <eggert@twinsun.com> * strftime.c (_strftime_copytm): New function, to work around Solaris 2.5 tzset bug. Wed Jan 22 23:05:14 1997 Ulrich Drepper <drepper@cygnus.com> * sysdeps/mach/hurd/vdprintf.c: Complete de-ANSI-declfication. * sysdeps/posix/pipestream.c (writedecl): Fix typo. Reported by Marcus G. Daniels <marcus@shannon.sysc.pdx.edu>. Wed Jan 22 13:58:56 1997 Andreas Jaeger <aj@arthur.pfalz.de> * elf/Makefile (CFLAGS-dl-load.c): New Variable to keep gcc silent since name_copy is initialized. Wed Jan 22 16:58:12 1997 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile (tests): Remove scanf11. * stdio-common/scanf11.c: Removed. * stdio-common/vfscanf.c Revert patch of Thu Jan 16 23:39:25 1997. Although the Corrigendum 1 describes the result as implemented the even more recent Amendement 1 seconds the position of ISO C:1990 where the %n directive has no effect on the assignment count. * stdio-common/bug10.c: Likewise. * stdio-common/scanf1.c: Likewise. * stdio-common/scanf3.c: Likewise. * stdio-common/scanf10.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * new-malloc/obstack.h: Don't define malloc using bcopy if malloc is not available. This leads to problems since bcopy does not return a value. Instead define _obstack_memcpy based on memcpy or bcopy. This name isn't used outside obstack.h and so no problems from using the memcpy function in a file including obstack.h can result. Reported by Martin Trapp <trapp@ipd.info.uni-karlsruhe.de>. Tue Jan 21 18:35:55 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * misc/regexp.h (compile): Fix typos. Tue Jan 21 01:01:59 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo): Fix type of pr_{pid,ppid,pgrp,sid} fields. * sysdeps/unix/sysv/linux/alpha/sys/procfs.h (struct elf_prpsinfo): Likewise.
1997-01-23 12:24:20 +08:00
inst_libdir = $(install_root)$(libdir)
1995-02-18 09:27:10 +08:00
# Where to install the shared library.
ifndef slibdir
slibdir = $(exec_prefix)/lib
endif
update from main archive 970121 Thu Jan 23 04:06:42 1997 Ulrich Drepper <drepper@cygnus.com> * Make-dist (.PHONY: dist): Remove duplicate declaration. (README): Depend on version.h not version.c. * Makefile (README): Depend on version.h not version.c. * Makeconfig (inst_libdir, inst_slibdir, inst_includedir, inst_datadir, inst_zonedir, inst_localedir, inst_i18ndir, inst_bindir, inst_sbindir, inst_infodir, inst_sysconfdir): New variables. Same as variable withough inst_ but prepended with $(install_root). (localtime-time): Use $(inst_sysconfdir) not $(sysconfdir). * Makefile (install-others): Use $(inst_includedir). (gnu/stabs.h, gnu/lib-names.h): Use $(inst_includedir). * Makerules (tons of install rules): Use inst_% variables. * elf/Makefile: Likewise. * hurd/Makefile: Likewise. * intl/Makefile: Likewise. * manual/Makefile: Likewise. * po/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/mach/hurd/Makefile: Likewise. * sysdeps/standalone/i386/force_cpu386/Makefile: Likewise. * time/Makefile: Likewise. * config.make.in: Revert patch from Sat Jan 18 22:15:26 1997, leave install_root in place. * gnu-versions.h (_GNU_GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt.c (GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt1.c (GETOPT_INTERFACE_VERSION): Define to 2. * elf/Makefile [yes==$(has-ldconfig)]: Correct dependencies of ldconfig. (CFLAGS-dl-load.c): New variable, avoid gcc warning. * sysdeps/mach/hurd/configure.in: Add _LIBC_REENTRENT to DEFINES. * sysdeps/mach/hurd/getdents.c: Update copyright. De-ANSI-declfy. * sysdeps/stub/getdents.c: Likewise. Correct return value. * sysdeps/unix/getdents.c: Likewise. * sysdeps/unix/sysv/getdents.c: Likewise. * sysdeps/unix/readdir.c: Update copyright. * sysdeps/unix/bsd/sony/newsos4/Makefile: Correct ifeq arguments. * sysdeps/unix/bsd/sun/sunos4/Makefile: Likewise. * sysdeps/unix/sysv/Makefile: Likewise. * sysdeps/unix/sysv/linux/Makefile: Likewise. * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. * sysdeps/unix/sysv/linux/Dist: Don't distribute kernel_termios.h, but sys/kernel_termios.h. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir)==termios] (sysdep_headers): Add sys/kernel_termios.h. * sysdeps/unix/sysv/linux/kernel_termios.h: Moved to... * sysdeps/unix/sysv/linux/sys/kernel_termios.h: ...here. * sysdeps/unix/sysv/linux/sys/tcgetattr.c: Use __kernel_termios and __KERNEL_NCCS instead of kernel_termios and KERNEL_NCCS resp. * sysdeps/unix/sysv/linux/alpha/ioctls.h: New file. * sysdeps/unix/sysv/linux/getdents.c: Correct problems with alignment. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove getdents. Reported by Eirik Fuller <eirik@netcom.com>. * time/Banner: Removed. Wrong and unnecessary information. It's now in... * time/README: New file. * time/Makefile (distribute): Remove Banner, add README. Wed Jan 22 13:19:56 1997 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/ioperm.c (platforms): Add Sable. (init_iosys): Recognize /etc/alpha_systype as a four-tuple for the purpose of supporting brand new systems. (*): The type of iosys variables should be iosys_t. 1997-01-22 Paul Eggert <eggert@twinsun.com> * strftime.c (_strftime_copytm): New function, to work around Solaris 2.5 tzset bug. Wed Jan 22 23:05:14 1997 Ulrich Drepper <drepper@cygnus.com> * sysdeps/mach/hurd/vdprintf.c: Complete de-ANSI-declfication. * sysdeps/posix/pipestream.c (writedecl): Fix typo. Reported by Marcus G. Daniels <marcus@shannon.sysc.pdx.edu>. Wed Jan 22 13:58:56 1997 Andreas Jaeger <aj@arthur.pfalz.de> * elf/Makefile (CFLAGS-dl-load.c): New Variable to keep gcc silent since name_copy is initialized. Wed Jan 22 16:58:12 1997 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile (tests): Remove scanf11. * stdio-common/scanf11.c: Removed. * stdio-common/vfscanf.c Revert patch of Thu Jan 16 23:39:25 1997. Although the Corrigendum 1 describes the result as implemented the even more recent Amendement 1 seconds the position of ISO C:1990 where the %n directive has no effect on the assignment count. * stdio-common/bug10.c: Likewise. * stdio-common/scanf1.c: Likewise. * stdio-common/scanf3.c: Likewise. * stdio-common/scanf10.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * new-malloc/obstack.h: Don't define malloc using bcopy if malloc is not available. This leads to problems since bcopy does not return a value. Instead define _obstack_memcpy based on memcpy or bcopy. This name isn't used outside obstack.h and so no problems from using the memcpy function in a file including obstack.h can result. Reported by Martin Trapp <trapp@ipd.info.uni-karlsruhe.de>. Tue Jan 21 18:35:55 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * misc/regexp.h (compile): Fix typos. Tue Jan 21 01:01:59 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo): Fix type of pr_{pid,ppid,pgrp,sid} fields. * sysdeps/unix/sysv/linux/alpha/sys/procfs.h (struct elf_prpsinfo): Likewise.
1997-01-23 12:24:20 +08:00
inst_slibdir = $(install_root)$(slibdir)
# Where to install the dynamic linker.
ifndef rtlddir
rtlddir = $(slibdir)
endif
inst_rtlddir = $(install_root)$(rtlddir)
1995-02-18 09:27:10 +08:00
# Prefix to put on files installed in $(libdir). For libraries `libNAME.a',
# the prefix is spliced between `lib' and the name, so the linker switch
# `-l$(libprefix)NAME' finds the library; for other files the prefix is
# just prepended to the whole file name.
ifeq ($(origin libprefix),undefined)
1995-02-18 09:27:10 +08:00
libprefix =
endif
# Where to install the header files.
ifndef includedir
includedir = $(prefix)/include
1995-02-18 09:27:10 +08:00
endif
update from main archive 970121 Thu Jan 23 04:06:42 1997 Ulrich Drepper <drepper@cygnus.com> * Make-dist (.PHONY: dist): Remove duplicate declaration. (README): Depend on version.h not version.c. * Makefile (README): Depend on version.h not version.c. * Makeconfig (inst_libdir, inst_slibdir, inst_includedir, inst_datadir, inst_zonedir, inst_localedir, inst_i18ndir, inst_bindir, inst_sbindir, inst_infodir, inst_sysconfdir): New variables. Same as variable withough inst_ but prepended with $(install_root). (localtime-time): Use $(inst_sysconfdir) not $(sysconfdir). * Makefile (install-others): Use $(inst_includedir). (gnu/stabs.h, gnu/lib-names.h): Use $(inst_includedir). * Makerules (tons of install rules): Use inst_% variables. * elf/Makefile: Likewise. * hurd/Makefile: Likewise. * intl/Makefile: Likewise. * manual/Makefile: Likewise. * po/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/mach/hurd/Makefile: Likewise. * sysdeps/standalone/i386/force_cpu386/Makefile: Likewise. * time/Makefile: Likewise. * config.make.in: Revert patch from Sat Jan 18 22:15:26 1997, leave install_root in place. * gnu-versions.h (_GNU_GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt.c (GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt1.c (GETOPT_INTERFACE_VERSION): Define to 2. * elf/Makefile [yes==$(has-ldconfig)]: Correct dependencies of ldconfig. (CFLAGS-dl-load.c): New variable, avoid gcc warning. * sysdeps/mach/hurd/configure.in: Add _LIBC_REENTRENT to DEFINES. * sysdeps/mach/hurd/getdents.c: Update copyright. De-ANSI-declfy. * sysdeps/stub/getdents.c: Likewise. Correct return value. * sysdeps/unix/getdents.c: Likewise. * sysdeps/unix/sysv/getdents.c: Likewise. * sysdeps/unix/readdir.c: Update copyright. * sysdeps/unix/bsd/sony/newsos4/Makefile: Correct ifeq arguments. * sysdeps/unix/bsd/sun/sunos4/Makefile: Likewise. * sysdeps/unix/sysv/Makefile: Likewise. * sysdeps/unix/sysv/linux/Makefile: Likewise. * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. * sysdeps/unix/sysv/linux/Dist: Don't distribute kernel_termios.h, but sys/kernel_termios.h. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir)==termios] (sysdep_headers): Add sys/kernel_termios.h. * sysdeps/unix/sysv/linux/kernel_termios.h: Moved to... * sysdeps/unix/sysv/linux/sys/kernel_termios.h: ...here. * sysdeps/unix/sysv/linux/sys/tcgetattr.c: Use __kernel_termios and __KERNEL_NCCS instead of kernel_termios and KERNEL_NCCS resp. * sysdeps/unix/sysv/linux/alpha/ioctls.h: New file. * sysdeps/unix/sysv/linux/getdents.c: Correct problems with alignment. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove getdents. Reported by Eirik Fuller <eirik@netcom.com>. * time/Banner: Removed. Wrong and unnecessary information. It's now in... * time/README: New file. * time/Makefile (distribute): Remove Banner, add README. Wed Jan 22 13:19:56 1997 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/ioperm.c (platforms): Add Sable. (init_iosys): Recognize /etc/alpha_systype as a four-tuple for the purpose of supporting brand new systems. (*): The type of iosys variables should be iosys_t. 1997-01-22 Paul Eggert <eggert@twinsun.com> * strftime.c (_strftime_copytm): New function, to work around Solaris 2.5 tzset bug. Wed Jan 22 23:05:14 1997 Ulrich Drepper <drepper@cygnus.com> * sysdeps/mach/hurd/vdprintf.c: Complete de-ANSI-declfication. * sysdeps/posix/pipestream.c (writedecl): Fix typo. Reported by Marcus G. Daniels <marcus@shannon.sysc.pdx.edu>. Wed Jan 22 13:58:56 1997 Andreas Jaeger <aj@arthur.pfalz.de> * elf/Makefile (CFLAGS-dl-load.c): New Variable to keep gcc silent since name_copy is initialized. Wed Jan 22 16:58:12 1997 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile (tests): Remove scanf11. * stdio-common/scanf11.c: Removed. * stdio-common/vfscanf.c Revert patch of Thu Jan 16 23:39:25 1997. Although the Corrigendum 1 describes the result as implemented the even more recent Amendement 1 seconds the position of ISO C:1990 where the %n directive has no effect on the assignment count. * stdio-common/bug10.c: Likewise. * stdio-common/scanf1.c: Likewise. * stdio-common/scanf3.c: Likewise. * stdio-common/scanf10.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * new-malloc/obstack.h: Don't define malloc using bcopy if malloc is not available. This leads to problems since bcopy does not return a value. Instead define _obstack_memcpy based on memcpy or bcopy. This name isn't used outside obstack.h and so no problems from using the memcpy function in a file including obstack.h can result. Reported by Martin Trapp <trapp@ipd.info.uni-karlsruhe.de>. Tue Jan 21 18:35:55 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * misc/regexp.h (compile): Fix typos. Tue Jan 21 01:01:59 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo): Fix type of pr_{pid,ppid,pgrp,sid} fields. * sysdeps/unix/sysv/linux/alpha/sys/procfs.h (struct elf_prpsinfo): Likewise.
1997-01-23 12:24:20 +08:00
inst_includedir = $(install_root)$(includedir)
1995-02-18 09:27:10 +08:00
# Where to install machine-independent data files.
# These are the timezone database, and the locale database.
1995-02-18 09:27:10 +08:00
ifndef datadir
datadir = $(prefix)/share
endif
update from main archive 970121 Thu Jan 23 04:06:42 1997 Ulrich Drepper <drepper@cygnus.com> * Make-dist (.PHONY: dist): Remove duplicate declaration. (README): Depend on version.h not version.c. * Makefile (README): Depend on version.h not version.c. * Makeconfig (inst_libdir, inst_slibdir, inst_includedir, inst_datadir, inst_zonedir, inst_localedir, inst_i18ndir, inst_bindir, inst_sbindir, inst_infodir, inst_sysconfdir): New variables. Same as variable withough inst_ but prepended with $(install_root). (localtime-time): Use $(inst_sysconfdir) not $(sysconfdir). * Makefile (install-others): Use $(inst_includedir). (gnu/stabs.h, gnu/lib-names.h): Use $(inst_includedir). * Makerules (tons of install rules): Use inst_% variables. * elf/Makefile: Likewise. * hurd/Makefile: Likewise. * intl/Makefile: Likewise. * manual/Makefile: Likewise. * po/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/mach/hurd/Makefile: Likewise. * sysdeps/standalone/i386/force_cpu386/Makefile: Likewise. * time/Makefile: Likewise. * config.make.in: Revert patch from Sat Jan 18 22:15:26 1997, leave install_root in place. * gnu-versions.h (_GNU_GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt.c (GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt1.c (GETOPT_INTERFACE_VERSION): Define to 2. * elf/Makefile [yes==$(has-ldconfig)]: Correct dependencies of ldconfig. (CFLAGS-dl-load.c): New variable, avoid gcc warning. * sysdeps/mach/hurd/configure.in: Add _LIBC_REENTRENT to DEFINES. * sysdeps/mach/hurd/getdents.c: Update copyright. De-ANSI-declfy. * sysdeps/stub/getdents.c: Likewise. Correct return value. * sysdeps/unix/getdents.c: Likewise. * sysdeps/unix/sysv/getdents.c: Likewise. * sysdeps/unix/readdir.c: Update copyright. * sysdeps/unix/bsd/sony/newsos4/Makefile: Correct ifeq arguments. * sysdeps/unix/bsd/sun/sunos4/Makefile: Likewise. * sysdeps/unix/sysv/Makefile: Likewise. * sysdeps/unix/sysv/linux/Makefile: Likewise. * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. * sysdeps/unix/sysv/linux/Dist: Don't distribute kernel_termios.h, but sys/kernel_termios.h. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir)==termios] (sysdep_headers): Add sys/kernel_termios.h. * sysdeps/unix/sysv/linux/kernel_termios.h: Moved to... * sysdeps/unix/sysv/linux/sys/kernel_termios.h: ...here. * sysdeps/unix/sysv/linux/sys/tcgetattr.c: Use __kernel_termios and __KERNEL_NCCS instead of kernel_termios and KERNEL_NCCS resp. * sysdeps/unix/sysv/linux/alpha/ioctls.h: New file. * sysdeps/unix/sysv/linux/getdents.c: Correct problems with alignment. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove getdents. Reported by Eirik Fuller <eirik@netcom.com>. * time/Banner: Removed. Wrong and unnecessary information. It's now in... * time/README: New file. * time/Makefile (distribute): Remove Banner, add README. Wed Jan 22 13:19:56 1997 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/ioperm.c (platforms): Add Sable. (init_iosys): Recognize /etc/alpha_systype as a four-tuple for the purpose of supporting brand new systems. (*): The type of iosys variables should be iosys_t. 1997-01-22 Paul Eggert <eggert@twinsun.com> * strftime.c (_strftime_copytm): New function, to work around Solaris 2.5 tzset bug. Wed Jan 22 23:05:14 1997 Ulrich Drepper <drepper@cygnus.com> * sysdeps/mach/hurd/vdprintf.c: Complete de-ANSI-declfication. * sysdeps/posix/pipestream.c (writedecl): Fix typo. Reported by Marcus G. Daniels <marcus@shannon.sysc.pdx.edu>. Wed Jan 22 13:58:56 1997 Andreas Jaeger <aj@arthur.pfalz.de> * elf/Makefile (CFLAGS-dl-load.c): New Variable to keep gcc silent since name_copy is initialized. Wed Jan 22 16:58:12 1997 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile (tests): Remove scanf11. * stdio-common/scanf11.c: Removed. * stdio-common/vfscanf.c Revert patch of Thu Jan 16 23:39:25 1997. Although the Corrigendum 1 describes the result as implemented the even more recent Amendement 1 seconds the position of ISO C:1990 where the %n directive has no effect on the assignment count. * stdio-common/bug10.c: Likewise. * stdio-common/scanf1.c: Likewise. * stdio-common/scanf3.c: Likewise. * stdio-common/scanf10.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * new-malloc/obstack.h: Don't define malloc using bcopy if malloc is not available. This leads to problems since bcopy does not return a value. Instead define _obstack_memcpy based on memcpy or bcopy. This name isn't used outside obstack.h and so no problems from using the memcpy function in a file including obstack.h can result. Reported by Martin Trapp <trapp@ipd.info.uni-karlsruhe.de>. Tue Jan 21 18:35:55 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * misc/regexp.h (compile): Fix typos. Tue Jan 21 01:01:59 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo): Fix type of pr_{pid,ppid,pgrp,sid} fields. * sysdeps/unix/sysv/linux/alpha/sys/procfs.h (struct elf_prpsinfo): Likewise.
1997-01-23 12:24:20 +08:00
inst_datadir = $(install_root)$(datadir)
1995-02-18 09:27:10 +08:00
# Where to install the timezone data files (which are machine-independent).
ifndef zonedir
zonedir = $(datadir)/zoneinfo
endif
update from main archive 970121 Thu Jan 23 04:06:42 1997 Ulrich Drepper <drepper@cygnus.com> * Make-dist (.PHONY: dist): Remove duplicate declaration. (README): Depend on version.h not version.c. * Makefile (README): Depend on version.h not version.c. * Makeconfig (inst_libdir, inst_slibdir, inst_includedir, inst_datadir, inst_zonedir, inst_localedir, inst_i18ndir, inst_bindir, inst_sbindir, inst_infodir, inst_sysconfdir): New variables. Same as variable withough inst_ but prepended with $(install_root). (localtime-time): Use $(inst_sysconfdir) not $(sysconfdir). * Makefile (install-others): Use $(inst_includedir). (gnu/stabs.h, gnu/lib-names.h): Use $(inst_includedir). * Makerules (tons of install rules): Use inst_% variables. * elf/Makefile: Likewise. * hurd/Makefile: Likewise. * intl/Makefile: Likewise. * manual/Makefile: Likewise. * po/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/mach/hurd/Makefile: Likewise. * sysdeps/standalone/i386/force_cpu386/Makefile: Likewise. * time/Makefile: Likewise. * config.make.in: Revert patch from Sat Jan 18 22:15:26 1997, leave install_root in place. * gnu-versions.h (_GNU_GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt.c (GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt1.c (GETOPT_INTERFACE_VERSION): Define to 2. * elf/Makefile [yes==$(has-ldconfig)]: Correct dependencies of ldconfig. (CFLAGS-dl-load.c): New variable, avoid gcc warning. * sysdeps/mach/hurd/configure.in: Add _LIBC_REENTRENT to DEFINES. * sysdeps/mach/hurd/getdents.c: Update copyright. De-ANSI-declfy. * sysdeps/stub/getdents.c: Likewise. Correct return value. * sysdeps/unix/getdents.c: Likewise. * sysdeps/unix/sysv/getdents.c: Likewise. * sysdeps/unix/readdir.c: Update copyright. * sysdeps/unix/bsd/sony/newsos4/Makefile: Correct ifeq arguments. * sysdeps/unix/bsd/sun/sunos4/Makefile: Likewise. * sysdeps/unix/sysv/Makefile: Likewise. * sysdeps/unix/sysv/linux/Makefile: Likewise. * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. * sysdeps/unix/sysv/linux/Dist: Don't distribute kernel_termios.h, but sys/kernel_termios.h. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir)==termios] (sysdep_headers): Add sys/kernel_termios.h. * sysdeps/unix/sysv/linux/kernel_termios.h: Moved to... * sysdeps/unix/sysv/linux/sys/kernel_termios.h: ...here. * sysdeps/unix/sysv/linux/sys/tcgetattr.c: Use __kernel_termios and __KERNEL_NCCS instead of kernel_termios and KERNEL_NCCS resp. * sysdeps/unix/sysv/linux/alpha/ioctls.h: New file. * sysdeps/unix/sysv/linux/getdents.c: Correct problems with alignment. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove getdents. Reported by Eirik Fuller <eirik@netcom.com>. * time/Banner: Removed. Wrong and unnecessary information. It's now in... * time/README: New file. * time/Makefile (distribute): Remove Banner, add README. Wed Jan 22 13:19:56 1997 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/ioperm.c (platforms): Add Sable. (init_iosys): Recognize /etc/alpha_systype as a four-tuple for the purpose of supporting brand new systems. (*): The type of iosys variables should be iosys_t. 1997-01-22 Paul Eggert <eggert@twinsun.com> * strftime.c (_strftime_copytm): New function, to work around Solaris 2.5 tzset bug. Wed Jan 22 23:05:14 1997 Ulrich Drepper <drepper@cygnus.com> * sysdeps/mach/hurd/vdprintf.c: Complete de-ANSI-declfication. * sysdeps/posix/pipestream.c (writedecl): Fix typo. Reported by Marcus G. Daniels <marcus@shannon.sysc.pdx.edu>. Wed Jan 22 13:58:56 1997 Andreas Jaeger <aj@arthur.pfalz.de> * elf/Makefile (CFLAGS-dl-load.c): New Variable to keep gcc silent since name_copy is initialized. Wed Jan 22 16:58:12 1997 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile (tests): Remove scanf11. * stdio-common/scanf11.c: Removed. * stdio-common/vfscanf.c Revert patch of Thu Jan 16 23:39:25 1997. Although the Corrigendum 1 describes the result as implemented the even more recent Amendement 1 seconds the position of ISO C:1990 where the %n directive has no effect on the assignment count. * stdio-common/bug10.c: Likewise. * stdio-common/scanf1.c: Likewise. * stdio-common/scanf3.c: Likewise. * stdio-common/scanf10.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * new-malloc/obstack.h: Don't define malloc using bcopy if malloc is not available. This leads to problems since bcopy does not return a value. Instead define _obstack_memcpy based on memcpy or bcopy. This name isn't used outside obstack.h and so no problems from using the memcpy function in a file including obstack.h can result. Reported by Martin Trapp <trapp@ipd.info.uni-karlsruhe.de>. Tue Jan 21 18:35:55 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * misc/regexp.h (compile): Fix typos. Tue Jan 21 01:01:59 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo): Fix type of pr_{pid,ppid,pgrp,sid} fields. * sysdeps/unix/sysv/linux/alpha/sys/procfs.h (struct elf_prpsinfo): Likewise.
1997-01-23 12:24:20 +08:00
inst_zonedir = $(install_root)$(zonedir)
1995-02-18 09:27:10 +08:00
# Where to install the compiled binary locale archive and compiled
# binary locale files.
ifndef complocaledir
complocaledir = $(libdir)/locale
endif
inst_complocaledir = $(install_root)$(complocaledir)
Update. 1999-09-13 Ulrich Drepper <drepper@cygnus.com> * locale/langinfo.h: Remove byte-order dependent names. * locale/categories.def: Update after removal of byte-order dependent names. * locale/loadlocale.c (_nl_load_locale): Don't allow locale files with magic number in other byte order. * locale/newlocale.c (__newlocale): Remove byte-order dependent code. * locale/C-collate.c: Remove initializers for other byte-order. * locale/C-ctype.c: Likewise. * locale/C-monetary.c: Likewise. * locale/C-paper.c: Likewise. * locale/C-time.c: Likewise. * locale/lc-collate.c: Remove byte-order oriented initialization. * locale/lc-ctype.c: Likewise. * locale/lc-monetary.c: Likewise. * locale/lc-time.c: Likewise. * locale/programs/ld-address.c: Don't generate output in both byte-orders. * locale/programs/ld-ctype.c: Likewise. * locale/programs/ld-paper.c: Likewise. * locale/programs/ld-time.c: Likewise. * time/strftime.c (NLW): Don't use different byte-orders. * wctype/cname-lookup.h (cname_lookup): Likewise. * Makeconfig (localedir): Define using libdir, not datadir. (msgcatdir): New variable. * catgets/Makefile (CPPFLAGS): Define NLSPATH using msgcatdir. * elf/Makefile (bash-ldd-rewrite): Replace @TEXTDOMAINDIR@ using msgcatdir. * intl/Makefile (install-others): Install locale.alias in msgcatdir. (CPPFLAGS): Define paths using msgcatdir. * locale/Makefile (CPPFLAGS): Define LOCALE_ALIAS_PATH using msgcatdir. * po/Makefile (mo-installed): Define using msgcatdir. * sysdeps/unix/sysv/linux/net/if_arp.h: Fix typo.
1999-09-13 17:07:36 +08:00
# Where to install the message catalog data files (which are
# machine-independent).
2016-02-25 09:06:04 +08:00
ifndef localedir
localedir = $(datadir)/locale
Update. 1999-09-13 Ulrich Drepper <drepper@cygnus.com> * locale/langinfo.h: Remove byte-order dependent names. * locale/categories.def: Update after removal of byte-order dependent names. * locale/loadlocale.c (_nl_load_locale): Don't allow locale files with magic number in other byte order. * locale/newlocale.c (__newlocale): Remove byte-order dependent code. * locale/C-collate.c: Remove initializers for other byte-order. * locale/C-ctype.c: Likewise. * locale/C-monetary.c: Likewise. * locale/C-paper.c: Likewise. * locale/C-time.c: Likewise. * locale/lc-collate.c: Remove byte-order oriented initialization. * locale/lc-ctype.c: Likewise. * locale/lc-monetary.c: Likewise. * locale/lc-time.c: Likewise. * locale/programs/ld-address.c: Don't generate output in both byte-orders. * locale/programs/ld-ctype.c: Likewise. * locale/programs/ld-paper.c: Likewise. * locale/programs/ld-time.c: Likewise. * time/strftime.c (NLW): Don't use different byte-orders. * wctype/cname-lookup.h (cname_lookup): Likewise. * Makeconfig (localedir): Define using libdir, not datadir. (msgcatdir): New variable. * catgets/Makefile (CPPFLAGS): Define NLSPATH using msgcatdir. * elf/Makefile (bash-ldd-rewrite): Replace @TEXTDOMAINDIR@ using msgcatdir. * intl/Makefile (install-others): Install locale.alias in msgcatdir. (CPPFLAGS): Define paths using msgcatdir. * locale/Makefile (CPPFLAGS): Define LOCALE_ALIAS_PATH using msgcatdir. * po/Makefile (mo-installed): Define using msgcatdir. * sysdeps/unix/sysv/linux/net/if_arp.h: Fix typo.
1999-09-13 17:07:36 +08:00
endif
2016-02-25 09:06:04 +08:00
inst_localedir = $(install_root)$(localedir)
Update. 1999-09-13 Ulrich Drepper <drepper@cygnus.com> * locale/langinfo.h: Remove byte-order dependent names. * locale/categories.def: Update after removal of byte-order dependent names. * locale/loadlocale.c (_nl_load_locale): Don't allow locale files with magic number in other byte order. * locale/newlocale.c (__newlocale): Remove byte-order dependent code. * locale/C-collate.c: Remove initializers for other byte-order. * locale/C-ctype.c: Likewise. * locale/C-monetary.c: Likewise. * locale/C-paper.c: Likewise. * locale/C-time.c: Likewise. * locale/lc-collate.c: Remove byte-order oriented initialization. * locale/lc-ctype.c: Likewise. * locale/lc-monetary.c: Likewise. * locale/lc-time.c: Likewise. * locale/programs/ld-address.c: Don't generate output in both byte-orders. * locale/programs/ld-ctype.c: Likewise. * locale/programs/ld-paper.c: Likewise. * locale/programs/ld-time.c: Likewise. * time/strftime.c (NLW): Don't use different byte-orders. * wctype/cname-lookup.h (cname_lookup): Likewise. * Makeconfig (localedir): Define using libdir, not datadir. (msgcatdir): New variable. * catgets/Makefile (CPPFLAGS): Define NLSPATH using msgcatdir. * elf/Makefile (bash-ldd-rewrite): Replace @TEXTDOMAINDIR@ using msgcatdir. * intl/Makefile (install-others): Install locale.alias in msgcatdir. (CPPFLAGS): Define paths using msgcatdir. * locale/Makefile (CPPFLAGS): Define LOCALE_ALIAS_PATH using msgcatdir. * po/Makefile (mo-installed): Define using msgcatdir. * sysdeps/unix/sysv/linux/net/if_arp.h: Fix typo.
1999-09-13 17:07:36 +08:00
# Where to install the locale charmap source files.
Thu Mar 28 03:25:10 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu> * intl/Makefile (copysrc): Add missing > in sed cmd. Sat Mar 23 17:52:49 1996 Ulrich Drepper <drepper@gnu.ai.mit.edu> * Makeconfig: Rename Makefile variable nlsdir to i18ndir and change value to $(datadir)/i18n. `nls' is not an appropriate name. * Makefile (subdirs): Add new subdir wctype. * ctype/ctype-info.c: Add new global variable __ctype_names and initialize from _nl_C_LC_CTYPE. * ctype/ctype.h: In P1003.3b/D11 `alnum' is a separate character class. Use bit 11. [_ISbit]: Protect definition of bitmasks because they are also used in wctype.h. * libio/genops.c (_IO_sputbackc, _IO_sungetc): Clear EOF flag after successfully pushing back a character. Fundamental changes in locale implementation. Almost nothing from the old code is used anymore. * locale/charmap.c, locale/collate.c, locale/config.h, locale/ctypedump.c, locale/hash.h, locale/keyword.gperf, locale/keyword.h, locale/loadlocale.c, locale/locale-ctype.c, locale/locale.c locale/localeconv.c, locale/localedef.c, locale/localedef.h, locale/locfile-hash.c, locale/locfile-lex.c, locale/locfile-parse.c, locale/messages.c, locale/monetary.c, locale/numeric.c, locale/setlocale.c, locale/token.h, locale/xmalloc.c: Removed. * locale/Makefile: Update for new locale implementation with program source code distributed in subdir. * locale/categories.def, locale/iso-4217.def: Updated file for new locale implementation. * locale/langinfo.h: Updated for new locale implementation. (ERA_D_T_FMT, ERA_T_FMT): New official values according to P1003.2b/D11. (_NL_COLLATE_NRULES, _NL_COLLATE_RULES, _NL_COLLATE_HASH_SIZE, _NL_COLLATE_HASH_LAYERS, _NL_COLLATE_TABLE_EB, _NL_COLLATE_TABLE_EL, _NL_COLLATE_UNDEFINED, _NL_COLLATE_EXTRA_EB, _NL_COLLATE_EXTRA_EL, _NL_CTYPE_NAMES_EB, _NL_CTYPE_NAMES_EL, _NL_CTYPE_HASH_SIZE, _NL_CTYPE_HASH_LAYERS, _NL_CTYPE_CLASS_NAMES, _NL_CTYPE_MAP_NAMES, _NL_CTYPE_WIDTH): New internal values for extended LC_CTYPE and LC_COLLATE implementation. * locale/simple-hash.c, locale/simple-hash.h, locale/xmalloc.c, locale/xstrdup.c: Helper functions for locale related programs. * locale/C-collate.c, locale/C-ctype.c, locale/C-messages.c, locale/C-monetary.c, locale/C-numeric.c, locale/C-time.c, locale/lc-collate.c, locale/lc-ctype.c, locale/lc-messages.c, locale/lc-monetary.c, locale/lc-numeric.c, locale/lc-time.c: New implementation of locale functions, and new generated "C" locale data. * locale/loadlocale.c: Now handles word fields in locale binary automatically by changing the endianess if necessary. * locale/localeinfo.h (LIMAGIC): Changed magic number because of incompatible changes. (locale_data): Changed definition to allow word as a value type. (coll_sort_rule): Values for collation sorting mode. (_NL_CURRENT_WORD): New macro to access word value of locale entry. (__collate_table, __collate_extra): Declare new global variables for collation tables. * locale/programs/charmap-kw.gperf, locale/programs/charmap-kw.h, locale/programs/charmap.c, locale/programs/charset.c, locale/programs/charset.h, locale/programs/config.h, locale/programs/ctypedump.c, locale/programs/ld-collate.c, locale/programs/ld-ctype.c, locale/programs/ld-messages.c, locale/programs/ld-monetary.c, locale/programs/ld-numeric.c, locale/programs/ld-time.c, locale/programs/linereader.c, locale/programs/linereader.h, locale/programs/locale.c, locale/programs/localedef.c, locale/programs/locales.h, locale/programs/locfile-kw.gperf, locale/programs/locfile-kw.h, locale/programs/locfile-token.h, locale/programs/locfile.c, locale/programs/locfile.h, locale/programs/stringtrans.c, locale/programs/stringtrans.h: Implementation of locale related programs. * locale/weight.h: Functions to access collation tables. * posix/unistd.h: Define _POSIX2_LOCALEDEF. * stdio-common/printf_fp.c: Fix bug with printing certain numbers < 10^-1. Reported by Bill Metzenthen. * stdio-common/tfformat.c: Add new test for above bug. * string/strcoll.c, string/strxfrm.c: Real implementation of string collation according to ISO C. * wctype/Makefile, wctype/cname-lookup.h, wctype/iswctype.c, wctype/test_wctype.c, wctype/towctrans.c, wctype/wcfuncs.c, wctype/wctrans.c, wctype/wctype.c, wctype/wctype.h: New files. Implementation of wide character classes and mapping.
1996-03-28 16:30:38 +08:00
ifndef i18ndir
i18ndir = $(datadir)/i18n
endif
update from main archive 970121 Thu Jan 23 04:06:42 1997 Ulrich Drepper <drepper@cygnus.com> * Make-dist (.PHONY: dist): Remove duplicate declaration. (README): Depend on version.h not version.c. * Makefile (README): Depend on version.h not version.c. * Makeconfig (inst_libdir, inst_slibdir, inst_includedir, inst_datadir, inst_zonedir, inst_localedir, inst_i18ndir, inst_bindir, inst_sbindir, inst_infodir, inst_sysconfdir): New variables. Same as variable withough inst_ but prepended with $(install_root). (localtime-time): Use $(inst_sysconfdir) not $(sysconfdir). * Makefile (install-others): Use $(inst_includedir). (gnu/stabs.h, gnu/lib-names.h): Use $(inst_includedir). * Makerules (tons of install rules): Use inst_% variables. * elf/Makefile: Likewise. * hurd/Makefile: Likewise. * intl/Makefile: Likewise. * manual/Makefile: Likewise. * po/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/mach/hurd/Makefile: Likewise. * sysdeps/standalone/i386/force_cpu386/Makefile: Likewise. * time/Makefile: Likewise. * config.make.in: Revert patch from Sat Jan 18 22:15:26 1997, leave install_root in place. * gnu-versions.h (_GNU_GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt.c (GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt1.c (GETOPT_INTERFACE_VERSION): Define to 2. * elf/Makefile [yes==$(has-ldconfig)]: Correct dependencies of ldconfig. (CFLAGS-dl-load.c): New variable, avoid gcc warning. * sysdeps/mach/hurd/configure.in: Add _LIBC_REENTRENT to DEFINES. * sysdeps/mach/hurd/getdents.c: Update copyright. De-ANSI-declfy. * sysdeps/stub/getdents.c: Likewise. Correct return value. * sysdeps/unix/getdents.c: Likewise. * sysdeps/unix/sysv/getdents.c: Likewise. * sysdeps/unix/readdir.c: Update copyright. * sysdeps/unix/bsd/sony/newsos4/Makefile: Correct ifeq arguments. * sysdeps/unix/bsd/sun/sunos4/Makefile: Likewise. * sysdeps/unix/sysv/Makefile: Likewise. * sysdeps/unix/sysv/linux/Makefile: Likewise. * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. * sysdeps/unix/sysv/linux/Dist: Don't distribute kernel_termios.h, but sys/kernel_termios.h. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir)==termios] (sysdep_headers): Add sys/kernel_termios.h. * sysdeps/unix/sysv/linux/kernel_termios.h: Moved to... * sysdeps/unix/sysv/linux/sys/kernel_termios.h: ...here. * sysdeps/unix/sysv/linux/sys/tcgetattr.c: Use __kernel_termios and __KERNEL_NCCS instead of kernel_termios and KERNEL_NCCS resp. * sysdeps/unix/sysv/linux/alpha/ioctls.h: New file. * sysdeps/unix/sysv/linux/getdents.c: Correct problems with alignment. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove getdents. Reported by Eirik Fuller <eirik@netcom.com>. * time/Banner: Removed. Wrong and unnecessary information. It's now in... * time/README: New file. * time/Makefile (distribute): Remove Banner, add README. Wed Jan 22 13:19:56 1997 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/ioperm.c (platforms): Add Sable. (init_iosys): Recognize /etc/alpha_systype as a four-tuple for the purpose of supporting brand new systems. (*): The type of iosys variables should be iosys_t. 1997-01-22 Paul Eggert <eggert@twinsun.com> * strftime.c (_strftime_copytm): New function, to work around Solaris 2.5 tzset bug. Wed Jan 22 23:05:14 1997 Ulrich Drepper <drepper@cygnus.com> * sysdeps/mach/hurd/vdprintf.c: Complete de-ANSI-declfication. * sysdeps/posix/pipestream.c (writedecl): Fix typo. Reported by Marcus G. Daniels <marcus@shannon.sysc.pdx.edu>. Wed Jan 22 13:58:56 1997 Andreas Jaeger <aj@arthur.pfalz.de> * elf/Makefile (CFLAGS-dl-load.c): New Variable to keep gcc silent since name_copy is initialized. Wed Jan 22 16:58:12 1997 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile (tests): Remove scanf11. * stdio-common/scanf11.c: Removed. * stdio-common/vfscanf.c Revert patch of Thu Jan 16 23:39:25 1997. Although the Corrigendum 1 describes the result as implemented the even more recent Amendement 1 seconds the position of ISO C:1990 where the %n directive has no effect on the assignment count. * stdio-common/bug10.c: Likewise. * stdio-common/scanf1.c: Likewise. * stdio-common/scanf3.c: Likewise. * stdio-common/scanf10.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * new-malloc/obstack.h: Don't define malloc using bcopy if malloc is not available. This leads to problems since bcopy does not return a value. Instead define _obstack_memcpy based on memcpy or bcopy. This name isn't used outside obstack.h and so no problems from using the memcpy function in a file including obstack.h can result. Reported by Martin Trapp <trapp@ipd.info.uni-karlsruhe.de>. Tue Jan 21 18:35:55 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * misc/regexp.h (compile): Fix typos. Tue Jan 21 01:01:59 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo): Fix type of pr_{pid,ppid,pgrp,sid} fields. * sysdeps/unix/sysv/linux/alpha/sys/procfs.h (struct elf_prpsinfo): Likewise.
1997-01-23 12:24:20 +08:00
inst_i18ndir = $(install_root)$(i18ndir)
Update. 1997-11-18 02:31 Ulrich Drepper <drepper@cygnus.com> * iconv/Makefile: New file. * iconv/gconv.c: New file. * iconv/gconv.h: New file. * iconv/gconv_builtin.c: New file. * iconv/gconv_builtin.h: New file. * iconv/gconv_close.c: New file. * iconv/gconv_conf.c: New file. * iconv/gconv_db.c: New file. * iconv/gconv_dl.c: New file. * iconv/gconv_open.c: New file. * iconv/gconv_simple.c: New file. * iconv/iconv.c: New file. * iconv/iconv.h: New file. * iconv/iconv_close.c: New file. * iconv/iconv_open.c: New file. * include/gconv.h: New file. * Makeconfig: Define gconvdir. * Makefile (subdirs): Add iconv. * string/bits/string2.h: Add optimization for strtok_r. * sysdeps/generic/_G_config.h: Define __need_NULL to get definition for NULL. Reported by H.J. Lu <hjl@gnu.ai.mit.edu>. * configure.in: Correct test for bash2. * locale/Makefile (CFLAGS-charmap.c): Add -Wno-char-subscripts. (CFLAGS-locfile.c): Likewise. Suggested by Zack Weinberg <zack@rabi.phys.columbia.edu>. * misc/hsearch_r.c (hsearch_r): Avoid undefinitely search for non-existing entry if the table is full. * posix/regex.h: Pretty print. * stdio-common/printf_fp.c: Don't define NDEBUG if already defined. * sysdeps/posix/ctermid.c: Simplify a bit. * sysdeps/unix/sysv/linux/net/if.h: Pretty print. 1997-11-17 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/sys/quota.h: Add include for <sys/types.h> instead of <asm/types.h>. 1997-11-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * math/libm-test.c (asin_test): Add epsilon for asin (0.5). 1997-11-16 17:09 H.J. Lu <hjl@gnu.ai.mit.edu> * libc.map (_IO_stdin_, _IO_stdout_, _IO_stderr_, _IO_fopen, fopen, freopen, _IO_fclose, fclose): Added to GLIBC_2.0. (_IO_stdin_, _IO_stdout_, _IO_stderr_): Removed from GLIBC_2.1. (_IO_2_1_stdin_, _IO_2_1_stdout_, _IO_2_1_stderr_, _IO_fclose, fclose): Added to GLIBC_2.1. * libio/Makefile (routines, shared-only-routines): Add oldiofclose. Remove oldfreopen. * libio/freopen.c (freopen): When PIC is defined, call _IO_old_freopen () for old stdio. * libio/iofclose.c (_IO_new_fclose): Renamed from _IO_fclose. (_IO_fclose, fclose): Use _IO_new_fclose as default version for GLIBC_2.1. * libio/iolibio.h (_IO_old_freopen): Use _IO_old_file_close_it instead of _IO_file_close_it. * libio/libio.h (_IO_stdin_, _IO_stdout_, _IO_stderr_): Changed to _IO_2_1_stdxxx_. (_IO_stdin, _IO_stdout, _IO_stderr): Declare as extern if _LIBC * libio/libioP.h (_IO_old_do_flush): New. * libio/oldfileops.c (_IO_old_file_close_it, _IO_old_file_finish, _IO_old_file_overflow, _IO_old_file_sync): Call _IO_old_do_flush () instead of _IO_do_flush (). (_IO_old_file_xsputn): Call _IO_old_do_write () instead of _IO_do_write (). * libio/oldiofopen.c (_IO_old_fopen): Call _IO_old_file_init () instead of _IO_file_init (). Bind old symbols to version GLIBC_2.0. * libio/oldstdfiles.c (DEF_STDFILE): Don't use symbol_version. (_IO_old_stdin_, _IO_old_stdout_, _IO_old_stderr_): Changed to _IO_stdxxx_. (_IO_check_libio): New function in .init. * libio/oldiofclose.c: New file. * libio/stdfiles.c (_IO_new_stdin_, _IO_new_stdout_, _IO_new_stderr_): Changed to _IO_2_1_stdxxx_. (DEF_STDFILE): Don't use default_symbol_version. * libio/stdio.c (stdin, stdout, stderr): Set to _IO_2_1_stdxxx_._ (_IO_stdin, _IO_stdout, _IO_stderr): New, strong alias of stdxxx. * csu/Makefile (distribute): Add init.c. (extra-objs): Add init.o for ELF. (start-installed-name): Add $(objpfx)init.o. * csu/init.c: New file. 1997-11-12 08:02 H.J. Lu <hjl@gnu.ai.mit.edu> * elf/dl-lookup.c (do_lookup): Don't use the hidden base definition as the default. 1997-08-27 Klaus Espenlaub <kespenla@hydra.informatik.uni-ulm.de> * erand48_r.c (__erand48_r): Implement for 32 bit short int. 1997-11-15 Andreas Jaeger <aj@arthur.rhein-neckar.de> * elf/genrtldtbl.awk: Replace gensub for compatibility with gawk2 (PR 351). 1997-11-16 21:01 Philip Blundell <Philip.Blundell@pobox.com> * sysdeps/arm/sysdep.h: Use __APCS_32__ to decide whether or not to preserve condition codes on function call. 1997-11-13 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/generic/s_exp2l.c: Change exp2l to __ieee754_exp2l. 1997-11-14 Andreas Jaeger <aj@arthur.rhein-neckar.de> * math/libm-test.c (asin_test): Add epsilon for float. (tan_test): Add epsilon for float. (log1p_test): Add epsilon for float. (inverse_functions): Add epsilons. * sysdeps/unix/sysv/linux/Makefile (sysdep_headers) [socket]: Add net/if_packet.h. * sysdeps/unix/sysv/linux/Dist: Add net/if_packet.h. 1997-11-10 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * md5-crypt/Makefile (extra-objs): Make recursively expanded variable, since $(object-suffixes) is not defined yet. 1997-11-11 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * db2/Makefile (distribute): db185/db185_int.src -> db185/db185_int.h. 1997-11-11 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * misc/tst-fdset.c: Don't require the value of FD_ISSET to be exactly one. 1997-11-11 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/generic/e_acoshl.c: Fix stub_warning: use the user level * sysdeps/generic/e_acosl.c: Likewise. * sysdeps/generic/e_asinl.c: Likewise. * sysdeps/generic/e_atan2l.c: Likewise. * sysdeps/generic/e_expl.c: Likewise. * sysdeps/generic/e_fmodl.c: Likewise. * sysdeps/generic/e_j0l.c: Likewise. * sysdeps/generic/e_j1l.c: Likewise. * sysdeps/generic/e_jnl.c: Likewise. * sysdeps/generic/e_lgammal_r.c: Likewise. * sysdeps/generic/e_log10l.c: Likewise. * sysdeps/generic/e_logl.c: Likewise. * sysdeps/generic/e_powl.c: Likewise. * sysdeps/generic/e_sqrtl.c: Likewise. * sysdeps/generic/e_exp2l.c: Likewise. 1997-11-11 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Make-dist (+sysdep-names): Remove extra paren. * Makefile (distribute): Add stub-tag.h. * elf/Makefile (distribute): Add atomicity.h. * stdlib/Makefile (headers): Add ucontext.h and sys/ucontext.h. * sysdeps/unix/sysv/linux/Makefile (sysdep_headers) [$(subdir)=socket]: Add net/if_packet.h. * sysdeps/alpha/Dist: Remove setjmp_aux.c. * sysdeps/unix/sysv/linux/Dist: Add s_pread64.c, s_pwrite64.c, net/if_packet.h, scsi/sg.h. 1997-11-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makefile (install): Quote $(CC) expansion. 1997-11-14 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/getcwd.c (__getcwd): Added caching of working /proc cwd and no restrictions on path length. Following some ideas from Andi Kleen <ak@muc.de> (PR 350). 1997-11-14 19:14 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * nis/nss_compat/compat-grp.c: Remove buggy assert call. 1997-11-14 22:23 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-i387/s_fdim.S: New file. * sysdeps/libm-i387/s_fdimf.S: New file. * sysdeps/libm-i387/s_fdiml.S: New file. * sysdeps/libm-i387/i686/s_fdim.S: New file. * sysdeps/libm-i387/i686/s_fdimf.S: New file. * sysdeps/libm-i387/i686/s_fdiml.S: New file. 1997-11-12 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * string/bits/string2.h (strstr): Avoid warning if HAYSTACK is a pointer to unsigned char. 1997-11-13 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/libm-ieee754/s_llrintf.c (__llrintf): Fix function. * sysdeps/libm-ieee754/s_lrintf.c (__lrintf): Fix function. * sysdeps/libm-ieee754/s_lrint.c (__lrint): Fix function. 1997-11-12 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/libm-ieee754/s_ilogbf.c: Correct return values for ilogb(0/NaN). * sysdeps/libm-ieee754/s_ilogbl.c: Likewise. * sysdeps/libm-ieee754/s_ilogb.c: Likewise. 1997-11-14 05:44 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-i387/s_fmin.S: New file. * sysdeps/libm-i387/s_fminf.S: New file. * sysdeps/libm-i387/s_fminl.S: New file. * sysdeps/libm-i387/s_fmax.S: New file. * sysdeps/libm-i387/s_fmaxf.S: New file. * sysdeps/libm-i387/s_fmaxl.S: New file. * sysdeps/libm-i387/i686/s_fmin.S: New file. * sysdeps/libm-i387/i686/s_fminf.S: New file. * sysdeps/libm-i387/i686/s_fminl.S: New file. * sysdeps/libm-i387/i686/s_fmax.S: New file. * sysdeps/libm-i387/i686/s_fmaxf.S: New file. * sysdeps/libm-i387/i686/s_fmaxl.S: New file. 1997-11-14 03:06 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/accept.S: Add __libc_accept as alias. * sysdeps/unix/sysv/linux/send.S: Likewise. * sysdeps/unix/sysv/linux/recv.S: Likewise. * sysdeps/unix/sysv/linux/connect.S: Likewise. Reported by Christopher Wiles <wileyc@ai.cs.fujitsu.co.jp>. See ChangeLog.7 for earlier changes.
1997-11-18 10:50:07 +08:00
# Where to install the shared object for charset transformation.
ifndef gconvdir
gconvdir = $(libdir)/gconv
endif
inst_gconvdir = $(install_root)$(gconvdir)
1995-02-18 09:27:10 +08:00
# Where to install programs.
ifndef bindir
bindir = $(exec_prefix)/bin
endif
update from main archive 970121 Thu Jan 23 04:06:42 1997 Ulrich Drepper <drepper@cygnus.com> * Make-dist (.PHONY: dist): Remove duplicate declaration. (README): Depend on version.h not version.c. * Makefile (README): Depend on version.h not version.c. * Makeconfig (inst_libdir, inst_slibdir, inst_includedir, inst_datadir, inst_zonedir, inst_localedir, inst_i18ndir, inst_bindir, inst_sbindir, inst_infodir, inst_sysconfdir): New variables. Same as variable withough inst_ but prepended with $(install_root). (localtime-time): Use $(inst_sysconfdir) not $(sysconfdir). * Makefile (install-others): Use $(inst_includedir). (gnu/stabs.h, gnu/lib-names.h): Use $(inst_includedir). * Makerules (tons of install rules): Use inst_% variables. * elf/Makefile: Likewise. * hurd/Makefile: Likewise. * intl/Makefile: Likewise. * manual/Makefile: Likewise. * po/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/mach/hurd/Makefile: Likewise. * sysdeps/standalone/i386/force_cpu386/Makefile: Likewise. * time/Makefile: Likewise. * config.make.in: Revert patch from Sat Jan 18 22:15:26 1997, leave install_root in place. * gnu-versions.h (_GNU_GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt.c (GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt1.c (GETOPT_INTERFACE_VERSION): Define to 2. * elf/Makefile [yes==$(has-ldconfig)]: Correct dependencies of ldconfig. (CFLAGS-dl-load.c): New variable, avoid gcc warning. * sysdeps/mach/hurd/configure.in: Add _LIBC_REENTRENT to DEFINES. * sysdeps/mach/hurd/getdents.c: Update copyright. De-ANSI-declfy. * sysdeps/stub/getdents.c: Likewise. Correct return value. * sysdeps/unix/getdents.c: Likewise. * sysdeps/unix/sysv/getdents.c: Likewise. * sysdeps/unix/readdir.c: Update copyright. * sysdeps/unix/bsd/sony/newsos4/Makefile: Correct ifeq arguments. * sysdeps/unix/bsd/sun/sunos4/Makefile: Likewise. * sysdeps/unix/sysv/Makefile: Likewise. * sysdeps/unix/sysv/linux/Makefile: Likewise. * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. * sysdeps/unix/sysv/linux/Dist: Don't distribute kernel_termios.h, but sys/kernel_termios.h. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir)==termios] (sysdep_headers): Add sys/kernel_termios.h. * sysdeps/unix/sysv/linux/kernel_termios.h: Moved to... * sysdeps/unix/sysv/linux/sys/kernel_termios.h: ...here. * sysdeps/unix/sysv/linux/sys/tcgetattr.c: Use __kernel_termios and __KERNEL_NCCS instead of kernel_termios and KERNEL_NCCS resp. * sysdeps/unix/sysv/linux/alpha/ioctls.h: New file. * sysdeps/unix/sysv/linux/getdents.c: Correct problems with alignment. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove getdents. Reported by Eirik Fuller <eirik@netcom.com>. * time/Banner: Removed. Wrong and unnecessary information. It's now in... * time/README: New file. * time/Makefile (distribute): Remove Banner, add README. Wed Jan 22 13:19:56 1997 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/ioperm.c (platforms): Add Sable. (init_iosys): Recognize /etc/alpha_systype as a four-tuple for the purpose of supporting brand new systems. (*): The type of iosys variables should be iosys_t. 1997-01-22 Paul Eggert <eggert@twinsun.com> * strftime.c (_strftime_copytm): New function, to work around Solaris 2.5 tzset bug. Wed Jan 22 23:05:14 1997 Ulrich Drepper <drepper@cygnus.com> * sysdeps/mach/hurd/vdprintf.c: Complete de-ANSI-declfication. * sysdeps/posix/pipestream.c (writedecl): Fix typo. Reported by Marcus G. Daniels <marcus@shannon.sysc.pdx.edu>. Wed Jan 22 13:58:56 1997 Andreas Jaeger <aj@arthur.pfalz.de> * elf/Makefile (CFLAGS-dl-load.c): New Variable to keep gcc silent since name_copy is initialized. Wed Jan 22 16:58:12 1997 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile (tests): Remove scanf11. * stdio-common/scanf11.c: Removed. * stdio-common/vfscanf.c Revert patch of Thu Jan 16 23:39:25 1997. Although the Corrigendum 1 describes the result as implemented the even more recent Amendement 1 seconds the position of ISO C:1990 where the %n directive has no effect on the assignment count. * stdio-common/bug10.c: Likewise. * stdio-common/scanf1.c: Likewise. * stdio-common/scanf3.c: Likewise. * stdio-common/scanf10.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * new-malloc/obstack.h: Don't define malloc using bcopy if malloc is not available. This leads to problems since bcopy does not return a value. Instead define _obstack_memcpy based on memcpy or bcopy. This name isn't used outside obstack.h and so no problems from using the memcpy function in a file including obstack.h can result. Reported by Martin Trapp <trapp@ipd.info.uni-karlsruhe.de>. Tue Jan 21 18:35:55 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * misc/regexp.h (compile): Fix typos. Tue Jan 21 01:01:59 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo): Fix type of pr_{pid,ppid,pgrp,sid} fields. * sysdeps/unix/sysv/linux/alpha/sys/procfs.h (struct elf_prpsinfo): Likewise.
1997-01-23 12:24:20 +08:00
inst_bindir = $(install_root)$(bindir)
1995-02-18 09:27:10 +08:00
1998-01-30 18:51:27 +08:00
# Where to install internal programs.
ifndef libexecdir
libexecdir = $(exec_prefix)/libexec
endif
inst_libexecdir = $(install_root)$(libexecdir)
1995-02-18 09:27:10 +08:00
# Where to install administrative programs.
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 13:26:05 +08:00
ifndef rootsbindir
rootsbindir = $(exec_prefix)/sbin
endif
update from main archive 970121 Thu Jan 23 04:06:42 1997 Ulrich Drepper <drepper@cygnus.com> * Make-dist (.PHONY: dist): Remove duplicate declaration. (README): Depend on version.h not version.c. * Makefile (README): Depend on version.h not version.c. * Makeconfig (inst_libdir, inst_slibdir, inst_includedir, inst_datadir, inst_zonedir, inst_localedir, inst_i18ndir, inst_bindir, inst_sbindir, inst_infodir, inst_sysconfdir): New variables. Same as variable withough inst_ but prepended with $(install_root). (localtime-time): Use $(inst_sysconfdir) not $(sysconfdir). * Makefile (install-others): Use $(inst_includedir). (gnu/stabs.h, gnu/lib-names.h): Use $(inst_includedir). * Makerules (tons of install rules): Use inst_% variables. * elf/Makefile: Likewise. * hurd/Makefile: Likewise. * intl/Makefile: Likewise. * manual/Makefile: Likewise. * po/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/mach/hurd/Makefile: Likewise. * sysdeps/standalone/i386/force_cpu386/Makefile: Likewise. * time/Makefile: Likewise. * config.make.in: Revert patch from Sat Jan 18 22:15:26 1997, leave install_root in place. * gnu-versions.h (_GNU_GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt.c (GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt1.c (GETOPT_INTERFACE_VERSION): Define to 2. * elf/Makefile [yes==$(has-ldconfig)]: Correct dependencies of ldconfig. (CFLAGS-dl-load.c): New variable, avoid gcc warning. * sysdeps/mach/hurd/configure.in: Add _LIBC_REENTRENT to DEFINES. * sysdeps/mach/hurd/getdents.c: Update copyright. De-ANSI-declfy. * sysdeps/stub/getdents.c: Likewise. Correct return value. * sysdeps/unix/getdents.c: Likewise. * sysdeps/unix/sysv/getdents.c: Likewise. * sysdeps/unix/readdir.c: Update copyright. * sysdeps/unix/bsd/sony/newsos4/Makefile: Correct ifeq arguments. * sysdeps/unix/bsd/sun/sunos4/Makefile: Likewise. * sysdeps/unix/sysv/Makefile: Likewise. * sysdeps/unix/sysv/linux/Makefile: Likewise. * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. * sysdeps/unix/sysv/linux/Dist: Don't distribute kernel_termios.h, but sys/kernel_termios.h. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir)==termios] (sysdep_headers): Add sys/kernel_termios.h. * sysdeps/unix/sysv/linux/kernel_termios.h: Moved to... * sysdeps/unix/sysv/linux/sys/kernel_termios.h: ...here. * sysdeps/unix/sysv/linux/sys/tcgetattr.c: Use __kernel_termios and __KERNEL_NCCS instead of kernel_termios and KERNEL_NCCS resp. * sysdeps/unix/sysv/linux/alpha/ioctls.h: New file. * sysdeps/unix/sysv/linux/getdents.c: Correct problems with alignment. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove getdents. Reported by Eirik Fuller <eirik@netcom.com>. * time/Banner: Removed. Wrong and unnecessary information. It's now in... * time/README: New file. * time/Makefile (distribute): Remove Banner, add README. Wed Jan 22 13:19:56 1997 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/ioperm.c (platforms): Add Sable. (init_iosys): Recognize /etc/alpha_systype as a four-tuple for the purpose of supporting brand new systems. (*): The type of iosys variables should be iosys_t. 1997-01-22 Paul Eggert <eggert@twinsun.com> * strftime.c (_strftime_copytm): New function, to work around Solaris 2.5 tzset bug. Wed Jan 22 23:05:14 1997 Ulrich Drepper <drepper@cygnus.com> * sysdeps/mach/hurd/vdprintf.c: Complete de-ANSI-declfication. * sysdeps/posix/pipestream.c (writedecl): Fix typo. Reported by Marcus G. Daniels <marcus@shannon.sysc.pdx.edu>. Wed Jan 22 13:58:56 1997 Andreas Jaeger <aj@arthur.pfalz.de> * elf/Makefile (CFLAGS-dl-load.c): New Variable to keep gcc silent since name_copy is initialized. Wed Jan 22 16:58:12 1997 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile (tests): Remove scanf11. * stdio-common/scanf11.c: Removed. * stdio-common/vfscanf.c Revert patch of Thu Jan 16 23:39:25 1997. Although the Corrigendum 1 describes the result as implemented the even more recent Amendement 1 seconds the position of ISO C:1990 where the %n directive has no effect on the assignment count. * stdio-common/bug10.c: Likewise. * stdio-common/scanf1.c: Likewise. * stdio-common/scanf3.c: Likewise. * stdio-common/scanf10.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * new-malloc/obstack.h: Don't define malloc using bcopy if malloc is not available. This leads to problems since bcopy does not return a value. Instead define _obstack_memcpy based on memcpy or bcopy. This name isn't used outside obstack.h and so no problems from using the memcpy function in a file including obstack.h can result. Reported by Martin Trapp <trapp@ipd.info.uni-karlsruhe.de>. Tue Jan 21 18:35:55 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * misc/regexp.h (compile): Fix typos. Tue Jan 21 01:01:59 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo): Fix type of pr_{pid,ppid,pgrp,sid} fields. * sysdeps/unix/sysv/linux/alpha/sys/procfs.h (struct elf_prpsinfo): Likewise.
1997-01-23 12:24:20 +08:00
inst_rootsbindir = $(install_root)$(rootsbindir)
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 13:26:05 +08:00
1995-02-18 09:27:10 +08:00
ifndef sbindir
sbindir = $(exec_prefix)/sbin
endif
update from main archive 970121 Thu Jan 23 04:06:42 1997 Ulrich Drepper <drepper@cygnus.com> * Make-dist (.PHONY: dist): Remove duplicate declaration. (README): Depend on version.h not version.c. * Makefile (README): Depend on version.h not version.c. * Makeconfig (inst_libdir, inst_slibdir, inst_includedir, inst_datadir, inst_zonedir, inst_localedir, inst_i18ndir, inst_bindir, inst_sbindir, inst_infodir, inst_sysconfdir): New variables. Same as variable withough inst_ but prepended with $(install_root). (localtime-time): Use $(inst_sysconfdir) not $(sysconfdir). * Makefile (install-others): Use $(inst_includedir). (gnu/stabs.h, gnu/lib-names.h): Use $(inst_includedir). * Makerules (tons of install rules): Use inst_% variables. * elf/Makefile: Likewise. * hurd/Makefile: Likewise. * intl/Makefile: Likewise. * manual/Makefile: Likewise. * po/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/mach/hurd/Makefile: Likewise. * sysdeps/standalone/i386/force_cpu386/Makefile: Likewise. * time/Makefile: Likewise. * config.make.in: Revert patch from Sat Jan 18 22:15:26 1997, leave install_root in place. * gnu-versions.h (_GNU_GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt.c (GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt1.c (GETOPT_INTERFACE_VERSION): Define to 2. * elf/Makefile [yes==$(has-ldconfig)]: Correct dependencies of ldconfig. (CFLAGS-dl-load.c): New variable, avoid gcc warning. * sysdeps/mach/hurd/configure.in: Add _LIBC_REENTRENT to DEFINES. * sysdeps/mach/hurd/getdents.c: Update copyright. De-ANSI-declfy. * sysdeps/stub/getdents.c: Likewise. Correct return value. * sysdeps/unix/getdents.c: Likewise. * sysdeps/unix/sysv/getdents.c: Likewise. * sysdeps/unix/readdir.c: Update copyright. * sysdeps/unix/bsd/sony/newsos4/Makefile: Correct ifeq arguments. * sysdeps/unix/bsd/sun/sunos4/Makefile: Likewise. * sysdeps/unix/sysv/Makefile: Likewise. * sysdeps/unix/sysv/linux/Makefile: Likewise. * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. * sysdeps/unix/sysv/linux/Dist: Don't distribute kernel_termios.h, but sys/kernel_termios.h. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir)==termios] (sysdep_headers): Add sys/kernel_termios.h. * sysdeps/unix/sysv/linux/kernel_termios.h: Moved to... * sysdeps/unix/sysv/linux/sys/kernel_termios.h: ...here. * sysdeps/unix/sysv/linux/sys/tcgetattr.c: Use __kernel_termios and __KERNEL_NCCS instead of kernel_termios and KERNEL_NCCS resp. * sysdeps/unix/sysv/linux/alpha/ioctls.h: New file. * sysdeps/unix/sysv/linux/getdents.c: Correct problems with alignment. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove getdents. Reported by Eirik Fuller <eirik@netcom.com>. * time/Banner: Removed. Wrong and unnecessary information. It's now in... * time/README: New file. * time/Makefile (distribute): Remove Banner, add README. Wed Jan 22 13:19:56 1997 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/ioperm.c (platforms): Add Sable. (init_iosys): Recognize /etc/alpha_systype as a four-tuple for the purpose of supporting brand new systems. (*): The type of iosys variables should be iosys_t. 1997-01-22 Paul Eggert <eggert@twinsun.com> * strftime.c (_strftime_copytm): New function, to work around Solaris 2.5 tzset bug. Wed Jan 22 23:05:14 1997 Ulrich Drepper <drepper@cygnus.com> * sysdeps/mach/hurd/vdprintf.c: Complete de-ANSI-declfication. * sysdeps/posix/pipestream.c (writedecl): Fix typo. Reported by Marcus G. Daniels <marcus@shannon.sysc.pdx.edu>. Wed Jan 22 13:58:56 1997 Andreas Jaeger <aj@arthur.pfalz.de> * elf/Makefile (CFLAGS-dl-load.c): New Variable to keep gcc silent since name_copy is initialized. Wed Jan 22 16:58:12 1997 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile (tests): Remove scanf11. * stdio-common/scanf11.c: Removed. * stdio-common/vfscanf.c Revert patch of Thu Jan 16 23:39:25 1997. Although the Corrigendum 1 describes the result as implemented the even more recent Amendement 1 seconds the position of ISO C:1990 where the %n directive has no effect on the assignment count. * stdio-common/bug10.c: Likewise. * stdio-common/scanf1.c: Likewise. * stdio-common/scanf3.c: Likewise. * stdio-common/scanf10.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * new-malloc/obstack.h: Don't define malloc using bcopy if malloc is not available. This leads to problems since bcopy does not return a value. Instead define _obstack_memcpy based on memcpy or bcopy. This name isn't used outside obstack.h and so no problems from using the memcpy function in a file including obstack.h can result. Reported by Martin Trapp <trapp@ipd.info.uni-karlsruhe.de>. Tue Jan 21 18:35:55 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * misc/regexp.h (compile): Fix typos. Tue Jan 21 01:01:59 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo): Fix type of pr_{pid,ppid,pgrp,sid} fields. * sysdeps/unix/sysv/linux/alpha/sys/procfs.h (struct elf_prpsinfo): Likewise.
1997-01-23 12:24:20 +08:00
inst_sbindir = $(install_root)$(sbindir)
1995-02-18 09:27:10 +08:00
# Where to install the Info files.
ifndef infodir
infodir = $(prefix)/info
endif
update from main archive 970121 Thu Jan 23 04:06:42 1997 Ulrich Drepper <drepper@cygnus.com> * Make-dist (.PHONY: dist): Remove duplicate declaration. (README): Depend on version.h not version.c. * Makefile (README): Depend on version.h not version.c. * Makeconfig (inst_libdir, inst_slibdir, inst_includedir, inst_datadir, inst_zonedir, inst_localedir, inst_i18ndir, inst_bindir, inst_sbindir, inst_infodir, inst_sysconfdir): New variables. Same as variable withough inst_ but prepended with $(install_root). (localtime-time): Use $(inst_sysconfdir) not $(sysconfdir). * Makefile (install-others): Use $(inst_includedir). (gnu/stabs.h, gnu/lib-names.h): Use $(inst_includedir). * Makerules (tons of install rules): Use inst_% variables. * elf/Makefile: Likewise. * hurd/Makefile: Likewise. * intl/Makefile: Likewise. * manual/Makefile: Likewise. * po/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/mach/hurd/Makefile: Likewise. * sysdeps/standalone/i386/force_cpu386/Makefile: Likewise. * time/Makefile: Likewise. * config.make.in: Revert patch from Sat Jan 18 22:15:26 1997, leave install_root in place. * gnu-versions.h (_GNU_GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt.c (GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt1.c (GETOPT_INTERFACE_VERSION): Define to 2. * elf/Makefile [yes==$(has-ldconfig)]: Correct dependencies of ldconfig. (CFLAGS-dl-load.c): New variable, avoid gcc warning. * sysdeps/mach/hurd/configure.in: Add _LIBC_REENTRENT to DEFINES. * sysdeps/mach/hurd/getdents.c: Update copyright. De-ANSI-declfy. * sysdeps/stub/getdents.c: Likewise. Correct return value. * sysdeps/unix/getdents.c: Likewise. * sysdeps/unix/sysv/getdents.c: Likewise. * sysdeps/unix/readdir.c: Update copyright. * sysdeps/unix/bsd/sony/newsos4/Makefile: Correct ifeq arguments. * sysdeps/unix/bsd/sun/sunos4/Makefile: Likewise. * sysdeps/unix/sysv/Makefile: Likewise. * sysdeps/unix/sysv/linux/Makefile: Likewise. * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. * sysdeps/unix/sysv/linux/Dist: Don't distribute kernel_termios.h, but sys/kernel_termios.h. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir)==termios] (sysdep_headers): Add sys/kernel_termios.h. * sysdeps/unix/sysv/linux/kernel_termios.h: Moved to... * sysdeps/unix/sysv/linux/sys/kernel_termios.h: ...here. * sysdeps/unix/sysv/linux/sys/tcgetattr.c: Use __kernel_termios and __KERNEL_NCCS instead of kernel_termios and KERNEL_NCCS resp. * sysdeps/unix/sysv/linux/alpha/ioctls.h: New file. * sysdeps/unix/sysv/linux/getdents.c: Correct problems with alignment. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove getdents. Reported by Eirik Fuller <eirik@netcom.com>. * time/Banner: Removed. Wrong and unnecessary information. It's now in... * time/README: New file. * time/Makefile (distribute): Remove Banner, add README. Wed Jan 22 13:19:56 1997 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/ioperm.c (platforms): Add Sable. (init_iosys): Recognize /etc/alpha_systype as a four-tuple for the purpose of supporting brand new systems. (*): The type of iosys variables should be iosys_t. 1997-01-22 Paul Eggert <eggert@twinsun.com> * strftime.c (_strftime_copytm): New function, to work around Solaris 2.5 tzset bug. Wed Jan 22 23:05:14 1997 Ulrich Drepper <drepper@cygnus.com> * sysdeps/mach/hurd/vdprintf.c: Complete de-ANSI-declfication. * sysdeps/posix/pipestream.c (writedecl): Fix typo. Reported by Marcus G. Daniels <marcus@shannon.sysc.pdx.edu>. Wed Jan 22 13:58:56 1997 Andreas Jaeger <aj@arthur.pfalz.de> * elf/Makefile (CFLAGS-dl-load.c): New Variable to keep gcc silent since name_copy is initialized. Wed Jan 22 16:58:12 1997 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile (tests): Remove scanf11. * stdio-common/scanf11.c: Removed. * stdio-common/vfscanf.c Revert patch of Thu Jan 16 23:39:25 1997. Although the Corrigendum 1 describes the result as implemented the even more recent Amendement 1 seconds the position of ISO C:1990 where the %n directive has no effect on the assignment count. * stdio-common/bug10.c: Likewise. * stdio-common/scanf1.c: Likewise. * stdio-common/scanf3.c: Likewise. * stdio-common/scanf10.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * new-malloc/obstack.h: Don't define malloc using bcopy if malloc is not available. This leads to problems since bcopy does not return a value. Instead define _obstack_memcpy based on memcpy or bcopy. This name isn't used outside obstack.h and so no problems from using the memcpy function in a file including obstack.h can result. Reported by Martin Trapp <trapp@ipd.info.uni-karlsruhe.de>. Tue Jan 21 18:35:55 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * misc/regexp.h (compile): Fix typos. Tue Jan 21 01:01:59 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo): Fix type of pr_{pid,ppid,pgrp,sid} fields. * sysdeps/unix/sysv/linux/alpha/sys/procfs.h (struct elf_prpsinfo): Likewise.
1997-01-23 12:24:20 +08:00
inst_infodir = $(install_root)$(infodir)
1995-02-18 09:27:10 +08:00
2011-05-29 01:20:12 +08:00
# Where to install audit libraries.
ifndef auditdir
auditdir = $(libdir)/audit
endif
inst_auditdir = $(install_root)$(auditdir)
1995-02-18 09:27:10 +08:00
# Where to install default configuration files. These include the local
# timezone specification and network data base files.
ifndef sysconfdir
sysconfdir = $(prefix)/etc
endif
update from main archive 970121 Thu Jan 23 04:06:42 1997 Ulrich Drepper <drepper@cygnus.com> * Make-dist (.PHONY: dist): Remove duplicate declaration. (README): Depend on version.h not version.c. * Makefile (README): Depend on version.h not version.c. * Makeconfig (inst_libdir, inst_slibdir, inst_includedir, inst_datadir, inst_zonedir, inst_localedir, inst_i18ndir, inst_bindir, inst_sbindir, inst_infodir, inst_sysconfdir): New variables. Same as variable withough inst_ but prepended with $(install_root). (localtime-time): Use $(inst_sysconfdir) not $(sysconfdir). * Makefile (install-others): Use $(inst_includedir). (gnu/stabs.h, gnu/lib-names.h): Use $(inst_includedir). * Makerules (tons of install rules): Use inst_% variables. * elf/Makefile: Likewise. * hurd/Makefile: Likewise. * intl/Makefile: Likewise. * manual/Makefile: Likewise. * po/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/mach/hurd/Makefile: Likewise. * sysdeps/standalone/i386/force_cpu386/Makefile: Likewise. * time/Makefile: Likewise. * config.make.in: Revert patch from Sat Jan 18 22:15:26 1997, leave install_root in place. * gnu-versions.h (_GNU_GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt.c (GETOPT_INTERFACE_VERSION): Define to 2. * posix/getopt1.c (GETOPT_INTERFACE_VERSION): Define to 2. * elf/Makefile [yes==$(has-ldconfig)]: Correct dependencies of ldconfig. (CFLAGS-dl-load.c): New variable, avoid gcc warning. * sysdeps/mach/hurd/configure.in: Add _LIBC_REENTRENT to DEFINES. * sysdeps/mach/hurd/getdents.c: Update copyright. De-ANSI-declfy. * sysdeps/stub/getdents.c: Likewise. Correct return value. * sysdeps/unix/getdents.c: Likewise. * sysdeps/unix/sysv/getdents.c: Likewise. * sysdeps/unix/readdir.c: Update copyright. * sysdeps/unix/bsd/sony/newsos4/Makefile: Correct ifeq arguments. * sysdeps/unix/bsd/sun/sunos4/Makefile: Likewise. * sysdeps/unix/sysv/Makefile: Likewise. * sysdeps/unix/sysv/linux/Makefile: Likewise. * sysdeps/unix/sysv/linux/alpha/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/Makefile: Likewise. * sysdeps/unix/sysv/linux/Dist: Don't distribute kernel_termios.h, but sys/kernel_termios.h. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir)==termios] (sysdep_headers): Add sys/kernel_termios.h. * sysdeps/unix/sysv/linux/kernel_termios.h: Moved to... * sysdeps/unix/sysv/linux/sys/kernel_termios.h: ...here. * sysdeps/unix/sysv/linux/sys/tcgetattr.c: Use __kernel_termios and __KERNEL_NCCS instead of kernel_termios and KERNEL_NCCS resp. * sysdeps/unix/sysv/linux/alpha/ioctls.h: New file. * sysdeps/unix/sysv/linux/getdents.c: Correct problems with alignment. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove getdents. Reported by Eirik Fuller <eirik@netcom.com>. * time/Banner: Removed. Wrong and unnecessary information. It's now in... * time/README: New file. * time/Makefile (distribute): Remove Banner, add README. Wed Jan 22 13:19:56 1997 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/ioperm.c (platforms): Add Sable. (init_iosys): Recognize /etc/alpha_systype as a four-tuple for the purpose of supporting brand new systems. (*): The type of iosys variables should be iosys_t. 1997-01-22 Paul Eggert <eggert@twinsun.com> * strftime.c (_strftime_copytm): New function, to work around Solaris 2.5 tzset bug. Wed Jan 22 23:05:14 1997 Ulrich Drepper <drepper@cygnus.com> * sysdeps/mach/hurd/vdprintf.c: Complete de-ANSI-declfication. * sysdeps/posix/pipestream.c (writedecl): Fix typo. Reported by Marcus G. Daniels <marcus@shannon.sysc.pdx.edu>. Wed Jan 22 13:58:56 1997 Andreas Jaeger <aj@arthur.pfalz.de> * elf/Makefile (CFLAGS-dl-load.c): New Variable to keep gcc silent since name_copy is initialized. Wed Jan 22 16:58:12 1997 Ulrich Drepper <drepper@cygnus.com> * stdio-common/Makefile (tests): Remove scanf11. * stdio-common/scanf11.c: Removed. * stdio-common/vfscanf.c Revert patch of Thu Jan 16 23:39:25 1997. Although the Corrigendum 1 describes the result as implemented the even more recent Amendement 1 seconds the position of ISO C:1990 where the %n directive has no effect on the assignment count. * stdio-common/bug10.c: Likewise. * stdio-common/scanf1.c: Likewise. * stdio-common/scanf3.c: Likewise. * stdio-common/scanf10.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * new-malloc/obstack.h: Don't define malloc using bcopy if malloc is not available. This leads to problems since bcopy does not return a value. Instead define _obstack_memcpy based on memcpy or bcopy. This name isn't used outside obstack.h and so no problems from using the memcpy function in a file including obstack.h can result. Reported by Martin Trapp <trapp@ipd.info.uni-karlsruhe.de>. Tue Jan 21 18:35:55 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * misc/regexp.h (compile): Fix typos. Tue Jan 21 01:01:59 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo): Fix type of pr_{pid,ppid,pgrp,sid} fields. * sysdeps/unix/sysv/linux/alpha/sys/procfs.h (struct elf_prpsinfo): Likewise.
1997-01-23 12:24:20 +08:00
inst_sysconfdir = $(install_root)$(sysconfdir)
1995-02-18 09:27:10 +08:00
2011-06-16 09:26:56 +08:00
# Directory for the database files and Makefile for nss_db.
ifndef vardbdir
vardbdir = $(localstatedir)/db
2011-06-16 09:26:56 +08:00
endif
inst_vardbdir = $(install_root)$(vardbdir)
1995-02-18 09:27:10 +08:00
# Where to install the "localtime" timezone file; this is the file whose
# contents $(localtime) specifies. If this is a relative pathname, it is
# relative to $(zonedir). It is a good idea to put this somewhere
# other than there, so the zoneinfo directory contains only universal data,
# localizing the configuration data elsewhere.
ifndef localtime-file
Update. 1997-03-16 18:43 Ulrich Drepper <drepper@cygnus.com> * manual/filesys.texi: Add documentation for scandir and alphasort. * math/math.c (fpclassify): Correct stupid typos. * math/libm-test.c: New file. libm test suite by Andreas Jaeger. * nss/nss_files/files-hosts.c: Add gethostbyname2 imlementation. * posix/Makefile (routines): Add bsd-getpgrp. * posix/bsd-getpgrp.c: New file. * posix/unistd.h [__FAVOR_BSD]: Define macro getpgrp which maps calls to __bsd_getpgrp. * sysdeps/generic/getpgrp.c: De-ANSI-declfy. * sysdeps/i386/huge_val.h: New file. ix87 specific infinity values. * sysdeps/m68k/huge_val.h: New file. m68k specific infinity values. * sysdeps/generic/huge_val.h: Remove definition of long double definition. Make it the same as the double definition. * sysdeps/libm-i387/e_acos.S: Fix bug in FPU stack handling. * sysdeps/libm-i387/e_acosf.S: Likewise. * sysdeps/libm-i387/e_acosl.S: Likewise. * sysdeps/libm-i387/e_asin.S: Likewise. * sysdeps/libm-i387/e_asinf.S: Likewise. * sysdeps/libm-i387/e_asinl.S: Likewise. * sysdeps/libm-i387/e_exp.S: Likewise. * sysdeps/libm-i387/e_expf.S: Likewise. * sysdeps/libm-i387/e_expl.S: Likewise. * sysdeps/libm-i387/e_scalbn.S: Likewise. * sysdeps/libm-i387/e_scalbnf.S: Likewise. * sysdeps/libm-i387/e_scalbnl.S: Likewise. * sysdeps/libm-i387/e_log.S: Optimize branch code. * sysdeps/libm-i387/e_logf.S: Likewise. * sysdeps/libm-i387/e_logl.S: Likewise. * sysdeps/libm-i387/e_log10.S: Likewise. * sysdeps/libm-i387/e_log10f.S: Likewise. * sysdeps/libm-i387/e_log10l.S: Likewise. * sysdeps/libm-i387/e_pow.S: Major rewrite to handle special cases. * sysdeps/libm-i387/e_powf.S: Likewise. * sysdeps/libm-i387/e_powl.S: Likewise. * sysdeps/libm-i387/e_expm1.S: Change return value for -inf argument to -1.0. * sysdeps/libm-i387/e_expm1f.S: Likewise. * sysdeps/libm-i387/e_expm1l.S: Likewise. * sysdeps/libm-i387/e_isinfl.c: Return -1 for -inf. * sysdeps/libm-i387/e_logbl.S: Correct return value. Discard first stack element after fxtract. * sysdeps/libm-ieee754/e_atan2l.c: New file. `long double' implementation for atan2 function. * sysdeps/libm-ieee754/k_standard.c: Return NAN for libm not in _SVID_ mode when acos, asin, atan2, log, log10 is called with argument out of range. Add new error case for pow(+0,neg). * sysdeps/libm-ieee754/s_fpclassifyf.c: Correct recognition of NaN and +-inf. * sysdeps/libm-ieee754/s_fpclassifyl.c: Mask out explicit leading digit in stupid 80 bit formats. * sysdeps/libm-ieee754/s_isinf.c: Rewrite to return -1 for -inf. * sysdeps/libm-ieee754/s_isinff.c: Likewise. * sysdeps/libm-ieee754/s_isinfl.c: Likewise. * sysdeps/libm-ieee754/s_scalbnl.c (huge, tiny): Adapt values for long double type. * sysdeps/libm-ieee754/w_atan2.c: Do not raise exception expect when in SVID mode. * sysdeps/libm-ieee754/w_atan2f.c: Likewise. * sysdeps/libm-ieee754/w_atan2l.c: Likewise. * sysdeps/libm-ieee754/w_pow.c: Distinguish error cases for x is +0 or -0. * sysdeps/posix/isfdtype.c: Add cast to prevent warning. * sysdeps/stub/fcntlbits.h: Update copyright. * sysdeps/unix/bsd/fcntlbits.h: Likewise. * sysdeps/unix/bsd/bsd4.4/fcntlbits.h: Likewise. * sysdeps/unix/bsd/sun/sunos4/fcntlbits.h: Likewise. * sysdeps/unix/bsd/ultrix4/fcntlbits.h: Likewise. * sysdeps/unix/common/fcntlbits.h: Likewise. * sysdeps/unix/sysv/fcntlbits.h: Likewise. Define O_FSYNC as alias of O_SYNC. Add BSD compatibility macros FAPPEND, FFSYNC, FNONBLOCK, and FNDELAY. * sysdeps/unix/sysv/irix4/fcntlbits.h: Likewise. * sysdeps/unix/readdir_r.c: Don't copy whole `struct dirent' record, only reclen bytes. * sysdeps/unix/sysv/linux/fcntlbits.h [__USE_GNU]: Add O_READ, O_WRITE and O_NORW. * sysdeps/unix/sysv/linux/alpha/fcntlbits.h: Likewise. * sysdeps/unix/sysv/linux/init-first.h: Add copyright. * sysdeps/unix/sysv/linux/fxstat.c: New file. Rewrite kernel-level struct stat to user-level form. * sysdeps/unix/sysv/linux/lxstat: New file. * sysdeps/unix/sysv/linux/xstat: New file. * sysdeps/unix/sysv/linux/kernel_stat.h: Define struct stat used in kernel. * sysdeps/unix/sysv/linux/statbuf.h (struct stat): Change definition to use prescribed types for elements. (_STAT_VER): Change to value 3. * sysdeps/unix/sysv/linux/alph/statbuf.h: Likewise. * sysdeps/unix/sysv/linux/Dist: Add kernel_stat.h. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * time/Makefile: Correct dependencies for test-tz. 1997-03-16 14:59 Philip Blundell <phil@london.uk.eu.org> * resolv/netdb.h: Add prototypes for gai_strerror and getnameinfo (needed for IPv6 basic sockets API). 1997-03-16 15:02 a sun <asun@zoology.washington.edu> * sysdeps/unix/sysv/linux/net/if_ppp.h: Don't use incompatible kernel header. * sysdeps/unix/sysv/linux/net/ppp_defs.h: Likewise. 1997-03-14 17:15 Ulrich Drepper <drepper@cygnus.com> * db/hash/hash_bigkey.c (__big_delete): Don't call __free_ovflpage without testing for last_bfp to be NULL. Reported by fabsoft@fabserver1.zarm.uni-bremen.de. 1997-03-13 11:42 Jim Meyering <meyering@asic.sc.ti.com> * time/mktime.c (TIME_T_MIN): Work around a bug in Cray C 5.0.3.0. 1997-03-14 04:00 Kurt Garloff <garloff@kg1.ping.de> * sysdeps/unix/sysv/linux/fcntlbits.h (O_FSYNC): Make alias for O_SYNC. (FASYNC): Move to __USE_BSD section. Create new macro O_ASYNC. 1997-03-14 02:50 Ulrich Drepper <drepper@cygnus.com> * nis/nss_nis/nis-hosts.c (_nss_nis_gethostbyname2_r): New functions. Compare result for correct address type. (_nss_nis_gethostbyname_r): Use _nss_nis_gethostbyname2_r. Reported by Mirko Streckenbach <mirko@marian.hil.de>. 1997-02-17 01:40 Zlatko Calusic <zcalusic@srce.hr> * time/strptime.c (recursive): Return rp to caller. (strptime_internal): First check for long names, then abbreviated (month & weekday). 1997-03-10 19:44 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makeconfig: Remove useless definitions of ASFLAGS-%. * config.make.in (ASFLAGS-.so): Remove. * configure.in: Don't substitute ASFLAGS_SO. * sysdeps/sparc/configure.in: Remove file. * sysdeps/sparc/Makefile (ASFLAGS-.so): Define. 1997-03-11 17:00 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * time/strptime.c (strptime_internal) [case 'Y']: Always subtract 1900 from year, regardless of century. 1997-03-12 05:43 Ulrich Drepper <drepper@cygnus.com> * stdlib/strtod.c (_tens_in_limb) [BITS_PER_MP_LIMB > 32]: Make all numbers unsigned to make buggy gccs happy. Patch by Bryan W. Headley <bheadley@interaccess.com>. * sysdeps/unix/sysv/linux/netinet/ip.h: Add backward-compatibility definitions. Patch by a sun <asun@zoology.washington.edu>. Pretty print header. * Makerules (build-shlib): Also create symlink if library is versioned. based on a patch by H.J. Lu <hjl@gnu.ai.mit.edu>. Remove special rule to libc.so symlink. 1997-03-11 20:16 Andreas Jaeger <aj@arthur.pfalz.de> * manual/math.texi (Domain and Range Errors): Change descriptions according to recent changes for ISO C 9X. 1997-03-11 22:39 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-ieee754/k_standard.c (__kernel_standard): Correct return values for acos, asin, and atan2. Reported by Andreas Jaeger <aj@arthur.pfalz.de>. 1997-03-10 18:16 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * ypclnt.c (__yp_bind): Fix possible buffer overflow. 1997-03-10 18:06 Bernd Schmidt <crux@Pool.Informatik.RWTH-Aachen.DE> * dirent/alphasort.c (alphasort): Interpret arguments as pointers to pointers to directory entries so that alphasort really can be used as argument for scandir. 1997-03-09 23:33 Andreas Jaeger <aj@arthur.pfalz.de> * string/strdup.c: Declare memcpy if !(_LIBC || STDC_HEADERS) instead of strcpy. 1997-03-10 03:34 Ulrich Drepper <drepper@cygnus.com> * catgets/catgets.c (catopen): Always add NLSPATH to search path for catalogs, not only if the envvar NLSPATH is not available. Reported by Andries.Brouwer@cwi.nl. 1997-03-10 02:46 Ulrich Drepper <drepper@cygnus.com> * Makeconfig (localtime-file): Don't define using installation directory. (inst_localtime-file): New variable. * time/Makefile (installed-localtime-file): Use inst_localtime-file. Reported by Edward Seidl <seidl@janed.com>. 1997-03-10 02:31 H.J. Lu <hjl@gnu.ai.mit.edu> * time/Makefile: Add source files to dependencies for test data. 1997-03-09 22:53 Thorsten Kukuk <kukuk@weber.uni-paderborn.de> * nis/nss_nis/nis-ethers.c: Don't ignore return value of yp_all. * nis/nss_nis/nis-proto.c: Likewise. * nis/nss_nis/nis-rpc.c: Likewise. * nis/nss_nis/nis-service.c: Likewise. 1997-03-08 14:37 Miguel de Icaza <miguel@nuclecu.unam.mx> * sysdeps/sparc/dl-machine.h (elf_machine_rela): Upgrade to versioning; Added missing R_SPARC_WDISP30 handling. (RTLD_START): Implement it. * sysdeps/unix/sysv/linux/sparc/brk.c: Fix. * sysdeps/unix/sysv/linux/sparc/start.c: Startup code for Linux/SPARC. 1997-03-02 18:06 Miguel de Icaza <miguel@nuclecu.unam.mx> * sysdeps/sparc/dl-machine.h (RTLD_START): Make arg as expected by the dynamic linker instead of having a new conditional define. Thanks to Richard Henderson for pointing this out. * elf/rtld.c: Remove usage of ELF_ADJUST_ARG. 1997-03-20 20:44 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * sysdeps/mach/hurd/euidaccess.c: Define as __euidaccess and make euidaccess weak alias. 1997-03-07 10:30 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * stdio-common/printf_fphex.c (MIN): New macro. * sysdeps/generic/netinet/in.h: Include <sys/types.h>. * sysdeps/generic/sys/mman.h (msync): Mention third arg. * sysdeps/generic/netinet/in.h: Add definitions for IPv6 basic API. (See change by Philip Blundell on Feb 16, 1997.) 1997-03-05 10:40 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * hurd/hurd.h (vpprintf): Include <stdarg.h>. New declaration. * hurd/set-host.c (_hurd_set_host_config): Cast second arg to __file_name_split. * mach/mach_error.c (mach_error_string_int): Give full prototype. * mach/errstring.c (mach_error_string_int): Likewise. * mach/error_compat.c (__mach_error_map_compat): Likewise. * hurd/vpprintf.c (pwrite, vpprintf): Likewise. * stdio/vasprintf.c (vasprintf): Likewise. * mach/mach/mach_traps.h: Include <mach/kern_return.h>. * mach/spin-solid.c: Include <mach/mach_traps.h>. * mach/spin-solid.c (__spin_lock_solid): Provide arg to swtch_pri. * mach/mach_init.c: Include <mach/mig_support.h>. * mach/mach_error.h (mach_error_string, mach_error, mach_error_type): Always provide prototypes. * mach/mach/error.h (mach_error_fn_t): Comment out declaration; it appears to be entirely unused dead code. * stdio/stdio.h (freopen): Fix spelling error. 1997-03-02 13:38 Miles Bader <miles@gnu.ai.mit.edu> * string/argz.h (__need_error_t): New macro, before including <errno.h> [!__const] (__const): New macro. [!__error_t_defined] (error_t): New typedef. * sysdeps/generic/socketbits.h: Add PF_FILE as synonym for PF_LOCAL * sysdeps/unix/sysv/linux/socketbits.h: Likewise.
1997-03-17 04:28:07 +08:00
localtime-file = $(sysconfdir)/localtime
1995-02-18 09:27:10 +08:00
endif
Sun May 26 15:15:08 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * stdlib/ldiv.c: Deansideclized. Sun May 26 19:39:53 1996 Ulrich Drepper <drepper@cygnus.com> * intl/loadmsgcat.c (_nl_load_domain): Test correct variable after malloc. * string/Makefile (tester-ENV): New variable to suppress message translation in test. * string/tester.c: Add tests for strtok_r and strsep. * sysdeps/i386/i486/strcat.S: Correct some more 8bit operation <-> 32 bit operand conflicts. * sysdeps/i386/strsep.S: Wrapper around <sysdeps/i386/strtok.S> to produce strsep function. * sysdeps/i386/strtok.S: Optimized implementation of strtok function. * sysdeps/i386/strtok_r.S: Wrapper around <sysdeps/i386/strtok.S> to produce strtok_r function. * sysdeps/generic/strtok.c: Moved here from string/strtok.c. Corrected example in comment. * string/Makefile (routines): Add strtok_r. * sysdeps/generic/strtok_r.c: New file. Implement reentrant version of strtok_r. * string/string.h: Add prototype for strtok_r. * wcsmbs/wcstok.c: Handle illegal SAVE_PTR argument the same as in strtok_r. Sun May 26 13:28:23 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * time/tzset.c (__tzset): Ignore leading : in $TZ; always try tzfile first and fall back to 1003.1 syntax only if it fails. * time/Makefile (install-others): Also install posix/ZONE and right/ZONE for each ZONE in $(zonenames). (z.% rule): Generate rules for right/ZONE and posix/ZONE targets too, the difference begin leapseconds vs /dev/null as 3rd dep. For original ZONE targets use $(leapseconds), to be set in Makeconfig. (target-zone-flavor): New variable. (tzcompile): Use it to get the right -d for posix/ and right/ flavors. * Makeconfig (leapseconds): New variable. * mach/Machrules (%.udeps rule): Depend on Machrules. Emit deps for .uh and .__h files. (%.uh, %.__h rules): Don't depend on %.defs; use #include <$*.defs> instead. Sun May 26 01:06:47 1996 Ulrich Drepper <drepper@cygnus.com> * stdlib/Makefile (routines): Add llabs, lldiv. * stdlib/llabs.c: New file. Implementation of return absolute value of long long argument. * stdlib/lldiv.c: New file. Implementation of division with remainder of long long argument. * stdlib/stdlib.h [__USE_GNU] (lldiv_t): New type for lldiv function. Define prototypes for lldiv and llabs functions. * locale/C-collate.c: Initialize _NL_COLLATE_NRULES element. * stdlib/strtod.c: Replace wchar_t with wint_t. The later is really the type for a single wide character. * string/strxfrm.c (print_val): Define separate version for use as wcsxfrm. Here we don't need UTF8 encoding. * wcsmbs/wchar.h: gcc-2.7.2-960517 finally introduces wint_t in <stddef.h>. Use this value and only for older gcc version define in place. (uwchar_t): Remove definition. * wcsmbs/wcscmp.c, wcsmbs/wcscoll.c, wcsmbs/wcsncmp.c, wcsmbs/wcsxfrm.c, wcsmbs/wmemcmp.c: : Don't use uwchar_t as unsigned type. wint_t is intended for this. Sat May 25 14:10:19 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * sysdeps/unix/bsd/direntry.h: Use [1] instead of [0] for d_name to quiet -ansi -pedantic. * sysdeps/unix/common/direntry.h: Likewise. * login/Makefile (headers): Add lastlog.h. * login/lastlog.h: New file. * login/Makefile (CFLAGS): Don't append -D_THREAD_SAFE. * login/utmp.h [_REENTRANT || _THREAD_SAFE]: Replace this conditional with #ifdef __USE_REENTRANT. * features.h (__GNU_LIBRARY__): Set to 6. [_GNU_SOURCE] (_POSIX_SOURCE, _POSIX_C_SOURCE, _BSD_SOURCE, _SVID_SOURCE): Make sure they are all defined. * sysdeps/unix/sysv/linux/gnu/types.h: Instead of including <linux/posix_types.h>, define _LINUX_TYPES_DONT_EXPORT and then include <linux/types.h>. * resource/sys/resource.h: Remove trailing commas from enums. * sysdeps/generic/netinet/in.h: Remove trailing commas from enums. * sysdeps/unix/sysv/linux/netinet/in.h: Likewise.
1996-05-27 03:19:51 +08:00
# What to use for leap second specifications in compiling the default
# timezone files. Set this to `/dev/null' for no leap second handling as
# 1003.1 requires, or to `leapseconds' for proper leap second handling.
# Both zone flavors are always available as `posix/ZONE' and `right/ZONE'.
# This variable determines the default: if it's `/dev/null',
# ZONE==posix/ZONE; if it's `leapseconds', ZONE==right/ZONE.
ifndef leapseconds
leapseconds = /dev/null
endif
1995-02-18 09:27:10 +08:00
# What timezone's DST rules should be used when a POSIX-style TZ
# environment variable doesn't specify any rules. For 1003.1 compliance
# this timezone must use rules that are as U.S. federal law defines DST.
# Run `make -C time echo-zonenames' to see a list of available zone names.
# This setting can be changed with `zic -p TIMEZONE' at any time.
# If you want POSIX.1 compatibility, use `America/New_York'.
ifndef posixrules
posixrules = America/New_York
endif
# Where to install the "posixrules" timezone file; this is file
# whose contents $(posixrules) specifies. If this is a relative
# pathname, it is relative to $(zonedir).
ifndef posixrules-file
posixrules-file = posixrules
endif
# Directory where your system's native header files live.
# This is used on Unix systems to generate some GNU libc header files.
ifndef sysincludedir
sysincludedir = /usr/include
endif
# Commands to install files.
ifndef INSTALL_DATA
INSTALL_DATA = $(INSTALL) -m 644
endif
2001-08-30 06:43:27 +08:00
ifndef INSTALL_SCRIPT
INSTALL_SCRIPT = $(INSTALL)
endif
1995-02-18 09:27:10 +08:00
ifndef INSTALL_PROGRAM
INSTALL_PROGRAM = $(INSTALL)
endif
ifndef INSTALL
INSTALL = install
endif
# The name of the C compiler.
# If you've got GCC, and it works, use it.
ifeq ($(origin CC),default)
CC := gcc
endif
# The name of the C compiler to use for compilations of programs to run on
# the host that is building the library. If you set CC to a
# cross-compiler, you must set this to the normal compiler.
ifndef BUILD_CC
BUILD_CC = $(CC)
endif
# Default flags to pass the C compiler.
ifndef default_cflags
ifeq ($(release),stable)
default_cflags := -g -O2
else
default_cflags := -g -O
1995-02-18 09:27:10 +08:00
endif
endif
1995-02-18 09:27:10 +08:00
# Flags to pass the C compiler when assembling preprocessed assembly code
# (`.S' files).
1995-02-18 09:27:10 +08:00
ifndef asm-CPPFLAGS
asm-CPPFLAGS =
endif
# Must be supported by the linker.
no-whole-archive = -Wl,--no-whole-archive
whole-archive = -Wl,--whole-archive
Update. 1997-04-30 17:35 Ulrich Drepper <drepper@cygnus.com> * math/libm-test.c: Implement test for exceptions. Partly due to Andreas Jaeger. (csin_test): New function. * sysdeps/libm-i387/s_cexp.S: Raise correct exceptions. * sysdeps/libm-i387/s_cexpf.S: Likewise. * sysdeps/libm-i387/s_cexpl.S: Likewise. * sysdeps/libm-ieee754/s_ccos.c: Likewise. * sysdeps/libm-ieee754/s_ccosf.c: Likewise. * sysdeps/libm-ieee754/s_ccosl.c: Likewise. * sysdeps/libm-ieee754/s_ccosh.c: Likewise. * sysdeps/libm-ieee754/s_ccoshf.c: Likewise. * sysdeps/libm-ieee754/s_ccoshl.c: Likewise. * sysdeps/libm-ieee754/s_cexp.c: Likewise. * sysdeps/libm-ieee754/s_cexpf.c: Likewise. * sysdeps/libm-ieee754/s_cexpl.c: Likewise. * sysdeps/libm-ieee754/s_csinh.c: Likewise. * sysdeps/libm-ieee754/s_csinhf.c: Likewise. * sysdeps/libm-ieee754/s_csinhl.c: Likewise. * sysdeps/libm-ieee754/s_ctanh.c: Likewise. * sysdeps/libm-ieee754/s_ctanhf.c: Likewise. * sysdeps/libm-ieee754/s_ctanhl.c: Likewise. * sysdeps/libm-ieee754/s_ccosh.c: Correct computation. * sysdeps/libm-ieee754/s_ccoshf.c: Likewise. * sysdeps/libm-ieee754/s_ccoshl.c: Likewise. * sysdeps/libm-ieee754/s_csinh.c: Likewise. * sysdeps/libm-ieee754/s_csinhf.c: Likewise. * sysdeps/libm-ieee754/s_csinhl.c: Likewise. * sysdeps/libm-ieee754/s_csin.c: Rewrite. * sysdeps/libm-ieee754/s_csinf.c: Likewise. * sysdeps/libm-ieee754/s_csinl.c: Likewise. * stdlib/random_r.c (__srandom_r): Don't use seed 0. Use 1 in this case. * sysdeps/i386/dl-machine.h (elf_machine_load_address): Use notation for local label. * time/strftime.c (add): Respect `0' padding flag. Reported by Richard Stallman <rms@gnu.ai.mit.edu>. 1997-04-30 15:46 Ulrich Drepper <drepper@cygnus.com> * Makeconfig (start-installed-name): Define here, not in csu/Makefile. Use in +link macro. * csu/Makefile (distribute): Add abi-note.S and abi-tag.h. (start-installed-name): Don't define here. When ELF generate file named by start-installed-name from start.o and abi-note.o. * csu/abi-note.S: New file. * sysdeps/stub/abi-tag.h: New file. * sysdpes/unix/sysv/linux/abi-tag.h: New file. Patches by Roland McGrath <roland@gnu.ai.mit.edu>. 1997-04-30 01:32 Ulrich Drepper <drepper@cygnus.com> * manual/stdio.texi: Use @vtable where possible. Add TeX version of @multitable since texi2dvi cannot handle them correct in the moment. * po/de.po: Update. 1997-04-29 21:06 Ulrich Drepper <drepper@cygnus.com> * Makeconfig: Don't set cross-compiling based on $(BUILD_CC) != $(CC). * config.make.in: Set cross-compiling from configure result. * configure.in: Emit definition of `cross_compiling'. Patches by Marcus G. Daniels <marcus@cathcart.sysc.pdx.edu>. 1997-04-27 21:50 Philip Blundell <pjb27@cam.ac.uk> * sysdeps/unix/sysv/linux/net/route.h (struct in6_rtmsg): Use correct `int' sizes for struct members. 1997-04-29 19:14 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-i387/e_powf.S Generate invalid exception correctly. * sysdeps/libm-i387/e_pow.S: Likewise. * sysdeps/libm-i387/e_powl.S: Likewise. 1997-04-23 10:08 Andreas Jaeger <aj@arthur.rhein-neckar.de> * math/fenv.h: Correct typos. 1997-04-28 10:04 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/clone.S: Save the function argument in t0 rather than a4 to avoid it being clobbered. 1997-04-27 23:52 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/summary.awk: Recognize @defmumblex. * manual/signal.texi (Miscellaneous Signals): Use @deftypevrx for second description header. 1997-04-27 23:29 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/arith.texi (Floating-Point Classes): Don't indent text, makeinfo doesn't like that. 1997-04-27 20:52 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * malloc/obstack.h (obstack_specify_allocation_with_arg, obstack_chunkfun, obstack_freefun): Fix casts. 1997-04-27 18:21 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/xtract-typefun.awk: Allow names with only one character. 1997-04-26 14:16 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/netinet/ip_fw.h: Use <netinet/ip_icmp.h> not <netinet/icmp.h>. Reported by Michael Deutschmann <ldeutsch@mail.netshop.net>. 1997-04-25 12:31 Ulrich Drepper <drepper@cygnus.com> * csu/Makefile ($(objpfx)initfini.s): Add CPPFLAGS, CFLAGS and -g0 to command line of compiler. Patch by Marcus G. Daniels <marcus@sysc.pdx.edu>. * sysdeps/generic/sigset.h (__sigandset, __sigorset): Fix typos. Patch by Marcus G. Daniels <marcus@sysc.pdx.edu>. * signal/signal.h (_sys_siglist, sys_siglist): Use _NSIG, not NSIG in declaration. Patch by Michael Widenius <monty@tcx.se>. * time/strptime.c (strptime_internal): Fix %I format specifier being off by one. Patch by Mark Kettenis <kettenis@phys.uva.nl>. 1997-04-24 12:18 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * stdlib/lcong48_r.c: Include <limits.h>. * stdlib/seed48_r.c: Likewise. * stdio-common/printf_size.c (printf_size): Correct type of `units' and make robust against future changes. 1997-04-23 18:58 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/libm-ieee754/s_cproj.c: Use isfinite instead of finite. * sysdeps/libm-ieee754/s_cprojl.c: Likewise. * sysdeps/libm-ieee754/s_cprojf.c: Likewise. 1997-04-23 18:53 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/arith.texi, manual/math.texi: Use @defmumblex for additional description headers. * manual/xtract-typefun.awk: Recognize them. 1997-04-22 15:58 Andreas Jaeger <aj@arthur.rhein-neckar.de> * stdio-common/printf_size.c (printf_size): Correct size of array units.
1997-04-30 23:51:34 +08:00
# Installed name of the startup code.
# The ELF convention is that the startfile is called crt1.o
Update. 1997-04-30 17:35 Ulrich Drepper <drepper@cygnus.com> * math/libm-test.c: Implement test for exceptions. Partly due to Andreas Jaeger. (csin_test): New function. * sysdeps/libm-i387/s_cexp.S: Raise correct exceptions. * sysdeps/libm-i387/s_cexpf.S: Likewise. * sysdeps/libm-i387/s_cexpl.S: Likewise. * sysdeps/libm-ieee754/s_ccos.c: Likewise. * sysdeps/libm-ieee754/s_ccosf.c: Likewise. * sysdeps/libm-ieee754/s_ccosl.c: Likewise. * sysdeps/libm-ieee754/s_ccosh.c: Likewise. * sysdeps/libm-ieee754/s_ccoshf.c: Likewise. * sysdeps/libm-ieee754/s_ccoshl.c: Likewise. * sysdeps/libm-ieee754/s_cexp.c: Likewise. * sysdeps/libm-ieee754/s_cexpf.c: Likewise. * sysdeps/libm-ieee754/s_cexpl.c: Likewise. * sysdeps/libm-ieee754/s_csinh.c: Likewise. * sysdeps/libm-ieee754/s_csinhf.c: Likewise. * sysdeps/libm-ieee754/s_csinhl.c: Likewise. * sysdeps/libm-ieee754/s_ctanh.c: Likewise. * sysdeps/libm-ieee754/s_ctanhf.c: Likewise. * sysdeps/libm-ieee754/s_ctanhl.c: Likewise. * sysdeps/libm-ieee754/s_ccosh.c: Correct computation. * sysdeps/libm-ieee754/s_ccoshf.c: Likewise. * sysdeps/libm-ieee754/s_ccoshl.c: Likewise. * sysdeps/libm-ieee754/s_csinh.c: Likewise. * sysdeps/libm-ieee754/s_csinhf.c: Likewise. * sysdeps/libm-ieee754/s_csinhl.c: Likewise. * sysdeps/libm-ieee754/s_csin.c: Rewrite. * sysdeps/libm-ieee754/s_csinf.c: Likewise. * sysdeps/libm-ieee754/s_csinl.c: Likewise. * stdlib/random_r.c (__srandom_r): Don't use seed 0. Use 1 in this case. * sysdeps/i386/dl-machine.h (elf_machine_load_address): Use notation for local label. * time/strftime.c (add): Respect `0' padding flag. Reported by Richard Stallman <rms@gnu.ai.mit.edu>. 1997-04-30 15:46 Ulrich Drepper <drepper@cygnus.com> * Makeconfig (start-installed-name): Define here, not in csu/Makefile. Use in +link macro. * csu/Makefile (distribute): Add abi-note.S and abi-tag.h. (start-installed-name): Don't define here. When ELF generate file named by start-installed-name from start.o and abi-note.o. * csu/abi-note.S: New file. * sysdeps/stub/abi-tag.h: New file. * sysdpes/unix/sysv/linux/abi-tag.h: New file. Patches by Roland McGrath <roland@gnu.ai.mit.edu>. 1997-04-30 01:32 Ulrich Drepper <drepper@cygnus.com> * manual/stdio.texi: Use @vtable where possible. Add TeX version of @multitable since texi2dvi cannot handle them correct in the moment. * po/de.po: Update. 1997-04-29 21:06 Ulrich Drepper <drepper@cygnus.com> * Makeconfig: Don't set cross-compiling based on $(BUILD_CC) != $(CC). * config.make.in: Set cross-compiling from configure result. * configure.in: Emit definition of `cross_compiling'. Patches by Marcus G. Daniels <marcus@cathcart.sysc.pdx.edu>. 1997-04-27 21:50 Philip Blundell <pjb27@cam.ac.uk> * sysdeps/unix/sysv/linux/net/route.h (struct in6_rtmsg): Use correct `int' sizes for struct members. 1997-04-29 19:14 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-i387/e_powf.S Generate invalid exception correctly. * sysdeps/libm-i387/e_pow.S: Likewise. * sysdeps/libm-i387/e_powl.S: Likewise. 1997-04-23 10:08 Andreas Jaeger <aj@arthur.rhein-neckar.de> * math/fenv.h: Correct typos. 1997-04-28 10:04 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/clone.S: Save the function argument in t0 rather than a4 to avoid it being clobbered. 1997-04-27 23:52 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/summary.awk: Recognize @defmumblex. * manual/signal.texi (Miscellaneous Signals): Use @deftypevrx for second description header. 1997-04-27 23:29 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/arith.texi (Floating-Point Classes): Don't indent text, makeinfo doesn't like that. 1997-04-27 20:52 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * malloc/obstack.h (obstack_specify_allocation_with_arg, obstack_chunkfun, obstack_freefun): Fix casts. 1997-04-27 18:21 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/xtract-typefun.awk: Allow names with only one character. 1997-04-26 14:16 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/netinet/ip_fw.h: Use <netinet/ip_icmp.h> not <netinet/icmp.h>. Reported by Michael Deutschmann <ldeutsch@mail.netshop.net>. 1997-04-25 12:31 Ulrich Drepper <drepper@cygnus.com> * csu/Makefile ($(objpfx)initfini.s): Add CPPFLAGS, CFLAGS and -g0 to command line of compiler. Patch by Marcus G. Daniels <marcus@sysc.pdx.edu>. * sysdeps/generic/sigset.h (__sigandset, __sigorset): Fix typos. Patch by Marcus G. Daniels <marcus@sysc.pdx.edu>. * signal/signal.h (_sys_siglist, sys_siglist): Use _NSIG, not NSIG in declaration. Patch by Michael Widenius <monty@tcx.se>. * time/strptime.c (strptime_internal): Fix %I format specifier being off by one. Patch by Mark Kettenis <kettenis@phys.uva.nl>. 1997-04-24 12:18 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * stdlib/lcong48_r.c: Include <limits.h>. * stdlib/seed48_r.c: Likewise. * stdio-common/printf_size.c (printf_size): Correct type of `units' and make robust against future changes. 1997-04-23 18:58 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/libm-ieee754/s_cproj.c: Use isfinite instead of finite. * sysdeps/libm-ieee754/s_cprojl.c: Likewise. * sysdeps/libm-ieee754/s_cprojf.c: Likewise. 1997-04-23 18:53 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/arith.texi, manual/math.texi: Use @defmumblex for additional description headers. * manual/xtract-typefun.awk: Recognize them. 1997-04-22 15:58 Andreas Jaeger <aj@arthur.rhein-neckar.de> * stdio-common/printf_size.c (printf_size): Correct size of array units.
1997-04-30 23:51:34 +08:00
start-installed-name = crt1.o
# Similar to crt1.o, but without _IO_stdin_used.
start-name-2.0 = crt1-2.0.o
# On systems that do not need a special startfile for statically linked
# binaries, simply set it to the normal name.
ifndef static-start-installed-name
static-start-installed-name = $(start-installed-name)
endif
Update. 1997-04-30 17:35 Ulrich Drepper <drepper@cygnus.com> * math/libm-test.c: Implement test for exceptions. Partly due to Andreas Jaeger. (csin_test): New function. * sysdeps/libm-i387/s_cexp.S: Raise correct exceptions. * sysdeps/libm-i387/s_cexpf.S: Likewise. * sysdeps/libm-i387/s_cexpl.S: Likewise. * sysdeps/libm-ieee754/s_ccos.c: Likewise. * sysdeps/libm-ieee754/s_ccosf.c: Likewise. * sysdeps/libm-ieee754/s_ccosl.c: Likewise. * sysdeps/libm-ieee754/s_ccosh.c: Likewise. * sysdeps/libm-ieee754/s_ccoshf.c: Likewise. * sysdeps/libm-ieee754/s_ccoshl.c: Likewise. * sysdeps/libm-ieee754/s_cexp.c: Likewise. * sysdeps/libm-ieee754/s_cexpf.c: Likewise. * sysdeps/libm-ieee754/s_cexpl.c: Likewise. * sysdeps/libm-ieee754/s_csinh.c: Likewise. * sysdeps/libm-ieee754/s_csinhf.c: Likewise. * sysdeps/libm-ieee754/s_csinhl.c: Likewise. * sysdeps/libm-ieee754/s_ctanh.c: Likewise. * sysdeps/libm-ieee754/s_ctanhf.c: Likewise. * sysdeps/libm-ieee754/s_ctanhl.c: Likewise. * sysdeps/libm-ieee754/s_ccosh.c: Correct computation. * sysdeps/libm-ieee754/s_ccoshf.c: Likewise. * sysdeps/libm-ieee754/s_ccoshl.c: Likewise. * sysdeps/libm-ieee754/s_csinh.c: Likewise. * sysdeps/libm-ieee754/s_csinhf.c: Likewise. * sysdeps/libm-ieee754/s_csinhl.c: Likewise. * sysdeps/libm-ieee754/s_csin.c: Rewrite. * sysdeps/libm-ieee754/s_csinf.c: Likewise. * sysdeps/libm-ieee754/s_csinl.c: Likewise. * stdlib/random_r.c (__srandom_r): Don't use seed 0. Use 1 in this case. * sysdeps/i386/dl-machine.h (elf_machine_load_address): Use notation for local label. * time/strftime.c (add): Respect `0' padding flag. Reported by Richard Stallman <rms@gnu.ai.mit.edu>. 1997-04-30 15:46 Ulrich Drepper <drepper@cygnus.com> * Makeconfig (start-installed-name): Define here, not in csu/Makefile. Use in +link macro. * csu/Makefile (distribute): Add abi-note.S and abi-tag.h. (start-installed-name): Don't define here. When ELF generate file named by start-installed-name from start.o and abi-note.o. * csu/abi-note.S: New file. * sysdeps/stub/abi-tag.h: New file. * sysdpes/unix/sysv/linux/abi-tag.h: New file. Patches by Roland McGrath <roland@gnu.ai.mit.edu>. 1997-04-30 01:32 Ulrich Drepper <drepper@cygnus.com> * manual/stdio.texi: Use @vtable where possible. Add TeX version of @multitable since texi2dvi cannot handle them correct in the moment. * po/de.po: Update. 1997-04-29 21:06 Ulrich Drepper <drepper@cygnus.com> * Makeconfig: Don't set cross-compiling based on $(BUILD_CC) != $(CC). * config.make.in: Set cross-compiling from configure result. * configure.in: Emit definition of `cross_compiling'. Patches by Marcus G. Daniels <marcus@cathcart.sysc.pdx.edu>. 1997-04-27 21:50 Philip Blundell <pjb27@cam.ac.uk> * sysdeps/unix/sysv/linux/net/route.h (struct in6_rtmsg): Use correct `int' sizes for struct members. 1997-04-29 19:14 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-i387/e_powf.S Generate invalid exception correctly. * sysdeps/libm-i387/e_pow.S: Likewise. * sysdeps/libm-i387/e_powl.S: Likewise. 1997-04-23 10:08 Andreas Jaeger <aj@arthur.rhein-neckar.de> * math/fenv.h: Correct typos. 1997-04-28 10:04 Richard Henderson <rth@tamu.edu> * sysdeps/unix/sysv/linux/alpha/clone.S: Save the function argument in t0 rather than a4 to avoid it being clobbered. 1997-04-27 23:52 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/summary.awk: Recognize @defmumblex. * manual/signal.texi (Miscellaneous Signals): Use @deftypevrx for second description header. 1997-04-27 23:29 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/arith.texi (Floating-Point Classes): Don't indent text, makeinfo doesn't like that. 1997-04-27 20:52 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * malloc/obstack.h (obstack_specify_allocation_with_arg, obstack_chunkfun, obstack_freefun): Fix casts. 1997-04-27 18:21 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/xtract-typefun.awk: Allow names with only one character. 1997-04-26 14:16 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/netinet/ip_fw.h: Use <netinet/ip_icmp.h> not <netinet/icmp.h>. Reported by Michael Deutschmann <ldeutsch@mail.netshop.net>. 1997-04-25 12:31 Ulrich Drepper <drepper@cygnus.com> * csu/Makefile ($(objpfx)initfini.s): Add CPPFLAGS, CFLAGS and -g0 to command line of compiler. Patch by Marcus G. Daniels <marcus@sysc.pdx.edu>. * sysdeps/generic/sigset.h (__sigandset, __sigorset): Fix typos. Patch by Marcus G. Daniels <marcus@sysc.pdx.edu>. * signal/signal.h (_sys_siglist, sys_siglist): Use _NSIG, not NSIG in declaration. Patch by Michael Widenius <monty@tcx.se>. * time/strptime.c (strptime_internal): Fix %I format specifier being off by one. Patch by Mark Kettenis <kettenis@phys.uva.nl>. 1997-04-24 12:18 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * stdlib/lcong48_r.c: Include <limits.h>. * stdlib/seed48_r.c: Likewise. * stdio-common/printf_size.c (printf_size): Correct type of `units' and make robust against future changes. 1997-04-23 18:58 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/libm-ieee754/s_cproj.c: Use isfinite instead of finite. * sysdeps/libm-ieee754/s_cprojl.c: Likewise. * sysdeps/libm-ieee754/s_cprojf.c: Likewise. 1997-04-23 18:53 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/arith.texi, manual/math.texi: Use @defmumblex for additional description headers. * manual/xtract-typefun.awk: Recognize them. 1997-04-22 15:58 Andreas Jaeger <aj@arthur.rhein-neckar.de> * stdio-common/printf_size.c (printf_size): Correct size of array units.
1997-04-30 23:51:34 +08:00
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 08:59:33 +08:00
ifeq (yes,$(enable-static-pie))
# Link with rcrt1.o, instead of crt1.o, to call _dl_relocate_static_pie
# to relocate static PIE.
real-static-start-installed-name = r$(static-start-installed-name)
else
real-static-start-installed-name = $(static-start-installed-name)
endif
relro-LDFLAGS = -Wl,-z,relro
LDFLAGS.so += $(relro-LDFLAGS)
LDFLAGS-rtld += $(relro-LDFLAGS)
# Linker options to enable and disable DT_RELR.
ifeq ($(have-dt-relr),yes)
dt-relr-ldflag = -Wl,-z,pack-relative-relocs
no-dt-relr-ldflag = -Wl,-z,nopack-relative-relocs
else
dt-relr-ldflag =
no-dt-relr-ldflag =
endif
ifeq (no,$(build-pie-default))
pie-default = $(no-pie-ccflag)
else # build-pie-default
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 08:59:33 +08:00
pic-default = -DPIC
# Compile libc.a and libc_p.a with -fPIE/-fpie for static PIE.
pie-default = $(pie-ccflag)
ifeq (yes,$(enable-static-pie))
static-pie-dt-relr-ldflag = $(dt-relr-ldflag)
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 08:59:33 +08:00
ifeq (yes,$(have-static-pie))
static-pie-ldflag = -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 08:59:33 +08:00
else
# Static PIE can't have dynamic relocations in read-only segments since
# static PIE is mapped into memory by kernel. --eh-frame-hdr is needed
# for PIE to support exception.
static-pie-ldflag = -Wl,-pie,--no-dynamic-linker,--eh-frame-hdr,-z,text
endif # have-static-pie
endif # enable-static-pie
endif # build-pie-default
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 08:59:33 +08:00
# If lazy relocations are disabled, add the -z now flag. Use
# LDFLAGS-lib.so instead of LDFLAGS.so, to avoid adding the flag to
# test modules.
ifeq ($(bind-now),yes)
LDFLAGS-lib.so += -Wl,-z,now
# Extra flags for dynamically linked non-test main programs.
link-extra-flags += -Wl,-z,now
endif
# Command to run after every final link (executable or shared object).
# This is invoked with $(call after-link,...), so it should operate on
# the file $1. This can be set to do some sort of post-processing on
# binaries, or to perform some sort of static sanity check.
ifndef after-link
after-link =
endif
# Additional libraries to link into every test.
link-extra-libs-tests = $(libsupport)
# Command for linking PIE programs with the C library.
ifndef +link-pie
Run conform/ tests using newly built libc Although the conform/ header tests are built using the headers of the glibc under test, the execution tests from conformtest (a few tests of the values of macros evaluating to string constants) are linked and run with system libc, not the newly built libc. Apart from preventing testing in cross environments, this can be a problem even for native testing. Specifically, it can be useful to do native testing when building with a cross compiler that links with a libc that is not the system libc; for example, on x86_64, you can test all three ABIs that way if the kernel support is present, even if the host OS lacks 32-bit or x32 libraries or they are older than the libraries in the sysroot used by the compiler used to build glibc. This works for almost all tests, but not for these conformtest tests. Arrange for conformtest to link and run test programs similarly to other tests, with consequent refactoring of various variables in Makeconfig to allow passing relevant parts of the link-time command lines down to conformtest. In general, the parts of the link command involving $@ or $^ are separated out from the parts that should be passed to conformtest (the variables passed to conformtest still involve various variables whose names involve $(@F), but those variables simply won't be defined for the conformtest makefile rules and I think their presence there is harmless). This is also most of the support that would be needed to allow running those tests of string constants for cross testing when test-wrapper is defined. That will also need changes to where conformtest.py puts the test executables, so it puts them in the main object directory (expected to be shared with a test system in cross testing) rather than /tmp (not expected to be shared) as at present. Tested for x86_64.
2021-09-17 21:12:10 +08:00
+link-pie-before-inputs = $(if $($(@F)-no-pie),$(no-pie-ldflag),-pie) \
$(if $($(@F)-no-dt-relr),$(no-dt-relr-ldflag),$(dt-relr-ldflag)) \
Run conform/ tests using newly built libc Although the conform/ header tests are built using the headers of the glibc under test, the execution tests from conformtest (a few tests of the values of macros evaluating to string constants) are linked and run with system libc, not the newly built libc. Apart from preventing testing in cross environments, this can be a problem even for native testing. Specifically, it can be useful to do native testing when building with a cross compiler that links with a libc that is not the system libc; for example, on x86_64, you can test all three ABIs that way if the kernel support is present, even if the host OS lacks 32-bit or x32 libraries or they are older than the libraries in the sysroot used by the compiler used to build glibc. This works for almost all tests, but not for these conformtest tests. Arrange for conformtest to link and run test programs similarly to other tests, with consequent refactoring of various variables in Makeconfig to allow passing relevant parts of the link-time command lines down to conformtest. In general, the parts of the link command involving $@ or $^ are separated out from the parts that should be passed to conformtest (the variables passed to conformtest still involve various variables whose names involve $(@F), but those variables simply won't be defined for the conformtest makefile rules and I think their presence there is harmless). This is also most of the support that would be needed to allow running those tests of string constants for cross testing when test-wrapper is defined. That will also need changes to where conformtest.py puts the test executables, so it puts them in the main object directory (expected to be shared with a test system in cross testing) rather than /tmp (not expected to be shared) as at present. Tested for x86_64.
2021-09-17 21:12:10 +08:00
-Wl,-O1 -nostdlib -nostartfiles \
$(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
$(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
$(firstword $(CRT-$(@F)) $(csu-objpfx)S$(start-installed-name)) \
Run conform/ tests using newly built libc Although the conform/ header tests are built using the headers of the glibc under test, the execution tests from conformtest (a few tests of the values of macros evaluating to string constants) are linked and run with system libc, not the newly built libc. Apart from preventing testing in cross environments, this can be a problem even for native testing. Specifically, it can be useful to do native testing when building with a cross compiler that links with a libc that is not the system libc; for example, on x86_64, you can test all three ABIs that way if the kernel support is present, even if the host OS lacks 32-bit or x32 libraries or they are older than the libraries in the sysroot used by the compiler used to build glibc. This works for almost all tests, but not for these conformtest tests. Arrange for conformtest to link and run test programs similarly to other tests, with consequent refactoring of various variables in Makeconfig to allow passing relevant parts of the link-time command lines down to conformtest. In general, the parts of the link command involving $@ or $^ are separated out from the parts that should be passed to conformtest (the variables passed to conformtest still involve various variables whose names involve $(@F), but those variables simply won't be defined for the conformtest makefile rules and I think their presence there is harmless). This is also most of the support that would be needed to allow running those tests of string constants for cross testing when test-wrapper is defined. That will also need changes to where conformtest.py puts the test executables, so it puts them in the main object directory (expected to be shared with a test system in cross testing) rather than /tmp (not expected to be shared) as at present. Tested for x86_64.
2021-09-17 21:12:10 +08:00
$(+preinit) $(+prectorS)
+link-pie-before-libc = -o $@ $(+link-pie-before-inputs) \
$(filter-out $(addprefix $(csu-objpfx),start.o \
S$(start-installed-name))\
$(+preinit) $(link-extra-libs) \
$(common-objpfx)libc% $(+postinit),$^) \
$(link-extra-libs)
+link-pie-after-libc = $(+postctorS) $(+postinit)
define +link-pie
$(CC) $(link-libc-rpath-link) $(+link-pie-before-libc) $(rtld-LDFLAGS) \
$(link-extra-flags) $(link-libc) $(+link-pie-after-libc)
$(call after-link,$@)
endef
define +link-pie-tests
$(CC) $(+link-pie-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
$(+link-pie-after-libc)
$(call after-link,$@)
endef
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
define +link-pie-printers-tests
$(CC) $(+link-pie-before-libc) $(built-rtld-LDFLAGS) \
$(link-libc-printers-tests) $(+link-pie-after-libc)
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
$(call after-link,$@)
endef
endif
Update. 1998-02-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/syscalls.list: Don't mark lchown as extra syscall. * grp/Makefile: Fix logic when checking for thread package. * pwd/Makefile: Likewise. 1998-02-11 08:23 H.J. Lu <hjl@gnu.org> * elf/Makefile (rtld-map): Replaced by libc-map. * elf/rtld.map: Removed. * libc.map (__libc_enable_secure, _dl_catch_error, _dl_check_all_versions, _dl_debug_initialize, _dl_debug_state, _dl_default_scope, _dl_global_scope_end, _dl_init_next, _dl_lookup_symbol, _dl_map_object, _dl_map_object_deps, _dl_object_relocation_scope, _dl_relocate_object, _dl_signal_error, _dl_starting_up, _dl_sysdep_start, _r_debug): Added for ld.so. 1998-02-10 08:38 H.J. Lu <hjl@gnu.org> * libio/iofclose.c: Check PIC && DO_VERSIONING instead of DO_VERSIONING. * libio/iofdopen.c: Ditto. * libio/iofopen.c: Ditto. * libio/oldfileops.c: Ditto. * libc.map (sys_nerr, _sys_errlist, sys_errlist): Added for version GLIBC_2.1. * sysdeps/unix/sysv/linux/Makefile (stdio-common): Removed oldsiglist from sysdep_routines and shared-only-routines. * sysdeps/unix/sysv/linux/errlist.c: New. * sysdeps/unix/sysv/linux/errlist.h: New. * sysdeps/unix/sysv/linux/sizes.h: New. * sysdeps/unix/sysv/linux/alpha/sizes.h: New. * sysdeps/unix/sysv/linux/sparc64/sizes.h: New. * sysdeps/unix/sysv/linux/oldsiglist.c: Removed. * sysdeps/unix/sysv/linux/siglist.c: Include <sizes.h>. (__old_sys_siglist, __old_sys_sigabbrev): Use ELF .size directive. * sysdeps/unix/sysv/linux/siglist.h (OLD_SIGLIST_SIZE_STR): New. * sysdeps/unix/sysv/linux/Dist (errlist.h, sizes.h.): Added. (oldsiglist.c): Removed. * sysdeps/gnu/errlist.awk (SYS_SIGLIST, SYS_NERR): New. (_sys_siglist): Use SYS_SIGLIST instead. (_sys_nerr): Use SYS_NERR instead. * sysdeps/gnu/errlist.c: Rebuilt. 1998-02-11 08:35 H.J. Lu <hjl@gnu.org> * elf/Makefile (others-static): New, set to ldconfig. ($(objpfx)ldconfig): Removed. * Rules (binaries-all, binaries-static, binaries-shared): New. Create targets for $(binaries-static) and $(binaries-shared). * Makeconfig (+link-static, link-libc-static, link-extra-libs-static): New for static linking.
1998-02-13 02:22:41 +08:00
# Command for statically linking programs with the C library.
ifndef +link-static
Run conform/ tests using newly built libc Although the conform/ header tests are built using the headers of the glibc under test, the execution tests from conformtest (a few tests of the values of macros evaluating to string constants) are linked and run with system libc, not the newly built libc. Apart from preventing testing in cross environments, this can be a problem even for native testing. Specifically, it can be useful to do native testing when building with a cross compiler that links with a libc that is not the system libc; for example, on x86_64, you can test all three ABIs that way if the kernel support is present, even if the host OS lacks 32-bit or x32 libraries or they are older than the libraries in the sysroot used by the compiler used to build glibc. This works for almost all tests, but not for these conformtest tests. Arrange for conformtest to link and run test programs similarly to other tests, with consequent refactoring of various variables in Makeconfig to allow passing relevant parts of the link-time command lines down to conformtest. In general, the parts of the link command involving $@ or $^ are separated out from the parts that should be passed to conformtest (the variables passed to conformtest still involve various variables whose names involve $(@F), but those variables simply won't be defined for the conformtest makefile rules and I think their presence there is harmless). This is also most of the support that would be needed to allow running those tests of string constants for cross testing when test-wrapper is defined. That will also need changes to where conformtest.py puts the test executables, so it puts them in the main object directory (expected to be shared with a test system in cross testing) rather than /tmp (not expected to be shared) as at present. Tested for x86_64.
2021-09-17 21:12:10 +08:00
+link-static-before-inputs = -nostdlib -nostartfiles -static \
$(if $($(@F)-no-pie),$(no-pie-ldflag),$(static-pie-ldflag)) \
$(if $($(@F)-no-dt-relr),$(no-dt-relr-ldflag),$(static-pie-dt-relr-ldflag)) \
$(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
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 08:59:33 +08:00
$(firstword $(CRT-$(@F)) $(csu-objpfx)$(real-static-start-installed-name)) \
Run conform/ tests using newly built libc Although the conform/ header tests are built using the headers of the glibc under test, the execution tests from conformtest (a few tests of the values of macros evaluating to string constants) are linked and run with system libc, not the newly built libc. Apart from preventing testing in cross environments, this can be a problem even for native testing. Specifically, it can be useful to do native testing when building with a cross compiler that links with a libc that is not the system libc; for example, on x86_64, you can test all three ABIs that way if the kernel support is present, even if the host OS lacks 32-bit or x32 libraries or they are older than the libraries in the sysroot used by the compiler used to build glibc. This works for almost all tests, but not for these conformtest tests. Arrange for conformtest to link and run test programs similarly to other tests, with consequent refactoring of various variables in Makeconfig to allow passing relevant parts of the link-time command lines down to conformtest. In general, the parts of the link command involving $@ or $^ are separated out from the parts that should be passed to conformtest (the variables passed to conformtest still involve various variables whose names involve $(@F), but those variables simply won't be defined for the conformtest makefile rules and I think their presence there is harmless). This is also most of the support that would be needed to allow running those tests of string constants for cross testing when test-wrapper is defined. That will also need changes to where conformtest.py puts the test executables, so it puts them in the main object directory (expected to be shared with a test system in cross testing) rather than /tmp (not expected to be shared) as at present. Tested for x86_64.
2021-09-17 21:12:10 +08:00
$(+preinit) $(+prectorT)
+link-static-before-libc = -o $@ $(+link-static-before-inputs) \
Update. 1998-02-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/syscalls.list: Don't mark lchown as extra syscall. * grp/Makefile: Fix logic when checking for thread package. * pwd/Makefile: Likewise. 1998-02-11 08:23 H.J. Lu <hjl@gnu.org> * elf/Makefile (rtld-map): Replaced by libc-map. * elf/rtld.map: Removed. * libc.map (__libc_enable_secure, _dl_catch_error, _dl_check_all_versions, _dl_debug_initialize, _dl_debug_state, _dl_default_scope, _dl_global_scope_end, _dl_init_next, _dl_lookup_symbol, _dl_map_object, _dl_map_object_deps, _dl_object_relocation_scope, _dl_relocate_object, _dl_signal_error, _dl_starting_up, _dl_sysdep_start, _r_debug): Added for ld.so. 1998-02-10 08:38 H.J. Lu <hjl@gnu.org> * libio/iofclose.c: Check PIC && DO_VERSIONING instead of DO_VERSIONING. * libio/iofdopen.c: Ditto. * libio/iofopen.c: Ditto. * libio/oldfileops.c: Ditto. * libc.map (sys_nerr, _sys_errlist, sys_errlist): Added for version GLIBC_2.1. * sysdeps/unix/sysv/linux/Makefile (stdio-common): Removed oldsiglist from sysdep_routines and shared-only-routines. * sysdeps/unix/sysv/linux/errlist.c: New. * sysdeps/unix/sysv/linux/errlist.h: New. * sysdeps/unix/sysv/linux/sizes.h: New. * sysdeps/unix/sysv/linux/alpha/sizes.h: New. * sysdeps/unix/sysv/linux/sparc64/sizes.h: New. * sysdeps/unix/sysv/linux/oldsiglist.c: Removed. * sysdeps/unix/sysv/linux/siglist.c: Include <sizes.h>. (__old_sys_siglist, __old_sys_sigabbrev): Use ELF .size directive. * sysdeps/unix/sysv/linux/siglist.h (OLD_SIGLIST_SIZE_STR): New. * sysdeps/unix/sysv/linux/Dist (errlist.h, sizes.h.): Added. (oldsiglist.c): Removed. * sysdeps/gnu/errlist.awk (SYS_SIGLIST, SYS_NERR): New. (_sys_siglist): Use SYS_SIGLIST instead. (_sys_nerr): Use SYS_NERR instead. * sysdeps/gnu/errlist.c: Rebuilt. 1998-02-11 08:35 H.J. Lu <hjl@gnu.org> * elf/Makefile (others-static): New, set to ldconfig. ($(objpfx)ldconfig): Removed. * Rules (binaries-all, binaries-static, binaries-shared): New. Create targets for $(binaries-static) and $(binaries-shared). * Makeconfig (+link-static, link-libc-static, link-extra-libs-static): New for static linking.
1998-02-13 02:22:41 +08:00
$(filter-out $(addprefix $(csu-objpfx),start.o \
$(start-installed-name))\
$(+preinit) $(link-extra-libs-static) \
$(common-objpfx)libc% $(+postinit),$^) \
$(link-extra-libs-static)
+link-static-after-libc = $(+postctorT) $(+postinit)
define +link-static
$(CC) $(+link-static-before-libc) $(link-extra-flags) $(link-libc-static) \
$(+link-static-after-libc)
$(call after-link,$@)
endef
define +link-static-tests
$(CC) $(+link-static-before-libc) $(link-libc-static-tests) \
$(+link-static-after-libc)
$(call after-link,$@)
endef
Update. 1998-02-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/syscalls.list: Don't mark lchown as extra syscall. * grp/Makefile: Fix logic when checking for thread package. * pwd/Makefile: Likewise. 1998-02-11 08:23 H.J. Lu <hjl@gnu.org> * elf/Makefile (rtld-map): Replaced by libc-map. * elf/rtld.map: Removed. * libc.map (__libc_enable_secure, _dl_catch_error, _dl_check_all_versions, _dl_debug_initialize, _dl_debug_state, _dl_default_scope, _dl_global_scope_end, _dl_init_next, _dl_lookup_symbol, _dl_map_object, _dl_map_object_deps, _dl_object_relocation_scope, _dl_relocate_object, _dl_signal_error, _dl_starting_up, _dl_sysdep_start, _r_debug): Added for ld.so. 1998-02-10 08:38 H.J. Lu <hjl@gnu.org> * libio/iofclose.c: Check PIC && DO_VERSIONING instead of DO_VERSIONING. * libio/iofdopen.c: Ditto. * libio/iofopen.c: Ditto. * libio/oldfileops.c: Ditto. * libc.map (sys_nerr, _sys_errlist, sys_errlist): Added for version GLIBC_2.1. * sysdeps/unix/sysv/linux/Makefile (stdio-common): Removed oldsiglist from sysdep_routines and shared-only-routines. * sysdeps/unix/sysv/linux/errlist.c: New. * sysdeps/unix/sysv/linux/errlist.h: New. * sysdeps/unix/sysv/linux/sizes.h: New. * sysdeps/unix/sysv/linux/alpha/sizes.h: New. * sysdeps/unix/sysv/linux/sparc64/sizes.h: New. * sysdeps/unix/sysv/linux/oldsiglist.c: Removed. * sysdeps/unix/sysv/linux/siglist.c: Include <sizes.h>. (__old_sys_siglist, __old_sys_sigabbrev): Use ELF .size directive. * sysdeps/unix/sysv/linux/siglist.h (OLD_SIGLIST_SIZE_STR): New. * sysdeps/unix/sysv/linux/Dist (errlist.h, sizes.h.): Added. (oldsiglist.c): Removed. * sysdeps/gnu/errlist.awk (SYS_SIGLIST, SYS_NERR): New. (_sys_siglist): Use SYS_SIGLIST instead. (_sys_nerr): Use SYS_NERR instead. * sysdeps/gnu/errlist.c: Rebuilt. 1998-02-11 08:35 H.J. Lu <hjl@gnu.org> * elf/Makefile (others-static): New, set to ldconfig. ($(objpfx)ldconfig): Removed. * Rules (binaries-all, binaries-static, binaries-shared): New. Create targets for $(binaries-static) and $(binaries-shared). * Makeconfig (+link-static, link-libc-static, link-extra-libs-static): New for static linking.
1998-02-13 02:22:41 +08:00
endif
# Commands for linking programs with the C library.
ifndef +link
ifeq (yes,$(build-shared))
ifeq (yes,$(cc-pie-default))
no-pie-ldflag = -no-pie
endif
ifeq (yes,$(build-pie-default))
+link = $(+link-pie)
+link-tests = $(+link-pie-tests)
Run conform/ tests using newly built libc Although the conform/ header tests are built using the headers of the glibc under test, the execution tests from conformtest (a few tests of the values of macros evaluating to string constants) are linked and run with system libc, not the newly built libc. Apart from preventing testing in cross environments, this can be a problem even for native testing. Specifically, it can be useful to do native testing when building with a cross compiler that links with a libc that is not the system libc; for example, on x86_64, you can test all three ABIs that way if the kernel support is present, even if the host OS lacks 32-bit or x32 libraries or they are older than the libraries in the sysroot used by the compiler used to build glibc. This works for almost all tests, but not for these conformtest tests. Arrange for conformtest to link and run test programs similarly to other tests, with consequent refactoring of various variables in Makeconfig to allow passing relevant parts of the link-time command lines down to conformtest. In general, the parts of the link command involving $@ or $^ are separated out from the parts that should be passed to conformtest (the variables passed to conformtest still involve various variables whose names involve $(@F), but those variables simply won't be defined for the conformtest makefile rules and I think their presence there is harmless). This is also most of the support that would be needed to allow running those tests of string constants for cross testing when test-wrapper is defined. That will also need changes to where conformtest.py puts the test executables, so it puts them in the main object directory (expected to be shared with a test system in cross testing) rather than /tmp (not expected to be shared) as at present. Tested for x86_64.
2021-09-17 21:12:10 +08:00
+link-tests-before-inputs = $(+link-pie-before-inputs) $(rtld-tests-LDFLAGS)
+link-tests-after-inputs = $(link-libc-tests) $(+link-pie-after-libc)
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
+link-printers-tests = $(+link-pie-printers-tests)
else # not build-pie-default
+link-before-inputs = -nostdlib -nostartfiles $(no-pie-ldflag) \
$(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
$(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
$(firstword $(CRT-$(@F)) $(csu-objpfx)$(start-installed-name)) \
Run conform/ tests using newly built libc Although the conform/ header tests are built using the headers of the glibc under test, the execution tests from conformtest (a few tests of the values of macros evaluating to string constants) are linked and run with system libc, not the newly built libc. Apart from preventing testing in cross environments, this can be a problem even for native testing. Specifically, it can be useful to do native testing when building with a cross compiler that links with a libc that is not the system libc; for example, on x86_64, you can test all three ABIs that way if the kernel support is present, even if the host OS lacks 32-bit or x32 libraries or they are older than the libraries in the sysroot used by the compiler used to build glibc. This works for almost all tests, but not for these conformtest tests. Arrange for conformtest to link and run test programs similarly to other tests, with consequent refactoring of various variables in Makeconfig to allow passing relevant parts of the link-time command lines down to conformtest. In general, the parts of the link command involving $@ or $^ are separated out from the parts that should be passed to conformtest (the variables passed to conformtest still involve various variables whose names involve $(@F), but those variables simply won't be defined for the conformtest makefile rules and I think their presence there is harmless). This is also most of the support that would be needed to allow running those tests of string constants for cross testing when test-wrapper is defined. That will also need changes to where conformtest.py puts the test executables, so it puts them in the main object directory (expected to be shared with a test system in cross testing) rather than /tmp (not expected to be shared) as at present. Tested for x86_64.
2021-09-17 21:12:10 +08:00
$(+preinit) $(+prector)
+link-before-libc = -o $@ $(+link-before-inputs) \
$(filter-out $(addprefix $(csu-objpfx),start.o \
$(start-installed-name))\
$(+preinit) $(link-extra-libs) \
$(common-objpfx)libc% $(+postinit),$^) \
$(link-extra-libs)
+link-after-libc = $(+postctor) $(+postinit)
define +link
$(CC) $(link-libc-rpath-link) $(+link-before-libc) $(rtld-LDFLAGS) \
$(link-extra-flags) $(link-libc) $(+link-after-libc)
$(call after-link,$@)
endef
Run conform/ tests using newly built libc Although the conform/ header tests are built using the headers of the glibc under test, the execution tests from conformtest (a few tests of the values of macros evaluating to string constants) are linked and run with system libc, not the newly built libc. Apart from preventing testing in cross environments, this can be a problem even for native testing. Specifically, it can be useful to do native testing when building with a cross compiler that links with a libc that is not the system libc; for example, on x86_64, you can test all three ABIs that way if the kernel support is present, even if the host OS lacks 32-bit or x32 libraries or they are older than the libraries in the sysroot used by the compiler used to build glibc. This works for almost all tests, but not for these conformtest tests. Arrange for conformtest to link and run test programs similarly to other tests, with consequent refactoring of various variables in Makeconfig to allow passing relevant parts of the link-time command lines down to conformtest. In general, the parts of the link command involving $@ or $^ are separated out from the parts that should be passed to conformtest (the variables passed to conformtest still involve various variables whose names involve $(@F), but those variables simply won't be defined for the conformtest makefile rules and I think their presence there is harmless). This is also most of the support that would be needed to allow running those tests of string constants for cross testing when test-wrapper is defined. That will also need changes to where conformtest.py puts the test executables, so it puts them in the main object directory (expected to be shared with a test system in cross testing) rather than /tmp (not expected to be shared) as at present. Tested for x86_64.
2021-09-17 21:12:10 +08:00
+link-tests-before-inputs = $(+link-before-inputs) $(rtld-tests-LDFLAGS)
+link-tests-after-inputs = $(link-libc-tests) $(+link-after-libc)
define +link-tests
$(CC) $(+link-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
$(+link-after-libc)
$(call after-link,$@)
endef
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
define +link-printers-tests
$(CC) $(+link-before-libc) $(built-rtld-LDFLAGS) $(link-libc-printers-tests) \
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
$(+link-after-libc)
$(call after-link,$@)
endef
endif # build-pie-default
else # build-static
+link = $(+link-static)
+link-tests = $(+link-static-tests)
Run conform/ tests using newly built libc Although the conform/ header tests are built using the headers of the glibc under test, the execution tests from conformtest (a few tests of the values of macros evaluating to string constants) are linked and run with system libc, not the newly built libc. Apart from preventing testing in cross environments, this can be a problem even for native testing. Specifically, it can be useful to do native testing when building with a cross compiler that links with a libc that is not the system libc; for example, on x86_64, you can test all three ABIs that way if the kernel support is present, even if the host OS lacks 32-bit or x32 libraries or they are older than the libraries in the sysroot used by the compiler used to build glibc. This works for almost all tests, but not for these conformtest tests. Arrange for conformtest to link and run test programs similarly to other tests, with consequent refactoring of various variables in Makeconfig to allow passing relevant parts of the link-time command lines down to conformtest. In general, the parts of the link command involving $@ or $^ are separated out from the parts that should be passed to conformtest (the variables passed to conformtest still involve various variables whose names involve $(@F), but those variables simply won't be defined for the conformtest makefile rules and I think their presence there is harmless). This is also most of the support that would be needed to allow running those tests of string constants for cross testing when test-wrapper is defined. That will also need changes to where conformtest.py puts the test executables, so it puts them in the main object directory (expected to be shared with a test system in cross testing) rather than /tmp (not expected to be shared) as at present. Tested for x86_64.
2021-09-17 21:12:10 +08:00
+link-tests-before-inputs = $(+link-static-before-inputs)
+link-tests-after-inputs = $(link-libc-static-tests) $(+link-static-after-libc)
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
+link-printers-tests = $(+link-static-tests)
endif # build-shared
endif # +link
# Command for linking test programs with crt1.o from glibc 2.0.
+link-2.0-before-inputs = -nostdlib -nostartfiles $(no-pie-ldflag) \
$(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
$(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
$(firstword $(CRT-$(@F)) $(csu-objpfx)$(start-name-2.0)) \
$(+preinit) $(+prector)
+link-2.0-before-libc = -o $@ $(+link-2.0-before-inputs) \
$(filter-out $(addprefix $(csu-objpfx),start.o \
$(start-name-2.0))\
$(+preinit) $(link-extra-libs) \
$(common-objpfx)libc% $(+postinit),$^) \
$(link-extra-libs)
+link-after-libc = $(+postctor) $(+postinit)
define +link-2.0-tests
$(CC) $(+link-2.0-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
$(+link-after-libc)
$(call after-link,$@)
endef
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
# The pretty printer test programs need to be compiled without optimizations
# so they won't confuse gdb. We could use either the 'GCC optimize' pragma
# or the 'optimize' function attribute to achieve this; however, at least on
# ARM, gcc always produces different debugging symbols when invoked with
# a -O greater than 0 than when invoked with -O0, regardless of anything else
# we're using to suppress optimizations. Therefore, we need to explicitly pass
# -O0 to it through CFLAGS. As a result, any fortification needs to be disabled
# as it needs -O greater than 0.
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
# Additionally, the build system will try to -include $(common-objpfx)/config.h
# when compiling the tests, which will throw an error if some special macros
# (such as __OPTIMIZE__ and IS_IN_build) aren't defined. To avoid this, we
# tell gcc to define IS_IN_build.
CFLAGS-printers-tests := -O0 -ggdb3 -DIS_IN_build $(no-fortify-source)
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
2012-01-08 09:30:26 +08:00
ifeq (yes,$(build-shared))
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
# These indicate whether to link using the built ld.so or the installed one.
installed-rtld-LDFLAGS = -Wl,-dynamic-linker=$(rtlddir)/$(rtld-installed-name)
built-rtld-LDFLAGS = -Wl,-dynamic-linker=$(elf-objpfx)ld.so
ifndef rtld-LDFLAGS
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
rtld-LDFLAGS = $(installed-rtld-LDFLAGS)
endif
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
ifndef rtld-tests-LDFLAGS
ifeq (yes,$(build-hardcoded-path-in-tests))
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
rtld-tests-LDFLAGS = $(built-rtld-LDFLAGS)
else
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
rtld-tests-LDFLAGS = $(installed-rtld-LDFLAGS)
endif # build-hardcoded-path-in-tests
endif # rtld-tests-LDFLAGS
endif # build-shared
ifndef link-libc
ifeq (yes,$(build-shared))
Sun May 12 11:16:58 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * mach/Machrules (%.udeps rule): Write deps for %_server.[ch] too. (%_server.[ch] rule): Don't depend on %.defs; use #include to get installed .defs file. * stdio-common/vfprintf.c (flockfile, funlockfile): Define to nothing for stdio. Fix fUNlockfile -> funlockfile for libio. * stdio-common/vfscanf.c: Likewise. Sat May 11 13:43:41 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * hurd/hurdfault.c: Include faultexc_server.h instead of faultexc.h. * mach/Machrules (%.ir rule): Don't produce deps for imports. * elf/dl-fini.c (_dl_fini): Clear L->l_init_called after calling fn. * Makerules (install): Depend on $(slibdir)/libc.so$(libc.so-version). [!subdir] ($(libdir)/libc.so, $(common-objpfx)/libc-syms.so): Protect these targets and install dep on $(libdir)/libc.so with this. * hurd/Makefile: Removed all rules and defns for using code from Hurd sources and installing headers from there. * sysdeps/mach/hurd/errnos.awk: Set in_mach_errors to FILENAME when we set it. In Mach error matching clause, only match if FILENAME is still the same value. * sysdeps/mach/hurd/Makefile: Don't include sysdeps/mach/Makefile; $(mach-srcdir) no longer exists. (hurd-srcdir): Variable removed. (includes): Don't append -I$(hurd-srcdir). (last-includes): Variable removed. Remove vpath specs using $(hurd-srcdir). (mach-errno-h): New canned sequence. ($(common-objpfx)errnos.d): New target, generated included makefile to determine absolute file names of Mach headers to search for error codes and set variable mach-errnos-deps. ($(common-objpfx)stamp-errnos): Depend on $(mach-errnos-deps) instead of prior explicit list. (generated): Add errnos.d, stamp-errnos. * mach/Machrules (some-if-rtn): New variable and target; compute deps of some if routine and make all if routines depend on that .d file instead of static list of .h files. * mach/Makefile (mach/mach_interface.defs, mach/memory_object_user.defs): Targets removed. ($(objpfx)mach-syscalls.mk): Tweak this kludge so it doesn't depend directly on Mach sources. * sysdeps/mach/Makefile (mach-srcdir): Variable removed. (includes): Don't append -I$(mach-srcdir). Remove vpath specs using $(mach-srcdir). * hurd/Makefile (server-interfaces): Add faultexc. (sig): Remove it from here. (fault%.[ch]): Rule removed. (MIGFLAGS-faultexc): New variable. * hurd/faultexc.defs: New file. * mach/Machrules (%.ustamp rule): Pass $(MIGFLAGS-$*) to mig. (%_server.[ch] rule): Likewise. * mach/Makefile: Removed all rules and defns for using code from Mach sources and installing headers from there. * Makeconfig [$(build-shared)=yes] (link-libc): Append $(libc.so-version) to libc.so. * mach/Machrules (%.ustamp rule): Don't depend on %.defs. (%.udeps): New rule parallel to that one, generating included makefiles with -M output from `#include <%.defs>'. * Makerules (sed-remove-objpfx): Remove space before \ at eol.
1996-05-13 00:38:08 +08:00
# We need the versioned name of libc.so in the deps of $(others) et al
# so that the symlink to libc.so is created before anything tries to
# run the linked programs.
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
link-libc-rpath = -Wl,-rpath=$(rpath-link)
link-libc-rpath-link = -Wl,-rpath-link=$(rpath-link)
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
# For programs which are not tests, $(link-libc-rpath-link) is added
# directly in $(+link), $(+link-pie) above, so that -Wl,-rpath-link
# comes before the expansion of LDLIBS-* and affects libraries added
# there. For shared objects, -Wl,-rpath-link is added via
# $(build-shlib-helper) and $(build-module-helper) in Makerules (also
# before the expansion of LDLIBS-* variables).
# Tests use -Wl,-rpath instead of -Wl,-rpath-link for
# build-hardcoded-path-in-tests. Add -Wl,--disable-new-dtags to force
# DT_RPATH instead of DT_RUNPATH which only applies to DT_NEEDED entries
# in the executable and doesn't applies to DT_NEEDED entries in shared
# libraries which are loaded via DT_NEEDED entries in the executable.
ifeq (yes,$(build-hardcoded-path-in-tests))
link-libc-tests-rpath-link = $(link-libc-rpath) -Wl,--disable-new-dtags
link-test-modules-rpath-link = $(link-libc-rpath) -Wl,--disable-new-dtags
else
link-libc-tests-rpath-link = $(link-libc-rpath-link)
link-test-modules-rpath-link =
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
endif # build-hardcoded-path-in-tests
link-libc-between-gnulib = $(common-objpfx)libc.so$(libc.so-version) \
$(common-objpfx)$(patsubst %,$(libtype.oS),c) \
-Wl,--as-needed $(elf-objpfx)ld.so \
-Wl,--no-as-needed
link-libc = $(link-libc-between-gnulib) $(gnulib)
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
link-libc-tests-after-rpath-link = $(gnulib-tests) $(link-libc-between-gnulib) $(gnulib-tests)
link-libc-tests = $(link-libc-tests-rpath-link) \
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
$(link-libc-tests-after-rpath-link)
# Pretty printer test programs always require rpath instead of rpath-link.
link-libc-printers-tests = $(link-libc-rpath) \
$(link-libc-tests-after-rpath-link)
Thu Jun 13 00:02:25 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * elf/dl-lookup.c (_dl_lookup_symbol): If no value and *REF is null, consider it a strong reference and give the error. Wed Jun 12 15:52:46 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * elf/dl-open.c (_dl_open): Correctly terminate relocating loop after relocating NEW when it's the only new object. * elf/dl-init.c (_dl_init_next): When out of initializers, set _r_debug.r_state to RT_CONSISTENT and call _dl_debug_state just before return. * elf/rtld.c (dl_main): Move _dl_debug_initialize call after relocation. Call it unconditionally and only fill in DT_DEBUG if it's present. Then call _dl_debug_state with r_state RT_ADD before running initializers. * elf/dl-open.c (_dl_open): Call _dl_debug_initialize and then call _dl_debug_state with r_state RT_ADD before running initializers * elf/dl-close.c (_dl_close): Call _dl_debug_state with r_state RT_DELETE before running finalizers and with RT_CONSISTENT just before return. * elf/Makefile (dl-routines): Add dl-debug. * elf/dl-debug.c: New file. * elf/rtld.c (_dl_r_debug): Rename to _r_debug and move to dl-debug.c. (_dl_r_debug_state): Rename to _dl_debug_state and likewise move. (dl_main): Use _dl_debug_initialize. * elf/link.h: Fix name to _dl_debug_state in decl. (_dl_debug_initialize): Declare new function from dl-debug.c. (_r_debug): Declare it. * Makerules (distinfo-vars): Add install-{lib,data,bin,sbin,others}. In distinfo set $(subdir)-VAR and then set VAR to $($(subdir)-VAR). * Makeconfig (rpath-link): New variable; add $(elfobjdir). (default-rpath): Use it. (built-program-cmd): Use it in LD_LIBRARY_PATH. * Makeconfig (sysdep-configures): Prepend $(sysdep_dir) to names tried. * sysdeps/unix/Dist: Add make-syscalls.sh. * misc/Makefile (headers): Add sys/swap.h. * posix/unistd.h: Remove decls for swapon, swapoff. * sysdeps/generic/sys/swap.h: New file. * sysdeps/unix/sysv/linux/sys/swap.h: New file. * sysdeps/unix/sysv/linux/gnu/types.h: Remove temporary hack #define of __kernel_fsid_t. It is correctly defines in <linux/types.h> now.
1996-06-13 12:06:45 +08:00
# This is how to find at build-time things that will be installed there.
rpath-dirs = math elf dlfcn nss nis rt resolv mathvec support
rpath-link = \
$(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%)))
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
else # build-static
link-libc = $(common-objpfx)libc.a $(otherlibs) $(gnulib) $(common-objpfx)libc.a $(gnulib)
link-libc-tests = $(common-objpfx)libc.a $(otherlibs) $(gnulib-tests) $(common-objpfx)libc.a $(gnulib-tests)
Add pretty printers for the NPTL lock types This patch adds pretty printers for the following NPTL types: - pthread_mutex_t - pthread_mutexattr_t - pthread_cond_t - pthread_condattr_t - pthread_rwlock_t - pthread_rwlockattr_t To load the pretty printers into your gdb session, do the following: python import sys sys.path.insert(0, '/path/to/glibc/build/nptl/pretty-printers') end source /path/to/glibc/source/pretty-printers/nptl-printers.py You can check which printers are registered and enabled by issuing the 'info pretty-printer' gdb command. Printers should trigger automatically when trying to print a variable of one of the types mentioned above. The printers are architecture-independent, and were tested on an AMD64 running Ubuntu 14.04 and an x86 VM running Fedora 24. In order to work, the printers need to know the values of various flags that are scattered throughout pthread.h and pthreadP.h as enums and #defines. Since replicating these constants in the printers file itself would create a maintenance burden, I wrote a script called gen-py-const.awk that Makerules uses to extract the constants. This script is pretty much the same as gen-as-const.awk, except it doesn't cast the constant values to 'long' and is thorougly documented. The constants need only to be enumerated in a .pysym file, which is then referenced by a Make variable called gen-py-const-headers. As for the install directory, I discussed this with Mike Frysinger and Siddhesh Poyarekar, and we agreed that it can be handled in a separate patch, and shouldn't block merging of this one. In addition, I've written a series of test cases for the pretty printers. Each lock type (mutex, condvar and rwlock) has two test programs, one for itself and other for its related 'attributes' object. Each test program in turn has a PExpect-based Python script that drives gdb and compares its output to the expected printer's. The tests run on the glibc host, which is assumed to have both gdb and PExpect; if either is absent the tests will fail with code 77 (UNSUPPORTED). For cross-testing you should use cross-test-ssh.sh as test-wrapper. I've tested the printers on both native builds and a cross build using a Beaglebone Black running Debian, with the build system's filesystem shared with the board through NFS. Finally, I've written a README that explains all this and more. * INSTALL: Regenerated. * Makeconfig: Add comments and whitespace to make the control flow clearer. (+link-printers-tests, +link-pie-printers-tests, CFLAGS-printers-tests, installed-rtld-LDFLAGS, built-rtld-LDFLAGS, link-libc-rpath, link-libc-tests-after-rpath-link, link-libc-printers-tests): New. (rtld-LDFLAGS, rtld-tests-LDFLAGS, link-libc-tests-rpath-link, link-libc-tests): Use the new variables as required. * Makerules ($(py-const)): New rule. generated: Add $(py-const). * README.pretty-printers: New file. * Rules (tests-printers-programs, tests-printers-out, py-env): New. (others): Depend on $(py-const). (tests): Depend on $(tests-printers-programs) or $(tests-printers-out), as required. Pass $(tests-printers) to merge-test-results.sh. * manual/install.texi: Add requirements for testing the pretty printers. * nptl/Makefile (gen-py-const-headers, pretty-printers, tests-printers, CFLAGS-test-mutexattr-printers.c CFLAGS-test-mutex-printers.c, CFLAGS-test-condattr-printers.c, CFLAGS-test-cond-printers.c, CFLAGS-test-rwlockattr-printers.c CFLAGS-test-rwlock-printers.c, tests-printers-libs): Define. * nptl/nptl-printers.py: New file. * nptl/nptl_lock_constants.pysym: Likewise. * nptl/test-cond-printers.c: Likewise. * nptl/test-cond-printers.py: Likewise. * nptl/test-condattr-printers.c: Likewise. * nptl/test-condattr-printers.py: Likewise. * nptl/test-mutex-printers.c: Likewise. * nptl/test-mutex-printers.py: Likewise. * nptl/test-mutexattr-printers.c: Likewise. * nptl/test-mutexattr-printers.py: Likewise. * nptl/test-rwlock-printers.c: Likewise. * nptl/test-rwlock-printers.py: Likewise. * nptl/test-rwlockattr-printers.c: Likewise. * nptl/test-rwlockattr-printers.py: Likewise. * scripts/gen-py-const.awk: Likewise. * scripts/test_printers_common.py: Likewise. * scripts/test_printers_exceptions.py: Likewise.
2016-12-08 21:29:02 +08:00
endif # build-shared
endif # link-libc
Update. 1997-06-15 00:43 Ulrich Drepper <drepper@cygnus.com> * Makeconfig: Define libc-map here. * Makefile: And remove definition here. * Makerules (load-map-file): Handle case where map file is in other directory. (build-shlib): Likewise. * libc.map: Add more symbols. * resolv/libresolv.map: Likewise. * db/libdb.map: Add __dbopen. Patch by HJ Lu. * libio/stdio.h: Remove "optmizations" for vfscanf and vsscanf. * locale/programs/localedef.c: Add normalize_codeset function. We don't want to use the _nl_normalize_codeset functions from libc. * sysdeps/libm-i387/s_asinh.S: Handle +-Inf and NaN correctly. * sysdeps/libm-i387/s_asinhf.S: Likewise. * sysdeps/libm-i387/s_asinhl.S: Likewise. * sysdeps/libm-i387/s_nearbyint.S: Correctly leave function. * sysdeps/libm-i387/s_nearbyintf.S: Likewise. * sysdeps/libm-i387/s_nearbyintl.S: Likewise. 1997-06-14 12:45 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * nis/nss_nis/nis-ethers.c: Add static to internal_nis_setetherent. * nis/nss_nis/nis-proto.c: Add static to internal_nis_setprotoent. * nis/nss_nisplus/nisplus-hosts.c: Rewrite parser and fix _nss_nisplus_gethostbyaddr_r interface. * nis/libnsl.map: Add all GLOBAL functions. 1997-06-13 18:32 Andreas Jaeger <aj@arthur.rhein-neckar.de> * libm-test.c (main): Call new tests, reorder tests. (fmod_test): Test function fmod. (nearbyint_test): Test function nearbyint. (acos_test): Add more test cases. (signbit_test): Test macro signbit. (output_result_bool): Output result if test fails. (asin_test): Add another test case. (atan2_test): Add more tests. (asinh_test): Add more tests. (atanh_test): Add more tests. (hypot_test): Add more tests. (isfinite_test): Test macro isfinite. (isnormal_test): Test macro isnormal. (sincos_test): Tests for sincos. (main): Enable remquo_test since the tests are correct (according to ANSI/IEEE 754-1985). (remquo_test): Corrected tests cases and added more tests. (remainder_test): Tests for remainder. (check_int): New Function to compare int values. (check_isnan_exc_ext): New function. (sqrt_test): Add some extra tests for sqrt. (erf_test): Tests for erf. (erfc_test): Tests for erfc. (gamma_test): Tests for gamma. (lgamma_test): Tests for lgamma. 1997-06-08 10:54 H.J. Lu <hjl@gnu.ai.mit.edu> * sysdeps/unix/sysv/linux/configure.in: Try to generate stdio_lim.h using the target C preprocessor and mk-stdiolim.c. * sysdeps/unix/sysv/linux/stdio_lim.h.in: New, template for stdio_lim.h. * sysdeps/unix/sysv/linux/mk-stdiolim.c: New, used by the target C preprocessor to extract OPEN_MAX and PATH_MAX. 1997-06-14 17:32 Andreas Jaeger <aj@arthur.rhein-neckar.de> * math/libm.map: Add inline functions, global variables.
1997-06-15 07:17:05 +08:00
# Differences in the linkers on the various platforms.
LDFLAGS-rpath-ORIGIN = -Wl,-rpath,'$$ORIGIN'
LDFLAGS-soname-fname = -Wl,-soname,$(@F)
LDFLAGS-rdynamic = -rdynamic
LDFLAGS-Bsymbolic = -Bsymbolic
# Choose the default search path for the dynamic linker based on
# where we will install libraries.
ifneq ($(libdir),$(slibdir))
default-rpath = $(slibdir):$(libdir)
else
default-rpath = $(libdir)
endif
update from main archive 960904 Thu Sep 5 03:20:42 1996 Ulrich Drepper <drepper@cygnus.com> Change configuration and Makefiles to allow add-ons to have a sysdeps/ directory hierachy. * configure.in: Test for sysdeps/ directory in add-ons. Before all test and searches in these hierachies, too. * Makeconfig (full-config-subdirs): Define based on $(config-sysdirs). Extend with $(..) if not absolute path. Use $(full-config-subdirs) where $(config-sysdirs) was used. * Makefile ($(objpfx)sysd-dirs): Use config-sysdirs. * MakeTAGS: Use $(full-config-subdirs). * Makerules: Change comment to libc.so link script. (sysdirs): Define based on $(full-config-subdirs). (sysd-Makefile): Define using config-sysdirs. (sysd-rules): Likewise. * sysdeps/unix/Makefile (sysd-syscalls): Define based on +sysdep-dirs. * sysdeps/unix/make-syscalls.sh: Remove basedir argument. Wed Sep 4 01:32:21 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/fpu/k_cos.c: Rewritten for better accuracy. * sysdeps/m68k/fpu/k_sin.c: Likewise. * sysdeps/m68k/fpu/k_tan.c: Likewise. Thu Sep 5 01:06:09 1996 Richard Henderson <rth@tamu.edu> * malloc/free.c (free): Protect by using __libc_malloc_lock. * malloc/malloc-find.c (malloc_find_object_address): Likewise. * malloc/malloc-size.c (malloc_usable_size): Likewise. * malloc/malloc-walk.c (malloc_walk): Likewise. * malloc/memalign.c (memalign): Likewise. * malloc/realloc.c (realloc): Likewise. * malloc/malloc.c: Define __libc_malloc_lock. (_malloc_internal): Don't use `malloc'. Instead look for `__malloc_hook' or call `_malloc_internal'. (malloc): Protect by using `__libc_malloc_lock'. * malloc/malloc.h: Declare `__libc_malloc_lock'. Mon Sep 2 22:42:59 1996 Richard Henderson <rth@tamu.edu> * sysdeps/alpha/elf/start.S: Use weak_alias for __start instead of the hard definition. * sysdeps/alpha/dl-machine.h (RTLD_START): Add type info for _start and _dl_start_user. * sysdeps/unix/sysv/linux/alpha/init-first.h (SYSDEP_CALL_INIT): Make _dl_starting_up weak. Add type info for NAME. Mon Sep 2 22:15:14 1996 Richard Henderson <rth@tamu.edu> * Makefile (all): Add extra_solibs pass. (+subdir_targets): Same. * Rules (extra_solibs): New phony empty target for subdirs without extra libs. * extra-lib.mk: Build lib*.so* in extra_solibs not lib-noranlib. * manual/Makefile: Add dummy extra_solibs target. Sun Sep 1 15:41:22 1996 Richard Henderson <rth@tamu.edu> * Makeconfig (+link): Add $(link-extra-libs). (link-extra-libs): New variable which expands to the full paths of the other libraries needed by a program, as controled by LDLIBS-$(@F). * db/Makefile: Use LDLIBS-makedb to link libdb not a dependency, as the later attempts to install the library before linking it. * sysdeps/unix/alpha/sysdep.S: Align errno. * sysdeps/unix/sysv/linux/alpha/ioperm.c (struct platform): Add hae_shift entry. (io): Move bus_memory_base and sparse_bus_memory_base into struct. (_hae_shift): New function. * sysdeps/unix/sysv/linux/alpha/sys/io.h: New file. Prototypes for the bus query functions. Sat Aug 31 18:14:54 1996 Richard Henderson <rth@tamu.edu> * elf/dl-close.c (_dl_close): In static executables, map->l_prev can be NULL when unloading a library. * elf/dl-open.c (_dl_open): Pass __environ instead of __libc_envp to the library .init function. * sysdeps/alpha/dl-machine.h (elf_machine_rela): Since we omitted part of the COPY reloc processing earlier, omit the rest now -- we'll get into less trouble later when some fool does use a COPY. * sysdeps/unix/sysv/linux/init-first.c (init): Accept argc et al as parameters. Move all argc and __libc_multiple_libcs calculation out to init-first.h. Use __environ not __libc_envp. * sysdeps/unix/sysv/linux/alpha/init-first.h: Rewrite. * sysdeps/unix/sysv/linux/i386/init-first.h: Rewrite. Thu Aug 29 20:26:40 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/posix/profil.c (profil): Don't clobber saved timer and signal settings when profiling was already turned on. * csu/gmon-start.c (__gmon_start__) [HAVE_INITFINI]: Protect from being called twice. Wed Sep 4 01:31:50 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/mmap.S: Test for 0 < return value < -4096 and not < 0 to decide about failure. Reported by Andreas Jaeger. Tue Sep 3 19:04:05 1996 Ulrich Drepper <drepper@cygnus.com> * stdio-common/vfscanf.c (__vfscanf): Don't count EOF char in %c format. Sat Aug 31 18:10:51 1996 Ulrich Drepper <drepper@cygnus.com> * wcsmbs/wchar.h: Define prototypes for wcstoq and wcstouq only #ifdef __USE_GNU. Sat Aug 31 12:34:29 1996 Ulrich Drepper <drepper@cygnus.com> * version.c: Add missing newline character in banner. * sysdeps/unix/sysv/linux/alpha/Dist: Correct typo. * sysdeps/unix/sysv/linux/i386/Dist: Likewise. Sat Aug 31 03:07:39 1996 Ulrich Drepper <drepper@cygnus.com> * intl/l10nflist.c (_nl_normalize_codeset): We convert to lower case, so don't prepend uppercase `ISO' for only numeric arg.
1996-09-05 10:49:18 +08:00
ifndef link-extra-libs
link-extra-libs = $(LDLIBS-$(@F))
link-extra-libs-static = $(link-extra-libs)
update from main archive 960904 Thu Sep 5 03:20:42 1996 Ulrich Drepper <drepper@cygnus.com> Change configuration and Makefiles to allow add-ons to have a sysdeps/ directory hierachy. * configure.in: Test for sysdeps/ directory in add-ons. Before all test and searches in these hierachies, too. * Makeconfig (full-config-subdirs): Define based on $(config-sysdirs). Extend with $(..) if not absolute path. Use $(full-config-subdirs) where $(config-sysdirs) was used. * Makefile ($(objpfx)sysd-dirs): Use config-sysdirs. * MakeTAGS: Use $(full-config-subdirs). * Makerules: Change comment to libc.so link script. (sysdirs): Define based on $(full-config-subdirs). (sysd-Makefile): Define using config-sysdirs. (sysd-rules): Likewise. * sysdeps/unix/Makefile (sysd-syscalls): Define based on +sysdep-dirs. * sysdeps/unix/make-syscalls.sh: Remove basedir argument. Wed Sep 4 01:32:21 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/fpu/k_cos.c: Rewritten for better accuracy. * sysdeps/m68k/fpu/k_sin.c: Likewise. * sysdeps/m68k/fpu/k_tan.c: Likewise. Thu Sep 5 01:06:09 1996 Richard Henderson <rth@tamu.edu> * malloc/free.c (free): Protect by using __libc_malloc_lock. * malloc/malloc-find.c (malloc_find_object_address): Likewise. * malloc/malloc-size.c (malloc_usable_size): Likewise. * malloc/malloc-walk.c (malloc_walk): Likewise. * malloc/memalign.c (memalign): Likewise. * malloc/realloc.c (realloc): Likewise. * malloc/malloc.c: Define __libc_malloc_lock. (_malloc_internal): Don't use `malloc'. Instead look for `__malloc_hook' or call `_malloc_internal'. (malloc): Protect by using `__libc_malloc_lock'. * malloc/malloc.h: Declare `__libc_malloc_lock'. Mon Sep 2 22:42:59 1996 Richard Henderson <rth@tamu.edu> * sysdeps/alpha/elf/start.S: Use weak_alias for __start instead of the hard definition. * sysdeps/alpha/dl-machine.h (RTLD_START): Add type info for _start and _dl_start_user. * sysdeps/unix/sysv/linux/alpha/init-first.h (SYSDEP_CALL_INIT): Make _dl_starting_up weak. Add type info for NAME. Mon Sep 2 22:15:14 1996 Richard Henderson <rth@tamu.edu> * Makefile (all): Add extra_solibs pass. (+subdir_targets): Same. * Rules (extra_solibs): New phony empty target for subdirs without extra libs. * extra-lib.mk: Build lib*.so* in extra_solibs not lib-noranlib. * manual/Makefile: Add dummy extra_solibs target. Sun Sep 1 15:41:22 1996 Richard Henderson <rth@tamu.edu> * Makeconfig (+link): Add $(link-extra-libs). (link-extra-libs): New variable which expands to the full paths of the other libraries needed by a program, as controled by LDLIBS-$(@F). * db/Makefile: Use LDLIBS-makedb to link libdb not a dependency, as the later attempts to install the library before linking it. * sysdeps/unix/alpha/sysdep.S: Align errno. * sysdeps/unix/sysv/linux/alpha/ioperm.c (struct platform): Add hae_shift entry. (io): Move bus_memory_base and sparse_bus_memory_base into struct. (_hae_shift): New function. * sysdeps/unix/sysv/linux/alpha/sys/io.h: New file. Prototypes for the bus query functions. Sat Aug 31 18:14:54 1996 Richard Henderson <rth@tamu.edu> * elf/dl-close.c (_dl_close): In static executables, map->l_prev can be NULL when unloading a library. * elf/dl-open.c (_dl_open): Pass __environ instead of __libc_envp to the library .init function. * sysdeps/alpha/dl-machine.h (elf_machine_rela): Since we omitted part of the COPY reloc processing earlier, omit the rest now -- we'll get into less trouble later when some fool does use a COPY. * sysdeps/unix/sysv/linux/init-first.c (init): Accept argc et al as parameters. Move all argc and __libc_multiple_libcs calculation out to init-first.h. Use __environ not __libc_envp. * sysdeps/unix/sysv/linux/alpha/init-first.h: Rewrite. * sysdeps/unix/sysv/linux/i386/init-first.h: Rewrite. Thu Aug 29 20:26:40 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/posix/profil.c (profil): Don't clobber saved timer and signal settings when profiling was already turned on. * csu/gmon-start.c (__gmon_start__) [HAVE_INITFINI]: Protect from being called twice. Wed Sep 4 01:31:50 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/mmap.S: Test for 0 < return value < -4096 and not < 0 to decide about failure. Reported by Andreas Jaeger. Tue Sep 3 19:04:05 1996 Ulrich Drepper <drepper@cygnus.com> * stdio-common/vfscanf.c (__vfscanf): Don't count EOF char in %c format. Sat Aug 31 18:10:51 1996 Ulrich Drepper <drepper@cygnus.com> * wcsmbs/wchar.h: Define prototypes for wcstoq and wcstouq only #ifdef __USE_GNU. Sat Aug 31 12:34:29 1996 Ulrich Drepper <drepper@cygnus.com> * version.c: Add missing newline character in banner. * sysdeps/unix/sysv/linux/alpha/Dist: Correct typo. * sysdeps/unix/sysv/linux/i386/Dist: Likewise. Sat Aug 31 03:07:39 1996 Ulrich Drepper <drepper@cygnus.com> * intl/l10nflist.c (_nl_normalize_codeset): We convert to lower case, so don't prepend uppercase `ISO' for only numeric arg.
1996-09-05 10:49:18 +08:00
endif
Update. 1998-02-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/syscalls.list: Don't mark lchown as extra syscall. * grp/Makefile: Fix logic when checking for thread package. * pwd/Makefile: Likewise. 1998-02-11 08:23 H.J. Lu <hjl@gnu.org> * elf/Makefile (rtld-map): Replaced by libc-map. * elf/rtld.map: Removed. * libc.map (__libc_enable_secure, _dl_catch_error, _dl_check_all_versions, _dl_debug_initialize, _dl_debug_state, _dl_default_scope, _dl_global_scope_end, _dl_init_next, _dl_lookup_symbol, _dl_map_object, _dl_map_object_deps, _dl_object_relocation_scope, _dl_relocate_object, _dl_signal_error, _dl_starting_up, _dl_sysdep_start, _r_debug): Added for ld.so. 1998-02-10 08:38 H.J. Lu <hjl@gnu.org> * libio/iofclose.c: Check PIC && DO_VERSIONING instead of DO_VERSIONING. * libio/iofdopen.c: Ditto. * libio/iofopen.c: Ditto. * libio/oldfileops.c: Ditto. * libc.map (sys_nerr, _sys_errlist, sys_errlist): Added for version GLIBC_2.1. * sysdeps/unix/sysv/linux/Makefile (stdio-common): Removed oldsiglist from sysdep_routines and shared-only-routines. * sysdeps/unix/sysv/linux/errlist.c: New. * sysdeps/unix/sysv/linux/errlist.h: New. * sysdeps/unix/sysv/linux/sizes.h: New. * sysdeps/unix/sysv/linux/alpha/sizes.h: New. * sysdeps/unix/sysv/linux/sparc64/sizes.h: New. * sysdeps/unix/sysv/linux/oldsiglist.c: Removed. * sysdeps/unix/sysv/linux/siglist.c: Include <sizes.h>. (__old_sys_siglist, __old_sys_sigabbrev): Use ELF .size directive. * sysdeps/unix/sysv/linux/siglist.h (OLD_SIGLIST_SIZE_STR): New. * sysdeps/unix/sysv/linux/Dist (errlist.h, sizes.h.): Added. (oldsiglist.c): Removed. * sysdeps/gnu/errlist.awk (SYS_SIGLIST, SYS_NERR): New. (_sys_siglist): Use SYS_SIGLIST instead. (_sys_nerr): Use SYS_NERR instead. * sysdeps/gnu/errlist.c: Rebuilt. 1998-02-11 08:35 H.J. Lu <hjl@gnu.org> * elf/Makefile (others-static): New, set to ldconfig. ($(objpfx)ldconfig): Removed. * Rules (binaries-all, binaries-static, binaries-shared): New. Create targets for $(binaries-static) and $(binaries-shared). * Makeconfig (+link-static, link-libc-static, link-extra-libs-static): New for static linking.
1998-02-13 02:22:41 +08:00
# The static libraries.
link-libc-static = -Wl,--start-group $(common-objpfx)libc.a $(static-gnulib) -Wl,--end-group
link-libc-static-tests = -Wl,--start-group $(common-objpfx)libc.a $(static-gnulib-tests) -Wl,--end-group
Update. 1998-02-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/syscalls.list: Don't mark lchown as extra syscall. * grp/Makefile: Fix logic when checking for thread package. * pwd/Makefile: Likewise. 1998-02-11 08:23 H.J. Lu <hjl@gnu.org> * elf/Makefile (rtld-map): Replaced by libc-map. * elf/rtld.map: Removed. * libc.map (__libc_enable_secure, _dl_catch_error, _dl_check_all_versions, _dl_debug_initialize, _dl_debug_state, _dl_default_scope, _dl_global_scope_end, _dl_init_next, _dl_lookup_symbol, _dl_map_object, _dl_map_object_deps, _dl_object_relocation_scope, _dl_relocate_object, _dl_signal_error, _dl_starting_up, _dl_sysdep_start, _r_debug): Added for ld.so. 1998-02-10 08:38 H.J. Lu <hjl@gnu.org> * libio/iofclose.c: Check PIC && DO_VERSIONING instead of DO_VERSIONING. * libio/iofdopen.c: Ditto. * libio/iofopen.c: Ditto. * libio/oldfileops.c: Ditto. * libc.map (sys_nerr, _sys_errlist, sys_errlist): Added for version GLIBC_2.1. * sysdeps/unix/sysv/linux/Makefile (stdio-common): Removed oldsiglist from sysdep_routines and shared-only-routines. * sysdeps/unix/sysv/linux/errlist.c: New. * sysdeps/unix/sysv/linux/errlist.h: New. * sysdeps/unix/sysv/linux/sizes.h: New. * sysdeps/unix/sysv/linux/alpha/sizes.h: New. * sysdeps/unix/sysv/linux/sparc64/sizes.h: New. * sysdeps/unix/sysv/linux/oldsiglist.c: Removed. * sysdeps/unix/sysv/linux/siglist.c: Include <sizes.h>. (__old_sys_siglist, __old_sys_sigabbrev): Use ELF .size directive. * sysdeps/unix/sysv/linux/siglist.h (OLD_SIGLIST_SIZE_STR): New. * sysdeps/unix/sysv/linux/Dist (errlist.h, sizes.h.): Added. (oldsiglist.c): Removed. * sysdeps/gnu/errlist.awk (SYS_SIGLIST, SYS_NERR): New. (_sys_siglist): Use SYS_SIGLIST instead. (_sys_nerr): Use SYS_NERR instead. * sysdeps/gnu/errlist.c: Rebuilt. 1998-02-11 08:35 H.J. Lu <hjl@gnu.org> * elf/Makefile (others-static): New, set to ldconfig. ($(objpfx)ldconfig): Removed. * Rules (binaries-all, binaries-static, binaries-shared): New. Create targets for $(binaries-static) and $(binaries-shared). * Makeconfig (+link-static, link-libc-static, link-extra-libs-static): New for static linking.
1998-02-13 02:22:41 +08:00
# How to link against libgcc. Some libgcc functions, such as those
# for "long long" arithmetic or software floating point, can always be
# built without use of C library headers and do not have any global
# state so can safely be linked statically into any executable or
# shared library requiring them; these functions are in libgcc.a.
# Other functions, relating to exception handling, may require C
# library headers to build and it may not be safe to have more than
# one copy of them in a process; these functions are only in
# libgcc_s.so and libgcc_eh.a.
#
# To avoid circular dependencies when bootstrapping, it is desirable
# to avoid use of libgcc_s and libgcc_eh in building glibc. Where any
# glibc functionality (in particular, thread cancellation) requires
# exception handling, this is implemented through dlopen of libgcc_s
# to avoid unnecessary dependencies on libgcc_s by programs not using
# that functionality; executables built with glibc do not use
# exception handling other than through thread cancellation.
#
# Undefined references to functions from libgcc_eh or libgcc_s may
# arise for code built with -fexceptions. In the case of statically
# linked programs installed by glibc, unwinding will never actually
# occur at runtime and the use of elf/static-stubs.c to resolve these
# references is safe. In the case of statically linked test programs
# and test programs built with -fexceptions, unwinding may occur in
# some cases and it is preferable to link with libgcc_eh or libgcc_s
# so that the testing is as similar as possible to how programs will
# be built with the installed glibc.
#
# Some architectures have architecture-specific systems for exception
# handling that may involve undefined references to
# architecture-specific functions. On those architectures,
# gnulib-arch and static-gnulib-arch may be defined in sysdeps
# makefiles to use additional libraries for linking executables and
# shared libraries built by glibc.
1995-02-18 09:27:10 +08:00
ifndef gnulib
ifneq ($(have-cc-with-libunwind),yes)
libunwind =
else
libunwind = -lunwind
endif
2012-04-26 01:02:33 +08:00
libgcc_eh := -Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed
gnulib-arch =
gnulib = -lgcc $(gnulib-arch)
gnulib-tests := -lgcc $(libgcc_eh)
static-gnulib-arch =
# By default, elf/static-stubs.o, instead of -lgcc_eh, is used to
# statically link programs. When --disable-shared is used, we use
# -lgcc_eh since elf/static-stubs.o isn't sufficient.
ifeq (yes,$(build-shared))
static-gnulib = -lgcc $(static-gnulib-arch)
else
static-gnulib = -lgcc -lgcc_eh $(static-gnulib-arch)
endif
static-gnulib-tests := -lgcc -lgcc_eh $(libunwind)
libc.so-gnulib := -lgcc
1995-02-18 09:27:10 +08:00
endif
1996-08-02 13:27:50 +08:00
+preinit = $(addprefix $(csu-objpfx),crti.o)
+postinit = $(addprefix $(csu-objpfx),crtn.o)
+prector = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbegin.o`
+postctor = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o`
# Variants of the two previous definitions for linking PIE programs.
+prectorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginS.o`
+postctorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtendS.o`
# Variants of the two previous definitions for statically linking programs.
static-prector = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginT.o`
static-postctor = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o`
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 08:59:33 +08:00
ifeq (yes,$(enable-static-pie))
# Static PIE must use PIE variants.
+prectorT = $(if $($(@F)-no-pie),$(static-prector),$(+prectorS))
+postctorT = $(if $($(@F)-no-pie),$(static-postctor),$(+postctorS))
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 08:59:33 +08:00
else
+prectorT = $(static-prector)
+postctorT =$(static-postctor)
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 08:59:33 +08:00
endif
update from main archive 960829 Fri Aug 30 01:26:44 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/Dist: Add close.S. * sysdeps/unix/sysv/linux/m68k/Dist: Likewise. * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. * version.c: Add comment about where to report bugs to. * catgets/gencat.c (usage): Likewise. * db/makedb.c (usage): Likewise. * locale/programs/locale.c (usage): Likewise. * locale/programs/localedef.c (usage): Likewise. * manual/socket.texi: A little bit better wording. Thu Aug 29 18:03:06 1996 Ulrich Drepper <drepper@cygnus.com> * Makerules: Make sure directory exists before generating stamp file. (BUILD_CFLAGS): Always refer to using $(..). * manual/Makefile: Make sure directory exists before generating stamp file. (make-target-directory): Add macro definition. * sysdeps/generic/Makefile: Make sure directory exists before generating stamp file. * Makefile (distribute): Add autolock.sh. Reported by Fila Kolodny. Tue Aug 27 10:06:22 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> When compiling in separate directory put objects into subdirectories matching the source layout. * Makeconfig (objpfx) [ifdef objdir]: Append $(subdir). When looking for configparms try in $(common-objpfx). Use $(common-objpfx)SUBDIR to find objects from other subdirectory builds. * Makerules: Add $(objpfx) to vpath list. (make-dummy-dep): Use $(common-objpfx) to avoid creating dummy.d more than once. All uses in dependency lists changed. (+make-deps): Make target directory. (sed-remove-objpfx): Substitute $(common-objpfx). (do-ar, build-extra-lib, $(common-objpfx)stub-$(subdir)): Use $(objpfx) instead of $(objdir) for cd command. (O%-lib): Always find libc relative to $(..). (subdir-stamps): Collect stamp files from subdirs. (common-mostlyclean): Remove stub file in $(common-objpfx). * MakeTAGS ($P/siglist.pot): Find siglist.c in stdio-common. * Rules (dep-dummy-lib): Use $(common-objpfx) to avoid creating to more than once. ($(objpfx)dummy.c, $(objpfx)empty.c): Change target name to use $(common-objfpx). All uses in dependency lists changed. (generated): Prepend $(..) to names. * bare/Makefile ($(objpfx)lib$(config-vendor).a): Remove $(objpfx) from $@. * nss/Makefile ($(objpfx)libnss_dns.so, $(objpfx)libnss_db.so): Use $(common-objpfx) instead of $(..) in dependencies. * sysdeps/mach/Makefile (mach-objpfx): Unconditionally use $(common-objpfx) instead of $(..) and (objpfx). * sysdeps/mach/hurd/Makefile (hurd-objpfx): Likewise. (rpath-link): Likewise. (rpcuserlibs): Likewise. * sysdeps/unix/Makefile [$(subdir) = stdio-common]: Check for errlist.c in $(objpfx), not $(common-objpfx). ($(common-objpfx)s-proto.d): Special rule not covered by pattern rule. * sysdeps/unix/make-syscalls.sh: Make syscall rules depending on s-proto.d in $(common-objpfx), not $(objpfx). Thu Aug 29 17:45:49 1996 Ulrich Drepper <drepper@cygnus.com> * nss/nsswitch.c (nss_dlerror_run): Free returned error string. Thu Aug 29 15:53:33 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-ieee754/e_acoshl.c: New file. `long double' implementation. * sysdeps/libm-ieee754/e_atanhl.c: Likewise. * sysdeps/libm-ieee754/e_remainderl.c: Likewise. * sysdeps/libm-ieee754/e_scalbl.c: Likewise. * sysdeps/libm-ieee754/s_asinhl.c: Likewise. * sysdeps/libm-ieee754/s_cosl.c: Likewise. * sysdeps/libm-ieee754/s_sinl.c: Likewise. * sysdeps/libm-ieee754/s_tanhl.c: Likewise. * sysdeps/libm-ieee754/s_tanl.c: Likewise. * stdio-common/printf_fp.c (__printf_fp): Use default value '.' if
1996-08-30 08:58:28 +08:00
csu-objpfx = $(common-objpfx)csu/
elf-objpfx = $(common-objpfx)elf/
1995-02-18 09:27:10 +08:00
2012-10-25 05:59:01 +08:00
# A command that, prepended to the name and arguments of a program,
# and run on the build system, causes that program with those
# arguments to be run on the host for which the library is built.
ifndef test-wrapper
test-wrapper =
endif
# Likewise, but the name of the program is preceded by
# <variable>=<value> assignments for environment variables.
ifndef test-wrapper-env
test-wrapper-env = $(test-wrapper) env
endif
2015-03-06 04:58:49 +08:00
# Likewise, but the program's environment will be empty except for any
# explicit <variable>=<value> assignments preceding the program name.
ifndef test-wrapper-env-only
test-wrapper-env-only = $(test-wrapper) env -i
endif
2012-10-25 05:59:01 +08:00
2012-10-24 08:08:46 +08:00
# Whether to run test programs built for the library's host system.
ifndef run-built-tests
2012-10-25 05:59:01 +08:00
ifeq (yes|,$(cross-compiling)|$(test-wrapper))
2012-10-24 08:08:46 +08:00
run-built-tests = no
else
run-built-tests = yes
endif
endif
# Whether to build the static math tests
ifndef build-math-static-tests
build-math-static-tests = no
endif
Do not terminate default test runs on test failure. This patch is an updated version of <https://sourceware.org/ml/libc-alpha/2014-01/msg00198.html> and <https://sourceware.org/ml/libc-alpha/2014-03/msg00180.html>. Normal practice for software testsuites is that rather than terminating immediately when a test fails, they continue running and report at the end on how many tests passed or failed. The principle behind the glibc testsuite stopping on failure was probably that the expected state is no failures and so any failure indicates a problem such as miscompilation. In practice, while this is fairly close to true for native testing on x86_64 and x86 (kernel bugs and race conditions can still cause intermittent failures), it's less likely to be the case on other platforms, and so people testing glibc run the testsuite with "make -k" and then examine the logs to determine whether the failures are what they expect to fail on that platform, possibly with some automation for the comparison. This patch switches the glibc testsuite to the normal convention of not stopping on failure - unless you use stop-on-test-failure=y, in which case it behaves essentially as it did before (and does not generate overall test summaries on failure). Instead, the summary tests.sum may contain tests that FAILed. At the end of the test run, any FAIL or ERROR lines from tests.sum are printed, and then it exits with error status if there were any such lines. In addition, build failures will also cause the test run to stop - this has the justification that those *do* indicate serious problems that should be promptly fixed and aren't generally hard to fix (but apart from that, avoiding the build stopping on those failures seems harder). Note that unlike the previous patches in this series, this *does* require people with automation around testing glibc to change their processes - either to start using tests.sum / xtests.sum to track failures and compare them with expectations (with or without also using "make -k" and examining "make" logs to identify build failures), or else to use stop-on-test-failure=y and ignore the new tests.sum / xtests.sum mechanism. (If all you check is the exit status from "make check", no changes are needed unless you want to avoid test runs continuing after the first failure.) Tested x86_64. * scripts/evaluate-test.sh: Handle fourth argument to determine whether test run should stop on failure. * Makeconfig (stop-on-test-failure): New variable. (evaluate-test): Pass fourth argument to evaluate-test.sh based on $(stop-on-test-failure). * Makefile (tests): Give a summary of results from testing and exit with failure status if they include an ERROR or FAIL. (xtests): Likewise. * manual/install.texi (Configuring and compiling): Mention stop-on-test-failure=y. * INSTALL: Regenerated.
2014-03-15 05:02:40 +08:00
# Whether to stop immediately when a test fails. Nonempty means to
# stop, empty means not to stop.
ifndef stop-on-test-failure
stop-on-test-failure =
endif
# How to run a program we just linked with our library.
# The program binary is assumed to be $(word 2,$^).
built-program-file = $(dir $(word 2,$^))$(notdir $(word 2,$^))
rtld-prefix = $(elf-objpfx)$(rtld-installed-name) \
--library-path \
$(rpath-link)$(patsubst %,:%,$(sysdep-library-path))
2012-01-08 09:30:26 +08:00
ifeq (yes,$(build-shared))
comma = ,
update from main archive 961008 Wed Oct 9 00:30:33 1996 Ulrich Drepper <drepper@cygnus.com> * inet/getnetgrent_r.c: Correct netgroup implementation. A specification of a netgroup can also name another netgroup. * nss/nss_files/files-netgrp.c: Likewise. * inet/netgroup.h: Add fields to hold additional information. Tue Oct 8 21:51:14 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us> * posix/getopt.c: Implement POSIX -W option handling. When the option string contains "W;" -W foo is handled like --foo. Tue Oct 8 12:27:26 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/clone.S: Define _ERRNO_H before inclusing <errnos.h> so we really get error symbols defined. * sysdeps/unix/sysv/linux/m68k/clone.S: Likewise. * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise. * sunrpc/auth_unix.c (authunix_create_default): Don't use fixed size array for getgroups call. Instead get maximal number via sysconf. But discard list to NGRPS elements before calling XDR function since Sun's code cannot handle longer lists. Based on a patch by Thorsten Kukuk <kukuk@weber.uni-paderborn.de>. * sysdeps/stub/e_j0l.c: Define y0l as well. * sysdeps/stub/e_j1l.c: Define y1l as well. * sysdeps/stub/e_jnl.c: Define ynl as well. * posix/unistd.h: Correct prototype for execlp. * sysdeps/unix/sysv/linux/posix_opt.h: Define _POSIX_NO_TRUNC. Mon Oct 7 22:18:03 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makeconfig (sysdep-library-path): New variable. (built-program-cmd): Use it here to properly build a colon separated library path. Mon Oct 7 22:11:55 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * crypt/md5-crypt.c (md5_crypt_r): Add missing parens around & within comparison. Fix comments. (md5_crypt): Fix comment. Tue Oct 8 05:10:49 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/errnos.h: Only include <linux/errnos.h> when _ERRNO_H is defined. [!_ERRNO_H && __need_Emath]: Define value for EDOM and ERANGE. Should there ever be a Linux port where the numeric values are not 33 and 34 this file must change. Mon Oct 7 13:54:04 1996 Ulrich Drepper <drepper@cygnus.com> * libio/iofgets.c (_IO_fgets): Use _IO_flockfile instead of __flockfile. Mon Oct 7 11:01:45 1996 Andreas Jaeger <aj@arthur.pfalz.de> * string/tst-strlen.c (main): Provide prototype. * malloc/mallocbug.c: Likewise. * io/test-utime.c: Likewise. * sysdeps/generic/crypt-entry.c: Correct typo. Mon Oct 7 13:42:20 1996 Ulrich Drepper <drepper@cygnus.com> * elf/dl-open.c (_dl_open): Check against _dl_sysdep_start to test for libc.a. Checking _DYNAMIC is of no worth here. Suggested by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>. * nss/nss_files/files-parse.c: Define LOOKUP_NAME even if EXTERN_PARSER is defined. Sat Oct 5 17:05:36 1996 Andreas Jaeger <aj@arthur.pfalz.de> * Rules (dep-dummy-lib): Correct prototype for __dummy__. * crypt/md5-crypt.c: Fix typos in comments. * gmon/gmon.c: Provide prototypes. * db/makedb.c: Likewise. * locale/programs/xmalloc.c: Likewise. * stdio-common/bug11.c (main): Likewise. * stdio-common/bug7.c (main): Likewise. * stdio-common/bug8.c (main): Likewise. * stdio-common/bug9.c (main): Likewise. * stdio-common/scanf1.c (main): Likewise. * stdio-common/scanf2.c (main): Likewise. * stdio-common/scanf5.c (main): Likewise. * stdio-common/scanf6.c (main): Likewise. * stdio-common/scanf7.c (main): Likewise. * stdio-common/scanf8.c (main): Likewise. * stdio-common/temptest.c (main): Likewise. * stdio-common/test-fwrite.c (main): Likewise. * stdio-common/tst-printf.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * stdio-common/tstgetln.c (main): Likewise. * stdlib/testmb.c (main): Likewise. * stdio-common/scanf4.c (main): Correct prototype, remove unused variable n. * stdio-common/scanf3.c (main): Correct prototype, change declaration of s to reduce warnings. * stdio-common/bug10.c (main): Likewise. * stdio-common/tfformat.c: Provide prototype, remove unused reference to dump_stats, add braces in sprint_doubles. * stdio-common/tiformat.c: Likewise. * stdio-common/test_rdwr.c (main): Parameter `where' is long in printf call. Mon Oct 7 14:04:26 1996 NIIBE Yutaka <gniibe@mri.co.jp> * sysdeps/unix/sysv/linux/sys/soundcard.h: Fix typo. * shadow/putspent.c: Don't write colon after flag field. * sysdeps/unix/sysv/linux/net/if_ppp.h: New file. Wrapper around kernel header. * sysdeps/unix/sysv/linux/net/ppp-comp.h: Likewise. * sysdeps/unix/sysv/linux/net/ppp_defs.h: Likewise. * sysdeps/unix/sysv/linux/Dist: Mention new files. Mon Oct 7 00:58:19 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/i586/strchr.S: Correct handling of first bytes to get pointer aligned. Reported by Matthias Urlichs <smurf@noris.de>. * sysdeps/posix/euidaccess.c [_LIBC]: Avoid calling get?id functions by using __libc_enable_secure variable. * sysdeps/libm-i387/s_copysignl.S: Correct loading of return value.
1996-10-09 07:39:20 +08:00
sysdep-library-path = \
$(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\
$(filter -Wl$(comma)-rpath-link=%,\
$(sysdep-LDFLAGS)))))
# $(run-via-rtld-prefix) is a command that, when prepended to the name
# of a program built with the newly built library, produces a command
# that, executed on the host for which the library is built, runs that
# program. For tests listed in tests-static or xtests-static, it is
# empty.
run-via-rtld-prefix = \
$(if $(strip $(filter $(notdir $(built-program-file)), \
$(tests-static) $(xtests-static))),, $(rtld-prefix))
else
run-via-rtld-prefix =
endif
Don't require test wrappers to preserve environment variables, use more consistent environment. One wart in the original support for test wrappers for cross testing, as noted in <https://sourceware.org/ml/libc-alpha/2012-10/msg00722.html>, is the requirement for test wrappers to pass a poorly-defined set of environment variables from the build system to the system running the glibc under test. Although some variables are passed explicitly via $(test-wrapper-env), including LD_* variables that simply can't be passed implicitly because of the side effects they'd have on the build system's dynamic linker, others are passed implicitly, including variables such as GCONV_PATH and LOCPATH that could potentially affect the build system's libc (so effectively relying on any such effects not breaking the wrappers). In addition, the code in cross-test-ssh.sh for preserving environment variables is fragile (it depends on how bash formats a list of exported variables, and could well break for multi-line variable definitions where the contents contain things looking like other variable definitions). This patch moves to explicitly passing environment variables via $(test-wrapper-env). Makefile variables that previously used $(test-wrapper) are split up into -before-env and -after-env parts that can be passed separately to the various .sh files used in testing, so those files can then insert environment settings between the two parts. The common default environment settings in make-test-out are made into a separate makefile variable that can also be passed to scripts, rather than many scripts duplicating those settings (for testing an installed glibc, it is desirable to have the GCONV_PATH setting on just one place, so just that one place needs to support it pointing to an installed sysroot instead of the build tree). The default settings are included in the variables such as $(test-program-prefix), so that if tests do not need any non-default settings they can continue to use single variables rather than the split-up variables. Although this patch cleans up LC_ALL=C settings (that being part of the common defaults), various LANG=C and LANGUAGE=C settings remain. Those are generally unnecessary and I propose a subsequent cleanup to remove them. LC_ALL takes precedence over LANG, and while LANGUAGE takes precedence over LC_ALL, it only does so for settings other than LC_ALL=C. So LC_ALL=C on its own is sufficient to ensure the C locale, and anything that gets LC_ALL=C does not need the other settings. While preparing this patch I noticed some tests with .sh files that appeared to do nothing beyond what the generic makefile support for tests can do (localedata/tst-wctype.sh - the makefiles support -ENV variables and .input files - and localedata/tst-mbswcs.sh - just runs five tests that could be run individually from the makefile). So I propose another subsequent cleanup to move those to using the generic support instead of special .sh files. Tested x86_64 (native) and powerpc32 (cross). * Makeconfig (run-program-env): New variable. (run-program-prefix-before-env): Likewise. (run-program-prefix-after-env): Likewise. (run-program-prefix): Define in terms of new variables. (built-program-cmd-before-env): New variable. (built-program-cmd-after-env): Likewise. (built-program-cmd): Define in terms of new variables. (test-program-prefix-before-env): New variable. (test-program-prefix-after-env): Likewise. (test-program-prefix): Define in terms of new variables. (test-program-cmd-before-env): New variable. (test-program-cmd-after-env): Likewise. (test-program-cmd): Define in terms of new variables. * Rules (make-test-out): Use $(run-program-env). * scripts/cross-test-ssh.sh (env_blacklist): Remove variable. (help): Do not mention environment variables. Mention --timeoutfactor option. (timeoutfactor): New variable. (blacklist_exports): Remove function. (exports): Remove variable. (command): Do not include ${exports}. * manual/install.texi (Configuring and compiling): Do not mention test wrappers preserving environment variables. Mention that last assignment to a variable must take precedence. * INSTALL: Regenerated. * benchtests/Makefile (run-bench): Use $(run-program-env). * catgets/Makefile ($(objpfx)test1.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test2.cat): Do not specify environment variables explicitly. ($(objpfx)de/libc.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test-gencat.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)sample.SJIS.cat): Do not specify environment variables explicitly. * catgets/test-gencat.sh: Use test_program_cmd_before_env, run_program_env and test_program_cmd_after_env arguments. * elf/Makefile ($(objpfx)tst-pathopt.out): Use $(run-program-env). * elf/tst-pathopt.sh: Use run_program_env argument. * iconvdata/Makefile ($(objpfx)iconv-test.out): Use $(test-wrapper-env) and $(run-program-env). * iconvdata/run-iconv-test.sh: Use test_wrapper_env and run_program_env arguments. * iconvdata/tst-table.sh: Do not set GCONV_PATH explicitly. * intl/Makefile ($(objpfx)tst-gettext.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-gettext2.out): Likewise. * intl/tst-gettext.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * intl/tst-gettext2.sh: Likewise. * intl/tst-gettext4.sh: Do not set environment variables explicitly. * intl/tst-gettext6.sh: Likewise. * intl/tst-translit.sh: Likewise. * malloc/Makefile ($(objpfx)tst-mtrace.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * malloc/tst-mtrace.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * math/Makefile (run-regen-ulps): Use $(run-program-env). * nptl/Makefile ($(objpfx)tst-tls6.out): Use $(run-program-env). * nptl/tst-tls6.sh: Use run_program_env argument. Set LANG=C explicitly with each use of ${test_wrapper_env}. * posix/Makefile ($(objpfx)wordexp-tst.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * posix/tst-getconf.sh: Do not set environment variables explicitly. * posix/wordexp-tst.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * stdio-common/tst-printf.sh: Do not set environment variables explicitly. * stdlib/Makefile ($(objpfx)tst-fmtmsg.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * stdlib/tst-fmtmsg.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. Split $test calls into $test_pre and $test. * timezone/Makefile (build-testdata): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). localedata/ChangeLog: * Makefile ($(addprefix $(objpfx),$(CTYPE_FILES))): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)sort-test.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-fmon.out): Use $(run-program-prefix-before-env), $(run-program-env) and $(run-program-prefix-after-env). ($(objpfx)tst-locale.out): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)tst-trans.out): Use $(run-program-prefix-before-env), $(run-program-env), $(run-program-prefix-after-env), $(test-program-prefix-before-env) and $(test-program-prefix-after-env). ($(objpfx)tst-ctype.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)tst-wctype.out): Likewise. ($(objpfx)tst-langinfo.out): Likewise. ($(objpfx)tst-langinfo-static.out): Likewise. * gen-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * sort-test.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * tst-ctype.sh: Use tst_ctype_before_env, run_program_env and tst_ctype_after_env arguments. * tst-fmon.sh: Use run_program_prefix_before_env, run_program_env and run_program_prefix_after_env arguments. * tst-langinfo.sh: Use tst_langinfo_before_env, run_program_env and tst_langinfo_after_env arguments. * tst-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * tst-mbswcs.sh: Do not set environment variables explicitly. * tst-numeric.sh: Likewise. * tst-rpmatch.sh: Likewise. * tst-trans.sh: Use run_program_prefix_before_env, run_program_env, run_program_prefix_after_env, test_program_prefix_before_env and test_program_prefix_after_env arguments. * tst-wctype.sh: Use tst_wctype_before_env, run_program_env and tst_wctype_after_env arguments.
2014-06-07 06:19:27 +08:00
# $(run-program-env) is the default environment variable settings to
# use when running a program built with the newly built library.
run-program-env = GCONV_PATH=$(common-objpfx)iconvdata \
LOCPATH=$(common-objpfx)localedata LC_ALL=C
2012-10-25 23:54:16 +08:00
# $(run-program-prefix) is a command that, when prepended to the name
# of a program built with the newly built library, produces a command
# that, executed on the build system on which "make" is run, runs that
Don't require test wrappers to preserve environment variables, use more consistent environment. One wart in the original support for test wrappers for cross testing, as noted in <https://sourceware.org/ml/libc-alpha/2012-10/msg00722.html>, is the requirement for test wrappers to pass a poorly-defined set of environment variables from the build system to the system running the glibc under test. Although some variables are passed explicitly via $(test-wrapper-env), including LD_* variables that simply can't be passed implicitly because of the side effects they'd have on the build system's dynamic linker, others are passed implicitly, including variables such as GCONV_PATH and LOCPATH that could potentially affect the build system's libc (so effectively relying on any such effects not breaking the wrappers). In addition, the code in cross-test-ssh.sh for preserving environment variables is fragile (it depends on how bash formats a list of exported variables, and could well break for multi-line variable definitions where the contents contain things looking like other variable definitions). This patch moves to explicitly passing environment variables via $(test-wrapper-env). Makefile variables that previously used $(test-wrapper) are split up into -before-env and -after-env parts that can be passed separately to the various .sh files used in testing, so those files can then insert environment settings between the two parts. The common default environment settings in make-test-out are made into a separate makefile variable that can also be passed to scripts, rather than many scripts duplicating those settings (for testing an installed glibc, it is desirable to have the GCONV_PATH setting on just one place, so just that one place needs to support it pointing to an installed sysroot instead of the build tree). The default settings are included in the variables such as $(test-program-prefix), so that if tests do not need any non-default settings they can continue to use single variables rather than the split-up variables. Although this patch cleans up LC_ALL=C settings (that being part of the common defaults), various LANG=C and LANGUAGE=C settings remain. Those are generally unnecessary and I propose a subsequent cleanup to remove them. LC_ALL takes precedence over LANG, and while LANGUAGE takes precedence over LC_ALL, it only does so for settings other than LC_ALL=C. So LC_ALL=C on its own is sufficient to ensure the C locale, and anything that gets LC_ALL=C does not need the other settings. While preparing this patch I noticed some tests with .sh files that appeared to do nothing beyond what the generic makefile support for tests can do (localedata/tst-wctype.sh - the makefiles support -ENV variables and .input files - and localedata/tst-mbswcs.sh - just runs five tests that could be run individually from the makefile). So I propose another subsequent cleanup to move those to using the generic support instead of special .sh files. Tested x86_64 (native) and powerpc32 (cross). * Makeconfig (run-program-env): New variable. (run-program-prefix-before-env): Likewise. (run-program-prefix-after-env): Likewise. (run-program-prefix): Define in terms of new variables. (built-program-cmd-before-env): New variable. (built-program-cmd-after-env): Likewise. (built-program-cmd): Define in terms of new variables. (test-program-prefix-before-env): New variable. (test-program-prefix-after-env): Likewise. (test-program-prefix): Define in terms of new variables. (test-program-cmd-before-env): New variable. (test-program-cmd-after-env): Likewise. (test-program-cmd): Define in terms of new variables. * Rules (make-test-out): Use $(run-program-env). * scripts/cross-test-ssh.sh (env_blacklist): Remove variable. (help): Do not mention environment variables. Mention --timeoutfactor option. (timeoutfactor): New variable. (blacklist_exports): Remove function. (exports): Remove variable. (command): Do not include ${exports}. * manual/install.texi (Configuring and compiling): Do not mention test wrappers preserving environment variables. Mention that last assignment to a variable must take precedence. * INSTALL: Regenerated. * benchtests/Makefile (run-bench): Use $(run-program-env). * catgets/Makefile ($(objpfx)test1.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test2.cat): Do not specify environment variables explicitly. ($(objpfx)de/libc.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test-gencat.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)sample.SJIS.cat): Do not specify environment variables explicitly. * catgets/test-gencat.sh: Use test_program_cmd_before_env, run_program_env and test_program_cmd_after_env arguments. * elf/Makefile ($(objpfx)tst-pathopt.out): Use $(run-program-env). * elf/tst-pathopt.sh: Use run_program_env argument. * iconvdata/Makefile ($(objpfx)iconv-test.out): Use $(test-wrapper-env) and $(run-program-env). * iconvdata/run-iconv-test.sh: Use test_wrapper_env and run_program_env arguments. * iconvdata/tst-table.sh: Do not set GCONV_PATH explicitly. * intl/Makefile ($(objpfx)tst-gettext.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-gettext2.out): Likewise. * intl/tst-gettext.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * intl/tst-gettext2.sh: Likewise. * intl/tst-gettext4.sh: Do not set environment variables explicitly. * intl/tst-gettext6.sh: Likewise. * intl/tst-translit.sh: Likewise. * malloc/Makefile ($(objpfx)tst-mtrace.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * malloc/tst-mtrace.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * math/Makefile (run-regen-ulps): Use $(run-program-env). * nptl/Makefile ($(objpfx)tst-tls6.out): Use $(run-program-env). * nptl/tst-tls6.sh: Use run_program_env argument. Set LANG=C explicitly with each use of ${test_wrapper_env}. * posix/Makefile ($(objpfx)wordexp-tst.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * posix/tst-getconf.sh: Do not set environment variables explicitly. * posix/wordexp-tst.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * stdio-common/tst-printf.sh: Do not set environment variables explicitly. * stdlib/Makefile ($(objpfx)tst-fmtmsg.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * stdlib/tst-fmtmsg.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. Split $test calls into $test_pre and $test. * timezone/Makefile (build-testdata): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). localedata/ChangeLog: * Makefile ($(addprefix $(objpfx),$(CTYPE_FILES))): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)sort-test.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-fmon.out): Use $(run-program-prefix-before-env), $(run-program-env) and $(run-program-prefix-after-env). ($(objpfx)tst-locale.out): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)tst-trans.out): Use $(run-program-prefix-before-env), $(run-program-env), $(run-program-prefix-after-env), $(test-program-prefix-before-env) and $(test-program-prefix-after-env). ($(objpfx)tst-ctype.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)tst-wctype.out): Likewise. ($(objpfx)tst-langinfo.out): Likewise. ($(objpfx)tst-langinfo-static.out): Likewise. * gen-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * sort-test.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * tst-ctype.sh: Use tst_ctype_before_env, run_program_env and tst_ctype_after_env arguments. * tst-fmon.sh: Use run_program_prefix_before_env, run_program_env and run_program_prefix_after_env arguments. * tst-langinfo.sh: Use tst_langinfo_before_env, run_program_env and tst_langinfo_after_env arguments. * tst-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * tst-mbswcs.sh: Do not set environment variables explicitly. * tst-numeric.sh: Likewise. * tst-rpmatch.sh: Likewise. * tst-trans.sh: Use run_program_prefix_before_env, run_program_env, run_program_prefix_after_env, test_program_prefix_before_env and test_program_prefix_after_env arguments. * tst-wctype.sh: Use tst_wctype_before_env, run_program_env and tst_wctype_after_env arguments.
2014-06-07 06:19:27 +08:00
# program. $(run-program-prefix-before-env) and
# $(run-program-prefix-after-env) are similar, but separate parts
# before and after a list of environment variables.
run-program-prefix-before-env = $(test-wrapper-env)
run-program-prefix-after-env = $(run-via-rtld-prefix)
run-program-prefix = $(run-program-prefix-before-env) $(run-program-env) \
$(run-program-prefix-after-env)
# $(built-program-cmd) is a command that, executed on the build system
# on which "make" is run, runs the newly built program that is the
# second dependency of the makefile target in which
Don't require test wrappers to preserve environment variables, use more consistent environment. One wart in the original support for test wrappers for cross testing, as noted in <https://sourceware.org/ml/libc-alpha/2012-10/msg00722.html>, is the requirement for test wrappers to pass a poorly-defined set of environment variables from the build system to the system running the glibc under test. Although some variables are passed explicitly via $(test-wrapper-env), including LD_* variables that simply can't be passed implicitly because of the side effects they'd have on the build system's dynamic linker, others are passed implicitly, including variables such as GCONV_PATH and LOCPATH that could potentially affect the build system's libc (so effectively relying on any such effects not breaking the wrappers). In addition, the code in cross-test-ssh.sh for preserving environment variables is fragile (it depends on how bash formats a list of exported variables, and could well break for multi-line variable definitions where the contents contain things looking like other variable definitions). This patch moves to explicitly passing environment variables via $(test-wrapper-env). Makefile variables that previously used $(test-wrapper) are split up into -before-env and -after-env parts that can be passed separately to the various .sh files used in testing, so those files can then insert environment settings between the two parts. The common default environment settings in make-test-out are made into a separate makefile variable that can also be passed to scripts, rather than many scripts duplicating those settings (for testing an installed glibc, it is desirable to have the GCONV_PATH setting on just one place, so just that one place needs to support it pointing to an installed sysroot instead of the build tree). The default settings are included in the variables such as $(test-program-prefix), so that if tests do not need any non-default settings they can continue to use single variables rather than the split-up variables. Although this patch cleans up LC_ALL=C settings (that being part of the common defaults), various LANG=C and LANGUAGE=C settings remain. Those are generally unnecessary and I propose a subsequent cleanup to remove them. LC_ALL takes precedence over LANG, and while LANGUAGE takes precedence over LC_ALL, it only does so for settings other than LC_ALL=C. So LC_ALL=C on its own is sufficient to ensure the C locale, and anything that gets LC_ALL=C does not need the other settings. While preparing this patch I noticed some tests with .sh files that appeared to do nothing beyond what the generic makefile support for tests can do (localedata/tst-wctype.sh - the makefiles support -ENV variables and .input files - and localedata/tst-mbswcs.sh - just runs five tests that could be run individually from the makefile). So I propose another subsequent cleanup to move those to using the generic support instead of special .sh files. Tested x86_64 (native) and powerpc32 (cross). * Makeconfig (run-program-env): New variable. (run-program-prefix-before-env): Likewise. (run-program-prefix-after-env): Likewise. (run-program-prefix): Define in terms of new variables. (built-program-cmd-before-env): New variable. (built-program-cmd-after-env): Likewise. (built-program-cmd): Define in terms of new variables. (test-program-prefix-before-env): New variable. (test-program-prefix-after-env): Likewise. (test-program-prefix): Define in terms of new variables. (test-program-cmd-before-env): New variable. (test-program-cmd-after-env): Likewise. (test-program-cmd): Define in terms of new variables. * Rules (make-test-out): Use $(run-program-env). * scripts/cross-test-ssh.sh (env_blacklist): Remove variable. (help): Do not mention environment variables. Mention --timeoutfactor option. (timeoutfactor): New variable. (blacklist_exports): Remove function. (exports): Remove variable. (command): Do not include ${exports}. * manual/install.texi (Configuring and compiling): Do not mention test wrappers preserving environment variables. Mention that last assignment to a variable must take precedence. * INSTALL: Regenerated. * benchtests/Makefile (run-bench): Use $(run-program-env). * catgets/Makefile ($(objpfx)test1.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test2.cat): Do not specify environment variables explicitly. ($(objpfx)de/libc.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test-gencat.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)sample.SJIS.cat): Do not specify environment variables explicitly. * catgets/test-gencat.sh: Use test_program_cmd_before_env, run_program_env and test_program_cmd_after_env arguments. * elf/Makefile ($(objpfx)tst-pathopt.out): Use $(run-program-env). * elf/tst-pathopt.sh: Use run_program_env argument. * iconvdata/Makefile ($(objpfx)iconv-test.out): Use $(test-wrapper-env) and $(run-program-env). * iconvdata/run-iconv-test.sh: Use test_wrapper_env and run_program_env arguments. * iconvdata/tst-table.sh: Do not set GCONV_PATH explicitly. * intl/Makefile ($(objpfx)tst-gettext.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-gettext2.out): Likewise. * intl/tst-gettext.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * intl/tst-gettext2.sh: Likewise. * intl/tst-gettext4.sh: Do not set environment variables explicitly. * intl/tst-gettext6.sh: Likewise. * intl/tst-translit.sh: Likewise. * malloc/Makefile ($(objpfx)tst-mtrace.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * malloc/tst-mtrace.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * math/Makefile (run-regen-ulps): Use $(run-program-env). * nptl/Makefile ($(objpfx)tst-tls6.out): Use $(run-program-env). * nptl/tst-tls6.sh: Use run_program_env argument. Set LANG=C explicitly with each use of ${test_wrapper_env}. * posix/Makefile ($(objpfx)wordexp-tst.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * posix/tst-getconf.sh: Do not set environment variables explicitly. * posix/wordexp-tst.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * stdio-common/tst-printf.sh: Do not set environment variables explicitly. * stdlib/Makefile ($(objpfx)tst-fmtmsg.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * stdlib/tst-fmtmsg.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. Split $test calls into $test_pre and $test. * timezone/Makefile (build-testdata): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). localedata/ChangeLog: * Makefile ($(addprefix $(objpfx),$(CTYPE_FILES))): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)sort-test.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-fmon.out): Use $(run-program-prefix-before-env), $(run-program-env) and $(run-program-prefix-after-env). ($(objpfx)tst-locale.out): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)tst-trans.out): Use $(run-program-prefix-before-env), $(run-program-env), $(run-program-prefix-after-env), $(test-program-prefix-before-env) and $(test-program-prefix-after-env). ($(objpfx)tst-ctype.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)tst-wctype.out): Likewise. ($(objpfx)tst-langinfo.out): Likewise. ($(objpfx)tst-langinfo-static.out): Likewise. * gen-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * sort-test.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * tst-ctype.sh: Use tst_ctype_before_env, run_program_env and tst_ctype_after_env arguments. * tst-fmon.sh: Use run_program_prefix_before_env, run_program_env and run_program_prefix_after_env arguments. * tst-langinfo.sh: Use tst_langinfo_before_env, run_program_env and tst_langinfo_after_env arguments. * tst-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * tst-mbswcs.sh: Do not set environment variables explicitly. * tst-numeric.sh: Likewise. * tst-rpmatch.sh: Likewise. * tst-trans.sh: Use run_program_prefix_before_env, run_program_env, run_program_prefix_after_env, test_program_prefix_before_env and test_program_prefix_after_env arguments. * tst-wctype.sh: Use tst_wctype_before_env, run_program_env and tst_wctype_after_env arguments.
2014-06-07 06:19:27 +08:00
# $(built-program-cmd) is used. $(built-program-cmd-before-env) and
# $(built-program-cmd-after-env) are similar, before and after a list
# of environment variables.
built-program-cmd-before-env = $(test-wrapper-env)
built-program-cmd-after-env = $(run-via-rtld-prefix) $(built-program-file)
built-program-cmd = $(built-program-cmd-before-env) $(run-program-env) \
$(built-program-cmd-after-env)
2012-10-24 06:49:59 +08:00
# $(host-built-program-cmd) is a command that, executed on the host
# for which the library is built, runs the newly built program that is
# the second dependency of the makefile target in which
# $(host-built-program-cmd) is used.
host-built-program-cmd = $(run-via-rtld-prefix) $(built-program-file)
# $(ld-library-path) is the common content to be set in LD_LIBRARY_PATH
# for running static binaries that may load dynamic objects.
ld-library-path = $(objpfx):$(common-objpfx)$(addprefix :,$(sysdep-ld-library-path))
1995-02-18 09:27:10 +08:00
ifndef LD
LD := ld -X
endif
# $(test-via-rtld-prefix) is a command that, when prepended to the name
# of a test program built with the newly built library, produces a command
# that, executed on the host for which the library is built, runs that
# program. For tests listed in tests-static or xtests-static as well
# as when test programs are hardcoded to the newly built libraries, it
# is empty.
# $(test-program-prefix) is a command that, when prepended to the name
# of a test program built with the newly built library, produces a command
# that, executed on the build system on which "make" is run, runs that
Don't require test wrappers to preserve environment variables, use more consistent environment. One wart in the original support for test wrappers for cross testing, as noted in <https://sourceware.org/ml/libc-alpha/2012-10/msg00722.html>, is the requirement for test wrappers to pass a poorly-defined set of environment variables from the build system to the system running the glibc under test. Although some variables are passed explicitly via $(test-wrapper-env), including LD_* variables that simply can't be passed implicitly because of the side effects they'd have on the build system's dynamic linker, others are passed implicitly, including variables such as GCONV_PATH and LOCPATH that could potentially affect the build system's libc (so effectively relying on any such effects not breaking the wrappers). In addition, the code in cross-test-ssh.sh for preserving environment variables is fragile (it depends on how bash formats a list of exported variables, and could well break for multi-line variable definitions where the contents contain things looking like other variable definitions). This patch moves to explicitly passing environment variables via $(test-wrapper-env). Makefile variables that previously used $(test-wrapper) are split up into -before-env and -after-env parts that can be passed separately to the various .sh files used in testing, so those files can then insert environment settings between the two parts. The common default environment settings in make-test-out are made into a separate makefile variable that can also be passed to scripts, rather than many scripts duplicating those settings (for testing an installed glibc, it is desirable to have the GCONV_PATH setting on just one place, so just that one place needs to support it pointing to an installed sysroot instead of the build tree). The default settings are included in the variables such as $(test-program-prefix), so that if tests do not need any non-default settings they can continue to use single variables rather than the split-up variables. Although this patch cleans up LC_ALL=C settings (that being part of the common defaults), various LANG=C and LANGUAGE=C settings remain. Those are generally unnecessary and I propose a subsequent cleanup to remove them. LC_ALL takes precedence over LANG, and while LANGUAGE takes precedence over LC_ALL, it only does so for settings other than LC_ALL=C. So LC_ALL=C on its own is sufficient to ensure the C locale, and anything that gets LC_ALL=C does not need the other settings. While preparing this patch I noticed some tests with .sh files that appeared to do nothing beyond what the generic makefile support for tests can do (localedata/tst-wctype.sh - the makefiles support -ENV variables and .input files - and localedata/tst-mbswcs.sh - just runs five tests that could be run individually from the makefile). So I propose another subsequent cleanup to move those to using the generic support instead of special .sh files. Tested x86_64 (native) and powerpc32 (cross). * Makeconfig (run-program-env): New variable. (run-program-prefix-before-env): Likewise. (run-program-prefix-after-env): Likewise. (run-program-prefix): Define in terms of new variables. (built-program-cmd-before-env): New variable. (built-program-cmd-after-env): Likewise. (built-program-cmd): Define in terms of new variables. (test-program-prefix-before-env): New variable. (test-program-prefix-after-env): Likewise. (test-program-prefix): Define in terms of new variables. (test-program-cmd-before-env): New variable. (test-program-cmd-after-env): Likewise. (test-program-cmd): Define in terms of new variables. * Rules (make-test-out): Use $(run-program-env). * scripts/cross-test-ssh.sh (env_blacklist): Remove variable. (help): Do not mention environment variables. Mention --timeoutfactor option. (timeoutfactor): New variable. (blacklist_exports): Remove function. (exports): Remove variable. (command): Do not include ${exports}. * manual/install.texi (Configuring and compiling): Do not mention test wrappers preserving environment variables. Mention that last assignment to a variable must take precedence. * INSTALL: Regenerated. * benchtests/Makefile (run-bench): Use $(run-program-env). * catgets/Makefile ($(objpfx)test1.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test2.cat): Do not specify environment variables explicitly. ($(objpfx)de/libc.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test-gencat.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)sample.SJIS.cat): Do not specify environment variables explicitly. * catgets/test-gencat.sh: Use test_program_cmd_before_env, run_program_env and test_program_cmd_after_env arguments. * elf/Makefile ($(objpfx)tst-pathopt.out): Use $(run-program-env). * elf/tst-pathopt.sh: Use run_program_env argument. * iconvdata/Makefile ($(objpfx)iconv-test.out): Use $(test-wrapper-env) and $(run-program-env). * iconvdata/run-iconv-test.sh: Use test_wrapper_env and run_program_env arguments. * iconvdata/tst-table.sh: Do not set GCONV_PATH explicitly. * intl/Makefile ($(objpfx)tst-gettext.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-gettext2.out): Likewise. * intl/tst-gettext.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * intl/tst-gettext2.sh: Likewise. * intl/tst-gettext4.sh: Do not set environment variables explicitly. * intl/tst-gettext6.sh: Likewise. * intl/tst-translit.sh: Likewise. * malloc/Makefile ($(objpfx)tst-mtrace.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * malloc/tst-mtrace.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * math/Makefile (run-regen-ulps): Use $(run-program-env). * nptl/Makefile ($(objpfx)tst-tls6.out): Use $(run-program-env). * nptl/tst-tls6.sh: Use run_program_env argument. Set LANG=C explicitly with each use of ${test_wrapper_env}. * posix/Makefile ($(objpfx)wordexp-tst.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * posix/tst-getconf.sh: Do not set environment variables explicitly. * posix/wordexp-tst.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * stdio-common/tst-printf.sh: Do not set environment variables explicitly. * stdlib/Makefile ($(objpfx)tst-fmtmsg.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * stdlib/tst-fmtmsg.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. Split $test calls into $test_pre and $test. * timezone/Makefile (build-testdata): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). localedata/ChangeLog: * Makefile ($(addprefix $(objpfx),$(CTYPE_FILES))): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)sort-test.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-fmon.out): Use $(run-program-prefix-before-env), $(run-program-env) and $(run-program-prefix-after-env). ($(objpfx)tst-locale.out): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)tst-trans.out): Use $(run-program-prefix-before-env), $(run-program-env), $(run-program-prefix-after-env), $(test-program-prefix-before-env) and $(test-program-prefix-after-env). ($(objpfx)tst-ctype.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)tst-wctype.out): Likewise. ($(objpfx)tst-langinfo.out): Likewise. ($(objpfx)tst-langinfo-static.out): Likewise. * gen-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * sort-test.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * tst-ctype.sh: Use tst_ctype_before_env, run_program_env and tst_ctype_after_env arguments. * tst-fmon.sh: Use run_program_prefix_before_env, run_program_env and run_program_prefix_after_env arguments. * tst-langinfo.sh: Use tst_langinfo_before_env, run_program_env and tst_langinfo_after_env arguments. * tst-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * tst-mbswcs.sh: Do not set environment variables explicitly. * tst-numeric.sh: Likewise. * tst-rpmatch.sh: Likewise. * tst-trans.sh: Use run_program_prefix_before_env, run_program_env, run_program_prefix_after_env, test_program_prefix_before_env and test_program_prefix_after_env arguments. * tst-wctype.sh: Use tst_wctype_before_env, run_program_env and tst_wctype_after_env arguments.
2014-06-07 06:19:27 +08:00
# test program. $(test-program-prefix-before-env) and
# $(test-program-prefix-after-env) are similar, before and after a
# list of environment variables.
# $(test-program-cmd) is a command that, executed on the build system
# on which "make" is run, runs the newly built test program that is the
# second dependency of the makefile target in which
Don't require test wrappers to preserve environment variables, use more consistent environment. One wart in the original support for test wrappers for cross testing, as noted in <https://sourceware.org/ml/libc-alpha/2012-10/msg00722.html>, is the requirement for test wrappers to pass a poorly-defined set of environment variables from the build system to the system running the glibc under test. Although some variables are passed explicitly via $(test-wrapper-env), including LD_* variables that simply can't be passed implicitly because of the side effects they'd have on the build system's dynamic linker, others are passed implicitly, including variables such as GCONV_PATH and LOCPATH that could potentially affect the build system's libc (so effectively relying on any such effects not breaking the wrappers). In addition, the code in cross-test-ssh.sh for preserving environment variables is fragile (it depends on how bash formats a list of exported variables, and could well break for multi-line variable definitions where the contents contain things looking like other variable definitions). This patch moves to explicitly passing environment variables via $(test-wrapper-env). Makefile variables that previously used $(test-wrapper) are split up into -before-env and -after-env parts that can be passed separately to the various .sh files used in testing, so those files can then insert environment settings between the two parts. The common default environment settings in make-test-out are made into a separate makefile variable that can also be passed to scripts, rather than many scripts duplicating those settings (for testing an installed glibc, it is desirable to have the GCONV_PATH setting on just one place, so just that one place needs to support it pointing to an installed sysroot instead of the build tree). The default settings are included in the variables such as $(test-program-prefix), so that if tests do not need any non-default settings they can continue to use single variables rather than the split-up variables. Although this patch cleans up LC_ALL=C settings (that being part of the common defaults), various LANG=C and LANGUAGE=C settings remain. Those are generally unnecessary and I propose a subsequent cleanup to remove them. LC_ALL takes precedence over LANG, and while LANGUAGE takes precedence over LC_ALL, it only does so for settings other than LC_ALL=C. So LC_ALL=C on its own is sufficient to ensure the C locale, and anything that gets LC_ALL=C does not need the other settings. While preparing this patch I noticed some tests with .sh files that appeared to do nothing beyond what the generic makefile support for tests can do (localedata/tst-wctype.sh - the makefiles support -ENV variables and .input files - and localedata/tst-mbswcs.sh - just runs five tests that could be run individually from the makefile). So I propose another subsequent cleanup to move those to using the generic support instead of special .sh files. Tested x86_64 (native) and powerpc32 (cross). * Makeconfig (run-program-env): New variable. (run-program-prefix-before-env): Likewise. (run-program-prefix-after-env): Likewise. (run-program-prefix): Define in terms of new variables. (built-program-cmd-before-env): New variable. (built-program-cmd-after-env): Likewise. (built-program-cmd): Define in terms of new variables. (test-program-prefix-before-env): New variable. (test-program-prefix-after-env): Likewise. (test-program-prefix): Define in terms of new variables. (test-program-cmd-before-env): New variable. (test-program-cmd-after-env): Likewise. (test-program-cmd): Define in terms of new variables. * Rules (make-test-out): Use $(run-program-env). * scripts/cross-test-ssh.sh (env_blacklist): Remove variable. (help): Do not mention environment variables. Mention --timeoutfactor option. (timeoutfactor): New variable. (blacklist_exports): Remove function. (exports): Remove variable. (command): Do not include ${exports}. * manual/install.texi (Configuring and compiling): Do not mention test wrappers preserving environment variables. Mention that last assignment to a variable must take precedence. * INSTALL: Regenerated. * benchtests/Makefile (run-bench): Use $(run-program-env). * catgets/Makefile ($(objpfx)test1.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test2.cat): Do not specify environment variables explicitly. ($(objpfx)de/libc.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test-gencat.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)sample.SJIS.cat): Do not specify environment variables explicitly. * catgets/test-gencat.sh: Use test_program_cmd_before_env, run_program_env and test_program_cmd_after_env arguments. * elf/Makefile ($(objpfx)tst-pathopt.out): Use $(run-program-env). * elf/tst-pathopt.sh: Use run_program_env argument. * iconvdata/Makefile ($(objpfx)iconv-test.out): Use $(test-wrapper-env) and $(run-program-env). * iconvdata/run-iconv-test.sh: Use test_wrapper_env and run_program_env arguments. * iconvdata/tst-table.sh: Do not set GCONV_PATH explicitly. * intl/Makefile ($(objpfx)tst-gettext.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-gettext2.out): Likewise. * intl/tst-gettext.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * intl/tst-gettext2.sh: Likewise. * intl/tst-gettext4.sh: Do not set environment variables explicitly. * intl/tst-gettext6.sh: Likewise. * intl/tst-translit.sh: Likewise. * malloc/Makefile ($(objpfx)tst-mtrace.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * malloc/tst-mtrace.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * math/Makefile (run-regen-ulps): Use $(run-program-env). * nptl/Makefile ($(objpfx)tst-tls6.out): Use $(run-program-env). * nptl/tst-tls6.sh: Use run_program_env argument. Set LANG=C explicitly with each use of ${test_wrapper_env}. * posix/Makefile ($(objpfx)wordexp-tst.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * posix/tst-getconf.sh: Do not set environment variables explicitly. * posix/wordexp-tst.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * stdio-common/tst-printf.sh: Do not set environment variables explicitly. * stdlib/Makefile ($(objpfx)tst-fmtmsg.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * stdlib/tst-fmtmsg.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. Split $test calls into $test_pre and $test. * timezone/Makefile (build-testdata): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). localedata/ChangeLog: * Makefile ($(addprefix $(objpfx),$(CTYPE_FILES))): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)sort-test.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-fmon.out): Use $(run-program-prefix-before-env), $(run-program-env) and $(run-program-prefix-after-env). ($(objpfx)tst-locale.out): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)tst-trans.out): Use $(run-program-prefix-before-env), $(run-program-env), $(run-program-prefix-after-env), $(test-program-prefix-before-env) and $(test-program-prefix-after-env). ($(objpfx)tst-ctype.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)tst-wctype.out): Likewise. ($(objpfx)tst-langinfo.out): Likewise. ($(objpfx)tst-langinfo-static.out): Likewise. * gen-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * sort-test.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * tst-ctype.sh: Use tst_ctype_before_env, run_program_env and tst_ctype_after_env arguments. * tst-fmon.sh: Use run_program_prefix_before_env, run_program_env and run_program_prefix_after_env arguments. * tst-langinfo.sh: Use tst_langinfo_before_env, run_program_env and tst_langinfo_after_env arguments. * tst-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * tst-mbswcs.sh: Do not set environment variables explicitly. * tst-numeric.sh: Likewise. * tst-rpmatch.sh: Likewise. * tst-trans.sh: Use run_program_prefix_before_env, run_program_env, run_program_prefix_after_env, test_program_prefix_before_env and test_program_prefix_after_env arguments. * tst-wctype.sh: Use tst_wctype_before_env, run_program_env and tst_wctype_after_env arguments.
2014-06-07 06:19:27 +08:00
# $(test-program-cmd) is used. $(test-program-cmd-before-env) and
# $(test-program-cmd-after-env) are similar, before and after a list
# of environment variables.
# $(host-test-program-cmd) is a command that, executed on the host
# for which the library is built, runs the newly built test program that
# is the second dependency of the makefile target in which
# $(host-test-program-cmd) is used.
ifeq (yes,$(build-hardcoded-path-in-tests))
test-via-rtld-prefix =
Don't require test wrappers to preserve environment variables, use more consistent environment. One wart in the original support for test wrappers for cross testing, as noted in <https://sourceware.org/ml/libc-alpha/2012-10/msg00722.html>, is the requirement for test wrappers to pass a poorly-defined set of environment variables from the build system to the system running the glibc under test. Although some variables are passed explicitly via $(test-wrapper-env), including LD_* variables that simply can't be passed implicitly because of the side effects they'd have on the build system's dynamic linker, others are passed implicitly, including variables such as GCONV_PATH and LOCPATH that could potentially affect the build system's libc (so effectively relying on any such effects not breaking the wrappers). In addition, the code in cross-test-ssh.sh for preserving environment variables is fragile (it depends on how bash formats a list of exported variables, and could well break for multi-line variable definitions where the contents contain things looking like other variable definitions). This patch moves to explicitly passing environment variables via $(test-wrapper-env). Makefile variables that previously used $(test-wrapper) are split up into -before-env and -after-env parts that can be passed separately to the various .sh files used in testing, so those files can then insert environment settings between the two parts. The common default environment settings in make-test-out are made into a separate makefile variable that can also be passed to scripts, rather than many scripts duplicating those settings (for testing an installed glibc, it is desirable to have the GCONV_PATH setting on just one place, so just that one place needs to support it pointing to an installed sysroot instead of the build tree). The default settings are included in the variables such as $(test-program-prefix), so that if tests do not need any non-default settings they can continue to use single variables rather than the split-up variables. Although this patch cleans up LC_ALL=C settings (that being part of the common defaults), various LANG=C and LANGUAGE=C settings remain. Those are generally unnecessary and I propose a subsequent cleanup to remove them. LC_ALL takes precedence over LANG, and while LANGUAGE takes precedence over LC_ALL, it only does so for settings other than LC_ALL=C. So LC_ALL=C on its own is sufficient to ensure the C locale, and anything that gets LC_ALL=C does not need the other settings. While preparing this patch I noticed some tests with .sh files that appeared to do nothing beyond what the generic makefile support for tests can do (localedata/tst-wctype.sh - the makefiles support -ENV variables and .input files - and localedata/tst-mbswcs.sh - just runs five tests that could be run individually from the makefile). So I propose another subsequent cleanup to move those to using the generic support instead of special .sh files. Tested x86_64 (native) and powerpc32 (cross). * Makeconfig (run-program-env): New variable. (run-program-prefix-before-env): Likewise. (run-program-prefix-after-env): Likewise. (run-program-prefix): Define in terms of new variables. (built-program-cmd-before-env): New variable. (built-program-cmd-after-env): Likewise. (built-program-cmd): Define in terms of new variables. (test-program-prefix-before-env): New variable. (test-program-prefix-after-env): Likewise. (test-program-prefix): Define in terms of new variables. (test-program-cmd-before-env): New variable. (test-program-cmd-after-env): Likewise. (test-program-cmd): Define in terms of new variables. * Rules (make-test-out): Use $(run-program-env). * scripts/cross-test-ssh.sh (env_blacklist): Remove variable. (help): Do not mention environment variables. Mention --timeoutfactor option. (timeoutfactor): New variable. (blacklist_exports): Remove function. (exports): Remove variable. (command): Do not include ${exports}. * manual/install.texi (Configuring and compiling): Do not mention test wrappers preserving environment variables. Mention that last assignment to a variable must take precedence. * INSTALL: Regenerated. * benchtests/Makefile (run-bench): Use $(run-program-env). * catgets/Makefile ($(objpfx)test1.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test2.cat): Do not specify environment variables explicitly. ($(objpfx)de/libc.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test-gencat.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)sample.SJIS.cat): Do not specify environment variables explicitly. * catgets/test-gencat.sh: Use test_program_cmd_before_env, run_program_env and test_program_cmd_after_env arguments. * elf/Makefile ($(objpfx)tst-pathopt.out): Use $(run-program-env). * elf/tst-pathopt.sh: Use run_program_env argument. * iconvdata/Makefile ($(objpfx)iconv-test.out): Use $(test-wrapper-env) and $(run-program-env). * iconvdata/run-iconv-test.sh: Use test_wrapper_env and run_program_env arguments. * iconvdata/tst-table.sh: Do not set GCONV_PATH explicitly. * intl/Makefile ($(objpfx)tst-gettext.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-gettext2.out): Likewise. * intl/tst-gettext.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * intl/tst-gettext2.sh: Likewise. * intl/tst-gettext4.sh: Do not set environment variables explicitly. * intl/tst-gettext6.sh: Likewise. * intl/tst-translit.sh: Likewise. * malloc/Makefile ($(objpfx)tst-mtrace.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * malloc/tst-mtrace.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * math/Makefile (run-regen-ulps): Use $(run-program-env). * nptl/Makefile ($(objpfx)tst-tls6.out): Use $(run-program-env). * nptl/tst-tls6.sh: Use run_program_env argument. Set LANG=C explicitly with each use of ${test_wrapper_env}. * posix/Makefile ($(objpfx)wordexp-tst.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * posix/tst-getconf.sh: Do not set environment variables explicitly. * posix/wordexp-tst.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * stdio-common/tst-printf.sh: Do not set environment variables explicitly. * stdlib/Makefile ($(objpfx)tst-fmtmsg.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * stdlib/tst-fmtmsg.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. Split $test calls into $test_pre and $test. * timezone/Makefile (build-testdata): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). localedata/ChangeLog: * Makefile ($(addprefix $(objpfx),$(CTYPE_FILES))): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)sort-test.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-fmon.out): Use $(run-program-prefix-before-env), $(run-program-env) and $(run-program-prefix-after-env). ($(objpfx)tst-locale.out): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)tst-trans.out): Use $(run-program-prefix-before-env), $(run-program-env), $(run-program-prefix-after-env), $(test-program-prefix-before-env) and $(test-program-prefix-after-env). ($(objpfx)tst-ctype.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)tst-wctype.out): Likewise. ($(objpfx)tst-langinfo.out): Likewise. ($(objpfx)tst-langinfo-static.out): Likewise. * gen-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * sort-test.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * tst-ctype.sh: Use tst_ctype_before_env, run_program_env and tst_ctype_after_env arguments. * tst-fmon.sh: Use run_program_prefix_before_env, run_program_env and run_program_prefix_after_env arguments. * tst-langinfo.sh: Use tst_langinfo_before_env, run_program_env and tst_langinfo_after_env arguments. * tst-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * tst-mbswcs.sh: Do not set environment variables explicitly. * tst-numeric.sh: Likewise. * tst-rpmatch.sh: Likewise. * tst-trans.sh: Use run_program_prefix_before_env, run_program_env, run_program_prefix_after_env, test_program_prefix_before_env and test_program_prefix_after_env arguments. * tst-wctype.sh: Use tst_wctype_before_env, run_program_env and tst_wctype_after_env arguments.
2014-06-07 06:19:27 +08:00
test-program-prefix-before-env = $(test-wrapper-env)
test-program-prefix-after-env =
test-program-prefix = $(test-program-prefix-before-env) $(run-program-env) \
$(test-program-prefix-after-env)
test-program-cmd-before-env = $(test-wrapper-env)
test-program-cmd-after-env = $(built-program-file)
test-program-cmd = $(test-program-cmd-before-env) $(run-program-env) \
$(test-program-cmd-after-env)
host-test-program-cmd = $(built-program-file)
else
test-via-rtld-prefix = $(run-via-rtld-prefix)
Don't require test wrappers to preserve environment variables, use more consistent environment. One wart in the original support for test wrappers for cross testing, as noted in <https://sourceware.org/ml/libc-alpha/2012-10/msg00722.html>, is the requirement for test wrappers to pass a poorly-defined set of environment variables from the build system to the system running the glibc under test. Although some variables are passed explicitly via $(test-wrapper-env), including LD_* variables that simply can't be passed implicitly because of the side effects they'd have on the build system's dynamic linker, others are passed implicitly, including variables such as GCONV_PATH and LOCPATH that could potentially affect the build system's libc (so effectively relying on any such effects not breaking the wrappers). In addition, the code in cross-test-ssh.sh for preserving environment variables is fragile (it depends on how bash formats a list of exported variables, and could well break for multi-line variable definitions where the contents contain things looking like other variable definitions). This patch moves to explicitly passing environment variables via $(test-wrapper-env). Makefile variables that previously used $(test-wrapper) are split up into -before-env and -after-env parts that can be passed separately to the various .sh files used in testing, so those files can then insert environment settings between the two parts. The common default environment settings in make-test-out are made into a separate makefile variable that can also be passed to scripts, rather than many scripts duplicating those settings (for testing an installed glibc, it is desirable to have the GCONV_PATH setting on just one place, so just that one place needs to support it pointing to an installed sysroot instead of the build tree). The default settings are included in the variables such as $(test-program-prefix), so that if tests do not need any non-default settings they can continue to use single variables rather than the split-up variables. Although this patch cleans up LC_ALL=C settings (that being part of the common defaults), various LANG=C and LANGUAGE=C settings remain. Those are generally unnecessary and I propose a subsequent cleanup to remove them. LC_ALL takes precedence over LANG, and while LANGUAGE takes precedence over LC_ALL, it only does so for settings other than LC_ALL=C. So LC_ALL=C on its own is sufficient to ensure the C locale, and anything that gets LC_ALL=C does not need the other settings. While preparing this patch I noticed some tests with .sh files that appeared to do nothing beyond what the generic makefile support for tests can do (localedata/tst-wctype.sh - the makefiles support -ENV variables and .input files - and localedata/tst-mbswcs.sh - just runs five tests that could be run individually from the makefile). So I propose another subsequent cleanup to move those to using the generic support instead of special .sh files. Tested x86_64 (native) and powerpc32 (cross). * Makeconfig (run-program-env): New variable. (run-program-prefix-before-env): Likewise. (run-program-prefix-after-env): Likewise. (run-program-prefix): Define in terms of new variables. (built-program-cmd-before-env): New variable. (built-program-cmd-after-env): Likewise. (built-program-cmd): Define in terms of new variables. (test-program-prefix-before-env): New variable. (test-program-prefix-after-env): Likewise. (test-program-prefix): Define in terms of new variables. (test-program-cmd-before-env): New variable. (test-program-cmd-after-env): Likewise. (test-program-cmd): Define in terms of new variables. * Rules (make-test-out): Use $(run-program-env). * scripts/cross-test-ssh.sh (env_blacklist): Remove variable. (help): Do not mention environment variables. Mention --timeoutfactor option. (timeoutfactor): New variable. (blacklist_exports): Remove function. (exports): Remove variable. (command): Do not include ${exports}. * manual/install.texi (Configuring and compiling): Do not mention test wrappers preserving environment variables. Mention that last assignment to a variable must take precedence. * INSTALL: Regenerated. * benchtests/Makefile (run-bench): Use $(run-program-env). * catgets/Makefile ($(objpfx)test1.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test2.cat): Do not specify environment variables explicitly. ($(objpfx)de/libc.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test-gencat.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)sample.SJIS.cat): Do not specify environment variables explicitly. * catgets/test-gencat.sh: Use test_program_cmd_before_env, run_program_env and test_program_cmd_after_env arguments. * elf/Makefile ($(objpfx)tst-pathopt.out): Use $(run-program-env). * elf/tst-pathopt.sh: Use run_program_env argument. * iconvdata/Makefile ($(objpfx)iconv-test.out): Use $(test-wrapper-env) and $(run-program-env). * iconvdata/run-iconv-test.sh: Use test_wrapper_env and run_program_env arguments. * iconvdata/tst-table.sh: Do not set GCONV_PATH explicitly. * intl/Makefile ($(objpfx)tst-gettext.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-gettext2.out): Likewise. * intl/tst-gettext.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * intl/tst-gettext2.sh: Likewise. * intl/tst-gettext4.sh: Do not set environment variables explicitly. * intl/tst-gettext6.sh: Likewise. * intl/tst-translit.sh: Likewise. * malloc/Makefile ($(objpfx)tst-mtrace.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * malloc/tst-mtrace.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * math/Makefile (run-regen-ulps): Use $(run-program-env). * nptl/Makefile ($(objpfx)tst-tls6.out): Use $(run-program-env). * nptl/tst-tls6.sh: Use run_program_env argument. Set LANG=C explicitly with each use of ${test_wrapper_env}. * posix/Makefile ($(objpfx)wordexp-tst.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * posix/tst-getconf.sh: Do not set environment variables explicitly. * posix/wordexp-tst.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * stdio-common/tst-printf.sh: Do not set environment variables explicitly. * stdlib/Makefile ($(objpfx)tst-fmtmsg.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * stdlib/tst-fmtmsg.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. Split $test calls into $test_pre and $test. * timezone/Makefile (build-testdata): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). localedata/ChangeLog: * Makefile ($(addprefix $(objpfx),$(CTYPE_FILES))): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)sort-test.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-fmon.out): Use $(run-program-prefix-before-env), $(run-program-env) and $(run-program-prefix-after-env). ($(objpfx)tst-locale.out): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)tst-trans.out): Use $(run-program-prefix-before-env), $(run-program-env), $(run-program-prefix-after-env), $(test-program-prefix-before-env) and $(test-program-prefix-after-env). ($(objpfx)tst-ctype.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)tst-wctype.out): Likewise. ($(objpfx)tst-langinfo.out): Likewise. ($(objpfx)tst-langinfo-static.out): Likewise. * gen-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * sort-test.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * tst-ctype.sh: Use tst_ctype_before_env, run_program_env and tst_ctype_after_env arguments. * tst-fmon.sh: Use run_program_prefix_before_env, run_program_env and run_program_prefix_after_env arguments. * tst-langinfo.sh: Use tst_langinfo_before_env, run_program_env and tst_langinfo_after_env arguments. * tst-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * tst-mbswcs.sh: Do not set environment variables explicitly. * tst-numeric.sh: Likewise. * tst-rpmatch.sh: Likewise. * tst-trans.sh: Use run_program_prefix_before_env, run_program_env, run_program_prefix_after_env, test_program_prefix_before_env and test_program_prefix_after_env arguments. * tst-wctype.sh: Use tst_wctype_before_env, run_program_env and tst_wctype_after_env arguments.
2014-06-07 06:19:27 +08:00
test-program-prefix-before-env = $(run-program-prefix-before-env)
test-program-prefix-after-env = $(run-program-prefix-after-env)
test-program-prefix = $(run-program-prefix)
Don't require test wrappers to preserve environment variables, use more consistent environment. One wart in the original support for test wrappers for cross testing, as noted in <https://sourceware.org/ml/libc-alpha/2012-10/msg00722.html>, is the requirement for test wrappers to pass a poorly-defined set of environment variables from the build system to the system running the glibc under test. Although some variables are passed explicitly via $(test-wrapper-env), including LD_* variables that simply can't be passed implicitly because of the side effects they'd have on the build system's dynamic linker, others are passed implicitly, including variables such as GCONV_PATH and LOCPATH that could potentially affect the build system's libc (so effectively relying on any such effects not breaking the wrappers). In addition, the code in cross-test-ssh.sh for preserving environment variables is fragile (it depends on how bash formats a list of exported variables, and could well break for multi-line variable definitions where the contents contain things looking like other variable definitions). This patch moves to explicitly passing environment variables via $(test-wrapper-env). Makefile variables that previously used $(test-wrapper) are split up into -before-env and -after-env parts that can be passed separately to the various .sh files used in testing, so those files can then insert environment settings between the two parts. The common default environment settings in make-test-out are made into a separate makefile variable that can also be passed to scripts, rather than many scripts duplicating those settings (for testing an installed glibc, it is desirable to have the GCONV_PATH setting on just one place, so just that one place needs to support it pointing to an installed sysroot instead of the build tree). The default settings are included in the variables such as $(test-program-prefix), so that if tests do not need any non-default settings they can continue to use single variables rather than the split-up variables. Although this patch cleans up LC_ALL=C settings (that being part of the common defaults), various LANG=C and LANGUAGE=C settings remain. Those are generally unnecessary and I propose a subsequent cleanup to remove them. LC_ALL takes precedence over LANG, and while LANGUAGE takes precedence over LC_ALL, it only does so for settings other than LC_ALL=C. So LC_ALL=C on its own is sufficient to ensure the C locale, and anything that gets LC_ALL=C does not need the other settings. While preparing this patch I noticed some tests with .sh files that appeared to do nothing beyond what the generic makefile support for tests can do (localedata/tst-wctype.sh - the makefiles support -ENV variables and .input files - and localedata/tst-mbswcs.sh - just runs five tests that could be run individually from the makefile). So I propose another subsequent cleanup to move those to using the generic support instead of special .sh files. Tested x86_64 (native) and powerpc32 (cross). * Makeconfig (run-program-env): New variable. (run-program-prefix-before-env): Likewise. (run-program-prefix-after-env): Likewise. (run-program-prefix): Define in terms of new variables. (built-program-cmd-before-env): New variable. (built-program-cmd-after-env): Likewise. (built-program-cmd): Define in terms of new variables. (test-program-prefix-before-env): New variable. (test-program-prefix-after-env): Likewise. (test-program-prefix): Define in terms of new variables. (test-program-cmd-before-env): New variable. (test-program-cmd-after-env): Likewise. (test-program-cmd): Define in terms of new variables. * Rules (make-test-out): Use $(run-program-env). * scripts/cross-test-ssh.sh (env_blacklist): Remove variable. (help): Do not mention environment variables. Mention --timeoutfactor option. (timeoutfactor): New variable. (blacklist_exports): Remove function. (exports): Remove variable. (command): Do not include ${exports}. * manual/install.texi (Configuring and compiling): Do not mention test wrappers preserving environment variables. Mention that last assignment to a variable must take precedence. * INSTALL: Regenerated. * benchtests/Makefile (run-bench): Use $(run-program-env). * catgets/Makefile ($(objpfx)test1.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test2.cat): Do not specify environment variables explicitly. ($(objpfx)de/libc.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test-gencat.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)sample.SJIS.cat): Do not specify environment variables explicitly. * catgets/test-gencat.sh: Use test_program_cmd_before_env, run_program_env and test_program_cmd_after_env arguments. * elf/Makefile ($(objpfx)tst-pathopt.out): Use $(run-program-env). * elf/tst-pathopt.sh: Use run_program_env argument. * iconvdata/Makefile ($(objpfx)iconv-test.out): Use $(test-wrapper-env) and $(run-program-env). * iconvdata/run-iconv-test.sh: Use test_wrapper_env and run_program_env arguments. * iconvdata/tst-table.sh: Do not set GCONV_PATH explicitly. * intl/Makefile ($(objpfx)tst-gettext.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-gettext2.out): Likewise. * intl/tst-gettext.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * intl/tst-gettext2.sh: Likewise. * intl/tst-gettext4.sh: Do not set environment variables explicitly. * intl/tst-gettext6.sh: Likewise. * intl/tst-translit.sh: Likewise. * malloc/Makefile ($(objpfx)tst-mtrace.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * malloc/tst-mtrace.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * math/Makefile (run-regen-ulps): Use $(run-program-env). * nptl/Makefile ($(objpfx)tst-tls6.out): Use $(run-program-env). * nptl/tst-tls6.sh: Use run_program_env argument. Set LANG=C explicitly with each use of ${test_wrapper_env}. * posix/Makefile ($(objpfx)wordexp-tst.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * posix/tst-getconf.sh: Do not set environment variables explicitly. * posix/wordexp-tst.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * stdio-common/tst-printf.sh: Do not set environment variables explicitly. * stdlib/Makefile ($(objpfx)tst-fmtmsg.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * stdlib/tst-fmtmsg.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. Split $test calls into $test_pre and $test. * timezone/Makefile (build-testdata): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). localedata/ChangeLog: * Makefile ($(addprefix $(objpfx),$(CTYPE_FILES))): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)sort-test.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-fmon.out): Use $(run-program-prefix-before-env), $(run-program-env) and $(run-program-prefix-after-env). ($(objpfx)tst-locale.out): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)tst-trans.out): Use $(run-program-prefix-before-env), $(run-program-env), $(run-program-prefix-after-env), $(test-program-prefix-before-env) and $(test-program-prefix-after-env). ($(objpfx)tst-ctype.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)tst-wctype.out): Likewise. ($(objpfx)tst-langinfo.out): Likewise. ($(objpfx)tst-langinfo-static.out): Likewise. * gen-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * sort-test.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * tst-ctype.sh: Use tst_ctype_before_env, run_program_env and tst_ctype_after_env arguments. * tst-fmon.sh: Use run_program_prefix_before_env, run_program_env and run_program_prefix_after_env arguments. * tst-langinfo.sh: Use tst_langinfo_before_env, run_program_env and tst_langinfo_after_env arguments. * tst-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * tst-mbswcs.sh: Do not set environment variables explicitly. * tst-numeric.sh: Likewise. * tst-rpmatch.sh: Likewise. * tst-trans.sh: Use run_program_prefix_before_env, run_program_env, run_program_prefix_after_env, test_program_prefix_before_env and test_program_prefix_after_env arguments. * tst-wctype.sh: Use tst_wctype_before_env, run_program_env and tst_wctype_after_env arguments.
2014-06-07 06:19:27 +08:00
test-program-cmd-before-env = $(built-program-cmd-before-env)
test-program-cmd-after-env = $(built-program-cmd-after-env)
test-program-cmd = $(built-program-cmd)
host-test-program-cmd = $(host-built-program-cmd)
endif
1995-02-18 09:27:10 +08:00
# Extra flags to pass to GCC.
+gccwarn := -Wall -Wwrite-strings -Wundef
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 09:14:48 +08:00
ifeq ($(enable-werror),yes)
+gccwarn += -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 09:14:48 +08:00
endif
+gccwarn-c = -Wstrict-prototypes -Wold-style-definition
1995-02-18 09:27:10 +08:00
# We do not depend on the address of constants in different files to be
# actually different, so allow the compiler to merge them all.
+merge-constants = -fmerge-all-constants
# We have to assume that glibc functions are called in any rounding
# mode and also change the rounding mode in a few functions. So,
# disable any optimization that assume default rounding mode.
+math-flags = -frounding-math
# Logically only "libnldbl", "nonlib" and "testsuite" should be using
# -fno-math-errno. However due to GCC bug #88576, only "libm" and
# "libmvec" can use -fno-math-errno.
+extra-math-flags = $(if $(filter libmvec libm,$(in-module)),\
-fno-math-errno,-fmath-errno)
Use LFS and 64 bit time for installed programs (BZ #15333) The installed programs are built with a combination of different values for MODULE_NAME, as below. To enable both Long File Support and 64 bt time, -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 is added for nonlibi, nscd, lddlibc4, libresolv, ldconfig, locale_programs, iconvprogs, libnss_files, libnss_compat, libnss_db, libnss_hesiod, libutil, libpcprofile, and libSegFault. nscd/nscd nscd/nscd.o MODULE_NAME=nscd nscd/connections.o MODULE_NAME=nscd nscd/pwdcache.o MODULE_NAME=nscd nscd/getpwnam_r.o MODULE_NAME=nscd nscd/getpwuid_r.o MODULE_NAME=nscd nscd/grpcache.o MODULE_NAME=nscd nscd/getgrnam_r.o MODULE_NAME=nscd nscd/getgrgid_r.o MODULE_NAME=nscd nscd/hstcache.o MODULE_NAME=nscd nscd/gethstbyad_r.o MODULE_NAME=nscd nscd/gethstbynm3_r.o MODULE_NAME=nscd nscd/getsrvbynm_r.o MODULE_NAME=nscd nscd/getsrvbypt_r.o MODULE_NAME=nscd nscd/servicescache.o MODULE_NAME=nscd nscd/dbg_log.o MODULE_NAME=nscd nscd/nscd_conf.o MODULE_NAME=nscd nscd/nscd_stat.o MODULE_NAME=nscd nscd/cache.o MODULE_NAME=nscd nscd/mem.o MODULE_NAME=nscd nscd/nscd_setup_thread.o MODULE_NAME=nscd nscd/xmalloc.o MODULE_NAME=nscd nscd/xstrdup.o MODULE_NAME=nscd nscd/aicache.o MODULE_NAME=nscd nscd/initgrcache.o MODULE_NAME=nscd nscd/gai.o MODULE_NAME=nscd nscd/res_hconf.o MODULE_NAME=nscd nscd/netgroupcache.o MODULE_NAME=nscd nscd/cachedumper.o MODULE_NAME=nscd elf/lddlibc4 elf/lddlibc4 MODULE_NAME=lddlibc4 elf/pldd elf/pldd.o MODULE_NAME=nonlib elf/xmalloc.o MODULE_NAME=nonlib elf/sln elf/sln.o MODULE_NAME=nonlib elf/static-stubs.o MODULE_NAME=nonlib elf/sprof MODULE_NAME=nonlib elf/ldconfig elf/ldconfig.o MODULE_NAME=ldconfig elf/cache.o MODULE_NAME=nonlib elf/readlib.o MODULE_NAME=nonlib elf/xmalloc.o MODULE_NAME=nonlib elf/xstrdup.o MODULE_NAME=nonlib elf/chroot_canon.o MODULE_NAME=nonlib elf/static-stubs.o MODULE_NAME=nonlib elf/stringtable.o MODULE_NAME=nonlib io/pwd io/pwd.o MODULE_NAME=nonlib locale/locale locale/locale.o MODULE_NAME=locale_programs locale/locale-spec.o MODULE_NAME=locale_programs locale/charmap-dir.o MODULE_NAME=locale_programs locale/simple-hash.o MODULE_NAME=locale_programs locale/xmalloc.o MODULE_NAME=locale_programs locale/xstrdup.o MODULE_NAME=locale_programs locale/record-status.o MODULE_NAME=locale_programs locale/xasprintf.o MODULE_NAME=locale_programs locale/localedef locale/localedef.o MODULE_NAME=locale_programs locale/ld-ctype.o MODULE_NAME=locale_programs locale/ld-messages.o MODULE_NAME=locale_programs locale/ld-monetary.o MODULE_NAME=locale_programs locale/ld-numeric.o MODULE_NAME=locale_programs locale/ld-time.o MODULE_NAME=locale_programs locale/ld-paper.o MODULE_NAME=locale_programs locale/ld-name.o MODULE_NAME=locale_programs locale/ld-address.o MODULE_NAME=locale_programs locale/ld-telephone.o MODULE_NAME=locale_programs locale/ld-measurement.o MODULE_NAME=locale_programs locale/ld-identification.o MODULE_NAME=locale_programs locale/ld-collate.o MODULE_NAME=locale_programs locale/charmap.o MODULE_NAME=locale_programs locale/linereader.o MODULE_NAME=locale_programs locale/locfile.o MODULE_NAME=locale_programs locale/repertoire.o MODULE_NAME=locale_programs locale/locarchive.o MODULE_NAME=locale_programs locale/md5.o MODULE_NAME=locale_programs locale/charmap-dir.o MODULE_NAME=locale_programs locale/simple-hash.o MODULE_NAME=locale_programs locale/xmalloc.o MODULE_NAME=locale_programs locale/xstrdup.o MODULE_NAME=locale_programs locale/record-status.o MODULE_NAME=locale_programs locale/xasprintf.o MODULE_NAME=locale_programs catgets/gencat catgets/gencat.o MODULE_NAME=nonlib catgets/xmalloc.o MODULE_NAME=nonlib nss/makedb nss/makedb.o MODULE_NAME=nonlib nss/xmalloc.o MODULE_NAME=nonlib nss/hash-string.o MODULE_NAME=nonlib nss/getent nss/getent.o MODULE_NAME=nonlib posix/getconf posix/getconf.o MODULE_NAME=nonlib login/utmpdump login/utmpdump.o MODULE_NAME=nonlib debug/pcprofiledump debug/pcprofiledump.o MODULE_NAME=nonlib timezone/zic timezone/zic.o MODULE_NAME=nonlib timezone/zdump timezone/zdump.o MODULE_NAME=nonlib iconv/iconv_prog iconv/iconv_prog.o MODULE_NAME=nonlib iconv/iconv_charmap.o MODULE_NAME=iconvprogs iconv/charmap.o MODULE_NAME=iconvprogs iconv/charmap-dir.o MODULE_NAME=iconvprogs iconv/linereader.o MODULE_NAME=iconvprogs iconv/dummy-repertoire.o MODULE_NAME=iconvprogs iconv/simple-hash.o MODULE_NAME=iconvprogs iconv/xstrdup.o MODULE_NAME=iconvprogs iconv/xmalloc.o MODULE_NAME=iconvprogs iconv/record-status.o MODULE_NAME=iconvprogs iconv/iconvconfig iconv/iconvconfig.o MODULE_NAME=nonlib iconv/strtab.o MODULE_NAME=iconvprogs iconv/xmalloc.o MODULE_NAME=iconvprogs iconv/hash-string.o MODULE_NAME=iconvprogs nss/libnss_files.so MODULE_NAME=libnss_files nss/libnss_compat.so.2 MODULE_NAME=libnss_compat nss/libnss_db.so MODULE_NAME=libnss_db hesiod/libnss_hesiod.so MODULE_NAME=libnss_hesiod login/libutil.so MODULE_NAME=libutil debug/libpcprofile.so MODULE_NAME=libpcprofile debug/libSegFault.so MODULE_NAME=libSegFault Also, to avoid adding both LFS and 64 bit time support on internal tests they are moved to a newer 'testsuite-internal' module. It should be similar to 'nonlib' regarding internal definition and linking namespace. This patch also enables LFS and 64 bit support of libsupport container programs (echo-container, test-container, shell-container, and true-container). Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: DJ Delorie <dj@redhat.com>
2021-05-21 01:20:18 +08:00
# Use 64 bit time_t support for installed programs
installed-modules = nonlib nscd ldconfig locale_programs \
Use LFS and 64 bit time for installed programs (BZ #15333) The installed programs are built with a combination of different values for MODULE_NAME, as below. To enable both Long File Support and 64 bt time, -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 is added for nonlibi, nscd, lddlibc4, libresolv, ldconfig, locale_programs, iconvprogs, libnss_files, libnss_compat, libnss_db, libnss_hesiod, libutil, libpcprofile, and libSegFault. nscd/nscd nscd/nscd.o MODULE_NAME=nscd nscd/connections.o MODULE_NAME=nscd nscd/pwdcache.o MODULE_NAME=nscd nscd/getpwnam_r.o MODULE_NAME=nscd nscd/getpwuid_r.o MODULE_NAME=nscd nscd/grpcache.o MODULE_NAME=nscd nscd/getgrnam_r.o MODULE_NAME=nscd nscd/getgrgid_r.o MODULE_NAME=nscd nscd/hstcache.o MODULE_NAME=nscd nscd/gethstbyad_r.o MODULE_NAME=nscd nscd/gethstbynm3_r.o MODULE_NAME=nscd nscd/getsrvbynm_r.o MODULE_NAME=nscd nscd/getsrvbypt_r.o MODULE_NAME=nscd nscd/servicescache.o MODULE_NAME=nscd nscd/dbg_log.o MODULE_NAME=nscd nscd/nscd_conf.o MODULE_NAME=nscd nscd/nscd_stat.o MODULE_NAME=nscd nscd/cache.o MODULE_NAME=nscd nscd/mem.o MODULE_NAME=nscd nscd/nscd_setup_thread.o MODULE_NAME=nscd nscd/xmalloc.o MODULE_NAME=nscd nscd/xstrdup.o MODULE_NAME=nscd nscd/aicache.o MODULE_NAME=nscd nscd/initgrcache.o MODULE_NAME=nscd nscd/gai.o MODULE_NAME=nscd nscd/res_hconf.o MODULE_NAME=nscd nscd/netgroupcache.o MODULE_NAME=nscd nscd/cachedumper.o MODULE_NAME=nscd elf/lddlibc4 elf/lddlibc4 MODULE_NAME=lddlibc4 elf/pldd elf/pldd.o MODULE_NAME=nonlib elf/xmalloc.o MODULE_NAME=nonlib elf/sln elf/sln.o MODULE_NAME=nonlib elf/static-stubs.o MODULE_NAME=nonlib elf/sprof MODULE_NAME=nonlib elf/ldconfig elf/ldconfig.o MODULE_NAME=ldconfig elf/cache.o MODULE_NAME=nonlib elf/readlib.o MODULE_NAME=nonlib elf/xmalloc.o MODULE_NAME=nonlib elf/xstrdup.o MODULE_NAME=nonlib elf/chroot_canon.o MODULE_NAME=nonlib elf/static-stubs.o MODULE_NAME=nonlib elf/stringtable.o MODULE_NAME=nonlib io/pwd io/pwd.o MODULE_NAME=nonlib locale/locale locale/locale.o MODULE_NAME=locale_programs locale/locale-spec.o MODULE_NAME=locale_programs locale/charmap-dir.o MODULE_NAME=locale_programs locale/simple-hash.o MODULE_NAME=locale_programs locale/xmalloc.o MODULE_NAME=locale_programs locale/xstrdup.o MODULE_NAME=locale_programs locale/record-status.o MODULE_NAME=locale_programs locale/xasprintf.o MODULE_NAME=locale_programs locale/localedef locale/localedef.o MODULE_NAME=locale_programs locale/ld-ctype.o MODULE_NAME=locale_programs locale/ld-messages.o MODULE_NAME=locale_programs locale/ld-monetary.o MODULE_NAME=locale_programs locale/ld-numeric.o MODULE_NAME=locale_programs locale/ld-time.o MODULE_NAME=locale_programs locale/ld-paper.o MODULE_NAME=locale_programs locale/ld-name.o MODULE_NAME=locale_programs locale/ld-address.o MODULE_NAME=locale_programs locale/ld-telephone.o MODULE_NAME=locale_programs locale/ld-measurement.o MODULE_NAME=locale_programs locale/ld-identification.o MODULE_NAME=locale_programs locale/ld-collate.o MODULE_NAME=locale_programs locale/charmap.o MODULE_NAME=locale_programs locale/linereader.o MODULE_NAME=locale_programs locale/locfile.o MODULE_NAME=locale_programs locale/repertoire.o MODULE_NAME=locale_programs locale/locarchive.o MODULE_NAME=locale_programs locale/md5.o MODULE_NAME=locale_programs locale/charmap-dir.o MODULE_NAME=locale_programs locale/simple-hash.o MODULE_NAME=locale_programs locale/xmalloc.o MODULE_NAME=locale_programs locale/xstrdup.o MODULE_NAME=locale_programs locale/record-status.o MODULE_NAME=locale_programs locale/xasprintf.o MODULE_NAME=locale_programs catgets/gencat catgets/gencat.o MODULE_NAME=nonlib catgets/xmalloc.o MODULE_NAME=nonlib nss/makedb nss/makedb.o MODULE_NAME=nonlib nss/xmalloc.o MODULE_NAME=nonlib nss/hash-string.o MODULE_NAME=nonlib nss/getent nss/getent.o MODULE_NAME=nonlib posix/getconf posix/getconf.o MODULE_NAME=nonlib login/utmpdump login/utmpdump.o MODULE_NAME=nonlib debug/pcprofiledump debug/pcprofiledump.o MODULE_NAME=nonlib timezone/zic timezone/zic.o MODULE_NAME=nonlib timezone/zdump timezone/zdump.o MODULE_NAME=nonlib iconv/iconv_prog iconv/iconv_prog.o MODULE_NAME=nonlib iconv/iconv_charmap.o MODULE_NAME=iconvprogs iconv/charmap.o MODULE_NAME=iconvprogs iconv/charmap-dir.o MODULE_NAME=iconvprogs iconv/linereader.o MODULE_NAME=iconvprogs iconv/dummy-repertoire.o MODULE_NAME=iconvprogs iconv/simple-hash.o MODULE_NAME=iconvprogs iconv/xstrdup.o MODULE_NAME=iconvprogs iconv/xmalloc.o MODULE_NAME=iconvprogs iconv/record-status.o MODULE_NAME=iconvprogs iconv/iconvconfig iconv/iconvconfig.o MODULE_NAME=nonlib iconv/strtab.o MODULE_NAME=iconvprogs iconv/xmalloc.o MODULE_NAME=iconvprogs iconv/hash-string.o MODULE_NAME=iconvprogs nss/libnss_files.so MODULE_NAME=libnss_files nss/libnss_compat.so.2 MODULE_NAME=libnss_compat nss/libnss_db.so MODULE_NAME=libnss_db hesiod/libnss_hesiod.so MODULE_NAME=libnss_hesiod login/libutil.so MODULE_NAME=libutil debug/libpcprofile.so MODULE_NAME=libpcprofile debug/libSegFault.so MODULE_NAME=libSegFault Also, to avoid adding both LFS and 64 bit time support on internal tests they are moved to a newer 'testsuite-internal' module. It should be similar to 'nonlib' regarding internal definition and linking namespace. This patch also enables LFS and 64 bit support of libsupport container programs (echo-container, test-container, shell-container, and true-container). Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: DJ Delorie <dj@redhat.com>
2021-05-21 01:20:18 +08:00
iconvprogs libnss_files libnss_compat libnss_db libnss_hesiod \
libutil libpcprofile libnsl
Use LFS and 64 bit time for installed programs (BZ #15333) The installed programs are built with a combination of different values for MODULE_NAME, as below. To enable both Long File Support and 64 bt time, -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 is added for nonlibi, nscd, lddlibc4, libresolv, ldconfig, locale_programs, iconvprogs, libnss_files, libnss_compat, libnss_db, libnss_hesiod, libutil, libpcprofile, and libSegFault. nscd/nscd nscd/nscd.o MODULE_NAME=nscd nscd/connections.o MODULE_NAME=nscd nscd/pwdcache.o MODULE_NAME=nscd nscd/getpwnam_r.o MODULE_NAME=nscd nscd/getpwuid_r.o MODULE_NAME=nscd nscd/grpcache.o MODULE_NAME=nscd nscd/getgrnam_r.o MODULE_NAME=nscd nscd/getgrgid_r.o MODULE_NAME=nscd nscd/hstcache.o MODULE_NAME=nscd nscd/gethstbyad_r.o MODULE_NAME=nscd nscd/gethstbynm3_r.o MODULE_NAME=nscd nscd/getsrvbynm_r.o MODULE_NAME=nscd nscd/getsrvbypt_r.o MODULE_NAME=nscd nscd/servicescache.o MODULE_NAME=nscd nscd/dbg_log.o MODULE_NAME=nscd nscd/nscd_conf.o MODULE_NAME=nscd nscd/nscd_stat.o MODULE_NAME=nscd nscd/cache.o MODULE_NAME=nscd nscd/mem.o MODULE_NAME=nscd nscd/nscd_setup_thread.o MODULE_NAME=nscd nscd/xmalloc.o MODULE_NAME=nscd nscd/xstrdup.o MODULE_NAME=nscd nscd/aicache.o MODULE_NAME=nscd nscd/initgrcache.o MODULE_NAME=nscd nscd/gai.o MODULE_NAME=nscd nscd/res_hconf.o MODULE_NAME=nscd nscd/netgroupcache.o MODULE_NAME=nscd nscd/cachedumper.o MODULE_NAME=nscd elf/lddlibc4 elf/lddlibc4 MODULE_NAME=lddlibc4 elf/pldd elf/pldd.o MODULE_NAME=nonlib elf/xmalloc.o MODULE_NAME=nonlib elf/sln elf/sln.o MODULE_NAME=nonlib elf/static-stubs.o MODULE_NAME=nonlib elf/sprof MODULE_NAME=nonlib elf/ldconfig elf/ldconfig.o MODULE_NAME=ldconfig elf/cache.o MODULE_NAME=nonlib elf/readlib.o MODULE_NAME=nonlib elf/xmalloc.o MODULE_NAME=nonlib elf/xstrdup.o MODULE_NAME=nonlib elf/chroot_canon.o MODULE_NAME=nonlib elf/static-stubs.o MODULE_NAME=nonlib elf/stringtable.o MODULE_NAME=nonlib io/pwd io/pwd.o MODULE_NAME=nonlib locale/locale locale/locale.o MODULE_NAME=locale_programs locale/locale-spec.o MODULE_NAME=locale_programs locale/charmap-dir.o MODULE_NAME=locale_programs locale/simple-hash.o MODULE_NAME=locale_programs locale/xmalloc.o MODULE_NAME=locale_programs locale/xstrdup.o MODULE_NAME=locale_programs locale/record-status.o MODULE_NAME=locale_programs locale/xasprintf.o MODULE_NAME=locale_programs locale/localedef locale/localedef.o MODULE_NAME=locale_programs locale/ld-ctype.o MODULE_NAME=locale_programs locale/ld-messages.o MODULE_NAME=locale_programs locale/ld-monetary.o MODULE_NAME=locale_programs locale/ld-numeric.o MODULE_NAME=locale_programs locale/ld-time.o MODULE_NAME=locale_programs locale/ld-paper.o MODULE_NAME=locale_programs locale/ld-name.o MODULE_NAME=locale_programs locale/ld-address.o MODULE_NAME=locale_programs locale/ld-telephone.o MODULE_NAME=locale_programs locale/ld-measurement.o MODULE_NAME=locale_programs locale/ld-identification.o MODULE_NAME=locale_programs locale/ld-collate.o MODULE_NAME=locale_programs locale/charmap.o MODULE_NAME=locale_programs locale/linereader.o MODULE_NAME=locale_programs locale/locfile.o MODULE_NAME=locale_programs locale/repertoire.o MODULE_NAME=locale_programs locale/locarchive.o MODULE_NAME=locale_programs locale/md5.o MODULE_NAME=locale_programs locale/charmap-dir.o MODULE_NAME=locale_programs locale/simple-hash.o MODULE_NAME=locale_programs locale/xmalloc.o MODULE_NAME=locale_programs locale/xstrdup.o MODULE_NAME=locale_programs locale/record-status.o MODULE_NAME=locale_programs locale/xasprintf.o MODULE_NAME=locale_programs catgets/gencat catgets/gencat.o MODULE_NAME=nonlib catgets/xmalloc.o MODULE_NAME=nonlib nss/makedb nss/makedb.o MODULE_NAME=nonlib nss/xmalloc.o MODULE_NAME=nonlib nss/hash-string.o MODULE_NAME=nonlib nss/getent nss/getent.o MODULE_NAME=nonlib posix/getconf posix/getconf.o MODULE_NAME=nonlib login/utmpdump login/utmpdump.o MODULE_NAME=nonlib debug/pcprofiledump debug/pcprofiledump.o MODULE_NAME=nonlib timezone/zic timezone/zic.o MODULE_NAME=nonlib timezone/zdump timezone/zdump.o MODULE_NAME=nonlib iconv/iconv_prog iconv/iconv_prog.o MODULE_NAME=nonlib iconv/iconv_charmap.o MODULE_NAME=iconvprogs iconv/charmap.o MODULE_NAME=iconvprogs iconv/charmap-dir.o MODULE_NAME=iconvprogs iconv/linereader.o MODULE_NAME=iconvprogs iconv/dummy-repertoire.o MODULE_NAME=iconvprogs iconv/simple-hash.o MODULE_NAME=iconvprogs iconv/xstrdup.o MODULE_NAME=iconvprogs iconv/xmalloc.o MODULE_NAME=iconvprogs iconv/record-status.o MODULE_NAME=iconvprogs iconv/iconvconfig iconv/iconvconfig.o MODULE_NAME=nonlib iconv/strtab.o MODULE_NAME=iconvprogs iconv/xmalloc.o MODULE_NAME=iconvprogs iconv/hash-string.o MODULE_NAME=iconvprogs nss/libnss_files.so MODULE_NAME=libnss_files nss/libnss_compat.so.2 MODULE_NAME=libnss_compat nss/libnss_db.so MODULE_NAME=libnss_db hesiod/libnss_hesiod.so MODULE_NAME=libnss_hesiod login/libutil.so MODULE_NAME=libutil debug/libpcprofile.so MODULE_NAME=libpcprofile debug/libSegFault.so MODULE_NAME=libSegFault Also, to avoid adding both LFS and 64 bit time support on internal tests they are moved to a newer 'testsuite-internal' module. It should be similar to 'nonlib' regarding internal definition and linking namespace. This patch also enables LFS and 64 bit support of libsupport container programs (echo-container, test-container, shell-container, and true-container). Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: DJ Delorie <dj@redhat.com>
2021-05-21 01:20:18 +08:00
+extra-time-flags = $(if $(filter $(installed-modules),\
$(in-module)),-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64)
# We might want to compile with some stack-protection flag.
ifneq ($(stack-protector),)
+stack-protector=$(stack-protector)
endif
# Some routines are unsafe to build with stack-protection since they're called
# before the stack check guard is set up. Provide a way to disable stack
# protector. The first argument is the extension (.o, .os, .oS) and the second
# is a list of routines that this path should be applied to.
define elide-stack-protector
$(if $(filter $(@F),$(patsubst %,%$(1),$(2))), $(no-stack-protector))
endef
# We might want to compile with fortify-source
ifneq ($(fortify-source),)
+fortify-source=$(fortify-source)
endif
# Some routine can't be fortified like the ones used by fortify
define elide-fortify-source
$(if $(filter $(@F),$(patsubst %,%$(1),$(2))), $(no-fortify-source))
endef
1995-02-18 09:27:10 +08:00
# The program that makes Emacs-style TAGS files.
ETAGS := etags
1995-02-18 09:27:10 +08:00
* po/.cvsignore: List libc.pot.files, and not any .pot names. * manual/maint.texi (Porting): Don't mention Dist files. * sysdeps/alpha/soft-fp/Dist: File removed. * sysdeps/alpha/Dist: File removed. * sysdeps/i386/i686/Dist: File removed. * sysdeps/i386/soft-fp/Dist: File removed. * sysdeps/i386/Dist: File removed. * sysdeps/mips/soft-fp/Dist: File removed. * sysdeps/mips/mips64/soft-fp/Dist: File removed. * sysdeps/mips/mips64/Dist: File removed. * sysdeps/mips/Dist: File removed. * sysdeps/wordsize-32/Dist: File removed. * sysdeps/m68k/fpu/switch/Dist: File removed. * sysdeps/m68k/fpu/Dist: File removed. * sysdeps/powerpc/powerpc64/Dist: File removed. * sysdeps/powerpc/soft-fp/Dist: File removed. * sysdeps/powerpc/powerpc32/fpu/Dist: File removed. * sysdeps/powerpc/powerpc32/Dist: File removed. * sysdeps/powerpc/fpu/Dist: File removed. * sysdeps/powerpc/Dist: File removed. * sysdeps/unix/common/Dist: File removed. * sysdeps/unix/bsd/bsd4.4/Dist: File removed. * sysdeps/unix/bsd/Dist: File removed. * sysdeps/unix/sysv/linux/alpha/Dist: File removed. * sysdeps/unix/sysv/linux/i386/Dist: File removed. * sysdeps/unix/sysv/linux/mips/mips64/Dist: File removed. * sysdeps/unix/sysv/linux/mips/Dist: File removed. * sysdeps/unix/sysv/linux/m68k/Dist: File removed. * sysdeps/unix/sysv/linux/powerpc/powerpc64/Dist: File removed. * sysdeps/unix/sysv/linux/powerpc/powerpc32/Dist: File removed. * sysdeps/unix/sysv/linux/powerpc/aix/Dist: File removed. * sysdeps/unix/sysv/linux/powerpc/Dist: File removed. * sysdeps/unix/sysv/linux/sparc/sparc32/Dist: File removed. * sysdeps/unix/sysv/linux/sparc/sparc64/Dist: File removed. * sysdeps/unix/sysv/linux/sparc/Dist: File removed. * sysdeps/unix/sysv/linux/ia64/Dist: File removed. * sysdeps/unix/sysv/linux/s390/s390-64/Dist: File removed. * sysdeps/unix/sysv/linux/s390/Dist: File removed. * sysdeps/unix/sysv/linux/s390/s390-32/Dist: File removed. * sysdeps/unix/sysv/linux/sh/Dist: File removed. * sysdeps/unix/sysv/linux/x86_64/Dist: File removed. * sysdeps/unix/sysv/linux/hppa/Dist: File removed. * sysdeps/unix/sysv/linux/Dist: File removed. * sysdeps/unix/sysv/Dist: File removed. * sysdeps/unix/Dist: File removed. * sysdeps/generic/Dist: File removed. * sysdeps/sparc/sparc32/soft-fp/Dist: File removed. * sysdeps/sparc/sparc32/sparcv9/Dist: File removed. * sysdeps/sparc/sparc32/sparcv8/Dist: File removed. * sysdeps/sparc/sparc32/Dist: File removed. * sysdeps/sparc/sparc64/soft-fp/Dist: File removed. * sysdeps/sparc/sparc64/Dist: File removed. * sysdeps/sparc/Dist: File removed. * sysdeps/gnu/Dist: File removed. * sysdeps/ia64/fpu/Dist: File removed. * sysdeps/ia64/Dist: File removed. * sysdeps/mach/mips/Dist: File removed. * sysdeps/mach/hurd/alpha/Dist: File removed. * sysdeps/mach/hurd/i386/Dist: File removed. * sysdeps/mach/hurd/mips/Dist: File removed. * sysdeps/mach/hurd/powerpc/Dist: File removed. * sysdeps/mach/hurd/Dist: File removed. * sysdeps/s390/s390-64/Dist: File removed. * sysdeps/s390/Dist: File removed. * sysdeps/s390/s390-32/Dist: File removed. * sysdeps/sh/Dist: File removed. * sysdeps/posix/Dist: File removed. * sysdeps/ieee754/dbl-64/Dist: File removed. * sysdeps/ieee754/ldbl-128/Dist: File removed. * sysdeps/ieee754/flt-32/Dist: File removed. * sysdeps/ieee754/Dist: File removed. * sysdeps/x86_64/soft-fp/Dist: File removed. * sysdeps/x86_64/Dist: File removed. * sysdeps/hppa/Dist: File removed. * Makerules (common-clean): Don't remove distinfo file. ($(objpfx)distinfo): Target removed. * manual/Makefile (mostlyclean): Don't remove distinfo file. (glibc-targets): Remove echo-distinfo. * scripts/list-sources.sh: New file. * Makefile (TAGS): New target. * po/Makefile (libc.pot, libc.pot.files): New targets. * Makeconfig (XGETTEXT): New variable. * Makerules ($(..)po/%.pot): Rule removed. (TAGS): Target removed. * Rules (subdir_TAGS): Target removed. * MakeTAGS: File removed. * Makefile (iconvdata/% localedata/% po/% manual/%): Depend on FORCE. * Makeconfig ($(all-Depend-files)): New targets with no-op commands.
2006-01-08 14:46:10 +08:00
# The `xgettext' program for producing .pot files from sources.
ifndef XGETTEXT
XGETTEXT = xgettext
endif
1995-02-18 09:27:10 +08:00
# The `m4' macro processor; this is used by sysdeps/sparc/Makefile (and
# perhaps others) to preprocess assembly code in some cases.
M4 = m4
# To force installation of files even if they are older than the
# installed files. This variable is included in the dependency list
# of all installation targets.
ifeq ($(force-install),yes)
+force = force-install
else
+force =
endif
1995-02-18 09:27:10 +08:00
####
#### End of configuration variables.
####
# This tells some versions of GNU make before 3.63 not to export all variables.
.NOEXPORT:
# We want to echo the commands we're running without
Update from main archive 961219 Thu Dec 19 23:28:33 1996 Ulrich Drepper <drepper@cygnus.com> * resolv/resolv.h: Update from BIND 4.9.5-P1. * resolv/res_comp.c: Likewise. * resolv/res_debug.c: Likewise. * resolv/Banner: Update version number. Thu Dec 19 20:58:53 1996 Ulrich Drepper <drepper@cygnus.com> * elf/dlfcn.h: Add extern "C" wrapper. * io/utime.h: Don't define NULL since this isn't allowed in POSIX. * io/sys/stat.h: Declare `lstat' only if __USE_BSD || __USE_XOPEN_EXTENDED. * locale/locale.h: Define NULL. * math/math.c: Don't include <errno.h> to define math errors. * stdlib/stdlib.h: Likewise. * posix/unistd.h: Don't declare environ. * posix/sys/utsname.h (struct utsname): Declare member domainname as __domainname is !__USE_GNU. * signal/signal.h: Declare size_t only if __USE_BSD || __USE_XOPEN_EXTENDED. * stdio/stdio.h: Don't declare cuserid when __USE_POSIX, but instead when __USE_XOPEN. * string/string.h: Define strndup only if __USE_GNU. * sysdeps/unix/sysv/linux/clock.c: New file. * sysdeps/unix/sysv/linux/timebits.h: Define CLOCKS_PER_SEC as 1000000 per X/Open standard. * features.h: Add code to recognize _POSIX_C_SOURCE value 199309. Define __USE_POSIX199309. * posix/unistd.h: Declare fdatasync only if __USE_POSIX199309. * time/time.c: Declare nanosleep only if __USE_POSIX199309. Patches by Rdiger Helsch <rh@unifix.de>. * locale/locale.h: Add declaration of newlocale and freelocale. * new-malloc/Makefile (distibute): Add mtrace.awk. (dist-routines): Add mcheck and mtrace. (install-lib, non-lib.a): Define as libmcheck.a. * new-malloc/malloc.h: Add declaration of __malloc_initialized. * new-malloc/mcheck.c: New file. * new-malloc/mcheck.h: New file. * new-malloc/mtrace.c: New file. * new-malloc/mtrace.awk: New file. * posix/unistd.h: Correct prototype for usleep. * sysdeps/unix/bsd/usleep.c: De-ANSI-declfy. Correct return type. * sysdeps/unix/sysv/linux/usleep.c: Real implementation based on nanosleep. * signal/signal.h: Change protoype of __sigpause to take two arguments. Remove prototype for sigpause. Add two different macros named sigpause selected when __USE_BSD or __USE_XOPEN are defined. This is necessary since the old BSD definition of theis function collides with the X/Open definition. * sysdeps/posix/sigpause.c: Change function definition to also fit X/Open definition. * sysdeps/libm-i387/e_exp.S: Make sure stack is empty when the function is left. * sysdeps/libm-i387/e_expl.S: Likewise. Patch by HJ Lu. 1996-12-17 Paul Eggert <eggert@twinsun.com> * many, many files: Spelling corrections. * catgets/catgetsinfo.h (mmapped): Renamed from mmaped (in struct catalog_info.status). * mach/err_kern.sub (err_codes_unix), string/stratcliff.c (main): Fix spelling in message. * po/libc.pot: Fix spelling in message for `zic'; this anticipates a fix in the tzcode distribution. Wed Dec 18 15:48:02 1996 Ulrich Drepper <drepper@cygnus.com> * time/strftime.c: Implement ^ flag to cause output be converted to use upper case characters. * time/zic.c: Update from ADO tzcode1996n. Wed Dec 18 14:29:24 1996 Erik Naggum <erik@naggum.no> * time/strftime.c (add): Don't change global `i' until all is over. Define NULL is not already defined. Tue Dec 17 09:49:03 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * libio/iovsprintf.c (_IO_vsprintf): Change `&sf' to `&sf._sbf._f' to avoid the need for a cast. * libio/iovsscanf.c (_IO_vsscanf): Likewise. * sunrpc/rpc/xdr.h: Add prototype for xdr_free.
1996-12-20 09:39:50 +08:00
# umpteen zillion filenames along with it (we use `...' instead)
1995-02-18 09:27:10 +08:00
# but we don't want this echoing done when the user has said
# he doesn't want to see commands echoed by using -s.
ifeq ($(silent-make),yes) # if -s
1995-02-18 09:27:10 +08:00
+cmdecho := echo >/dev/null
else # not -s
+cmdecho := echo
endif # -s
# These are the flags given to the compiler to tell
# it what sort of optimization and/or debugging output to do.
ifndef +cflags
# If `CFLAGS' was defined, use that.
ifdef CFLAGS
+cflags := $(filter-out -I%,$(CFLAGS))
endif # CFLAGS
endif # +cflags
update from main archive 970120 Tue Jan 21 04:05:20 1997 Ulrich Drepper <drepper@cygnus.com> * version.h (VERSION): Bump to 1.101. Implement -d and -r option to `ldd' to check relocations. * elf/dl-error.c: Add another method to intercept errors. (_dl_receive_error): New function. Install user defined handler. (receiver): New variable. Contains pointer to user provided handler. (_dl_signal_error): If user provided handler is installed call this. * elf/dl-load.c (_dl_map_object): When shared object is not found in trace mode initialize a few more fields so that lookup can actually happen but always fails. * elf/ldd.sh.in: Rewrite argument handling. Recognize new arguments to trigger reloation test. Return with appropriate error code if a file wasn't found. Print warning if object is not executable. * elf/ldd.bash.in: Likewise. * elf/link.h (receiver_fct): New type. Used in _dl_receive_error. (_dl_sysdep_error): New prototype. (_dl_receive_error): New prototype. (_dl_signal_error): Remove __attribute__ ((__noreturn__)). * elf/rtld.c (dl_main): Rewrite argument handling. More than one argument allowed. Recognize --data-relocs and --function-relocs arguments. Don't determine `lazy' mode from LD_BIND_NOW environment variable when in trace mode. If in trace mode and either --data-relocs or --function-relocs is given perform relocation. Report errors using print_unresolved function. (print_unresolved): New function. Print information about missing symbol on stderr. * sysdeps/generic/dl-sysdep.c (_dl_sysdep_error): New function. Like _dl_sysdep_message but print to stderr. * sysdeps/mach/hurd/dl-sysdep.c: Likewise. * sysdeps/generic/sockaddrcom.h: Add definition of sa_family_t. Reported by Andreas Schwab. (__SOCKADDR_COMMON): Use sa_family_t for family member. * sysdeps/unix/bsd/bsd4.4/sockaddrcom.h: Likewise. Linux/Sparc support by Miguel de Icaza. * sysdeps/sparc/fpu_control.h: New file. * sysdeps/unix/sysv/linux/sparc/__sigtrampoline.S: New file. * sysdeps/unix/sysv/linux/sparc/brk.c: New file. * sysdeps/unix/sysv/linux/sparc/profil-counter.h: New file. * sysdeps/unix/sysv/linux/sparc/sigaction.c: New file. * sysdeps/unix/sysv/linux/sparc/socket.S: New file. * sysdeps/unix/sysv/linux/sparc/syscall.S: New file. * sysdeps/unix/sysv/linux/sparc/sysdep.h: New file. * sysdeps/unix/sysv/linux/sparc/Dist: New file. * sysdeps/unix/sysv/linux/sparc/Makefile: New file. * sysdeps/unix/sysv/linux/net/if_arp.h: Don't use kernel header. Provide own definition based on 4.4BSD and Linux. * sysdeps/unix/sysv/linux/net/ppp_defs.h: Define __u32 before including <linux/ppp_defs.h>. * sysdeps/unix/sysv/linux/sys/msq_buf.h (struct msqid_ds): Don't use __pid_t since the kernel might have a different size. * sysdeps/unix/sysv/linux/sys/shm_buf.h (struct shmid_ds): Likewise. Reported by Andreas Schwab. * time/asctime.c: Update copyright. * time/dysize.c: Likewise. * time/gmtime.c: Likewise. * time/timegm.c: Likewise. * time/offtime.c: Likewise. De-ANSI-declfy. * time/tzset.c (__tzset_internal): When TZ envvar does not name a DST timezone don't default to offset -1. * sysdeps/unix/sysv/linux/net/route.h: Don't use kernel header. Reported by a sun <asun@zoology.washington.edu>. * resolv/Makefile: Correct spelling: subdirs-dirs -> subdir-dirs. * sysdeps/stub/sysv_signal.c: New file. Stub implementation. * Makefile (distribute): Add mcheck.h. * nis/Makefile (distribute): Add nss-nis.h. * libio/Makefile (routines): Change vdprintf to iovdprintf to prevent dist problem. * nss/Makefile (distribute): Add digits_dots.c. * sysdeps/unix/sysv/linux/Dist: Add kernel_sigaction.h. * sysdeps/unix/sysv/linux/alpha/Dist: Add sys/procfs.h. * sysdeps/unix/sysv/linux/sparc/Dist: Add clone.S. * new-malloc/Makefile (distribute): Add mcheck-init.c and mcheck.h. Mon Jan 20 17:54:28 1997 Sven Verdoolaege <skimo@breughel.ufsia.ac.be> * manual/filesys.texi: Fix little problem (reentrant->readdir). Fri Jan 17 19:07:07 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * configure.in [$elf=yes]: Check for support of .previous and .popsection in the assembler. * config.h.in: Add HAVE_ASM_PREVIOUS_DIRECTIVE and HAVE_ASM_POPSECTION_DIRECTIVE. * libc-symbols.h (__make_section_unallocated) [HAVE_ELF]: Define appropriate if either .previous or .popsection is supported. (libc_warning) [HAVE_ELF]: Use it here. Sat Jan 18 22:15:26 1997 Richard Henderson <rth@tamu.edu> * Makeconfig (CFLAGS-.so): Add -fno-common to prevent odd sorts of errors that can occur when linking libc.so. Mon Jan 20 05:20:49 1997 Ulrich Drepper <drepper@cygnus.com> * elf/dl-load.c (open_path): When running setuid don't try a directory if it is not given with the full name. * elf/Makefile (before-compile): New variable. Mention trusted-dirs.h. (trusted-dirs.h): Construct file from $(default-rpath) and $(user-defined-trusted-dirs) variables. * elf/dl-load.c (_dl_map_object): Pass additional argument to open_path which is NULL except for the LD_LIBRARY_PATH pass in which case it is a pointer to the list of directories from the trusted-dirs.h file. (open_path): Accept additional argument with list of trusted dirs. When running setuid and a list of trusted dirs is given only use those which are mentioned in the list. * elf/rtld.c (dl_main): Don't reject whole LD_LIBRARY_PATH when running setuid. Instead accept entries which do not contain a '/'. * Makeconfig: Correct comment about +(default_cflags). Mon Jan 20 05:11:14 1997 Hrvoje Niksic <hniksic@srce.hr> * time/strptime.c (recursive): Use && not || to test for valid argument. Mon Jan 20 05:06:50 1997 Ulrich Drepper <drepper@cygnus.com> * elf/ldd.sh.in: Exit with value 1 if an error occured. * elf/ldd.bash.in: Likewise. * elf/rtld.c (dl_main): Do not always ignore LD_PRELOAD when the binary runs setuid. It is save to use those entries which do not contain a '/'. This is compatible with Solaris-2.
1997-01-21 14:10:42 +08:00
# If none of the above worked, default to "-g -O".
1995-02-18 09:27:10 +08:00
ifeq "$(strip $(+cflags))" ""
+cflags := $(default_cflags)
endif # $(+cflags) == ""
# Force building with -fno-common because hidden_def, compat_symbol
# and other constructs do not work for common symbols (and would
# otherwise require specifying __attribute__ ((nocommon)) on a
# case-by-case basis).
+cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags) \
$(+stack-protector) -fno-common
1995-02-18 09:27:10 +08:00
+gcc-nowarn := -w
# We must filter out elf because the early bootstrap of the dynamic loader
# cannot be fortified. Likewise we exclude dlfcn because it is entangled
# with the loader. We must filter out csu because early startup, like the
# loader, cannot be fortified. Lastly debug is the fortification routines
# themselves and they cannot be fortified.
do-fortify = $(filter-out elf dlfcn csu debug,$(subdir))
ifeq ($(do-fortify),$(subdir))
+cflags += $(+fortify-source)
else
+cflags += $(no-fortify-source)
endif
# Each sysdeps directory can contain header files that both will be
# used to compile and will be installed. Each can also contain an
# include/ subdirectory, whose header files will be used to compile
# but will not be installed, and will take precedence over the
# installed files. This mirrors the top-level include/ subdirectory.
+sysdep-includes := $(foreach dir,$(+sysdep_dirs),\
$(addprefix -I,$(wildcard $(dir)/include) $(dir)))
# These are flags given to the C compiler to tell it to look for
# include files (including ones given in angle brackets) in the parent
# library source directory, in the include directory, and in the
# current directory.
* Makefile (subdir-target-args): New variable. ($(all-subdirs-targets)): Use it in place of -C option. * Rules: Use $(..) instead of ../ if it's already defined. * Makeconfig (subdir-srcdirs): New variable. * csu/Makefile (all-Banner-files): Use it. * configure.in (--enable-add-ons): Set to "yes" by default. Handle absolute add-on directory names when looking for configure fragments. Also look for sysdeps/*/preconfigure fragments in add-ons. Require add-on configure to set $libc_add_on_canonical, use that in $add_ons_sfx. Substitute add_on_subdirs with computed list of subdir names each add-on configure set in libc_add_on_subdirs. * configure: Regenerated. * Makefile (%/preconfigure: %/preconfigure.in): New pattern rule. * config.make.in (add-on-subdirs): New substituted variable. * Makeconfig (all-subdirs): Include $(add-on-subdirs). Remove $(add-ons), $(sysdep-subdirs). Don't filter out $(sysdep-inhibit-subdirs). ($(common-objpfx)sysd-dirs): Target removed. Don't include it. ($(common-objpfx)sysd-sorted): Rewritten to feed Depend and Subdirs files together to gen-sorted.awk, and $(subdirs) via -v. (subdirs): Remove magic reordering for mach and hurd. * scripts/gen-sorted.awk: Use subdirs from command line. Process Subdirs and Depend files directly. Let Subdirs files use "first dir" and "inhibit dir". Always move elf to the end of the list. * hurd/Depend: New file. * sysdeps/mach/Subdirs: Use "first mach". * Makefile (dist-separate): Remove linuxthreads. (dist-separate-linuxthreads): Variable removed. (glibc-%.tar rule): Use $(sysdeps-add-ons). * Makerules ($(common-objpfx)Versions.v.i): Use $(subdirs), not $(all-subdirs). (sysdep-makefiles): Use $(sysdirs). (sysdirs): Remove export. ($(+sysdir_pfx)sysd-rules): Handle absolute directory names in $(config-sysdirs). (+sysdir_pfx): Variable removed. (sysd-rules): Use $(common-objpfx) in place of it. (sysdirs): Variable moved to ... * Makeconfig (sysdirs): ... here. Handle absolute directory names in $(config-sysdirs). (full_config_sysdirs): Variable removed. * csu/Makefile: Use $(sysdirs) in vpath directive. * math/Makefile (ulps-file): Use $(sysdirs). * sysdeps/gnu/Makefile (errlist-c): Likewise. ($(objpfx)errlist-compat.c): Likewise. * Makeconfig (all-Subdirs-files): Likewise. ($(common-objpfx)config.status): Likewise. * configure.in (sysnames): Handle absolute add-on directory names. (sysdeps_add_ons): New variable, AC_SUBST it. Compute which add-ons contributed sysdeps directories. * configure: Regenerated. * config.make.in (sysdeps-add-ons): New substituted variable. * Makerules (+sysdep_dirs, +sysdep-includes): Variables moved ... * Makeconfig: ... to here. (+sysdep_dirs): Append $(sysdeps-add-ons) here. (+includes): Remove $(objpfx) include, already in $(+sysdep_dirs). Remove $(includes). (sysdep-makeconfigs): Use $(+sysdep_dirs). ($(common-objpfx)shlib-versions.v.i): Likewise. * Makeconfig: Remove hair to set Makeconfig-add-on. * sysdeps/unix/Makefile (sysdirs): Remove export. (asm_CPP): Variable removed. ($(common-objpfx)sysd-syscalls): Pass them directly for the script. * sysdeps/posix/Makefile: New file. * Makerules (L_tmpnam, TMP_MAX, L_ctermid, L_cuserid): Set non-posix values here with ?=. * stdlib/gen-mpn-copy: File removed. * stdlib/Makefile (distribute): Remove it. * configure.in: Don't grok --with-gmp. * configure: Regenerated. * configure.in (libc_cv_idn): Don't check it; libidn/configure does it. * configure: Regenerated. * bare: Directory removed, saved in ports repository.
2006-02-28 15:11:04 +08:00
+includes = -I$(..)include $(if $(subdir),$(objpfx:%/=-I%)) \
$(+sysdep-includes) $(includes) \
$(patsubst %/,-I%,$(..)) $(libio-include) -I. $(sysincludes)
1995-02-18 09:27:10 +08:00
Sat Nov 18 16:46:01 1995 Ulrich Drepper <drepper@gnu.ai.mit.edu> * libio/Makefile, libio/cleanup.c, libio/clearerr.c, libio/feof.c, libio/ferror.c, libio/fgetc.c, libio/filedoalloc.c, libio/fileno.c, libio/fileops.c, libio/fputc.c, libio/freopen.c, libio/fseek.c, libio/genops.c, libio/getc.c, libio/getchar.c, libio/iofclose.c, libio/iofdopen.c, libio/iofflush.c, libio/iofgetpos.c, libio/iofgets.c, libio/iofopen.c, libio/iofprintf.c, libio/iofputs.c, libio/iofread.c, libio/iofscanf.c, libio/iofsetpos.c, libio/ioftell.c, libio/iofwrite.c, libio/iogetdelim.c, libio/iogetline.c, libio/iogets.c, libio/iolibio.h, libio/iopadn.c, libio/ioprims.c, libio/ioputs.c, libio/ioseekoff.c, libio/ioseekpos.c, libio/iosetbuffer.c, libio/iosetvbuf.c, libio/iosprintf.c, libio/ioungetc.c, libio/iovsprintf.c, libio/iovsscanf.c, libio/libio.h, libio/libioP.h, libio/putc.c, libio/putchar.c, libio/rewind.c, libio/setbuf.c, libio/setlinebuf.c, libio/stdfiles.c, libio/stdio.c, libio/stdio.h, libio/strfile.h, libio/strops.c, libio/vasprintf.c, libio/vscanf.c, libio/vsnprintf.c: New files. Slightly modified version from Linux libc. * libio/memstream.c, libio/vdprintf.c: New files for functions not (yet) part of GNU libio. * libio/iofopncook.c: Implementation of `fopencookie', mainly written by Per Bothner. * stdio-common/getline.c: Adapted to libio. * stdio-common/snprintf.c: Adapted to libio. * stdio-common/vfprintf.c: Adapted to libio. * stdio-common/vfscanf.c: Adapted to libio. * sysdeps/posix/tempname.c: Adapted to libio.
1995-11-20 11:48:11 +08:00
# Since libio has several internal header files, we use a -I instead
Update. 1997-07-06 23:36 Ulrich Drepper <drepper@cygnus.com> * isomac.c (get_null_defines): Put NULL at end of list. * hurd/Makefile: Remove special handling of sunrpc code. * sysdeps/mach/hurd/Makefile: Likewise. Compile CThreads code. * sunrpc/rpc_main.c: Don't use MAXPATHLEN. * sysdeps/mach/bits/libc-lock.h: Add definitions for key handling functions. * sysdeps/stub/bits/libc-lock.h: Likewise. * sysdeps/mach/hurd/net/ethernet.h: New file. * sysdeps/mach/hurd/net/if.h: New file. * sysdeps/mach/hurd/net/if_arp.h: New file. * sysdeps/mach/hurd/net/if_ether.h: New file. * sysdeps/mach/hurd/net/if_ppp.h: New file. * sysdeps/mach/hurd/net/route.h: New file. Patches by Fila Kolodny <fila@ibi.com>. * math/fenv-test.c: Add more tests. Patch by Andreas Jaeger <aj@arthur.rhein-neckar.de>. * sysdeps/wordsize-32/inttypes.h: Correct values for INTFAST_MIN, INTFAST_MAX, and UINTFAST_MAX. * sysdeps/wordsize-64/inttypes.h: Likewise. Correct intmax_t definition. 1997-07-04 15:33 H.J. Lu <hjl@gnu.ai.mit.edu> * elf/rtld.c (dl_main): Add '\n' to _dl_sysdep_fatal (). 1997-07-01 09:18 H.J. Lu <hjl@gnu.ai.mit.edu> * libc.map: Add missing symbol. 1997-07-04 18:04 H.J. Lu <hjl@gnu.ai.mit.edu> * stdlib/tst-strtol.c: Don't assume cpp takes ~0UL as long in cc1. Cpp in gcc doesn't do it. 1997-07-01 21:15 Andreas Jaeger <aj@arthur.rhein-neckar.de> * libio/libioP.h: Remove second definition of _IO_file_attach. * sysdeps/i386/fpu/fraiseexcpt.c (feraiseexcept): Correct comments. * sysdeps/sparc64/elf/start.S (_start): Update and reformat copyright. * manual/summary.awk: Likewise. * misc/bits/stab.def: Likewise. * posix/glob/Makefile.ami: Likewise. * posix/glob/Makefile.in: Likewise. * posix/glob/SMakefile: Likewise. * sysdeps/gnu/errlist.awk: Likewise. * sysdeps/mach/hurd/errnos.awk: Likewise. * sysdeps/standalone/i386/force_cpu386/target.ld: Likewise. * sysdeps/standalone/m68k/m68020/mvme136/mvme136.ld: Likewise. * sysdeps/unix/snarf-ioctls: Likewise. * sysdeps/vax/setjmp.c: Likewise. 1997-07-05 11:56 Ulrich Drepper <drepper@cygnus.com> * login/login.c (tty_name): Use newly allocated buffer. Patch by Jaakko Hyvtti <jaakko.hyvatti@iki.fi>. * time/asctime.c: Never translate week and month name according to LC_TIME. Patch by Paul Eggert <eggert@twinsun.com>. 1997-07-03 22:50 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * locale/setlocale.c (setname): Do nothing when reusing the same name. 1997-07-03 20:18 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * libc.map: Add global variables of malloc. 1997-07-03 13:24 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/dl-version.c (find_needed): Look for needed objects also in the dependency list of the current object. Added new parameter to find its link map, caller changed. 1997-07-03 12:33 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/fpu/fraiseexcpt.c: Correct the FE_INEXACT and FE_UNDERFLOW cases. 1997-07-01 13:36 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/link.h: Remove final comma from enumerator list, forbidden by ISO C. Use __inline instead of inline. 1997-07-01 16:40 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * hurd/hurdsig.c: Include <hurd/id.h>. (reauth_proc): Call proc_setowner appropriately too. 1997-07-01 09:18 H.J. Lu <hjl@gnu.ai.mit.edu> * libc.map: Add missing symbol. 1997-06-30 12:12 Fila Kolodny <fila@ibi.com> * sysdeps/mach/hurd/fchdir.c: Make fchdir a weak alias of __fchdir. * sysdeps/mach/hurd/getpeername.c (getpeername): Remove spurious declaration of addr. 1997-06-29 17:56 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/argp.texi (Argp Option Vectors): Fix use of @math to make it work in TeX. 1997-06-27 21:25 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makeconfig (+includes): Add include directory to include path. * configure.in (sysnames): Don't add it here. * Makefile (subdir-dirs): Define and add it to vpath for headers. * Make-dist (all-headers): Look in include directory for indirection headers. Filter out header names pointing outside the source directory. * Makefile (distribute): Remove ansidecl.h, add libc.map. * Make-dist (+tsrcs): Add version scripts for extra libraries. * Makerules (distinfo-vars): Add %-map for extra libraries. * sysdeps/unix/sysv/linux/alpha/Dist: Rename sys/kernel_termios.h to kernel_termios.h. * sysdeps/unix/sysv/linux/powerpc/Dist: Remove ioctl-types.h, termbits.h and sys/kernel_termios.h. * sysdeps/mips/mips64/Dist: New file. * sysdeps/unix/sysv/linux/Dist: Add stdio_lim.h.in. 1997-06-29 23:03 Andreas Jaeger <aj@arthur.rhein-neckar.de> * math/test-fenv.c (feenv_nomask_test): New test for non masked exceptions. (feenv_mask_test): New test for masked exceptions (feenv_tests): New function calls feenv_nomask_test and feenv_mask_test. (main): Call new tests. (initial_tests): New test for initilisation.
1997-07-07 06:02:42 +08:00
# of many little headers in the include directory.
Sat Nov 18 16:46:01 1995 Ulrich Drepper <drepper@gnu.ai.mit.edu> * libio/Makefile, libio/cleanup.c, libio/clearerr.c, libio/feof.c, libio/ferror.c, libio/fgetc.c, libio/filedoalloc.c, libio/fileno.c, libio/fileops.c, libio/fputc.c, libio/freopen.c, libio/fseek.c, libio/genops.c, libio/getc.c, libio/getchar.c, libio/iofclose.c, libio/iofdopen.c, libio/iofflush.c, libio/iofgetpos.c, libio/iofgets.c, libio/iofopen.c, libio/iofprintf.c, libio/iofputs.c, libio/iofread.c, libio/iofscanf.c, libio/iofsetpos.c, libio/ioftell.c, libio/iofwrite.c, libio/iogetdelim.c, libio/iogetline.c, libio/iogets.c, libio/iolibio.h, libio/iopadn.c, libio/ioprims.c, libio/ioputs.c, libio/ioseekoff.c, libio/ioseekpos.c, libio/iosetbuffer.c, libio/iosetvbuf.c, libio/iosprintf.c, libio/ioungetc.c, libio/iovsprintf.c, libio/iovsscanf.c, libio/libio.h, libio/libioP.h, libio/putc.c, libio/putchar.c, libio/rewind.c, libio/setbuf.c, libio/setlinebuf.c, libio/stdfiles.c, libio/stdio.c, libio/stdio.h, libio/strfile.h, libio/strops.c, libio/vasprintf.c, libio/vscanf.c, libio/vsnprintf.c: New files. Slightly modified version from Linux libc. * libio/memstream.c, libio/vdprintf.c: New files for functions not (yet) part of GNU libio. * libio/iofopncook.c: Implementation of `fopencookie', mainly written by Per Bothner. * stdio-common/getline.c: Adapted to libio. * stdio-common/snprintf.c: Adapted to libio. * stdio-common/vfprintf.c: Adapted to libio. * stdio-common/vfscanf.c: Adapted to libio. * sysdeps/posix/tempname.c: Adapted to libio.
1995-11-20 11:48:11 +08:00
libio-include = -I$(..)libio
1995-02-18 09:27:10 +08:00
# List of non-library modules that we build.
built-modules = iconvprogs iconvdata ldconfig libmemusage \
libpcprofile librpcsvc locale-programs \
Suppress internal declarations for most of the testsuite. This patch adds a new build module called 'testsuite'. IS_IN (testsuite) implies _ISOMAC, as do IS_IN_build and __cplusplus (which means several ad-hoc tests for __cplusplus can go away). libc-symbols.h now suppresses almost all of *itself* when _ISOMAC is defined; in particular, _ISOMAC mode does not get config.h automatically anymore. There are still quite a few tests that need to see internal gunk of one variety or another. For them, we now have 'tests-internal' and 'test-internal-extras'; files in this category will still be compiled with MODULE_NAME=nonlib, and everything proceeds as it always has. The bulk of this patch is moving tests from 'tests' to 'tests-internal'. There is also 'tests-static-internal', which has the same effect on files in 'tests-static', and 'modules-names-tests', which has the *inverse* effect on files in 'modules-names' (it's inverted because most of the things in modules-names are *not* tests). For both of these, the file must appear in *both* the new variable and the old one. There is also now a special case for when libc-symbols.h is included without MODULE_NAME being defined at all. (This happens during the creation of libc-modules.h, and also when preprocessing Versions files.) When this happens, IS_IN is set to be always false and _ISOMAC is *not* defined, which was the status quo, but now it's explicit. The remaining changes to C source files in this patch seemed likely to cause problems in the absence of the main change. They should be relatively self-explanatory. In a few cases I duplicated a definition from an internal header rather than move the test to tests-internal; this was a judgement call each time and I'm happy to change those however reviewers feel is more appropriate. * Makerules: New subdir configuration variables 'tests-internal' and 'test-internal-extras'. Test files in these categories will still be compiled with MODULE_NAME=nonlib. Test files in the existing categories (tests, xtests, test-srcs, test-extras) are now compiled with MODULE_NAME=testsuite. New subdir configuration variable 'modules-names-tests'. Files which are in both 'modules-names' and 'modules-names-tests' will be compiled with MODULE_NAME=testsuite instead of MODULE_NAME=extramodules. (gen-as-const-headers): Move to tests-internal. (do-tests-clean, common-mostlyclean): Support tests-internal. * Makeconfig (built-modules): Add testsuite. * Makefile: Change libof-check-installed-headers-c and libof-check-installed-headers-cxx to 'testsuite'. * Rules: Likewise. Support tests-internal. * benchtests/strcoll-inputs/filelist#en_US.UTF-8: Remove extra-modules.mk. * config.h.in: Don't check for __OPTIMIZE__ or __FAST_MATH__ here. * include/libc-symbols.h: Move definitions of _GNU_SOURCE, PASTE_NAME, PASTE_NAME1, IN_MODULE, IS_IN, and IS_IN_LIB to the very top of the file and rationalize their order. If MODULE_NAME is not defined at all, define IS_IN to always be false, and don't define _ISOMAC. If any of IS_IN (testsuite), IS_IN_build, or __cplusplus are true, define _ISOMAC and suppress everything else in this file, starting with the inclusion of config.h. Do check for inappropriate definitions of __OPTIMIZE__ and __FAST_MATH__ here, but only if _ISOMAC is not defined. Correct some out-of-date commentary. * include/math.h: If _ISOMAC is defined, undefine NO_LONG_DOUBLE and _Mlong_double_ before including math.h. * include/string.h: If _ISOMAC is defined, don't expose _STRING_ARCH_unaligned. Move a comment to a more appropriate location. * include/errno.h, include/stdio.h, include/stdlib.h, include/string.h * include/time.h, include/unistd.h, include/wchar.h: No need to check __cplusplus nor use __BEGIN_DECLS/__END_DECLS. * misc/sys/cdefs.h (__NTHNL): New macro. * sysdeps/m68k/m680x0/fpu/bits/mathinline.h (__m81_defun): Use __NTHNL to avoid errors with GCC 6. * elf/tst-env-setuid-tunables.c: Include config.h with _LIBC defined, for HAVE_TUNABLES. * inet/tst-checks-posix.c: No need to define _ISOMAC. * intl/tst-gettext2.c: Provide own definition of N_. * math/test-signgam-finite-c99.c: No need to define _ISOMAC. * math/test-signgam-main.c: No need to define _ISOMAC. * stdlib/tst-strtod.c: Convert to test-driver. Split locale_test to... * stdlib/tst-strtod1i.c: ...this new file. * stdlib/tst-strtod5.c: Convert to test-driver and add copyright notice. Split tests of __strtod_internal to... * stdlib/tst-strtod5i.c: ...this new file. * string/test-string.h: Include stdint.h. Duplicate definition of inhibit_loop_to_libcall here (from libc-symbols.h). * string/test-strstr.c: Provide dummy definition of libc_hidden_builtin_def when including strstr.c. * sysdeps/ia64/fpu/libm-symbols.h: Suppress entire file in _ISOMAC mode; no need to test __STRICT_ANSI__ nor __cplusplus as well. * sysdeps/x86_64/fpu/math-tests-arch.h: Include cpu-features.h. Don't include init-arch.h. * sysdeps/x86_64/multiarch/test-multiarch.h: Include cpu-features.h. Don't include init-arch.h. * elf/Makefile: Move tst-ptrguard1-static, tst-stackguard1-static, tst-tls1-static, tst-tls2-static, tst-tls3-static, loadtest, unload, unload2, circleload1, neededtest, neededtest2, neededtest3, neededtest4, tst-tls1, tst-tls2, tst-tls3, tst-tls6, tst-tls7, tst-tls8, tst-dlmopen2, tst-ptrguard1, tst-stackguard1, tst-_dl_addr_inside_object, and all of the ifunc tests to tests-internal. Don't add $(modules-names) to test-extras. * inet/Makefile: Move tst-inet6_scopeid_pton to tests-internal. Add tst-deadline to tests-static-internal. * malloc/Makefile: Move tst-mallocstate and tst-scratch_buffer to tests-internal. * misc/Makefile: Move tst-atomic and tst-atomic-long to tests-internal. * nptl/Makefile: Move tst-typesizes, tst-rwlock19, tst-sem11, tst-sem12, tst-sem13, tst-barrier5, tst-signal7, tst-tls3, tst-tls3-malloc, tst-tls5, tst-stackguard1, tst-sem11-static, tst-sem12-static, and tst-stackguard1-static to tests-internal. Link tests-internal with libpthread also. Don't add $(modules-names) to test-extras. * nss/Makefile: Move tst-field to tests-internal. * posix/Makefile: Move bug-regex5, bug-regex20, bug-regex33, tst-rfc3484, tst-rfc3484-2, and tst-rfc3484-3 to tests-internal. * stdlib/Makefile: Move tst-strtod1i, tst-strtod3, tst-strtod4, tst-strtod5i, tst-tls-atexit, and tst-tls-atexit-nodelete to tests-internal. * sunrpc/Makefile: Move tst-svc_register to tests-internal. * sysdeps/powerpc/Makefile: Move test-get_hwcap and test-get_hwcap-static to tests-internal. * sysdeps/unix/sysv/linux/Makefile: Move tst-setgetname to tests-internal. * sysdeps/x86_64/fpu/Makefile: Add all libmvec test modules to modules-names-tests.
2016-11-21 09:46:30 +08:00
memusagestat nonlib nscd extramodules libnldbl libsupport \
Use LFS and 64 bit time for installed programs (BZ #15333) The installed programs are built with a combination of different values for MODULE_NAME, as below. To enable both Long File Support and 64 bt time, -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 is added for nonlibi, nscd, lddlibc4, libresolv, ldconfig, locale_programs, iconvprogs, libnss_files, libnss_compat, libnss_db, libnss_hesiod, libutil, libpcprofile, and libSegFault. nscd/nscd nscd/nscd.o MODULE_NAME=nscd nscd/connections.o MODULE_NAME=nscd nscd/pwdcache.o MODULE_NAME=nscd nscd/getpwnam_r.o MODULE_NAME=nscd nscd/getpwuid_r.o MODULE_NAME=nscd nscd/grpcache.o MODULE_NAME=nscd nscd/getgrnam_r.o MODULE_NAME=nscd nscd/getgrgid_r.o MODULE_NAME=nscd nscd/hstcache.o MODULE_NAME=nscd nscd/gethstbyad_r.o MODULE_NAME=nscd nscd/gethstbynm3_r.o MODULE_NAME=nscd nscd/getsrvbynm_r.o MODULE_NAME=nscd nscd/getsrvbypt_r.o MODULE_NAME=nscd nscd/servicescache.o MODULE_NAME=nscd nscd/dbg_log.o MODULE_NAME=nscd nscd/nscd_conf.o MODULE_NAME=nscd nscd/nscd_stat.o MODULE_NAME=nscd nscd/cache.o MODULE_NAME=nscd nscd/mem.o MODULE_NAME=nscd nscd/nscd_setup_thread.o MODULE_NAME=nscd nscd/xmalloc.o MODULE_NAME=nscd nscd/xstrdup.o MODULE_NAME=nscd nscd/aicache.o MODULE_NAME=nscd nscd/initgrcache.o MODULE_NAME=nscd nscd/gai.o MODULE_NAME=nscd nscd/res_hconf.o MODULE_NAME=nscd nscd/netgroupcache.o MODULE_NAME=nscd nscd/cachedumper.o MODULE_NAME=nscd elf/lddlibc4 elf/lddlibc4 MODULE_NAME=lddlibc4 elf/pldd elf/pldd.o MODULE_NAME=nonlib elf/xmalloc.o MODULE_NAME=nonlib elf/sln elf/sln.o MODULE_NAME=nonlib elf/static-stubs.o MODULE_NAME=nonlib elf/sprof MODULE_NAME=nonlib elf/ldconfig elf/ldconfig.o MODULE_NAME=ldconfig elf/cache.o MODULE_NAME=nonlib elf/readlib.o MODULE_NAME=nonlib elf/xmalloc.o MODULE_NAME=nonlib elf/xstrdup.o MODULE_NAME=nonlib elf/chroot_canon.o MODULE_NAME=nonlib elf/static-stubs.o MODULE_NAME=nonlib elf/stringtable.o MODULE_NAME=nonlib io/pwd io/pwd.o MODULE_NAME=nonlib locale/locale locale/locale.o MODULE_NAME=locale_programs locale/locale-spec.o MODULE_NAME=locale_programs locale/charmap-dir.o MODULE_NAME=locale_programs locale/simple-hash.o MODULE_NAME=locale_programs locale/xmalloc.o MODULE_NAME=locale_programs locale/xstrdup.o MODULE_NAME=locale_programs locale/record-status.o MODULE_NAME=locale_programs locale/xasprintf.o MODULE_NAME=locale_programs locale/localedef locale/localedef.o MODULE_NAME=locale_programs locale/ld-ctype.o MODULE_NAME=locale_programs locale/ld-messages.o MODULE_NAME=locale_programs locale/ld-monetary.o MODULE_NAME=locale_programs locale/ld-numeric.o MODULE_NAME=locale_programs locale/ld-time.o MODULE_NAME=locale_programs locale/ld-paper.o MODULE_NAME=locale_programs locale/ld-name.o MODULE_NAME=locale_programs locale/ld-address.o MODULE_NAME=locale_programs locale/ld-telephone.o MODULE_NAME=locale_programs locale/ld-measurement.o MODULE_NAME=locale_programs locale/ld-identification.o MODULE_NAME=locale_programs locale/ld-collate.o MODULE_NAME=locale_programs locale/charmap.o MODULE_NAME=locale_programs locale/linereader.o MODULE_NAME=locale_programs locale/locfile.o MODULE_NAME=locale_programs locale/repertoire.o MODULE_NAME=locale_programs locale/locarchive.o MODULE_NAME=locale_programs locale/md5.o MODULE_NAME=locale_programs locale/charmap-dir.o MODULE_NAME=locale_programs locale/simple-hash.o MODULE_NAME=locale_programs locale/xmalloc.o MODULE_NAME=locale_programs locale/xstrdup.o MODULE_NAME=locale_programs locale/record-status.o MODULE_NAME=locale_programs locale/xasprintf.o MODULE_NAME=locale_programs catgets/gencat catgets/gencat.o MODULE_NAME=nonlib catgets/xmalloc.o MODULE_NAME=nonlib nss/makedb nss/makedb.o MODULE_NAME=nonlib nss/xmalloc.o MODULE_NAME=nonlib nss/hash-string.o MODULE_NAME=nonlib nss/getent nss/getent.o MODULE_NAME=nonlib posix/getconf posix/getconf.o MODULE_NAME=nonlib login/utmpdump login/utmpdump.o MODULE_NAME=nonlib debug/pcprofiledump debug/pcprofiledump.o MODULE_NAME=nonlib timezone/zic timezone/zic.o MODULE_NAME=nonlib timezone/zdump timezone/zdump.o MODULE_NAME=nonlib iconv/iconv_prog iconv/iconv_prog.o MODULE_NAME=nonlib iconv/iconv_charmap.o MODULE_NAME=iconvprogs iconv/charmap.o MODULE_NAME=iconvprogs iconv/charmap-dir.o MODULE_NAME=iconvprogs iconv/linereader.o MODULE_NAME=iconvprogs iconv/dummy-repertoire.o MODULE_NAME=iconvprogs iconv/simple-hash.o MODULE_NAME=iconvprogs iconv/xstrdup.o MODULE_NAME=iconvprogs iconv/xmalloc.o MODULE_NAME=iconvprogs iconv/record-status.o MODULE_NAME=iconvprogs iconv/iconvconfig iconv/iconvconfig.o MODULE_NAME=nonlib iconv/strtab.o MODULE_NAME=iconvprogs iconv/xmalloc.o MODULE_NAME=iconvprogs iconv/hash-string.o MODULE_NAME=iconvprogs nss/libnss_files.so MODULE_NAME=libnss_files nss/libnss_compat.so.2 MODULE_NAME=libnss_compat nss/libnss_db.so MODULE_NAME=libnss_db hesiod/libnss_hesiod.so MODULE_NAME=libnss_hesiod login/libutil.so MODULE_NAME=libutil debug/libpcprofile.so MODULE_NAME=libpcprofile debug/libSegFault.so MODULE_NAME=libSegFault Also, to avoid adding both LFS and 64 bit time support on internal tests they are moved to a newer 'testsuite-internal' module. It should be similar to 'nonlib' regarding internal definition and linking namespace. This patch also enables LFS and 64 bit support of libsupport container programs (echo-container, test-container, shell-container, and true-container). Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: DJ Delorie <dj@redhat.com>
2021-05-21 01:20:18 +08:00
testsuite testsuite-internal
Add new macro IN_MODULE to identify module in which source is built The current scheme to identify which module a translation unit is built in depends on defining multiple macros IS_IN_* and also defining NOT_IN_libc if we're building a non-libc module. In addition, there is an IN_LIB macro that does effectively the same thing, but for different modules (notably the systemtap probes). This macro scheme unifies both ideas to use just one macro IN_MODULE and assign it a value depending on the module it is being built into. If the module is not defined, it defaults to MODULE_libc. Patches that follow will replace uses of IS_IN_* variables with the IS_IN() macro. libc-symbols.h has been converted already to give an example of how such a transition will look. Verified that there are no relevant binary changes. One source change that will crop up repeatedly is that of nscd_stat, since it uses the build timestamp as a constant in its logic. * Makeconfig (in-module): Get value of libof set for the translation unit. (CPPFLAGS): Use $(in-module). * Makerules: Don't suffix routine names for nonlib. * include/libc-modules.h: New file. * include/libc-symbols.h: Include libc-modules.h (IS_IN): New macro to replace IS_IN_* macros. * elf/Makefile: Set libof-* for each routine. * elf/rtld-Rules: Likewise. * extra-modules.mk: Likewise. * iconv/Makefile: Likewise. * iconvdata/Makefile: Likewise. * locale/Makefile: Likewise. * malloc/Makefile: Likewise. * nss/Makefile: Likewise. * sysdeps/gnu/Makefile: Likewise. * sysdeps/ieee754/ldbl-opt/Makefile: Likewise. * sysdeps/unix/sysv/linux/Makefile: Likewise. * sysdeps/s390/s390-64/Makefile: Likewise. * nscd/Makefile: Set libof-* for each routine. Set CFLAGS and CPPFLAGS for nscd instead of nonlib.
2014-11-19 14:43:54 +08:00
in-module = $(subst -,_,$(firstword $(libof-$(basename $(@F))) \
$(libof-$(<F)) \
$(libof-$(@F)) \
libc))
Use IE model for static variables in libc.so, libpthread.so and rtld The recently introduced TLS variables in the thread-local destructor implementation (__cxa_thread_atexit_impl) used the default GD access model, resulting in a call to __tls_get_addr. This causes a deadlock with recent changes to the way TLS is initialized because DTV allocations are delayed and hence despite knowing the offset to the variable inside its TLS block, the thread has to take the global rtld lock to safely update the TLS offset. This causes deadlocks when a thread is instantiated and joined inside a destructor of a dlopen'd DSO. The correct long term fix is to somehow not take the lock, but that will need a lot deeper change set to alter the way in which the big rtld lock is used. Instead, this patch just eliminates the call to __tls_get_addr for the thread-local variables inside libc.so, libpthread.so and rtld by building all of their units with -mtls-model=initial-exec. There were concerns that the static storage for TLS is limited and hence we should not be using it. Additionally, dynamically loaded modules may result in libc.so looking for this static storage pretty late in static binaries. Both concerns are valid when using TLSDESC since that is where one may attempt to allocate a TLS block from static storage for even those variables that are not IE. They're not very strong arguments for the traditional TLS model though, since it assumes that the static storage would be used sparingly and definitely not by default. Hence, for now this would only theoretically affect ARM architectures. The impact is hence limited to statically linked binaries that dlopen modules that in turn load libc.so, all that on arm hardware. It seems like a small enough impact to justify fixing the larger problem that currently affects everything everywhere. This still does not solve the original problem completely. That is, it is still possible to deadlock on the big rtld lock with a small tweak to the test case attached to this patch. That problem is however not a regression in 2.22 and hence could be tackled as a separate project. The test case is picked up as is from Alex's patch. This change has been tested to verify that it does not cause any issues on x86_64. ChangeLog: [BZ #18457] * nptl/Makefile (tests): New test case tst-join7. (modules-names): New test case module tst-join7mod. * nptl/tst-join7.c: New file. * nptl/tst-join7mod.c: New file. * Makeconfig (tls-model): Pass -ftls-model=initial-exec for all translation units in libc.so, libpthread.so and rtld.
2015-07-24 21:43:38 +08:00
# Build ld.so, libc.so and libpthread.so with -ftls-model=initial-exec
tls-model = $(if $(filter libpthread rtld \
libc,$(in-module)),-ftls-model=initial-exec,)
module-cppflags-real = -include $(common-objpfx)libc-modules.h \
-DMODULE_NAME=$(in-module)
# We don't need libc-modules.h and the MODULE_NAME definition for .v.i
# files. These targets don't (and will likely never need to) use the IS_IN
# facility. In fact, shlib-versions should not use it because that will
# create a circular dependency as libc-modules.h is generated from
# shlib-versions.
module-cppflags = $(if $(filter %.mk.i %.v.i,$(@F)),,$(module-cppflags-real))
1995-02-18 09:27:10 +08:00
# These are the variables that the implicit compilation rules use.
* sysdeps/generic/bits/libc-tsd.h [USE___THREAD]: Conditional changed from [USE_TLS && HAVE___THREAD]. * sysdeps/i386/dl-machine.h (elf_machine_type_class, elf_machine_rel): Disable TLS relocs if [RTLD_BOOTSTRAP && !USE___THREAD]. * sysdeps/x86_64/dl-machine.h (elf_machine_type_class, elf_machine_rela): Likewise. * sysdeps/sh/dl-machine.h (elf_machine_type_class, elf_machine_rela): Likewise. * include/link.h (struct link_map): Remove member l_tls_tp_initialized. * elf/rtld.c (_dl_start_final, dl_main): Don't use it. (_dl_start): Conditionalize PT_TLS check on [USE___THREAD]. * sysdeps/i386/dl-tls.h (__TLS_GET_ADDR): Use ___tls_get_addr_internal instead of ___tls_get_addr. (___tls_get_addr_internal): Add attribute_hidden to decl. * sysdeps/generic/ldsodefs.h (struct rtld_global): New variable _dl_error_catch_tsd. * elf/rtld.c (startup_error_tsd): New function. (dl_main): Point _dl_error_catch_tsd at that. * elf/dl-error.c: Don't use libc-tsd.h for DL_ERROR, use new function pointer instead. * elf/dl-tsd.c: New file. * elf/Makefile (routines): Add it. 2002-10-07 Roland McGrath <roland@redhat.com> * elf/dl-misc.c (_dl_debug_vdprintf): Use INTERNAL_SYSCALL macro for writev if it's available. Otherwise if [RTLD_PRIVATE_ERRNO] then take _dl_load_lock around calling __writev. * sysdeps/unix/sysv/linux/i386/sysdep.h (INTERNAL_SYSCALL): New macro. (INLINE_SYSCALL): Use that. * sysdeps/generic/dl-sysdep.h: New file. * sysdeps/mach/hurd/dl-sysdep.h: New file. * sysdeps/generic/ldsodefs.h: Include <dl-sysdep.h>. * include/errno.h [IS_IN_rtld]: Include <dl-sysdep.h> to define ... [RTLD_PRIVATE_ERRNO]: Use a hidden global variable for errno and access it directly. * elf/dl-minimal.c (__errno_location): Removed. * sysdeps/unix/i386/sysdep.S (__syscall_errno) [RTLD_PRIVATE_ERRNO]: Use GOTOFF access for errno. * sysdeps/unix/sysv/linux/i386/sysdep.h [RTLD_PRIVATE_ERRNO] (SYSCALL_ERROR_HANDLER): Likewise. * sysdeps/unix/x86_64/sysdep.S (__syscall_errno) [RTLD_PRIVATE_ERRNO]: Use PC-relative access for errno. * sysdeps/unix/sysv/linux/x86_64/sysdep.h [RTLD_PRIVATE_ERRNO] (SYSCALL_ERROR_HANDLER): Likewise. * include/tls.h: New file. (USE___THREAD): New macro. Define to 1 under [USE_TLS && HAVE___THREAD] and only when compiling libc or libpthread. * sysdeps/unix/sysv/linux/i386/sysdep.h [USE___THREAD]: Conditional changed from [USE_TLS && HAVE___THREAD]. * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. * sysdeps/unix/i386/sysdep.S: Likewise. * sysdeps/unix/x86_64/sysdep.S: Likewise. * include/errno.h: Likewise. * include/netdb.h: Likewise. * include/resolv.h: Likewise. * sysdeps/generic/errno.c: New file. * csu/Makefile (aux): New variable, list errno. * sysdeps/unix/sysv/linux/i386/sysdep.S (errno, _errno): Remove defns. * sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/arm/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/cris/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/hppa/sysdep.c: Likewise. * sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/powerpc/sysdep.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/sh/sysdep.S: Likewise. * sysdeps/unix/alpha/sysdep.S: Likewise. * sysdeps/generic/start.c: Likewise. * sysdeps/unix/start.c: Likewise. * sysdeps/unix/arm/start.c: Likewise. * sysdeps/unix/bsd/ultrix4/mips/start.S: Likewise. * sysdeps/unix/sparc/start.c: Likewise. * sysdeps/unix/sysv/irix4/start.c: Likewise. * sysdeps/unix/sysv/linux/mips/sysdep.S: File removed. * manual/search.texi (Tree Search Function, Hash Search Function): Mention search.h clearly. 2002-10-05 Roland McGrath <roland@redhat.com> * elf/dl-fxstat64.c: File removed. * elf/dl-xstat64.c: File removed. * elf/Makefile (rtld-routines): Remove them. * sysdeps/unix/sysv/linux/xstat64.c: Remove RTLD_STAT64 conditionals. Instead, use strong_alias instead of versioned_symbol in the !SHLIB_COMPAT case. * sysdeps/unix/sysv/linux/fxstat64.c: Likewise. * sysdeps/unix/sysv/linux/lxstat64.c: Likewise. * include/shlib-compat.h (SHLIB_COMPAT): Require that IS_IN_##lib be defined nonzero. [! NOT_IN_libc] (IS_IN_libc): Define it. * cppflags-iterator.mk (CPPFLAGS-$(cpp-src)): Use -Dx=1 not just -Dx. * elf/Makefile (CPPFLAGS-.os): Likewise. * sunrpc/rpc_main.c (main): Don't declare with noreturn attribute. Return the status instead of calling exit. * Makeconfig (CFLAGS): Prepend -std=gnu99. * Makerules (+make-deps): Use $(CFLAGS) only for .c sources. Remove superfluous rm command, whose @ plus make bugs hid all these commands from the make output. * include/stubs-prologue.h: New file. Give #error under #ifdef _LIBC. * Makefile ($(inst_includedir)/gnu/stubs.h): Depend on it. Use that file's contents instead of literal echo's for the prologue. * include/features.h: Include <gnu/stubs.h> unconditionally. * include/gnu/stubs.h: New file. 2002-09-30 Roland McGrath <roland@redhat.com> * elf/rtld-Rules: New file. * elf/Makefile ($(objpfx)librtld.map, $(objpfx)librtld.mk, $(objpfx)rtld-libc.a): New targets. (generated): Add them. (reloc-link): Remove -o $@ from the variable. ($(objpfx)dl-allobjs.os): Add -o $@ after $(reloc-link). (distribute): Add rtld-Rules. (CPPFLAGS-.os): Define this instead of CFLAGS-.os. * Makerules ($(+sysdir_pfx)sysd-rules): Emit rules for rtld-% targets. (common-mostlyclean, common-clean): Clean up rtld-* files. * sysdeps/unix/make-syscalls.sh: Add rtld-*.os target name to rules.
2002-10-11 18:52:20 +08:00
# Note that we can't use -std=* in CPPFLAGS, because it overrides
# the implicit -lang-asm and breaks cpp behavior for .S files--notably
# it causes cpp to stop predefining __ASSEMBLER__.
CPPFLAGS = $(config-extra-cppflags) $(CPPFLAGS-config) \
$($(subdir)-CPPFLAGS) \
$(+includes) $(defines) $(module-cppflags) \
-include $(..)include/libc-symbols.h $(sysdep-CPPFLAGS) \
$(CPPFLAGS-$(suffix $@)) \
$(foreach lib,$(libof-$(basename $(@F))) \
$(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
$(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F))) \
-DTOP_NAMESPACE=glibc
Add framework for tunables The tunables framework allows us to uniformly manage and expose global variables inside glibc as switches to users. tunables/README has instructions for glibc developers to add new tunables. Tunables support can be enabled by passing the --enable-tunables configure flag to the configure script. This patch only adds a framework and does not pose any limitations on how tunable values are read from the user. It also adds environment variables used in malloc behaviour tweaking to the tunables framework as a PoC of the compatibility interface. * manual/install.texi: Add --enable-tunables option. * INSTALL: Regenerate. * README.tunables: New file. * Makeconfig (CPPFLAGS): Define TOP_NAMESPACE. (before-compile): Generate dl-tunable-list.h early. * config.h.in: Add HAVE_TUNABLES. * config.make.in: Add have-tunables. * configure.ac: Add --enable-tunables option. * configure: Regenerate. * csu/init-first.c (__libc_init_first): Move __libc_init_secure earlier... * csu/init-first.c (LIBC_START_MAIN):... to here. Include dl-tunables.h, libc-internal.h. (LIBC_START_MAIN) [!SHARED]: Initialize tunables for static binaries. * elf/Makefile (dl-routines): Add dl-tunables. * elf/Versions (ld): Add __tunable_set_val to GLIBC_PRIVATE namespace. * elf/dl-support (_dl_nondynamic_init): Unset MALLOC_CHECK_ only when !HAVE_TUNABLES. * elf/rtld.c (process_envvars): Likewise. * elf/dl-sysdep.c [HAVE_TUNABLES]: Include dl-tunables.h (_dl_sysdep_start): Call __tunables_init. * elf/dl-tunable-types.h: New file. * elf/dl-tunables.c: New file. * elf/dl-tunables.h: New file. * elf/dl-tunables.list: New file. * malloc/tst-malloc-usable-static.c: New test case. * malloc/Makefile (tests-static): Add it. * malloc/arena.c [HAVE_TUNABLES]: Include dl-tunables.h. Define TUNABLE_NAMESPACE. (DL_TUNABLE_CALLBACK (set_mallopt_check)): New function. (DL_TUNABLE_CALLBACK_FNDECL): New macro. Use it to define callback functions. (ptmalloc_init): Set tunable values. * scripts/gen-tunables.awk: New file. * sysdeps/mach/hurd/dl-sysdep.c: Include dl-tunables.h. (_dl_sysdep_start): Call __tunables_init.
2017-01-01 02:02:17 +08:00
override CFLAGS = -std=gnu11 -fgnu89-inline $(config-extra-cflags) \
$(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
Use LFS and 64 bit time for installed programs (BZ #15333) The installed programs are built with a combination of different values for MODULE_NAME, as below. To enable both Long File Support and 64 bt time, -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 is added for nonlibi, nscd, lddlibc4, libresolv, ldconfig, locale_programs, iconvprogs, libnss_files, libnss_compat, libnss_db, libnss_hesiod, libutil, libpcprofile, and libSegFault. nscd/nscd nscd/nscd.o MODULE_NAME=nscd nscd/connections.o MODULE_NAME=nscd nscd/pwdcache.o MODULE_NAME=nscd nscd/getpwnam_r.o MODULE_NAME=nscd nscd/getpwuid_r.o MODULE_NAME=nscd nscd/grpcache.o MODULE_NAME=nscd nscd/getgrnam_r.o MODULE_NAME=nscd nscd/getgrgid_r.o MODULE_NAME=nscd nscd/hstcache.o MODULE_NAME=nscd nscd/gethstbyad_r.o MODULE_NAME=nscd nscd/gethstbynm3_r.o MODULE_NAME=nscd nscd/getsrvbynm_r.o MODULE_NAME=nscd nscd/getsrvbypt_r.o MODULE_NAME=nscd nscd/servicescache.o MODULE_NAME=nscd nscd/dbg_log.o MODULE_NAME=nscd nscd/nscd_conf.o MODULE_NAME=nscd nscd/nscd_stat.o MODULE_NAME=nscd nscd/cache.o MODULE_NAME=nscd nscd/mem.o MODULE_NAME=nscd nscd/nscd_setup_thread.o MODULE_NAME=nscd nscd/xmalloc.o MODULE_NAME=nscd nscd/xstrdup.o MODULE_NAME=nscd nscd/aicache.o MODULE_NAME=nscd nscd/initgrcache.o MODULE_NAME=nscd nscd/gai.o MODULE_NAME=nscd nscd/res_hconf.o MODULE_NAME=nscd nscd/netgroupcache.o MODULE_NAME=nscd nscd/cachedumper.o MODULE_NAME=nscd elf/lddlibc4 elf/lddlibc4 MODULE_NAME=lddlibc4 elf/pldd elf/pldd.o MODULE_NAME=nonlib elf/xmalloc.o MODULE_NAME=nonlib elf/sln elf/sln.o MODULE_NAME=nonlib elf/static-stubs.o MODULE_NAME=nonlib elf/sprof MODULE_NAME=nonlib elf/ldconfig elf/ldconfig.o MODULE_NAME=ldconfig elf/cache.o MODULE_NAME=nonlib elf/readlib.o MODULE_NAME=nonlib elf/xmalloc.o MODULE_NAME=nonlib elf/xstrdup.o MODULE_NAME=nonlib elf/chroot_canon.o MODULE_NAME=nonlib elf/static-stubs.o MODULE_NAME=nonlib elf/stringtable.o MODULE_NAME=nonlib io/pwd io/pwd.o MODULE_NAME=nonlib locale/locale locale/locale.o MODULE_NAME=locale_programs locale/locale-spec.o MODULE_NAME=locale_programs locale/charmap-dir.o MODULE_NAME=locale_programs locale/simple-hash.o MODULE_NAME=locale_programs locale/xmalloc.o MODULE_NAME=locale_programs locale/xstrdup.o MODULE_NAME=locale_programs locale/record-status.o MODULE_NAME=locale_programs locale/xasprintf.o MODULE_NAME=locale_programs locale/localedef locale/localedef.o MODULE_NAME=locale_programs locale/ld-ctype.o MODULE_NAME=locale_programs locale/ld-messages.o MODULE_NAME=locale_programs locale/ld-monetary.o MODULE_NAME=locale_programs locale/ld-numeric.o MODULE_NAME=locale_programs locale/ld-time.o MODULE_NAME=locale_programs locale/ld-paper.o MODULE_NAME=locale_programs locale/ld-name.o MODULE_NAME=locale_programs locale/ld-address.o MODULE_NAME=locale_programs locale/ld-telephone.o MODULE_NAME=locale_programs locale/ld-measurement.o MODULE_NAME=locale_programs locale/ld-identification.o MODULE_NAME=locale_programs locale/ld-collate.o MODULE_NAME=locale_programs locale/charmap.o MODULE_NAME=locale_programs locale/linereader.o MODULE_NAME=locale_programs locale/locfile.o MODULE_NAME=locale_programs locale/repertoire.o MODULE_NAME=locale_programs locale/locarchive.o MODULE_NAME=locale_programs locale/md5.o MODULE_NAME=locale_programs locale/charmap-dir.o MODULE_NAME=locale_programs locale/simple-hash.o MODULE_NAME=locale_programs locale/xmalloc.o MODULE_NAME=locale_programs locale/xstrdup.o MODULE_NAME=locale_programs locale/record-status.o MODULE_NAME=locale_programs locale/xasprintf.o MODULE_NAME=locale_programs catgets/gencat catgets/gencat.o MODULE_NAME=nonlib catgets/xmalloc.o MODULE_NAME=nonlib nss/makedb nss/makedb.o MODULE_NAME=nonlib nss/xmalloc.o MODULE_NAME=nonlib nss/hash-string.o MODULE_NAME=nonlib nss/getent nss/getent.o MODULE_NAME=nonlib posix/getconf posix/getconf.o MODULE_NAME=nonlib login/utmpdump login/utmpdump.o MODULE_NAME=nonlib debug/pcprofiledump debug/pcprofiledump.o MODULE_NAME=nonlib timezone/zic timezone/zic.o MODULE_NAME=nonlib timezone/zdump timezone/zdump.o MODULE_NAME=nonlib iconv/iconv_prog iconv/iconv_prog.o MODULE_NAME=nonlib iconv/iconv_charmap.o MODULE_NAME=iconvprogs iconv/charmap.o MODULE_NAME=iconvprogs iconv/charmap-dir.o MODULE_NAME=iconvprogs iconv/linereader.o MODULE_NAME=iconvprogs iconv/dummy-repertoire.o MODULE_NAME=iconvprogs iconv/simple-hash.o MODULE_NAME=iconvprogs iconv/xstrdup.o MODULE_NAME=iconvprogs iconv/xmalloc.o MODULE_NAME=iconvprogs iconv/record-status.o MODULE_NAME=iconvprogs iconv/iconvconfig iconv/iconvconfig.o MODULE_NAME=nonlib iconv/strtab.o MODULE_NAME=iconvprogs iconv/xmalloc.o MODULE_NAME=iconvprogs iconv/hash-string.o MODULE_NAME=iconvprogs nss/libnss_files.so MODULE_NAME=libnss_files nss/libnss_compat.so.2 MODULE_NAME=libnss_compat nss/libnss_db.so MODULE_NAME=libnss_db hesiod/libnss_hesiod.so MODULE_NAME=libnss_hesiod login/libutil.so MODULE_NAME=libutil debug/libpcprofile.so MODULE_NAME=libpcprofile debug/libSegFault.so MODULE_NAME=libSegFault Also, to avoid adding both LFS and 64 bit time support on internal tests they are moved to a newer 'testsuite-internal' module. It should be similar to 'nonlib' regarding internal definition and linking namespace. This patch also enables LFS and 64 bit support of libsupport container programs (echo-container, test-container, shell-container, and true-container). Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: DJ Delorie <dj@redhat.com>
2021-05-21 01:20:18 +08:00
$(+extra-math-flags) $(+extra-time-flags) \
$(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \
Use IE model for static variables in libc.so, libpthread.so and rtld The recently introduced TLS variables in the thread-local destructor implementation (__cxa_thread_atexit_impl) used the default GD access model, resulting in a call to __tls_get_addr. This causes a deadlock with recent changes to the way TLS is initialized because DTV allocations are delayed and hence despite knowing the offset to the variable inside its TLS block, the thread has to take the global rtld lock to safely update the TLS offset. This causes deadlocks when a thread is instantiated and joined inside a destructor of a dlopen'd DSO. The correct long term fix is to somehow not take the lock, but that will need a lot deeper change set to alter the way in which the big rtld lock is used. Instead, this patch just eliminates the call to __tls_get_addr for the thread-local variables inside libc.so, libpthread.so and rtld by building all of their units with -mtls-model=initial-exec. There were concerns that the static storage for TLS is limited and hence we should not be using it. Additionally, dynamically loaded modules may result in libc.so looking for this static storage pretty late in static binaries. Both concerns are valid when using TLSDESC since that is where one may attempt to allocate a TLS block from static storage for even those variables that are not IE. They're not very strong arguments for the traditional TLS model though, since it assumes that the static storage would be used sparingly and definitely not by default. Hence, for now this would only theoretically affect ARM architectures. The impact is hence limited to statically linked binaries that dlopen modules that in turn load libc.so, all that on arm hardware. It seems like a small enough impact to justify fixing the larger problem that currently affects everything everywhere. This still does not solve the original problem completely. That is, it is still possible to deadlock on the big rtld lock with a small tweak to the test case attached to this patch. That problem is however not a regression in 2.22 and hence could be tackled as a separate project. The test case is picked up as is from Alex's patch. This change has been tested to verify that it does not cause any issues on x86_64. ChangeLog: [BZ #18457] * nptl/Makefile (tests): New test case tst-join7. (modules-names): New test case module tst-join7mod. * nptl/tst-join7.c: New file. * nptl/tst-join7mod.c: New file. * Makeconfig (tls-model): Pass -ftls-model=initial-exec for all translation units in libc.so, libpthread.so and rtld.
2015-07-24 21:43:38 +08:00
$(CFLAGS-$(@F)) $(tls-model) \
$(foreach lib,$(libof-$(basename $(@F))) \
$(libof-$(<F)) $(libof-$(@F)),$(CFLAGS-$(lib)))
# Use our copies of cstdlib and cmath.
override CXXFLAGS = -I$(common-objpfx) $(c++-sysincludes) \
$(filter-out %frame-pointer,$(+cflags)) $(sysdep-CFLAGS) \
$(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) $(CFLAGS-$(@F))
1995-02-18 09:27:10 +08:00
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 08:06:02 +08:00
# If everything is compiled with -fPIC (implicitly) we must tell this by
# defining the PIC symbol.
ifeq (yes,$(build-pic-default))
pic-default = -DPIC
endif
Thu Mar 16 00:04:41 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * locale/C-ctype.c: New correct data generated by drepper. * Rules: Don't use $(libc.a). Parsing of grouped numbers contributed by Ulrich Drepper. * stdlib/strtol.c (__strtol_internal): Renamed from strtol. Take new flag arg; if nonzero, parse locale-dependent thousands grouping and interpret only the prefix that is correctly grouped. (strtol): Define this to call _strtol_internal with zero for the flag. Use a weak symbol for the definition. * stdlib/strtod.c (strtod, __strtod_internal): Likewise. Check for the exponent of the number overflowing the float format. * stdlib/stdlib.h (__strtof, __strtold): Declarations removed. (__strto{f,d,ld,l,ul,q,uq}_internal): Declare these functions. [__OPTIMIZE__]: Define inline functions calling those. * stdlib/grouping.h: New file, written by drepper. * stdlib/Makefile (distribute): Add grouping.h. * stdio/vfscanf.c: Grok %' modifier to numeric conversions. Call __strtoX_internal with the grouping flag set iff the modifier is present. Wed Mar 15 00:40:54 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * sysdeps/generic/memchr.c: Fix typos: limit.h -> limits.h. * mach/Machrules: Produce static deps for all object flavors. [interface-library]: Remove all these variables and rules. ($(interface-library)-routines): Define this variable. (extra-libs): Append $(interface-library) to this. * mach/Makefile (interface-library): Omit .a suffix. * hurd/Makefile: Likewise. Tue Mar 14 23:40:31 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * stdio/internals.c (flushbuf): If !FLUSH_ONLY, don't skip out early if no new data in buffer after priming. * Makerules (object-suffixes, libtypes): Move all these variables to Makeconfig. * Makeconfig (object-suffixes, libtypes): Moved here from Makerules. * Makerules (build-extra-lib): New canned sequence. * sysdeps/mach/hurd/euidaccess.c: Include fcntl.h. Declare ERR; fix uses of FILE and PORT. Remove bogus weak alias for `access'. * sysdeps/mach/hurd/dirfd.c: Include hurd/fd.h and errno.h. Add missing semicolon. * sysdeps/mach/hurd/opendir.c: Include hurd/fd.h. Use a `struct hurd_fd *' temp var, since DIRP->__fd is a `void *'. * sysdeps/mach/hurd/readdir.c: Include hurd/fd.h. * stdlib/wcstombs.c: #if 0 out code for non-ASCII chars until the locale data format is implemented. * sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler): Pass &__sigreturn on the stack to the trampoline code, so it is not position-dependent. * stdio/printf_fp.c (NDEBUG): Define this to disable assert. Don't include <stdarg.h>. (__printf_fp): Last arg ARGS is now `const void **const'; dereference ARGS[0] instead of using va_arg. * locale/setlocale.c: In LC_ALL case, initialize CATEGORY before loop to install data. * locale/loadlocale.c (_nl_category_num_items): Use _NL_ITEM_INDEX to extract number from item code. (_nl_load_locale): Close the descriptor when finished. * malloc/realloc.c (_realloc_internal): Call _malloc_internal in place of malloc. * time/tzfile.c (__tzfile_default): Initialize RULE_STDOFF to zero.
1995-03-16 13:32:45 +08:00
# Enable object files for different versions of the library.
# Various things use $(object-suffixes) to know what all to make.
# The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX})
# to pass different flags for each flavor.
libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o))
# .op may be added to all-object-suffixes below.
all-object-suffixes := .o .os .oS
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-25 07:03:42 +08:00
object-suffixes :=
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 08:06:02 +08:00
CPPFLAGS-.o = $(pic-default)
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 08:59:33 +08:00
# libc.a must be compiled with -fPIE/-fpie for static PIE.
CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) $(pie-default)
CFLAGS-.o += $(call elide-fortify-source,.o,$(routines_no_fortify))
CFLAGS-.o += $(call elide-fortify-source,_chk.o,$(routines_no_fortify))
Thu Mar 16 00:04:41 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * locale/C-ctype.c: New correct data generated by drepper. * Rules: Don't use $(libc.a). Parsing of grouped numbers contributed by Ulrich Drepper. * stdlib/strtol.c (__strtol_internal): Renamed from strtol. Take new flag arg; if nonzero, parse locale-dependent thousands grouping and interpret only the prefix that is correctly grouped. (strtol): Define this to call _strtol_internal with zero for the flag. Use a weak symbol for the definition. * stdlib/strtod.c (strtod, __strtod_internal): Likewise. Check for the exponent of the number overflowing the float format. * stdlib/stdlib.h (__strtof, __strtold): Declarations removed. (__strto{f,d,ld,l,ul,q,uq}_internal): Declare these functions. [__OPTIMIZE__]: Define inline functions calling those. * stdlib/grouping.h: New file, written by drepper. * stdlib/Makefile (distribute): Add grouping.h. * stdio/vfscanf.c: Grok %' modifier to numeric conversions. Call __strtoX_internal with the grouping flag set iff the modifier is present. Wed Mar 15 00:40:54 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * sysdeps/generic/memchr.c: Fix typos: limit.h -> limits.h. * mach/Machrules: Produce static deps for all object flavors. [interface-library]: Remove all these variables and rules. ($(interface-library)-routines): Define this variable. (extra-libs): Append $(interface-library) to this. * mach/Makefile (interface-library): Omit .a suffix. * hurd/Makefile: Likewise. Tue Mar 14 23:40:31 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * stdio/internals.c (flushbuf): If !FLUSH_ONLY, don't skip out early if no new data in buffer after priming. * Makerules (object-suffixes, libtypes): Move all these variables to Makeconfig. * Makeconfig (object-suffixes, libtypes): Moved here from Makerules. * Makerules (build-extra-lib): New canned sequence. * sysdeps/mach/hurd/euidaccess.c: Include fcntl.h. Declare ERR; fix uses of FILE and PORT. Remove bogus weak alias for `access'. * sysdeps/mach/hurd/dirfd.c: Include hurd/fd.h and errno.h. Add missing semicolon. * sysdeps/mach/hurd/opendir.c: Include hurd/fd.h. Use a `struct hurd_fd *' temp var, since DIRP->__fd is a `void *'. * sysdeps/mach/hurd/readdir.c: Include hurd/fd.h. * stdlib/wcstombs.c: #if 0 out code for non-ASCII chars until the locale data format is implemented. * sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler): Pass &__sigreturn on the stack to the trampoline code, so it is not position-dependent. * stdio/printf_fp.c (NDEBUG): Define this to disable assert. Don't include <stdarg.h>. (__printf_fp): Last arg ARGS is now `const void **const'; dereference ARGS[0] instead of using va_arg. * locale/setlocale.c: In LC_ALL case, initialize CATEGORY before loop to install data. * locale/loadlocale.c (_nl_category_num_items): Use _NL_ITEM_INDEX to extract number from item code. (_nl_load_locale): Close the descriptor when finished. * malloc/realloc.c (_realloc_internal): Call _malloc_internal in place of malloc. * time/tzfile.c (__tzfile_default): Initialize RULE_STDOFF to zero.
1995-03-16 13:32:45 +08:00
libtype.o := lib%.a
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-25 07:03:42 +08:00
object-suffixes += .o
Thu Mar 16 00:04:41 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * locale/C-ctype.c: New correct data generated by drepper. * Rules: Don't use $(libc.a). Parsing of grouped numbers contributed by Ulrich Drepper. * stdlib/strtol.c (__strtol_internal): Renamed from strtol. Take new flag arg; if nonzero, parse locale-dependent thousands grouping and interpret only the prefix that is correctly grouped. (strtol): Define this to call _strtol_internal with zero for the flag. Use a weak symbol for the definition. * stdlib/strtod.c (strtod, __strtod_internal): Likewise. Check for the exponent of the number overflowing the float format. * stdlib/stdlib.h (__strtof, __strtold): Declarations removed. (__strto{f,d,ld,l,ul,q,uq}_internal): Declare these functions. [__OPTIMIZE__]: Define inline functions calling those. * stdlib/grouping.h: New file, written by drepper. * stdlib/Makefile (distribute): Add grouping.h. * stdio/vfscanf.c: Grok %' modifier to numeric conversions. Call __strtoX_internal with the grouping flag set iff the modifier is present. Wed Mar 15 00:40:54 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * sysdeps/generic/memchr.c: Fix typos: limit.h -> limits.h. * mach/Machrules: Produce static deps for all object flavors. [interface-library]: Remove all these variables and rules. ($(interface-library)-routines): Define this variable. (extra-libs): Append $(interface-library) to this. * mach/Makefile (interface-library): Omit .a suffix. * hurd/Makefile: Likewise. Tue Mar 14 23:40:31 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * stdio/internals.c (flushbuf): If !FLUSH_ONLY, don't skip out early if no new data in buffer after priming. * Makerules (object-suffixes, libtypes): Move all these variables to Makeconfig. * Makeconfig (object-suffixes, libtypes): Moved here from Makerules. * Makerules (build-extra-lib): New canned sequence. * sysdeps/mach/hurd/euidaccess.c: Include fcntl.h. Declare ERR; fix uses of FILE and PORT. Remove bogus weak alias for `access'. * sysdeps/mach/hurd/dirfd.c: Include hurd/fd.h and errno.h. Add missing semicolon. * sysdeps/mach/hurd/opendir.c: Include hurd/fd.h. Use a `struct hurd_fd *' temp var, since DIRP->__fd is a `void *'. * sysdeps/mach/hurd/readdir.c: Include hurd/fd.h. * stdlib/wcstombs.c: #if 0 out code for non-ASCII chars until the locale data format is implemented. * sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler): Pass &__sigreturn on the stack to the trampoline code, so it is not position-dependent. * stdio/printf_fp.c (NDEBUG): Define this to disable assert. Don't include <stdarg.h>. (__printf_fp): Last arg ARGS is now `const void **const'; dereference ARGS[0] instead of using va_arg. * locale/setlocale.c: In LC_ALL case, initialize CATEGORY before loop to install data. * locale/loadlocale.c (_nl_category_num_items): Use _NL_ITEM_INDEX to extract number from item code. (_nl_load_locale): Close the descriptor when finished. * malloc/realloc.c (_realloc_internal): Call _malloc_internal in place of malloc. * time/tzfile.c (__tzfile_default): Initialize RULE_STDOFF to zero.
1995-03-16 13:32:45 +08:00
ifeq (yes,$(build-shared))
# Under --enable-shared, we will build a shared library of PIC objects.
Update. 1997-08-20 05:30 Ulrich Drepper <drepper@cygnus.com> * catgets/catgets.c (catclose): Use __munmap instead of munmap. * catgets/gencat.c (read_input_file): Fix typo. * dirent/dirent.h: Make seekdir and telldir available for __USE_XOPEN. * elf/dl-load.c: Fix case of missing DT_RPATH in object which gets executed (e.g., when it is a static binary). * intl/bindtextdomain.c: Use strdup in glibc. Correct comment. * intl/dcgettext.c: Likewise. * intl/dgettext.c: Likewise. * intl/explodename.c: Likewise. * intl/finddomain.c: Likewise. * intl/gettext.c: Likewise. * intl/gettext.h: Likewise. * intl/hash-string.h: Likewise. * intl/l10nflist.c: Likewise. * intl/libintl.h: Likewise. * intl/loadinfo.h: Likewise. * intl/loadmsgcat.c: Likewise. * intl/localealias.c: Likewise. * intl/textdomain.c: Likewise. Unify libio sources with code in libg++. * libio/fcloseall.c: Update and reformat copyright. Protect use of weak_alias. Use _IO_* thread macros instead of __libc_*. * libio/feof.c: Likewise. * libio/feof_u.c: Likewise. * libio/ferror.c: Likewise. * libio/ferror_u.c: Likewise. * libio/fgetc.c: Likewise. * libio/filedoalloc.c: Likewise. * libio/fileno.c: Likewise. * libio/fileops.c: Likewise. * libio/fputc.c: Likewise. * libio/fputc_u.c: Likewise. * libio/freopen.c: Likewise. * libio/fseek.c: Likewise. * libio/genops.c: Likewise. * libio/getc.c: Likewise. * libio/getc_u.c: Likewise. * libio/getchar.c: Likewise. * libio/getchar_u.c: Likewise. * libio/iofclose.c: Likewise. * libio/iofdopen.c: Likewise. * libio/iofflush.c: Likewise. * libio/iofflush_u.c: Likewise. * libio/iofgetpos.c: Likewise. * libio/iofgets.c: Likewise. * libio/iofopen.c: Likewise. * libio/iofopncook.c: Likewise. * libio/iofprintf.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/iogetline.c: Likewise. * libio/iogets.c: Likewise. * libio/iopadn.c: Likewise. * libio/iopopen.c: Likewise. * libio/ioputs.c: Likewise. * libio/ioseekoff.c: Likewise. * libio/ioseekpos.c: Likewise. * libio/iosetbuffer.c: Likewise. * libio/iosetvbuf.c: Likewise. * libio/iosprintf.c: Likewise. * libio/ioungetc.c: Likewise. * libio/iovdprintf.c: Likewise. * libio/iovsprintf.c: Likewise. * libio/iovsscanf.c: Likewise. * libio/libio.h: Likewise. * libio/libioP.h: Likewise. * libio/obprintf.c: Likewise. * libio/pclose.c: Likewise. * libio/peekc.c: Likewise. * libio/putc.c: Likewise. * libio/putchar.c: Likewise. * libio/rewind.c: Likewise. * libio/setbuf.c: Likewise. * libio/setlinebuf.c: Likewise. * libio/stdfiles.c: Likewise. * libio/stdio.c: Likewise. * libio/strfile.h: Likewise. * libio/strops.c: Likewise. * libio/vasprintf.c: Likewise. * libio/vscanf.c: Likewise. * libio/vsnprintf.c: Likewise. * manual/libc.texinfo: Add menu entries for chapter on message translation. * manual/locale.texi: Correct next entry in @node for new chapter. * manual/search.texi: Likewise for previous link. * manual/message.texi: New file. * manual/startup.texi: Document LC_ALL, LC_MESSAGES, NLSPATH, setenv, unsetenv, and clearenv. * manual/string.texi: Fix typos. Patch by Jim Meyering. * math/Makefile (test-longdouble-yes): Enable. We want long double tests now. Crusade against strcat. * nis/nss_nisplus/nisplus-publickey.c: Remove uses of strcat. * stdlib/canonicalize.c: Likewise. * posix/glob.h: Define __const if necessary. Use __const in all prototypes. * sysdeps/generic/stpcpy.c: Use K&R form to allow use in other GNU packages. * posix/wordexp.c: Completely reworked buffer handling for much better performance. Patch by Tim Waugh. * socket/sys/sochet.h (getpeername): Fix type of LEN parameter, it must be socklen_t. * sysdeps/libm-i387/e_remainder.S: Pretty print. * sysdeps/libm-i387/e_remainderf.S: Likewise. * sysdeps/libm-i387/e_remainderl.S: Pop extra value for FPU stack. * sysdeps/libm-i387/s_cexp.S: Little optimization. * sysdeps/libm-i387/s_cexpl.S: Likewise. * sysdep/libm-ieee754/s_csinhl.c: Include <fenv.h>. 1997-08-18 15:21 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/if_index.c (if_nameindex): Fix memory leak in cleanup code. 1997-08-17 Paul Eggert <eggert@twinsun.com> * tzset.c (__tzset_internal): Fix memory leak when the user specifies a TZ value that uses a default rule file. Do not assume US DST rules when the user specifies that there is no DST. 1997-08-10 19:17 Philip Blundell <Philip.Blundell@pobox.com> * inet/getnameinfo.c: Tidy up. * sysdeps/posix/getaddrinfo.c: Likewise. * sysdeps/unix/sysv/linux/if_index.c (if_nametoindex): Return 0 if using stub code. (if_indextoname): Use SIOGIFNAME ioctl if the kernel supports it. (if_nameindex): Use alloca() rather than malloc(); use SIOCGIFCOUNT ioctl if the kernel supports it. 1997-08-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/mount.h: Remove the IS_* macros, they operate on internal kernel structures and have no place in a user header. 1997-08-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makerules (lib%.so): Depend on $(+preinit) and $(+postinit). (build-shlib): Filter them out of $^. 1997-08-15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/dl-error.c (_dl_signal_error): Fix error message. 1997-08-16 04:06 Ulrich Drepper <drepper@cygnus.com> * assert/assert.h [__USE_GNU]: Undefine assert_perror. Reported by Theodore C. Belding <Ted.Belding@umich.edu>. 1997-08-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makeconfig: Change object suffixes from *.[spgb]o to *.o[spgb] to avoid conflict with PO files. * Makerules: Likewise. * Rules: Likewise. * elf/Makefile: Likewise. * extra-lib.mk: Likewise. * gmon/Makefile: Likewise. * nis/Makefile: Likewise. * nss/Makefile: Likewise. * resolv/Makefile: Likewise. * rpm/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/sparc/elf/Makefile: Likewise. * sysdeps/sparc64/elf/Makefile: Likewise. * sysdeps/unix/sysv/linux/sparc/Makefile: Likewise. (ASFLAGS-.os): Renamed from as-FLAGS.os.
1997-08-20 11:53:21 +08:00
# The PIC object files are named foo.os.
object-suffixes += .os
pic-cppflags = -DPIC -DSHARED
CPPFLAGS-.os = $(pic-cppflags)
Update. 1998-02-24 15:12 Ulrich Drepper <drepper@cygnus.com> * Makeconfig: Filter out frame-pointer effecting options when compiling profiling or debugging code. * config.h.in (internal_function): Don't define here if PROF is defined. * gmon/gmon.c (__moncontrol): Don't change state if already in error state. (__monstartup): If calloc fails set error state and mark array as not allocated. (_mcleanup): Don't call write_gmon if in error state. Don't try to free array if not successfully allocated. * elf/dl-load.c (STRING): Define to __STRING to enble expansion. Include elf.h to get macro definitions. Use __ELF?NATIVE?CLASS in message, not __ELF_WORDSIZE. 1998-02-24 09:40 Ulrich Drepper <drepper@cygnus.com> * elf/ldd.sh.in: Add compatibility for broken old shells. * elf/ldd.bash.in: Likewise. 1998-02-24 08:11 H.J. Lu <hjl@gnu.org> * sunrpc/rpc_main.c (open_input): Check pipe return error. * time/clocktest.c (main): Check signal return error. 1998-02-24 Andreas Jaeger <aj@arthur.rhein-neckar.de> * iconv/Makefile ($(inst_bindir)/iconv): Correct typo, add "/" and use do-install-program. Reported by Mark M. Kettenis. (subdir_install): Likewise. 1998-02-22 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * sunrpc/rpc_sample.c: Fix typo. * nscd/connections.c: Use locale. * nscd/grpcache.c: Add debug messages, gidtbl should get the calloc result. * nscd/nscd.c: Check if init functions fails. * nscd/nscd_conf.c: Allow disabling of group cache. * nscd/nscd_getgr_r.c: Fix return code if group not found. * nscd/pwdcache.c: Fix debug messages. 1998-02-22 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * libc.map: Add __monstartup and _mcleanup for profiling support. 1998-02-20 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * libc.map: Export __getpagesize, for binary compatibility with 2.0. 1998-02-21 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * posix/globtest.sh: Use --library-path instead of LD_LIBRARY_PATH. * localedata/sort-test.sh: Likewise. * localedata/tst-fmon.sh: Likewise. Avoid useless use of cat. 1998-02-22 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sigaction.c: Translate between struct sigaction and struct kernel_sigaction for __syscall_rt_sigaction. * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. * sysdeps/unix/sysv/linux/kernel_sigaction.h (struct kernel_sigaction): Define. * sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h (struct kernel_sigaction): Define. 1998-02-23 Andreas Jaeger <aj@arthur.rhein-neckar.de> * math/libm-test.c: Change epsilons for libm-ieee754. 1998-02-23 12:33 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/__longjmp.S: Fix race condition. Reported by Bruno Haible <haible@ilog.fr>.
1998-02-24 23:22:29 +08:00
CFLAGS-.os = $(filter %frame-pointer,$(+cflags)) $(pic-ccflag)
CFLAGS-.os += $(call elide-fortify-source,.os,$(routines_no_fortify))
CFLAGS-.os += $(call elide-fortify-source,_chk.os,$(routines_no_fortify))
Update. 1997-08-20 05:30 Ulrich Drepper <drepper@cygnus.com> * catgets/catgets.c (catclose): Use __munmap instead of munmap. * catgets/gencat.c (read_input_file): Fix typo. * dirent/dirent.h: Make seekdir and telldir available for __USE_XOPEN. * elf/dl-load.c: Fix case of missing DT_RPATH in object which gets executed (e.g., when it is a static binary). * intl/bindtextdomain.c: Use strdup in glibc. Correct comment. * intl/dcgettext.c: Likewise. * intl/dgettext.c: Likewise. * intl/explodename.c: Likewise. * intl/finddomain.c: Likewise. * intl/gettext.c: Likewise. * intl/gettext.h: Likewise. * intl/hash-string.h: Likewise. * intl/l10nflist.c: Likewise. * intl/libintl.h: Likewise. * intl/loadinfo.h: Likewise. * intl/loadmsgcat.c: Likewise. * intl/localealias.c: Likewise. * intl/textdomain.c: Likewise. Unify libio sources with code in libg++. * libio/fcloseall.c: Update and reformat copyright. Protect use of weak_alias. Use _IO_* thread macros instead of __libc_*. * libio/feof.c: Likewise. * libio/feof_u.c: Likewise. * libio/ferror.c: Likewise. * libio/ferror_u.c: Likewise. * libio/fgetc.c: Likewise. * libio/filedoalloc.c: Likewise. * libio/fileno.c: Likewise. * libio/fileops.c: Likewise. * libio/fputc.c: Likewise. * libio/fputc_u.c: Likewise. * libio/freopen.c: Likewise. * libio/fseek.c: Likewise. * libio/genops.c: Likewise. * libio/getc.c: Likewise. * libio/getc_u.c: Likewise. * libio/getchar.c: Likewise. * libio/getchar_u.c: Likewise. * libio/iofclose.c: Likewise. * libio/iofdopen.c: Likewise. * libio/iofflush.c: Likewise. * libio/iofflush_u.c: Likewise. * libio/iofgetpos.c: Likewise. * libio/iofgets.c: Likewise. * libio/iofopen.c: Likewise. * libio/iofopncook.c: Likewise. * libio/iofprintf.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/iogetline.c: Likewise. * libio/iogets.c: Likewise. * libio/iopadn.c: Likewise. * libio/iopopen.c: Likewise. * libio/ioputs.c: Likewise. * libio/ioseekoff.c: Likewise. * libio/ioseekpos.c: Likewise. * libio/iosetbuffer.c: Likewise. * libio/iosetvbuf.c: Likewise. * libio/iosprintf.c: Likewise. * libio/ioungetc.c: Likewise. * libio/iovdprintf.c: Likewise. * libio/iovsprintf.c: Likewise. * libio/iovsscanf.c: Likewise. * libio/libio.h: Likewise. * libio/libioP.h: Likewise. * libio/obprintf.c: Likewise. * libio/pclose.c: Likewise. * libio/peekc.c: Likewise. * libio/putc.c: Likewise. * libio/putchar.c: Likewise. * libio/rewind.c: Likewise. * libio/setbuf.c: Likewise. * libio/setlinebuf.c: Likewise. * libio/stdfiles.c: Likewise. * libio/stdio.c: Likewise. * libio/strfile.h: Likewise. * libio/strops.c: Likewise. * libio/vasprintf.c: Likewise. * libio/vscanf.c: Likewise. * libio/vsnprintf.c: Likewise. * manual/libc.texinfo: Add menu entries for chapter on message translation. * manual/locale.texi: Correct next entry in @node for new chapter. * manual/search.texi: Likewise for previous link. * manual/message.texi: New file. * manual/startup.texi: Document LC_ALL, LC_MESSAGES, NLSPATH, setenv, unsetenv, and clearenv. * manual/string.texi: Fix typos. Patch by Jim Meyering. * math/Makefile (test-longdouble-yes): Enable. We want long double tests now. Crusade against strcat. * nis/nss_nisplus/nisplus-publickey.c: Remove uses of strcat. * stdlib/canonicalize.c: Likewise. * posix/glob.h: Define __const if necessary. Use __const in all prototypes. * sysdeps/generic/stpcpy.c: Use K&R form to allow use in other GNU packages. * posix/wordexp.c: Completely reworked buffer handling for much better performance. Patch by Tim Waugh. * socket/sys/sochet.h (getpeername): Fix type of LEN parameter, it must be socklen_t. * sysdeps/libm-i387/e_remainder.S: Pretty print. * sysdeps/libm-i387/e_remainderf.S: Likewise. * sysdeps/libm-i387/e_remainderl.S: Pop extra value for FPU stack. * sysdeps/libm-i387/s_cexp.S: Little optimization. * sysdeps/libm-i387/s_cexpl.S: Likewise. * sysdep/libm-ieee754/s_csinhl.c: Include <fenv.h>. 1997-08-18 15:21 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/if_index.c (if_nameindex): Fix memory leak in cleanup code. 1997-08-17 Paul Eggert <eggert@twinsun.com> * tzset.c (__tzset_internal): Fix memory leak when the user specifies a TZ value that uses a default rule file. Do not assume US DST rules when the user specifies that there is no DST. 1997-08-10 19:17 Philip Blundell <Philip.Blundell@pobox.com> * inet/getnameinfo.c: Tidy up. * sysdeps/posix/getaddrinfo.c: Likewise. * sysdeps/unix/sysv/linux/if_index.c (if_nametoindex): Return 0 if using stub code. (if_indextoname): Use SIOGIFNAME ioctl if the kernel supports it. (if_nameindex): Use alloca() rather than malloc(); use SIOCGIFCOUNT ioctl if the kernel supports it. 1997-08-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/mount.h: Remove the IS_* macros, they operate on internal kernel structures and have no place in a user header. 1997-08-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makerules (lib%.so): Depend on $(+preinit) and $(+postinit). (build-shlib): Filter them out of $^. 1997-08-15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/dl-error.c (_dl_signal_error): Fix error message. 1997-08-16 04:06 Ulrich Drepper <drepper@cygnus.com> * assert/assert.h [__USE_GNU]: Undefine assert_perror. Reported by Theodore C. Belding <Ted.Belding@umich.edu>. 1997-08-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makeconfig: Change object suffixes from *.[spgb]o to *.o[spgb] to avoid conflict with PO files. * Makerules: Likewise. * Rules: Likewise. * elf/Makefile: Likewise. * extra-lib.mk: Likewise. * gmon/Makefile: Likewise. * nis/Makefile: Likewise. * nss/Makefile: Likewise. * resolv/Makefile: Likewise. * rpm/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/sparc/elf/Makefile: Likewise. * sysdeps/sparc64/elf/Makefile: Likewise. * sysdeps/unix/sysv/linux/sparc/Makefile: Likewise. (ASFLAGS-.os): Renamed from as-FLAGS.os.
1997-08-20 11:53:21 +08:00
libtype.os := lib%_pic.a
Update. 1997-09-05 03:15 Ulrich Drepper <drepper@cygnus.com> * Makefile (subdirs): Reorganize order so that nss follows add-ons. * config.make.in (LDAP): Add. * configure.in: Prepare for ldap add-on. * shlib-versions: Add version numbers for ldap NSS module. * nss/Makefile: Add rules to build ldap NSS module. * db/btree/bt_page.c (__bt_free): Update meta data information. Update db from db-2.3.6. * db2/db.h: Updated. * db2/btree/bt_close.c: Updated. * db2/btree/bt_compare.c: Updated. * db2/btree/bt_conv.c: Updated. * db2/btree/bt_cursor.c: Updated. * db2/btree/bt_delete.c: Updated. * db2/btree/bt_put.c: Updated. * db2/btree/bt_rec.c: Updated. * db2/btree/bt_recno.c: Updated. * db2/btree/bt_search.c: Updated. * db2/btree/bt_split.c: Updated. * db2/btree/bt_stat.c: Updated. * db2/common/db_appinit.c: Updated. * db2/common/db_apprec.c: Updated. * db2/common/db_byteorder.c: Updated. * db2/common/db_err.c: Updated. * db2/common/db_region.c: Updated. * db2/db/db.c: Updated. * db2/db/db_conv.c: Updated. * db2/db/db_dup.c: Updated. * db2/db/db_pr.c: Updated. * db2/db/db_ret.c: Updated. * db2/db185/db185.c: Updated. * db2/dbm/dbm.c: Updated. * db2/hash/hash_dup.c: Updated. * db2/include/db_am.h: Updated. * db2/include/db_page.h: Updated. * db2/include/mp.h: Updated. * db2/include/queue.h: Updated. * db2/log/log.c: Updated. * db2/log/log_findckp.c: Updated. * db2/log/log_get.c: Updated. * db2/log/log_rec.c: Updated. * db2/mp/mp_bh.c: Updated. * db2/mp/mp_fopen.c: Updated. * db2/mp/mp_pr.c: Updated. * db2/mp/mp_sync.c: Updated. * db2/mutex/x86.gcc: Updated. * db2/os/db_os_dir.c: Updated. * db2/os/db_os_fid.c: Updated. * db2/progs/db_archive/db_archive.c: Updated. * db2/progs/db_checkpoint/db_checkpoint.c: Updated. * db2/progs/db_deadlock/db_deadlock.c: Updated. * db2/progs/db_dump/db_dump.c: Updated. * db2/progs/db_dump185/db_dump185.c: Updated. * db2/progs/db_load/db_load.c: Updated. * db2/progs/db_printlog/db_printlog.c: Updated. * db2/progs/db_recover/db_recover.c: Updated. * db2/progs/db_stat/db_stat.c: Updated. * db2/txn/txn.c: Updated. * db2/txn/txn_rec.c: Updated. * db2/Makefile: Add rule to build db_printlog. * db2/config.h: Don't include endian.h and don't define WORDS_BIGENDIAN. Only define HAVE_ENDIAN_H. * elf/dl-open.c (_dl_open): Make thread-safe. * elf/dl-close.c (_dl_close): Likewise. * elf/dlclose.c: Pretty print. * elf/dl-version.c (make_string): Use __strdup not strdup. (find_needed): Don't use l_searchlist of _dl_loaded, use the l_next list. * elf/dl-deps.c (_dl_map_object_deps): Remove variable head. * manual/math.texi: Add note about == and != for FP values. * manual/message.texi: Mention problems with relative paths and binstextdomain. * manual/string.texi: Mark strdupa and strndupa correctly as macros. * sunrpc/Makefile (CFLAGS-xkey_prot.c): Define to prevent warnings. * sunrpc/rpc_cout.c: Avoid needless races around return value. * sysdeps/generic/stpcpy.c: Include <config.h> if wanted. Update from tzdata-1997h. * time/africa: Updated. * time/europe: Updated. * time/iso3166.tab: Updated. * time/northamerica: Updated. * time/southamerica: Updated. * time/zone.tab: Updated. 1997-09-04 13:19 Richard Henderson <rth@cygnus.com> * sysdeps/alpha/w_sqrt.S: Removed. * sysdeps/alpha/fpu/e_sqrt.c: New. Obey -mieee and -mieee-with-inexact and build a version that is as fast as possible given the constraint. 1997-08-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/maint.texi: Document some defaults for configuration parameters. 1997-09-04 15:57 Ulrich Drepper <drepper@cygnus.com> * termios/cfsetspeed.c (cfsetspeed): Change return value to int. * termios/termios.h: Change prototype accordingly. Reported by Andreas Jaeger <aj@arthur.rhein-neckar.de>. 1997-07-26 14:42 H.J. Lu <hjl@gnu.ai.mit.edu> * libio/stdfiles.c (_libio_using_thunks): Define if _G_USING_THUNKS is defined. * libio/_G_config.h: Moved to ... * sysdeps/generic/_G_config.h: ...here. * sysdeps/unix/sysv/linux/_G_config.h: New, Add vtable thunks support. 1997-09-02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/Makefile (pic-ccflag): Override it for more efficient code (together with a change in gcc). * Makeconfig (pic-ccflag): New variable. (CFLAGS-.os): Use it instead of hardcoding -fPIC. 1997-09-02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/dl-machine.h (elf_machine_load_address): Use _dl_start instead of a local label, to avoid getting an unreadable label name. 1997-09-02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * nss/Makefile ($(objpfx)libnss_db.so): Use $(dbobjdir) to find libdb.so. * Makeconfig (dbobjdir): Use db2. 1997-08-31 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/maint.texi (Porting to Unix): Update description of the implementation of Unix system calls. (Contributors): Use real umlaut in tege's name. 1997-08-30 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/libm-ieee754/w_gamma.c: Make compilable with _IEEE_LIBM. * sysdeps/libm-ieee754/w_gammaf.c: Likewise. * sysdeps/libm-ieee754/w_gammal.c: Likewise.
1997-09-05 09:43:20 +08:00
# This can be changed by a sysdep makefile
pic-ccflag = -fPIC
# This one should always stay like this unless there is a very good reason.
PIC-ccflag = -fPIC
Thu Mar 16 00:04:41 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * locale/C-ctype.c: New correct data generated by drepper. * Rules: Don't use $(libc.a). Parsing of grouped numbers contributed by Ulrich Drepper. * stdlib/strtol.c (__strtol_internal): Renamed from strtol. Take new flag arg; if nonzero, parse locale-dependent thousands grouping and interpret only the prefix that is correctly grouped. (strtol): Define this to call _strtol_internal with zero for the flag. Use a weak symbol for the definition. * stdlib/strtod.c (strtod, __strtod_internal): Likewise. Check for the exponent of the number overflowing the float format. * stdlib/stdlib.h (__strtof, __strtold): Declarations removed. (__strto{f,d,ld,l,ul,q,uq}_internal): Declare these functions. [__OPTIMIZE__]: Define inline functions calling those. * stdlib/grouping.h: New file, written by drepper. * stdlib/Makefile (distribute): Add grouping.h. * stdio/vfscanf.c: Grok %' modifier to numeric conversions. Call __strtoX_internal with the grouping flag set iff the modifier is present. Wed Mar 15 00:40:54 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * sysdeps/generic/memchr.c: Fix typos: limit.h -> limits.h. * mach/Machrules: Produce static deps for all object flavors. [interface-library]: Remove all these variables and rules. ($(interface-library)-routines): Define this variable. (extra-libs): Append $(interface-library) to this. * mach/Makefile (interface-library): Omit .a suffix. * hurd/Makefile: Likewise. Tue Mar 14 23:40:31 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * stdio/internals.c (flushbuf): If !FLUSH_ONLY, don't skip out early if no new data in buffer after priming. * Makerules (object-suffixes, libtypes): Move all these variables to Makeconfig. * Makeconfig (object-suffixes, libtypes): Moved here from Makerules. * Makerules (build-extra-lib): New canned sequence. * sysdeps/mach/hurd/euidaccess.c: Include fcntl.h. Declare ERR; fix uses of FILE and PORT. Remove bogus weak alias for `access'. * sysdeps/mach/hurd/dirfd.c: Include hurd/fd.h and errno.h. Add missing semicolon. * sysdeps/mach/hurd/opendir.c: Include hurd/fd.h. Use a `struct hurd_fd *' temp var, since DIRP->__fd is a `void *'. * sysdeps/mach/hurd/readdir.c: Include hurd/fd.h. * stdlib/wcstombs.c: #if 0 out code for non-ASCII chars until the locale data format is implemented. * sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler): Pass &__sigreturn on the stack to the trampoline code, so it is not position-dependent. * stdio/printf_fp.c (NDEBUG): Define this to disable assert. Don't include <stdarg.h>. (__printf_fp): Last arg ARGS is now `const void **const'; dereference ARGS[0] instead of using va_arg. * locale/setlocale.c: In LC_ALL case, initialize CATEGORY before loop to install data. * locale/loadlocale.c (_nl_category_num_items): Use _NL_ITEM_INDEX to extract number from item code. (_nl_load_locale): Close the descriptor when finished. * malloc/realloc.c (_realloc_internal): Call _malloc_internal in place of malloc. * time/tzfile.c (__tzfile_default): Initialize RULE_STDOFF to zero.
1995-03-16 13:32:45 +08:00
endif
# This can be changed by a sysdep makefile
pie-ccflag = -fPIE
no-pie-ccflag = -fno-pie
# This one should always stay like this unless there is a very good reason.
PIE-ccflag = -fPIE
Thu Mar 16 00:04:41 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * locale/C-ctype.c: New correct data generated by drepper. * Rules: Don't use $(libc.a). Parsing of grouped numbers contributed by Ulrich Drepper. * stdlib/strtol.c (__strtol_internal): Renamed from strtol. Take new flag arg; if nonzero, parse locale-dependent thousands grouping and interpret only the prefix that is correctly grouped. (strtol): Define this to call _strtol_internal with zero for the flag. Use a weak symbol for the definition. * stdlib/strtod.c (strtod, __strtod_internal): Likewise. Check for the exponent of the number overflowing the float format. * stdlib/stdlib.h (__strtof, __strtold): Declarations removed. (__strto{f,d,ld,l,ul,q,uq}_internal): Declare these functions. [__OPTIMIZE__]: Define inline functions calling those. * stdlib/grouping.h: New file, written by drepper. * stdlib/Makefile (distribute): Add grouping.h. * stdio/vfscanf.c: Grok %' modifier to numeric conversions. Call __strtoX_internal with the grouping flag set iff the modifier is present. Wed Mar 15 00:40:54 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * sysdeps/generic/memchr.c: Fix typos: limit.h -> limits.h. * mach/Machrules: Produce static deps for all object flavors. [interface-library]: Remove all these variables and rules. ($(interface-library)-routines): Define this variable. (extra-libs): Append $(interface-library) to this. * mach/Makefile (interface-library): Omit .a suffix. * hurd/Makefile: Likewise. Tue Mar 14 23:40:31 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * stdio/internals.c (flushbuf): If !FLUSH_ONLY, don't skip out early if no new data in buffer after priming. * Makerules (object-suffixes, libtypes): Move all these variables to Makeconfig. * Makeconfig (object-suffixes, libtypes): Moved here from Makerules. * Makerules (build-extra-lib): New canned sequence. * sysdeps/mach/hurd/euidaccess.c: Include fcntl.h. Declare ERR; fix uses of FILE and PORT. Remove bogus weak alias for `access'. * sysdeps/mach/hurd/dirfd.c: Include hurd/fd.h and errno.h. Add missing semicolon. * sysdeps/mach/hurd/opendir.c: Include hurd/fd.h. Use a `struct hurd_fd *' temp var, since DIRP->__fd is a `void *'. * sysdeps/mach/hurd/readdir.c: Include hurd/fd.h. * stdlib/wcstombs.c: #if 0 out code for non-ASCII chars until the locale data format is implemented. * sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler): Pass &__sigreturn on the stack to the trampoline code, so it is not position-dependent. * stdio/printf_fp.c (NDEBUG): Define this to disable assert. Don't include <stdarg.h>. (__printf_fp): Last arg ARGS is now `const void **const'; dereference ARGS[0] instead of using va_arg. * locale/setlocale.c: In LC_ALL case, initialize CATEGORY before loop to install data. * locale/loadlocale.c (_nl_category_num_items): Use _NL_ITEM_INDEX to extract number from item code. (_nl_load_locale): Close the descriptor when finished. * malloc/realloc.c (_realloc_internal): Call _malloc_internal in place of malloc. * time/tzfile.c (__tzfile_default): Initialize RULE_STDOFF to zero.
1995-03-16 13:32:45 +08:00
ifeq (yes,$(build-profile))
# Under --enable-profile, we will build a static library of profiled objects.
Update. 1997-08-20 05:30 Ulrich Drepper <drepper@cygnus.com> * catgets/catgets.c (catclose): Use __munmap instead of munmap. * catgets/gencat.c (read_input_file): Fix typo. * dirent/dirent.h: Make seekdir and telldir available for __USE_XOPEN. * elf/dl-load.c: Fix case of missing DT_RPATH in object which gets executed (e.g., when it is a static binary). * intl/bindtextdomain.c: Use strdup in glibc. Correct comment. * intl/dcgettext.c: Likewise. * intl/dgettext.c: Likewise. * intl/explodename.c: Likewise. * intl/finddomain.c: Likewise. * intl/gettext.c: Likewise. * intl/gettext.h: Likewise. * intl/hash-string.h: Likewise. * intl/l10nflist.c: Likewise. * intl/libintl.h: Likewise. * intl/loadinfo.h: Likewise. * intl/loadmsgcat.c: Likewise. * intl/localealias.c: Likewise. * intl/textdomain.c: Likewise. Unify libio sources with code in libg++. * libio/fcloseall.c: Update and reformat copyright. Protect use of weak_alias. Use _IO_* thread macros instead of __libc_*. * libio/feof.c: Likewise. * libio/feof_u.c: Likewise. * libio/ferror.c: Likewise. * libio/ferror_u.c: Likewise. * libio/fgetc.c: Likewise. * libio/filedoalloc.c: Likewise. * libio/fileno.c: Likewise. * libio/fileops.c: Likewise. * libio/fputc.c: Likewise. * libio/fputc_u.c: Likewise. * libio/freopen.c: Likewise. * libio/fseek.c: Likewise. * libio/genops.c: Likewise. * libio/getc.c: Likewise. * libio/getc_u.c: Likewise. * libio/getchar.c: Likewise. * libio/getchar_u.c: Likewise. * libio/iofclose.c: Likewise. * libio/iofdopen.c: Likewise. * libio/iofflush.c: Likewise. * libio/iofflush_u.c: Likewise. * libio/iofgetpos.c: Likewise. * libio/iofgets.c: Likewise. * libio/iofopen.c: Likewise. * libio/iofopncook.c: Likewise. * libio/iofprintf.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/iogetline.c: Likewise. * libio/iogets.c: Likewise. * libio/iopadn.c: Likewise. * libio/iopopen.c: Likewise. * libio/ioputs.c: Likewise. * libio/ioseekoff.c: Likewise. * libio/ioseekpos.c: Likewise. * libio/iosetbuffer.c: Likewise. * libio/iosetvbuf.c: Likewise. * libio/iosprintf.c: Likewise. * libio/ioungetc.c: Likewise. * libio/iovdprintf.c: Likewise. * libio/iovsprintf.c: Likewise. * libio/iovsscanf.c: Likewise. * libio/libio.h: Likewise. * libio/libioP.h: Likewise. * libio/obprintf.c: Likewise. * libio/pclose.c: Likewise. * libio/peekc.c: Likewise. * libio/putc.c: Likewise. * libio/putchar.c: Likewise. * libio/rewind.c: Likewise. * libio/setbuf.c: Likewise. * libio/setlinebuf.c: Likewise. * libio/stdfiles.c: Likewise. * libio/stdio.c: Likewise. * libio/strfile.h: Likewise. * libio/strops.c: Likewise. * libio/vasprintf.c: Likewise. * libio/vscanf.c: Likewise. * libio/vsnprintf.c: Likewise. * manual/libc.texinfo: Add menu entries for chapter on message translation. * manual/locale.texi: Correct next entry in @node for new chapter. * manual/search.texi: Likewise for previous link. * manual/message.texi: New file. * manual/startup.texi: Document LC_ALL, LC_MESSAGES, NLSPATH, setenv, unsetenv, and clearenv. * manual/string.texi: Fix typos. Patch by Jim Meyering. * math/Makefile (test-longdouble-yes): Enable. We want long double tests now. Crusade against strcat. * nis/nss_nisplus/nisplus-publickey.c: Remove uses of strcat. * stdlib/canonicalize.c: Likewise. * posix/glob.h: Define __const if necessary. Use __const in all prototypes. * sysdeps/generic/stpcpy.c: Use K&R form to allow use in other GNU packages. * posix/wordexp.c: Completely reworked buffer handling for much better performance. Patch by Tim Waugh. * socket/sys/sochet.h (getpeername): Fix type of LEN parameter, it must be socklen_t. * sysdeps/libm-i387/e_remainder.S: Pretty print. * sysdeps/libm-i387/e_remainderf.S: Likewise. * sysdeps/libm-i387/e_remainderl.S: Pop extra value for FPU stack. * sysdeps/libm-i387/s_cexp.S: Little optimization. * sysdeps/libm-i387/s_cexpl.S: Likewise. * sysdep/libm-ieee754/s_csinhl.c: Include <fenv.h>. 1997-08-18 15:21 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/if_index.c (if_nameindex): Fix memory leak in cleanup code. 1997-08-17 Paul Eggert <eggert@twinsun.com> * tzset.c (__tzset_internal): Fix memory leak when the user specifies a TZ value that uses a default rule file. Do not assume US DST rules when the user specifies that there is no DST. 1997-08-10 19:17 Philip Blundell <Philip.Blundell@pobox.com> * inet/getnameinfo.c: Tidy up. * sysdeps/posix/getaddrinfo.c: Likewise. * sysdeps/unix/sysv/linux/if_index.c (if_nametoindex): Return 0 if using stub code. (if_indextoname): Use SIOGIFNAME ioctl if the kernel supports it. (if_nameindex): Use alloca() rather than malloc(); use SIOCGIFCOUNT ioctl if the kernel supports it. 1997-08-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/mount.h: Remove the IS_* macros, they operate on internal kernel structures and have no place in a user header. 1997-08-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makerules (lib%.so): Depend on $(+preinit) and $(+postinit). (build-shlib): Filter them out of $^. 1997-08-15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/dl-error.c (_dl_signal_error): Fix error message. 1997-08-16 04:06 Ulrich Drepper <drepper@cygnus.com> * assert/assert.h [__USE_GNU]: Undefine assert_perror. Reported by Theodore C. Belding <Ted.Belding@umich.edu>. 1997-08-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makeconfig: Change object suffixes from *.[spgb]o to *.o[spgb] to avoid conflict with PO files. * Makerules: Likewise. * Rules: Likewise. * elf/Makefile: Likewise. * extra-lib.mk: Likewise. * gmon/Makefile: Likewise. * nis/Makefile: Likewise. * nss/Makefile: Likewise. * resolv/Makefile: Likewise. * rpm/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/sparc/elf/Makefile: Likewise. * sysdeps/sparc64/elf/Makefile: Likewise. * sysdeps/unix/sysv/linux/sparc/Makefile: Likewise. (ASFLAGS-.os): Renamed from as-FLAGS.os.
1997-08-20 11:53:21 +08:00
# The profiled object files are named foo.op.
all-object-suffixes += .op
Update. 1997-08-20 05:30 Ulrich Drepper <drepper@cygnus.com> * catgets/catgets.c (catclose): Use __munmap instead of munmap. * catgets/gencat.c (read_input_file): Fix typo. * dirent/dirent.h: Make seekdir and telldir available for __USE_XOPEN. * elf/dl-load.c: Fix case of missing DT_RPATH in object which gets executed (e.g., when it is a static binary). * intl/bindtextdomain.c: Use strdup in glibc. Correct comment. * intl/dcgettext.c: Likewise. * intl/dgettext.c: Likewise. * intl/explodename.c: Likewise. * intl/finddomain.c: Likewise. * intl/gettext.c: Likewise. * intl/gettext.h: Likewise. * intl/hash-string.h: Likewise. * intl/l10nflist.c: Likewise. * intl/libintl.h: Likewise. * intl/loadinfo.h: Likewise. * intl/loadmsgcat.c: Likewise. * intl/localealias.c: Likewise. * intl/textdomain.c: Likewise. Unify libio sources with code in libg++. * libio/fcloseall.c: Update and reformat copyright. Protect use of weak_alias. Use _IO_* thread macros instead of __libc_*. * libio/feof.c: Likewise. * libio/feof_u.c: Likewise. * libio/ferror.c: Likewise. * libio/ferror_u.c: Likewise. * libio/fgetc.c: Likewise. * libio/filedoalloc.c: Likewise. * libio/fileno.c: Likewise. * libio/fileops.c: Likewise. * libio/fputc.c: Likewise. * libio/fputc_u.c: Likewise. * libio/freopen.c: Likewise. * libio/fseek.c: Likewise. * libio/genops.c: Likewise. * libio/getc.c: Likewise. * libio/getc_u.c: Likewise. * libio/getchar.c: Likewise. * libio/getchar_u.c: Likewise. * libio/iofclose.c: Likewise. * libio/iofdopen.c: Likewise. * libio/iofflush.c: Likewise. * libio/iofflush_u.c: Likewise. * libio/iofgetpos.c: Likewise. * libio/iofgets.c: Likewise. * libio/iofopen.c: Likewise. * libio/iofopncook.c: Likewise. * libio/iofprintf.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/iogetline.c: Likewise. * libio/iogets.c: Likewise. * libio/iopadn.c: Likewise. * libio/iopopen.c: Likewise. * libio/ioputs.c: Likewise. * libio/ioseekoff.c: Likewise. * libio/ioseekpos.c: Likewise. * libio/iosetbuffer.c: Likewise. * libio/iosetvbuf.c: Likewise. * libio/iosprintf.c: Likewise. * libio/ioungetc.c: Likewise. * libio/iovdprintf.c: Likewise. * libio/iovsprintf.c: Likewise. * libio/iovsscanf.c: Likewise. * libio/libio.h: Likewise. * libio/libioP.h: Likewise. * libio/obprintf.c: Likewise. * libio/pclose.c: Likewise. * libio/peekc.c: Likewise. * libio/putc.c: Likewise. * libio/putchar.c: Likewise. * libio/rewind.c: Likewise. * libio/setbuf.c: Likewise. * libio/setlinebuf.c: Likewise. * libio/stdfiles.c: Likewise. * libio/stdio.c: Likewise. * libio/strfile.h: Likewise. * libio/strops.c: Likewise. * libio/vasprintf.c: Likewise. * libio/vscanf.c: Likewise. * libio/vsnprintf.c: Likewise. * manual/libc.texinfo: Add menu entries for chapter on message translation. * manual/locale.texi: Correct next entry in @node for new chapter. * manual/search.texi: Likewise for previous link. * manual/message.texi: New file. * manual/startup.texi: Document LC_ALL, LC_MESSAGES, NLSPATH, setenv, unsetenv, and clearenv. * manual/string.texi: Fix typos. Patch by Jim Meyering. * math/Makefile (test-longdouble-yes): Enable. We want long double tests now. Crusade against strcat. * nis/nss_nisplus/nisplus-publickey.c: Remove uses of strcat. * stdlib/canonicalize.c: Likewise. * posix/glob.h: Define __const if necessary. Use __const in all prototypes. * sysdeps/generic/stpcpy.c: Use K&R form to allow use in other GNU packages. * posix/wordexp.c: Completely reworked buffer handling for much better performance. Patch by Tim Waugh. * socket/sys/sochet.h (getpeername): Fix type of LEN parameter, it must be socklen_t. * sysdeps/libm-i387/e_remainder.S: Pretty print. * sysdeps/libm-i387/e_remainderf.S: Likewise. * sysdeps/libm-i387/e_remainderl.S: Pop extra value for FPU stack. * sysdeps/libm-i387/s_cexp.S: Little optimization. * sysdeps/libm-i387/s_cexpl.S: Likewise. * sysdep/libm-ieee754/s_csinhl.c: Include <fenv.h>. 1997-08-18 15:21 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/if_index.c (if_nameindex): Fix memory leak in cleanup code. 1997-08-17 Paul Eggert <eggert@twinsun.com> * tzset.c (__tzset_internal): Fix memory leak when the user specifies a TZ value that uses a default rule file. Do not assume US DST rules when the user specifies that there is no DST. 1997-08-10 19:17 Philip Blundell <Philip.Blundell@pobox.com> * inet/getnameinfo.c: Tidy up. * sysdeps/posix/getaddrinfo.c: Likewise. * sysdeps/unix/sysv/linux/if_index.c (if_nametoindex): Return 0 if using stub code. (if_indextoname): Use SIOGIFNAME ioctl if the kernel supports it. (if_nameindex): Use alloca() rather than malloc(); use SIOCGIFCOUNT ioctl if the kernel supports it. 1997-08-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/mount.h: Remove the IS_* macros, they operate on internal kernel structures and have no place in a user header. 1997-08-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makerules (lib%.so): Depend on $(+preinit) and $(+postinit). (build-shlib): Filter them out of $^. 1997-08-15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/dl-error.c (_dl_signal_error): Fix error message. 1997-08-16 04:06 Ulrich Drepper <drepper@cygnus.com> * assert/assert.h [__USE_GNU]: Undefine assert_perror. Reported by Theodore C. Belding <Ted.Belding@umich.edu>. 1997-08-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makeconfig: Change object suffixes from *.[spgb]o to *.o[spgb] to avoid conflict with PO files. * Makerules: Likewise. * Rules: Likewise. * elf/Makefile: Likewise. * extra-lib.mk: Likewise. * gmon/Makefile: Likewise. * nis/Makefile: Likewise. * nss/Makefile: Likewise. * resolv/Makefile: Likewise. * rpm/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/sparc/elf/Makefile: Likewise. * sysdeps/sparc64/elf/Makefile: Likewise. * sysdeps/unix/sysv/linux/sparc/Makefile: Likewise. (ASFLAGS-.os): Renamed from as-FLAGS.os.
1997-08-20 11:53:21 +08:00
object-suffixes += .op
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 08:06:02 +08:00
CPPFLAGS-.op = -DPROF $(pic-default)
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 08:59:33 +08:00
# libc_p.a must be compiled with -fPIE/-fpie for static PIE.
CFLAGS-.op = -pg $(pie-default)
CFLAGS-.op += $(call elide-fortify-source,.op,$(routines_no_fortify))
CFLAGS-.op += $(call elide-fortify-source,_chk.op,$(routines_no_fortify))
Update. 1997-08-20 05:30 Ulrich Drepper <drepper@cygnus.com> * catgets/catgets.c (catclose): Use __munmap instead of munmap. * catgets/gencat.c (read_input_file): Fix typo. * dirent/dirent.h: Make seekdir and telldir available for __USE_XOPEN. * elf/dl-load.c: Fix case of missing DT_RPATH in object which gets executed (e.g., when it is a static binary). * intl/bindtextdomain.c: Use strdup in glibc. Correct comment. * intl/dcgettext.c: Likewise. * intl/dgettext.c: Likewise. * intl/explodename.c: Likewise. * intl/finddomain.c: Likewise. * intl/gettext.c: Likewise. * intl/gettext.h: Likewise. * intl/hash-string.h: Likewise. * intl/l10nflist.c: Likewise. * intl/libintl.h: Likewise. * intl/loadinfo.h: Likewise. * intl/loadmsgcat.c: Likewise. * intl/localealias.c: Likewise. * intl/textdomain.c: Likewise. Unify libio sources with code in libg++. * libio/fcloseall.c: Update and reformat copyright. Protect use of weak_alias. Use _IO_* thread macros instead of __libc_*. * libio/feof.c: Likewise. * libio/feof_u.c: Likewise. * libio/ferror.c: Likewise. * libio/ferror_u.c: Likewise. * libio/fgetc.c: Likewise. * libio/filedoalloc.c: Likewise. * libio/fileno.c: Likewise. * libio/fileops.c: Likewise. * libio/fputc.c: Likewise. * libio/fputc_u.c: Likewise. * libio/freopen.c: Likewise. * libio/fseek.c: Likewise. * libio/genops.c: Likewise. * libio/getc.c: Likewise. * libio/getc_u.c: Likewise. * libio/getchar.c: Likewise. * libio/getchar_u.c: Likewise. * libio/iofclose.c: Likewise. * libio/iofdopen.c: Likewise. * libio/iofflush.c: Likewise. * libio/iofflush_u.c: Likewise. * libio/iofgetpos.c: Likewise. * libio/iofgets.c: Likewise. * libio/iofopen.c: Likewise. * libio/iofopncook.c: Likewise. * libio/iofprintf.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/iogetline.c: Likewise. * libio/iogets.c: Likewise. * libio/iopadn.c: Likewise. * libio/iopopen.c: Likewise. * libio/ioputs.c: Likewise. * libio/ioseekoff.c: Likewise. * libio/ioseekpos.c: Likewise. * libio/iosetbuffer.c: Likewise. * libio/iosetvbuf.c: Likewise. * libio/iosprintf.c: Likewise. * libio/ioungetc.c: Likewise. * libio/iovdprintf.c: Likewise. * libio/iovsprintf.c: Likewise. * libio/iovsscanf.c: Likewise. * libio/libio.h: Likewise. * libio/libioP.h: Likewise. * libio/obprintf.c: Likewise. * libio/pclose.c: Likewise. * libio/peekc.c: Likewise. * libio/putc.c: Likewise. * libio/putchar.c: Likewise. * libio/rewind.c: Likewise. * libio/setbuf.c: Likewise. * libio/setlinebuf.c: Likewise. * libio/stdfiles.c: Likewise. * libio/stdio.c: Likewise. * libio/strfile.h: Likewise. * libio/strops.c: Likewise. * libio/vasprintf.c: Likewise. * libio/vscanf.c: Likewise. * libio/vsnprintf.c: Likewise. * manual/libc.texinfo: Add menu entries for chapter on message translation. * manual/locale.texi: Correct next entry in @node for new chapter. * manual/search.texi: Likewise for previous link. * manual/message.texi: New file. * manual/startup.texi: Document LC_ALL, LC_MESSAGES, NLSPATH, setenv, unsetenv, and clearenv. * manual/string.texi: Fix typos. Patch by Jim Meyering. * math/Makefile (test-longdouble-yes): Enable. We want long double tests now. Crusade against strcat. * nis/nss_nisplus/nisplus-publickey.c: Remove uses of strcat. * stdlib/canonicalize.c: Likewise. * posix/glob.h: Define __const if necessary. Use __const in all prototypes. * sysdeps/generic/stpcpy.c: Use K&R form to allow use in other GNU packages. * posix/wordexp.c: Completely reworked buffer handling for much better performance. Patch by Tim Waugh. * socket/sys/sochet.h (getpeername): Fix type of LEN parameter, it must be socklen_t. * sysdeps/libm-i387/e_remainder.S: Pretty print. * sysdeps/libm-i387/e_remainderf.S: Likewise. * sysdeps/libm-i387/e_remainderl.S: Pop extra value for FPU stack. * sysdeps/libm-i387/s_cexp.S: Little optimization. * sysdeps/libm-i387/s_cexpl.S: Likewise. * sysdep/libm-ieee754/s_csinhl.c: Include <fenv.h>. 1997-08-18 15:21 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/if_index.c (if_nameindex): Fix memory leak in cleanup code. 1997-08-17 Paul Eggert <eggert@twinsun.com> * tzset.c (__tzset_internal): Fix memory leak when the user specifies a TZ value that uses a default rule file. Do not assume US DST rules when the user specifies that there is no DST. 1997-08-10 19:17 Philip Blundell <Philip.Blundell@pobox.com> * inet/getnameinfo.c: Tidy up. * sysdeps/posix/getaddrinfo.c: Likewise. * sysdeps/unix/sysv/linux/if_index.c (if_nametoindex): Return 0 if using stub code. (if_indextoname): Use SIOGIFNAME ioctl if the kernel supports it. (if_nameindex): Use alloca() rather than malloc(); use SIOCGIFCOUNT ioctl if the kernel supports it. 1997-08-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/mount.h: Remove the IS_* macros, they operate on internal kernel structures and have no place in a user header. 1997-08-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makerules (lib%.so): Depend on $(+preinit) and $(+postinit). (build-shlib): Filter them out of $^. 1997-08-15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/dl-error.c (_dl_signal_error): Fix error message. 1997-08-16 04:06 Ulrich Drepper <drepper@cygnus.com> * assert/assert.h [__USE_GNU]: Undefine assert_perror. Reported by Theodore C. Belding <Ted.Belding@umich.edu>. 1997-08-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makeconfig: Change object suffixes from *.[spgb]o to *.o[spgb] to avoid conflict with PO files. * Makerules: Likewise. * Rules: Likewise. * elf/Makefile: Likewise. * extra-lib.mk: Likewise. * gmon/Makefile: Likewise. * nis/Makefile: Likewise. * nss/Makefile: Likewise. * resolv/Makefile: Likewise. * rpm/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/sparc/elf/Makefile: Likewise. * sysdeps/sparc64/elf/Makefile: Likewise. * sysdeps/unix/sysv/linux/sparc/Makefile: Likewise. (ASFLAGS-.os): Renamed from as-FLAGS.os.
1997-08-20 11:53:21 +08:00
libtype.op = lib%_p.a
Thu Mar 16 00:04:41 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * locale/C-ctype.c: New correct data generated by drepper. * Rules: Don't use $(libc.a). Parsing of grouped numbers contributed by Ulrich Drepper. * stdlib/strtol.c (__strtol_internal): Renamed from strtol. Take new flag arg; if nonzero, parse locale-dependent thousands grouping and interpret only the prefix that is correctly grouped. (strtol): Define this to call _strtol_internal with zero for the flag. Use a weak symbol for the definition. * stdlib/strtod.c (strtod, __strtod_internal): Likewise. Check for the exponent of the number overflowing the float format. * stdlib/stdlib.h (__strtof, __strtold): Declarations removed. (__strto{f,d,ld,l,ul,q,uq}_internal): Declare these functions. [__OPTIMIZE__]: Define inline functions calling those. * stdlib/grouping.h: New file, written by drepper. * stdlib/Makefile (distribute): Add grouping.h. * stdio/vfscanf.c: Grok %' modifier to numeric conversions. Call __strtoX_internal with the grouping flag set iff the modifier is present. Wed Mar 15 00:40:54 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * sysdeps/generic/memchr.c: Fix typos: limit.h -> limits.h. * mach/Machrules: Produce static deps for all object flavors. [interface-library]: Remove all these variables and rules. ($(interface-library)-routines): Define this variable. (extra-libs): Append $(interface-library) to this. * mach/Makefile (interface-library): Omit .a suffix. * hurd/Makefile: Likewise. Tue Mar 14 23:40:31 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> * stdio/internals.c (flushbuf): If !FLUSH_ONLY, don't skip out early if no new data in buffer after priming. * Makerules (object-suffixes, libtypes): Move all these variables to Makeconfig. * Makeconfig (object-suffixes, libtypes): Moved here from Makerules. * Makerules (build-extra-lib): New canned sequence. * sysdeps/mach/hurd/euidaccess.c: Include fcntl.h. Declare ERR; fix uses of FILE and PORT. Remove bogus weak alias for `access'. * sysdeps/mach/hurd/dirfd.c: Include hurd/fd.h and errno.h. Add missing semicolon. * sysdeps/mach/hurd/opendir.c: Include hurd/fd.h. Use a `struct hurd_fd *' temp var, since DIRP->__fd is a `void *'. * sysdeps/mach/hurd/readdir.c: Include hurd/fd.h. * stdlib/wcstombs.c: #if 0 out code for non-ASCII chars until the locale data format is implemented. * sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler): Pass &__sigreturn on the stack to the trampoline code, so it is not position-dependent. * stdio/printf_fp.c (NDEBUG): Define this to disable assert. Don't include <stdarg.h>. (__printf_fp): Last arg ARGS is now `const void **const'; dereference ARGS[0] instead of using va_arg. * locale/setlocale.c: In LC_ALL case, initialize CATEGORY before loop to install data. * locale/loadlocale.c (_nl_category_num_items): Use _NL_ITEM_INDEX to extract number from item code. (_nl_load_locale): Close the descriptor when finished. * malloc/realloc.c (_realloc_internal): Call _malloc_internal in place of malloc. * time/tzfile.c (__tzfile_default): Initialize RULE_STDOFF to zero.
1995-03-16 13:32:45 +08:00
endif
# Convenience variable for when we want to treat shared-library cases
# differently from the rest.
object-suffixes-noshared := $(filter-out .os,$(object-suffixes))
Update. 1998-03-30 12:53 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/i486/bits/string.h (__strcat_c) [__i686__]: Correct scanning for \0. (__strncat_g): Add i686 specific code. 1998-03-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/install.texi (Reporting Bugs): Ask to include section names in reports. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): Emit guard against direct inclusion. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> Rework support for libc_nonshared.a: * Makeconfig (object-suffixes-for-libc): New variable. * Rules: Remove handling of static-only and shared-only routines. * Makerules: Handle them here instead. Use object-suffixes-for-libc instead of object-suffixes when dealing with libc objects. (object-suffixes-for-rules): Remove variable. (elide-routines.oS): Elide all routines except static-only routines. ($(objpfx)stamp.oS): Special rule for when static-only-routines is empty. (installed-libcs): Remove special case for .oS. (rmobjs): Likewise. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makefile (do-collate-test, do-xfrm-test, do-tst-fmon, do-tst-rpmatch): New targets. (test): Use them. (install-locales): Ignore comment lines. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/Makefile ($(objpfx)ld.so): Depend on version script. ($(objpfx)trusted-dirs.h): Depend also on $(..)Makeconfig. ($(objpfx)rtldtbl.h): Likewise. (CPPFLAGS-dl-load.c): Fix reference to object directory. 1998-03-30 09:36 Ulrich Drepper <drepper@cygnus.com> * manual/string.texi (Finding Tokens in a String): Extend strsep description and correct example. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/socket.texi: Remove misguided explicit line breaks and fix the formatting problem instead by reformulating the paragraphs. * manual/filesys.texi: Likewise. * manual/conf.texi: Likewise. Don't typeset table with index fonts, that looks worse than a minimally overfull line. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * nscd/Makefile (nscd-modules): Move definition outside of conditional. * pwd/Makefile: Use have-thread-library to test for thread library. 1998-03-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> * nss/getXXent_r.c (INTERNAL): Remove unused variable current_nip. * iconvdata/uhc.c (gconv): Remove unused variable idx. 1998-03-30 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/Dist: Add lddlibc4.c.
1998-03-30 21:01:46 +08:00
object-suffixes-for-libc := $(object-suffixes)
ifeq (yes,$(build-shared))
# Build special library that contains the static-only routines for libc.
object-suffixes-for-libc += .oS
# Must build the routines as PIC, though, because they can end up in (users')
# shared objects. We don't want to use CFLAGS-os because users may, for
# example, make that processor-specific.
CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) $(extra-nonshared-cflags)
CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
Update. 1998-03-30 12:53 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/i486/bits/string.h (__strcat_c) [__i686__]: Correct scanning for \0. (__strncat_g): Add i686 specific code. 1998-03-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/install.texi (Reporting Bugs): Ask to include section names in reports. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): Emit guard against direct inclusion. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> Rework support for libc_nonshared.a: * Makeconfig (object-suffixes-for-libc): New variable. * Rules: Remove handling of static-only and shared-only routines. * Makerules: Handle them here instead. Use object-suffixes-for-libc instead of object-suffixes when dealing with libc objects. (object-suffixes-for-rules): Remove variable. (elide-routines.oS): Elide all routines except static-only routines. ($(objpfx)stamp.oS): Special rule for when static-only-routines is empty. (installed-libcs): Remove special case for .oS. (rmobjs): Likewise. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makefile (do-collate-test, do-xfrm-test, do-tst-fmon, do-tst-rpmatch): New targets. (test): Use them. (install-locales): Ignore comment lines. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/Makefile ($(objpfx)ld.so): Depend on version script. ($(objpfx)trusted-dirs.h): Depend also on $(..)Makeconfig. ($(objpfx)rtldtbl.h): Likewise. (CPPFLAGS-dl-load.c): Fix reference to object directory. 1998-03-30 09:36 Ulrich Drepper <drepper@cygnus.com> * manual/string.texi (Finding Tokens in a String): Extend strsep description and correct example. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/socket.texi: Remove misguided explicit line breaks and fix the formatting problem instead by reformulating the paragraphs. * manual/filesys.texi: Likewise. * manual/conf.texi: Likewise. Don't typeset table with index fonts, that looks worse than a minimally overfull line. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * nscd/Makefile (nscd-modules): Move definition outside of conditional. * pwd/Makefile: Use have-thread-library to test for thread library. 1998-03-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> * nss/getXXent_r.c (INTERNAL): Remove unused variable current_nip. * iconvdata/uhc.c (gconv): Remove unused variable idx. 1998-03-30 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/Dist: Add lddlibc4.c.
1998-03-30 21:01:46 +08:00
libtype.oS = lib%_nonshared.a
endif
# The assembler can generate debug information too.
ifndef ASFLAGS
ASFLAGS := $(filter -g% -fdebug-prefix-map=%,$(CFLAGS))
endif
override ASFLAGS += -Werror=undef $(ASFLAGS-config) $(asflags-cpu)
Update. 1998-03-30 12:53 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/i486/bits/string.h (__strcat_c) [__i686__]: Correct scanning for \0. (__strncat_g): Add i686 specific code. 1998-03-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/install.texi (Reporting Bugs): Ask to include section names in reports. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): Emit guard against direct inclusion. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> Rework support for libc_nonshared.a: * Makeconfig (object-suffixes-for-libc): New variable. * Rules: Remove handling of static-only and shared-only routines. * Makerules: Handle them here instead. Use object-suffixes-for-libc instead of object-suffixes when dealing with libc objects. (object-suffixes-for-rules): Remove variable. (elide-routines.oS): Elide all routines except static-only routines. ($(objpfx)stamp.oS): Special rule for when static-only-routines is empty. (installed-libcs): Remove special case for .oS. (rmobjs): Likewise. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makefile (do-collate-test, do-xfrm-test, do-tst-fmon, do-tst-rpmatch): New targets. (test): Use them. (install-locales): Ignore comment lines. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/Makefile ($(objpfx)ld.so): Depend on version script. ($(objpfx)trusted-dirs.h): Depend also on $(..)Makeconfig. ($(objpfx)rtldtbl.h): Likewise. (CPPFLAGS-dl-load.c): Fix reference to object directory. 1998-03-30 09:36 Ulrich Drepper <drepper@cygnus.com> * manual/string.texi (Finding Tokens in a String): Extend strsep description and correct example. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * manual/socket.texi: Remove misguided explicit line breaks and fix the formatting problem instead by reformulating the paragraphs. * manual/filesys.texi: Likewise. * manual/conf.texi: Likewise. Don't typeset table with index fonts, that looks worse than a minimally overfull line. 1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * nscd/Makefile (nscd-modules): Move definition outside of conditional. * pwd/Makefile: Use have-thread-library to test for thread library. 1998-03-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> * nss/getXXent_r.c (INTERNAL): Remove unused variable current_nip. * iconvdata/uhc.c (gconv): Remove unused variable idx. 1998-03-30 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/Dist: Add lddlibc4.c.
1998-03-30 21:01:46 +08:00
* nss/nss_files/files-network.c: Pass empty for new DB_LOOKUP args. (DATABASE): Define this instead of DATAFILE. * nss/nss_files/files-hosts.c: Likewise. (hostbyname): Use LOOKUP_NAME macro. * nss/nss_db/db-XXX.c: New file. * nss/Makefile (services): Add db. (libnss_db-inhibit-o): New variable. (libnss_db-routines): New variable. (distribute): Append db-XXX.c. (libnss_db.so): Depend on libdb.so and libnss_files.so. ($(libnss_db-routines:%=$(objpfx)%.c)): New static pattern rule. * nss/nss_files/files-XXX.c (DB_LOOKUP): Add KEYSIZE and KEYPATTERN args, ignored. (DATAFILE): New macro. * nss/nss_files/files-parse.c (GENERIC): If undefined, define to "files-XXX.c". * nss/nss_files/files-rpc.c: Include GENERIC instead of "files-XXX.c". Pass db key args to DB_LOOKUP. (DATAFILE): Macro removed. (DATABASE): New macro replaces it, lacks "/etc/" prefix. * nss/nss_files/files-service.c: Likewise. * nss/nss_files/files-pwd.c: Likewise. * nss/nss_files/files-proto.c: Likewise. * nss/nss_files/files-grp.c: Likewise. * nss/nss_files/files-ethers.c: Likewise. * elf/linux-compat.c: File removed. * elf/Makefile (distribute): Remove linux-compat.c. (ld-linux.so.1): Remove target and associated variables. * sunrpc/xdr.c: Remove malloc decl. * sunrpc/portmap.c: Likewise. * sunrpc/svc_tcp.c (abort): Don't declare. Instead define as macro casting abort to fn returning bool_t. * nss/nss_files/files-parse.c [EXTERN_PARSER]: Do an extern decl of the parser function. [EXTERN_PARSER] (LINE_PARSER): Define to empty. * nss/nss_files/files-pwd.c (EXTERN_PARSER): Define it. * nss/nss_files/files-grp.c: Likewise. * Makeconfig (BUILD_CC): If undefined, define to $(CC). * sunrpc/rpc/types.h: Include stdlib.h instead of declaring malloc. * Makeconfig (built-program-cmd): Use $(rtld-installed-name) in place of ld.so so lookups for that soname find it. * nss/Makefile (libnss_dns.so): Depend on libresolv.so. (resobjdir, LDLIBS-nss_dns.so): Variables removed.
1996-07-03 03:35:40 +08:00
ifndef BUILD_CC
BUILD_CC = $(CC)
endif
move-if-change = $(SHELL) $(..)scripts/move-if-change
Fri Apr 19 00:49:44 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * stdlib/rpmatch.c (rpmatch: try): Take new arg NOMATCH, return value for nonmatching nonerror (instead of !MATCH). (rpmatch): Use it, so we return -1 when NOEXPR doesn't match either. * resolv/getnetnamadr.c (getnetbyaddr): Use u_int32_t instead of unsigned long for variable NET2. * time/etcetera, time/europe, time/solar89: Updated from ADO's 96e. Tue Apr 9 14:37:31 1996 Ulrich Drepper <drepper@cygnus.com> * catgets/Makefile, catgets/catgets.c, catgets/catgetsinfo.h, catgets/config.h, catgets/gencat.c, catgets/nl_types.h, catgets/open_catalog.c: New files. Implementation of XPG4 compliant catgets() function and needed tools. * Makefile (subdirs): Add catgets. Thu Apr 18 23:36:11 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * math/Makefile (CPPFLAGS): Append -D__NO_MATH_INLINES. Wed Apr 10 20:48:43 1996 Ulrich Drepper <drepper@cygnus.com> * stdio-common/vfprintf.c: Correct some typos. * sysdeps/libm-ieee754/w_gammaf.c, sysdeps/libm-ieee754/w_lgamma.c, sysdeps/libm-ieee754/w_lgammaf.c: Reference signgam instead of __signgam. Thu Apr 18 21:07:27 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu> * Makerules (no-whole-archive): New variable. (build-shlib): Use it. * elf/Makefile (libdl.so): Use it. * configure.in (libc_cv_ld_no_whole_archive): New check for --no-whole-archive. * config.make.in (have-no-whole-archive): New variable. * stdio-common/printf_fp.c: Increase fudge factor for BIGNUM_SIZE calc from 3 to 4. * Make-dist: Include version.mk. (version, release): Variables removed. * Makeconfig (version.mk): New target. Fri Apr 19 01:42:18 1996 Ulrich Drepper <drepper@cygnus.com> * locale/Makefile (headers): Add langinfo.h. (CPPFLAGS): Remove -Iliblib.
1996-04-20 08:05:25 +08:00
-include $(common-objpfx)sysd-sorted
subdirs = $(sorted-subdirs)
* Makefile (subdir-target-args): New variable. ($(all-subdirs-targets)): Use it in place of -C option. * Rules: Use $(..) instead of ../ if it's already defined. * Makeconfig (subdir-srcdirs): New variable. * csu/Makefile (all-Banner-files): Use it. * configure.in (--enable-add-ons): Set to "yes" by default. Handle absolute add-on directory names when looking for configure fragments. Also look for sysdeps/*/preconfigure fragments in add-ons. Require add-on configure to set $libc_add_on_canonical, use that in $add_ons_sfx. Substitute add_on_subdirs with computed list of subdir names each add-on configure set in libc_add_on_subdirs. * configure: Regenerated. * Makefile (%/preconfigure: %/preconfigure.in): New pattern rule. * config.make.in (add-on-subdirs): New substituted variable. * Makeconfig (all-subdirs): Include $(add-on-subdirs). Remove $(add-ons), $(sysdep-subdirs). Don't filter out $(sysdep-inhibit-subdirs). ($(common-objpfx)sysd-dirs): Target removed. Don't include it. ($(common-objpfx)sysd-sorted): Rewritten to feed Depend and Subdirs files together to gen-sorted.awk, and $(subdirs) via -v. (subdirs): Remove magic reordering for mach and hurd. * scripts/gen-sorted.awk: Use subdirs from command line. Process Subdirs and Depend files directly. Let Subdirs files use "first dir" and "inhibit dir". Always move elf to the end of the list. * hurd/Depend: New file. * sysdeps/mach/Subdirs: Use "first mach". * Makefile (dist-separate): Remove linuxthreads. (dist-separate-linuxthreads): Variable removed. (glibc-%.tar rule): Use $(sysdeps-add-ons). * Makerules ($(common-objpfx)Versions.v.i): Use $(subdirs), not $(all-subdirs). (sysdep-makefiles): Use $(sysdirs). (sysdirs): Remove export. ($(+sysdir_pfx)sysd-rules): Handle absolute directory names in $(config-sysdirs). (+sysdir_pfx): Variable removed. (sysd-rules): Use $(common-objpfx) in place of it. (sysdirs): Variable moved to ... * Makeconfig (sysdirs): ... here. Handle absolute directory names in $(config-sysdirs). (full_config_sysdirs): Variable removed. * csu/Makefile: Use $(sysdirs) in vpath directive. * math/Makefile (ulps-file): Use $(sysdirs). * sysdeps/gnu/Makefile (errlist-c): Likewise. ($(objpfx)errlist-compat.c): Likewise. * Makeconfig (all-Subdirs-files): Likewise. ($(common-objpfx)config.status): Likewise. * configure.in (sysnames): Handle absolute add-on directory names. (sysdeps_add_ons): New variable, AC_SUBST it. Compute which add-ons contributed sysdeps directories. * configure: Regenerated. * config.make.in (sysdeps-add-ons): New substituted variable. * Makerules (+sysdep_dirs, +sysdep-includes): Variables moved ... * Makeconfig: ... to here. (+sysdep_dirs): Append $(sysdeps-add-ons) here. (+includes): Remove $(objpfx) include, already in $(+sysdep_dirs). Remove $(includes). (sysdep-makeconfigs): Use $(+sysdep_dirs). ($(common-objpfx)shlib-versions.v.i): Likewise. * Makeconfig: Remove hair to set Makeconfig-add-on. * sysdeps/unix/Makefile (sysdirs): Remove export. (asm_CPP): Variable removed. ($(common-objpfx)sysd-syscalls): Pass them directly for the script. * sysdeps/posix/Makefile: New file. * Makerules (L_tmpnam, TMP_MAX, L_ctermid, L_cuserid): Set non-posix values here with ?=. * stdlib/gen-mpn-copy: File removed. * stdlib/Makefile (distribute): Remove it. * configure.in: Don't grok --with-gmp. * configure: Regenerated. * configure.in (libc_cv_idn): Don't check it; libidn/configure does it. * configure: Regenerated. * bare: Directory removed, saved in ports repository.
2006-02-28 15:11:04 +08:00
subdir-srcdirs = $(foreach dir,$(subdirs),\
$(firstword $($(dir)-srcdir) $(..)$(dir)))
Update. 1997-09-11 04:36 Ulrich Drepper <drepper@cygnus.com> * db2/db_int.h: Define __set_errno if not yet available. * db2/btree/bt_rec.c: Use __set_errno to set errno value. * db2/clib/getlong.c: Likewise. * db2/db185/db185.c: Likewise. * db2/db185/db185_int.h: Likewise. * db2/dbm/dbm.c: Likewise. * db2/lock/lock_deadlock.c: Likewise. * db2/log/log_archive.c: Likewise. * elf/dl-profile.c: Implement mcount function. * gmon/gmon.c: Use __profil not profil because of namespace pollution. * gmon/mcount.c: Remove BSD kernel code. Use compare&swap instruction if possible to change state variable. Optimize frompc folding. * gmon/sys/gmon.h (struct gmonparam): Change state field to long int. * sysdeps/i386/i486/atomicity.h: New file. * sysdeps/stub/atomicity.h: New file. * sysdeps/mach/hurd/profil.c: Define function as __profil and make profil weak alias. * sysdeps/posix/profil.c: Likewise. * string/bits/string2.h: New file. * include/bits/string2.h: New file. * string/Makefile (routines): Add mempcpy. (tests): Add inl-tester. Remove _D__NO_STRING_INLINES from CFLAGS-* variables. * sysdeps/generic/mempcpy.c: New file. * sysdeps/generic/memccpy.c: Undef function name to enable definition as macro. * sysdeps/generic/memchr.c: Likewise. * sysdeps/generic/memcmp.c: Likewise. * sysdeps/generic/memmem.c: Likewise. * sysdeps/generic/memmove.c: Likewise. * sysdeps/generic/strcat.c: Likewise. * sysdeps/generic/strchr.c: Likewise. * sysdeps/generic/strcmp.c: Likewise. * sysdeps/generic/strcpy.c: Likewise. * sysdeps/generic/strcspn.c: Likewise. * sysdeps/generic/strlen.c: Likewise. * sysdeps/generic/strncat.c: Likewise. * sysdeps/generic/strncmp.c: Likewise. * sysdeps/generic/strncpy.c: Likewise. * sysdeps/generic/strpbrk.c: Likewise. * sysdeps/generic/strrchr.c: Likewise. * sysdeps/generic/strsep.c: Likewise. * sysdeps/generic/strspn.c: Likewise. * sysdeps/generic/strstr.c: Likewise. * sysdeps/generic/strtok.c: Likewise. * sysdeps/generic/strtok_r.c: Likewise. * sysdeps/i386/memset.c: Likewise. * sysdeps/i386/bits/string.h: Correct a few types and constraints. * sysdeps/i386/i486/bits/string.h: Heavy rewrites and optimizations. * string/stratcliff.c: Undefine __USE_STRING_INLINES. * string/tst-strlen.c: Likewise. * string/string.h: Add prototype for mempcpy. Include bits/string2.h header always if optimizing. * intl/dcgettext.c: Don't unconditionally define stpcpy, only if not yet defined. * intl/l10nflist.c: Likewise. * string/tester.c: Add copyright and make little cleanups. * inet/test_ifindex.c: Change type of ni variable to unsigned int. * locale/programs/ld-ctype.c (struct locale_ctype_t): Change type of fields map_collection_max and map_collection_act to size_t. * nss/libnss_files.map: Group entries. * posix/unistd.h: Add prototype for __setpgid and __profil. * sysdeps/generic/crypt.h: Declare __crypt_r. * sysdeps/i386/bits/select.h: Fix fatal bugs, use correct casts now. * sysdeps/i386/fpu/bits/mathinline.h (isgreater, isgreaterequal, isless, islessequal, islessgreater, isunordered): Optimize a bit. * sysdeps/stub/ftruncate.c: Include missing header for prototype. * sysdeps/stub/getdents.c: Likewise. * sysdeps/stub/reboot.c: Likewise. * sysdeps/stub/swapon.c: Likewise. * sysdeps/stub/syscall.c: Likewise. * sysdeps/stub/ualarm.c: Likewise. * sysdeps/stub/usleep.c: Likewise. * sysdeps/unix/sysv/linux/if_index.c: Don't compile or use opensock if SIOGIFINDEX and SIOGIFNAME are not defined. * sysdeps/unix/sysv/linux/net/if.h: Add IFF_PORTSEL and IFF_AUTOMEDIA according to recent kernel changes. 1997-09-10 21:32 Klaus Espenlaub <kespenla@student.informatik.uni-ulm.de> * Makeconfig: Use $(have-initfini) instead of $(elf) to figure out the installed name of the startup code. (common-generated): Add version.mk. * Makefile (distclean-1): Add glibcbug. * Makerules: Replace -lgcc by $(gnulib). * catgets/Makefile (generated): Add xmalloc.o. * csu/Makefile (generated): Replace align.h and end.h by defs.h to match the generated file. * manual/Makefile (mostlyclean): Add stub-manual and stamp.o. (realclean): Changed to remove chapters-incl[12]. * po/Makefile (realclean): New rule to remove the generated .mo files. * time/Makefile: Only include zonefile dependencies if $(no_deps) is not true to avoid make clean failure when directory time doesn't exist yet. (generated): Add tzselect. * stdio/fgets.c (fgets): Add casts to reduce gcc warning noise. * stdio/internals.c (flushbuf): Likewise. * stdio/linewrap.c (lwupdate): Likewise. * stdio/memstream.c (enlarge_buffer): Likewise. * stdio-common/vfscanf.c (_IO_vfscanf): Likewise. * time/tzset.c (compute_change): Likewise. * misc/init-misc.c (__init_misc): Only declare static if HAVE_GNU_LD is defined. * sysdeps/posix/pipestream.c (FUNC): Change to generate ANSI C style functions. * sysdeps/stub/init-posix.c: Likewise. * sysdeps/stub/profil.c: Likewise. * munch-tmpl.c (__libc_init): Convert to ANSI C style declaration to reduce gcc warning noise. * stdio/glue.c (_filbuf, _flsbuf): Likewise. * stdio/obstream.c (grow, seek, input, init_obstream): Likewise. * stdio/vasprintf.c (enlarge_buffer): Likewise. * sysdeps/generic/sysd-stdio.c (__stdio_read, __stdio_write, __stdio_seek, __stdio_close, __stdio_fileno, __stdio_open, __stdio_reopen): Likewise. * sysdeps/posix/defs.c (_cleanup): Likewise. * time/offtime.c (__offtime): Add cast. * posix/getopt.c: Don't use text_set_element if not defined. * configure.in: Provide a check for underscores before user labels that works even when the compiler used for building doesn't work (like when there is no C library). Use the old way if the compiler works. 1997-09-10 05:08 David S. Miller <davem@caip.rutgers.edu> * sysdeps/unix/sysv/linux/sparc/bits/ioctls.h: The TC* ioctls use 'T' not 't' on SparcLinux. * sysdeps/unix/sysv/linux/sparc/bits/termios.h: tcflag_t is 32 bits. * sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S: Add aliases for _longjmp and siglongjmp. 1997-09-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * libio/stdio.h: Add format attributes to the extra printf and scanf like functions. * stdio/stdio.h: Likewise. 1997-09-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * nis/nss_nisplus/nisplus-network.c (_nss_nisplus_getnetbyaddr_r): Print tablename_val, not tablename_len. * nis/nss_nisplus/nisplus-ethers.c (_nss_nisplus_getntohost_r): Use sprintf instead of sprintf, the string always fits. * nis/nss_nisplus/nisplus-hosts.c (_nss_nisplus_gethostbyaddr_r): Likewise. * nis/nss_nisplus/nisplus-network.c (_nss_nisplus_getnetbyaddr_r): Likewise. * nis/nss_nisplus/nisplus-proto.c (_nss_nisplus_getprotobynumber_r): Likewise. * nis/nss_nisplus/nisplus-rpc.c (_nss_nisplus_getrpcbynumber_r): Likewise. * nis/nss_nisplus/nisplus-service.c (_nss_nisplus_getservbynumber_r): Likewise. * nis/nss_nisplus/nisplus-alias.c (_nss_create_tablename): Use __stpcpy, __stpncpy and __strdup instead of public names. * nis/nss_nisplus/nisplus-ethers.c (_nss_create_tablename): Likewise. * nis/nss_nisplus/nisplus-grp.c (_nss_create_tablename): Likewise. * nis/nss_nisplus/nisplus-hosts.c (_nss_create_tablename): Likewise. * nis/nss_nisplus/nisplus-netgrp.c (_nss_nisplus_parse_netgroup): Likewise. * nis/nss_nisplus/nisplus-network.c (_nss_nisplus_parse_netent): Likewise. (_nss_create_tablename): Likewise. * nis/nss_nisplus/nisplus-proto.c (_nss_nisplus_parse_protoent): Likewise. (_nss_create_tablename): Likewise. * nis/nss_nisplus/nisplus-pwd.c (_nss_create_tablename): Likewise. * nis/nss_nisplus/nisplus-rpc.c (_nss_nisplus_parse_rpcent): Likewise. (_nss_create_tablename): Likewise. * nis/nss_nisplus/nisplus-service.c (_nss_nisplus_parse_servent): Likewise. (_nss_create_tablename): Likewise. * nis/nss_nisplus/nisplus-spwd.c (_nss_create_tablename): Likewise. * libc.map: Export __stpcpy and __strdup. 1997-09-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * math/Makefile (CFLAGS-test-float.c, CFLAGS-test-double.c, CFLAGS-test-ldouble.c): Pass -ffloat-store to avoid excessive precision. 1997-09-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * include/rpc/auth_des.h: New file. 1997-09-09 Paul Eggert <eggert@twinsun.com> * time/mktime.c (__mktime_internal): Declare sec_requested even if !LEAP_SECONDS_POSSIBLE, since it's needed at the end when checking for time_t overflow. 1997-09-09 22:11 Ulrich Drepper <drepper@cygnus.com> * sysdeps/posix/getcwd.c: Correct test for too small buffer. Reported by Erik Troan <ewt@redhat.com>. * elf/dl-close.c: Include <bits/libc-lock.h>, not <libc-lock.h>. * elf/dl-open.c: Likewise. 1997-09-07 17:09 Richard Henderson <rth@cygnus.com> * sysdeps/alpha/Makefile: Kill setjmp_aux. * sysdeps/alpha/bits/setjmp.h: Rewrite in terms of an array. * sysdeps/alpha/__longjmp.c: Remove. * sysdeps/alpha/setjmp_aux.c: Remove. * sysdeps/alpha/__longjmp.S: New file. * sysdeps/alpha/bsd-_setjmp.S: Stub out. * sysdeps/alpha/bsd-setjmp.S: Likewise. * sysdeps/alpha/setjmp.S: Do the work; don't call __setjmp_aux. Move _setjmp and setjmp from bsd-*.S. 1997-09-06 20:20 Ulrich Drepper <drepper@cygnus.com> * include/rpc/auth.h: New file. * include/rpc/auth_unix.h: New file. 1997-09-06 Paul Eggert <eggert@twinsun.com> Fix gmtime so that it reports leap seconds when TZ indicates that leap seconds are desired. * time/gmtime.c (<stddef.h>): Remove unnecessary include. (gmtime): Put after gmtime_r, to help the compiler inline. (__tz_convert): New decl. (gmtime_r): Use __tz_convert instead of __offtime, so that leap seconds are handled correctly. * time/localtime.c (<errno.h>, <libc-lock.h>): Remove includes that are now unnecessary. (__tzset_internal, __tz_compute, __tzfile_compute, __use_tzfile, __tzset_lock): Remove extern decls that are now unnecessary. (localtime_internal): Moved to __tz_convert in tzset.c. so that localtime and gmtime can both use it easily. (localtime): Put after localtime_r, to help the compiler inline. (localtime_r): Use __tz_convert instead of localtime_internal. * time/strftime.c (__tz_compute): Remove unused (and now incorrect) decl. * time/tzfile.c (__tzfile_compute): New arg USE_LOCALTIME. * time/tzset.c (<errno.h>): Include. (_tmbuf): New decl. (__tzfile_compute): New function. (tz_compute): Renamed from __tz_compute. No longer extern. Remove redundant call to tzset_internal. (tzset_internal): Renamed from __tzset_internal. No longer extern. (tzset_lock): Renamed from __tzset_lock. No longer extern. (__tz_convert): New function, containing functionality of old localtime_internal function, plus locking and optional UTC. 1997-09-06 Paul Eggert <eggert@twinsun.com> * time/tzfile.c (__tzfile_read): Don't read a file if TZ is the empty string, just use UTC without leap seconds. This is for compatibility with the Olson code. 1997-09-06 Paul Eggert <eggert@twinsun.com> * time/tzset.c (__tzname_max): Lock tz data structures before invoking tzset_internal. * time/tzfile.c: Define compute_tzname_max statically. 1997-09-07 10:57 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * nis/nis_call.c: Remove not longer necessary HAVE_SECURE_RPC ifdefs. * nis/nis_intern.h: Likewise. * nis/nss_nis/nis-publickey.c: Likewise. * nis/nss_nisplus/nisplus-publickey.c: Likewise. * nis/ypclnt.c: Likewise. * sunrpc/auth_des.c: Don't dereference NULL pointer, initialize ad->ad_timediff. * sunrpc/auth_none.c: Don't define our own prototypes, use the one from the header files. * sunrpc/auth_unix.c: Likewise. * sunrpc/clnt_raw.c: Likewise. * sunrpc/clnt_tcp.c: Likewise. * sunrpc/rpc_cmsg.c: Likewise. * sunrpc/key_call.c: Fix signal handling. * sunrpc/openchild.c: Don't use /bin/sh to start /usr/etc/keyenvoy, or we will get a deadlock with NIS+. * sunrpc/rpc/auth.h: Add prototype for xdr_opaque_auth, don't define HAVE_SECURE_RPC. 1997-09-07 15:51 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/bits/select.h [__GNUC__] (__FD_ZERO, __FD_SET, __FD_CLR, __FD_ISSET): Use correct casts to address array correctly. Reported by urbanw@cs.umu.se. 1997-09-07 05:07 Ulrich Drepper <drepper@cygnus.com> * elf/dl-close.c: Include <bits/libc-lock.h>, not <libc-lock.h>. * elf/dl-open.c: Likewise. * sysdeps/i386/memset.c: Undefine memset in case the header with the optimized functions is included. Patches by NIIBE Yutaka <gniibe@mri.co.jp>. * sysdeps/i386/bits/string.h [__PIC__] (strcspn, strspn, strpbrk, strsep): Use register for second parameter. * sysdeps/i386/i486/bits/string.h: Likewise. Reported by NIIBE Yutaka <gniibe@mri.co.jp>. 1997-09-03 09:48 Geoff Keating <geoffk@ozemail.com.au> * math/libm-test.c: Change various tolerances to match what the tested routines can actually provide. * math/Makefile: Add new tests. * math/atest-sincos.c: New file. * math/atest-exp.c: New file. * csu/Makefile: Give initfini.s and initfiniS.s their own CFLAGS-* macros so they can be overridden. * sysdeps/powerpc/Makefile [subdir=csu]: Override flags for initfiniS.s to use -fpic instead of -fPIC, because the sed script breaks otherwise. * sysdeps/powerpc/Makefile [build-shared]: Use -fpic not -fPIC for efficiency. * sysdeps/powerpc/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Don't use register 0, to let _mcount be in a shared object. * sysdeps/powerpc/dl-machine.h: Use full sentences in comments. Generally clean up. Suppress some code we don't need when relocating ld.so. * sysdeps/powerpc/test-arith.c: Change loop indices to size_t when appropriate to suppress gcc warning. * resolv/res_send.c: Suppress warning. * sunrpc/xdr_sizeof.c: Suppress warning. * FAQ: Add ppc-linux. * manual/maint.texi: Add ppc-linux. Explain that gcc can't build it yet. * sysdeps/unix/sysv/linux/powerpc/profil-counter.h: Correct for current kernels. 1997-08-15 07:45 Geoff Keating <geoffk@ozemail.com.au> * stdlib/fmtmsg.c: Use two parameters for __libc_once_define. * sysdeps/i386/machine-gmon.h: Correct typo. * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Change to match kernel. * sysdeps/generic/dl-sysdep.c: Add hook for bizzare PPC argument hack. * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c: Rewrite to use sysdeps/linux/dl-sysdep.c. * sysdeps/powerpc/Makefile [subdir=gmon]: Compile ppc-mcount. * sysdeps/powerpc/machine-gmon.h: Use ppc-mcount. * sysdeps/powerpc/ppc-mcount: New file. The following are mostly changes to allow profiling: * sysdeps/powerpc/add_n.S: Added. * sysdeps/powerpc/add_n.s: Removed. * sysdeps/powerpc/addmul_1.S: Added. * sysdeps/powerpc/addmul_1.s: Removed. * sysdeps/powerpc/bsd-_setjmp.S: Use JUMPTARGET macro. * sysdeps/powerpc/bsd-setjmp.S: Use JUMPTARGET macro. * sysdeps/powerpc/lshift.S: Added. * sysdeps/powerpc/lshift.s: Removed. * sysdeps/powerpc/memset.S: Added. * sysdeps/powerpc/memset.s: Removed. * sysdeps/powerpc/mul_1.S: Added. * sysdeps/powerpc/mul_1.s: Removed. * sysdeps/powerpc/rshift.S: Added. * sysdeps/powerpc/rshift.s: Removed. * sysdeps/powerpc/s_copysign.S: Use ENTRY, END, weak_alias macros. * sysdeps/powerpc/s_fabs.S: Use ENTRY, END, weak_alias macros. * sysdeps/powerpc/setjmp.S: Use JUMPTARGET macro. * sysdeps/powerpc/strchr.S: Added. * sysdeps/powerpc/strchr.s: Removed. * sysdeps/powerpc/strcmp.S: Added. * sysdeps/powerpc/strcmp.s: Removed. * sysdeps/powerpc/strlen.S: Added. * sysdeps/powerpc/strlen.s: Removed. * sysdeps/powerpc/sub_n.S: Added. * sysdeps/powerpc/sub_n.s: Removed. * sysdeps/powerpc/submul_1.S: Added. * sysdeps/powerpc/submul_1.s: Removed. * sysdeps/unix/sysv/linux/powerpc/_exit.S: Removed. * sysdeps/unix/sysv/linux/powerpc/brk.S: Added. * sysdeps/unix/sysv/linux/powerpc/brk.c: Removed. * sysdeps/unix/sysv/linux/powerpc/clone.S: Use new macros. Fix various bugs. Document that it isn't tested. * sysdeps/unix/sysv/linux/powerpc/sigreturn.S: Make look like sysdeps/unix/_exit.S. * sysdeps/unix/sysv/linux/powerpc/socket.S: Use new macros. * sysdeps/unix/sysv/linux/powerpc/syscall.S: Use new macros. * sysdeps/unix/sysv/linux/powerpc/sysdep.h: Define some new macros to make assembler (possibly) more portable, allow profiling, etc.
1997-09-11 20:09:10 +08:00
# This is a pair of implicit rules to preprocess a file with # comments,
# %ifdef et al, based on config.h settings or other %include'd files.
# We use chained rules instead of a pipeline here so that we can properly
# check the exit status of cpp rather than using its bad output when there
# is a preprocessing error. Another rule should depend on the output file
# `FOO.v', and along with that `FOO.v.i' should be given dependencies
# listing both its input files, and any header files that it may reference
# (but no commands).
%.v.i: $(common-objpfx)config.h $(..)Makeconfig
sed '/^[ ]*%/!s/#.*$$//;/^[ ]*$$/d;s/^[ ]*%/#/' \
2013-02-27 10:50:17 +08:00
$(filter-out FORCE %.h $(..)Makeconfig,$^) \
| $(CC) -E -undef $(CPPFLAGS) -x assembler-with-cpp - \
> $@T
mv -f $@T $@
%.v: %.v.i
sed '/^[ ]*#/d;/^[ ]*$$/d' $< > $@T
mv -f $@T $@
2013-02-27 08:01:06 +08:00
ifeq (yes, $(build-shared))
# To generate a header to support more than one ABI for different
# architecture variants, the CPU/Makefile defines abi-variants to be a
# list of names for those variants (e.g. 32 64), and, for each variant,
# defines abi-$(variant)-condition to be the condition for those options
# to use in a C #if condition. abi-includes may be defined to a list of
# headers to include in the generated header, if the default does not
# suffice. default-abi is defined to be the ABI for the current glibc
# build.
ifndef abi-includes
abi-includes := bits/wordsize.h
endif
# Process the shlib-versions file, which tells us what shared library
# version numbers to use when we install shared objects on this system.
# We need to wait until $(subdirs) is complete.
ifeq ($(sysd-sorted-done),t)
-include $(common-objpfx)soversions.mk
ifndef avoid-generated
$(common-objpfx)shlib-versions.v.i: \
* Makefile (subdir-target-args): New variable. ($(all-subdirs-targets)): Use it in place of -C option. * Rules: Use $(..) instead of ../ if it's already defined. * Makeconfig (subdir-srcdirs): New variable. * csu/Makefile (all-Banner-files): Use it. * configure.in (--enable-add-ons): Set to "yes" by default. Handle absolute add-on directory names when looking for configure fragments. Also look for sysdeps/*/preconfigure fragments in add-ons. Require add-on configure to set $libc_add_on_canonical, use that in $add_ons_sfx. Substitute add_on_subdirs with computed list of subdir names each add-on configure set in libc_add_on_subdirs. * configure: Regenerated. * Makefile (%/preconfigure: %/preconfigure.in): New pattern rule. * config.make.in (add-on-subdirs): New substituted variable. * Makeconfig (all-subdirs): Include $(add-on-subdirs). Remove $(add-ons), $(sysdep-subdirs). Don't filter out $(sysdep-inhibit-subdirs). ($(common-objpfx)sysd-dirs): Target removed. Don't include it. ($(common-objpfx)sysd-sorted): Rewritten to feed Depend and Subdirs files together to gen-sorted.awk, and $(subdirs) via -v. (subdirs): Remove magic reordering for mach and hurd. * scripts/gen-sorted.awk: Use subdirs from command line. Process Subdirs and Depend files directly. Let Subdirs files use "first dir" and "inhibit dir". Always move elf to the end of the list. * hurd/Depend: New file. * sysdeps/mach/Subdirs: Use "first mach". * Makefile (dist-separate): Remove linuxthreads. (dist-separate-linuxthreads): Variable removed. (glibc-%.tar rule): Use $(sysdeps-add-ons). * Makerules ($(common-objpfx)Versions.v.i): Use $(subdirs), not $(all-subdirs). (sysdep-makefiles): Use $(sysdirs). (sysdirs): Remove export. ($(+sysdir_pfx)sysd-rules): Handle absolute directory names in $(config-sysdirs). (+sysdir_pfx): Variable removed. (sysd-rules): Use $(common-objpfx) in place of it. (sysdirs): Variable moved to ... * Makeconfig (sysdirs): ... here. Handle absolute directory names in $(config-sysdirs). (full_config_sysdirs): Variable removed. * csu/Makefile: Use $(sysdirs) in vpath directive. * math/Makefile (ulps-file): Use $(sysdirs). * sysdeps/gnu/Makefile (errlist-c): Likewise. ($(objpfx)errlist-compat.c): Likewise. * Makeconfig (all-Subdirs-files): Likewise. ($(common-objpfx)config.status): Likewise. * configure.in (sysnames): Handle absolute add-on directory names. (sysdeps_add_ons): New variable, AC_SUBST it. Compute which add-ons contributed sysdeps directories. * configure: Regenerated. * config.make.in (sysdeps-add-ons): New substituted variable. * Makerules (+sysdep_dirs, +sysdep-includes): Variables moved ... * Makeconfig: ... to here. (+sysdep_dirs): Append $(sysdeps-add-ons) here. (+includes): Remove $(objpfx) include, already in $(+sysdep_dirs). Remove $(includes). (sysdep-makeconfigs): Use $(+sysdep_dirs). ($(common-objpfx)shlib-versions.v.i): Likewise. * Makeconfig: Remove hair to set Makeconfig-add-on. * sysdeps/unix/Makefile (sysdirs): Remove export. (asm_CPP): Variable removed. ($(common-objpfx)sysd-syscalls): Pass them directly for the script. * sysdeps/posix/Makefile: New file. * Makerules (L_tmpnam, TMP_MAX, L_ctermid, L_cuserid): Set non-posix values here with ?=. * stdlib/gen-mpn-copy: File removed. * stdlib/Makefile (distribute): Remove it. * configure.in: Don't grok --with-gmp. * configure: Regenerated. * configure.in (libc_cv_idn): Don't check it; libidn/configure does it. * configure: Regenerated. * bare: Directory removed, saved in ports repository.
2006-02-28 15:11:04 +08:00
$(wildcard $(+sysdep_dirs:=/shlib-versions) \
$(subdir-srcdirs:=/shlib-versions)) \
$(..)shlib-versions
$(common-objpfx)soversions.i: $(..)scripts/soversions.awk \
$(common-objpfx)shlib-versions.v
$(AWK) -f $^ > $@T
mv -f $@T $@
$(common-objpfx)soversions.mk: $(common-objpfx)soversions.i $(..)Makeconfig
(while read which lib number setname; do \
eval seen_$$which=1; \
test x"$$which" = xDEFAULT || continue; \
case $$number in \
[0-9]*) echo "$$lib.so-version=.$$number"; \
echo "all-sonames+=$$lib=$$lib.so\$$($$lib.so-version)";;\
Clean up gnu/lib-names.h generation (bug 14171). This patch eliminates the mixture of SONAME information in shlib-versions files and SONAME information used to generate gnu/lib-names.h in makefiles, with the information in the makefiles being removed so all this information comes from the shlib-versions files. So that gnu/lib-names.h supports multiple ABIs, it is changed to be generated on the same basis as gnu/stubs.h: when there are multiple ABIs, gnu/lib-names.h is a wrapper header (the same header installed whatever ABI is being built) and separate headers such as gnu/lib-names-64.h contain the substantive contents (only one such header being installed by any glibc build). The rules for building gnu/lib-names.h were moved from Makeconfig to Makerules because they need to come after sysdeps makefiles are included (now that "ifndef abi-variants" is a toplevel conditional on the rules rather than $(abi-variants) being evaluated later inside the commands for a rule). Tested for x86_64 and x86 that the installed shared libraries are unchanged by this patch, and examined the installed gnu/lib-names*.h headers by hand. Also tested the case of a single ABI (where there is just a single header installed, again like stubs.h) by hacking abi-variants to empty for x86_64. [BZ #14171] * Makeconfig [$(build-shared) = yes] ($(common-objpfx)soversions.mk): Don't handle SONAMEs specified in makefiles. [$(build-shared) = yes && $(soversions.mk-done) = t] ($(common-objpfx)gnu/lib-names.h): Remove rule. [$(build-shared) = yes && $(soversions.mk-done) = t] ($(common-objpfx)gnu/lib-names.stmp): Likewise. Split and moved to Makerules. [$(build-shared) = yes && $(soversions.mk-done) = t] (before-compile): Don't append $(common-objpfx)gnu/lib-names.h here. [$(build-shared) = yes && $(soversions.mk-done) = t] (common-generated): Don't append gnu/lib-names.h and gnu/lib-names.stmp here. * Makerules [$(build-shared) = yes && $(soversions.mk-done) = t] (lib-names-h-abi): New variable. [$(build-shared) = yes && $(soversions.mk-done) = t] (lib-names-stmp-abi): Likewise. [$(build-shared) = yes && $(soversions.mk-done) = t && abi-variants] (before-compile): Append $(common-objpfx)$(lib-names-h-abi). [$(build-shared) = yes && $(soversions.mk-done) = t && abi-variants] (common-generated): Append gnu/lib-names.h. [$(build-shared) = yes && $(soversions.mk-done) = t && abi-variants] (install-others-nosubdir): Depend on $(inst_includedir)/$(lib-names-h-abi). [$(build-shared) = yes && $(soversions.mk-done) = t && abi-variants] ($(common-objpfx)gnu/lib-names.h): New rule. [$(build-shared) = yes && $(soversions.mk-done) = t] ($(common-objpfx)$(lib-names-h-abi)): New rule. [$(build-shared) = yes && $(soversions.mk-done) = t] ($(common-objpfx)$(lib-names-stmp-abi)): Likewise. [$(build-shared) = yes && $(soversions.mk-done) = t] (common-generated): Append $(lib-names-h-abi) and $(lib-names-stmp-abi). * scripts/lib-names.awk: Do not handle multi being set. * sysdeps/unix/sysv/linux/aarch64/Makefile (abi-lp64-ld-soname): Remove variable. (abi-lp64_be-ld-soname): Likewise. * sysdeps/unix/sysv/linux/arm/Makefile (abi-soft-ld-soname): Likewise. (abi-hard-ld-soname): Likewise. * sysdeps/unix/sysv/linux/i386/shlib-versions: New file. * sysdeps/unix/sysv/linux/mips/Makefile (abi-o32_soft-ld-soname): Remove variable. (abi-o32_hard-ld-soname): Likewise. (abi-o32_soft_2008-ld-soname): Likewise. (abi-o32_hard_2008-ld-soname): Likewise. (abi-n32_soft-ld-soname): Likewise. (abi-n32_hard-ld-soname): Likewise. (abi-n32_soft_2008-ld-soname): Likewise. (abi-n32_hard_2008-ld-soname): Likewise. (abi-n64_soft-ld-soname): Likewise. (abi-n64_hard-ld-soname): Likewise. (abi-n64_soft_2008-ld-soname): Likewise. (abi-n64_hard_2008-ld-soname): Likewise. * sysdeps/unix/sysv/linux/powerpc/Makefile (abi-64-v1-ld-soname): Likewise. (abi-64-v2-ld-soname): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions: Add ld.so entries. * sysdeps/unix/sysv/linux/s390/Makefile (abi-64-ld-soname): Remove variable. * sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions: Add ld.so entry. * sysdeps/unix/sysv/linux/x86/Makefile (abi-32-ld-soname): Remove variable. (abi-64-ld-soname): Likewise. (abi-x32-ld-soname): Likewise. * sysdeps/unix/sysv/linux/x86_64/64/shlib-versions: Add ld.so entry. * sysdeps/unix/sysv/linux/x86_64/x32/shlib-versions: Likewise.
2014-09-27 01:33:04 +08:00
*) echo "$$lib.so-version=$$number"; \
echo "all-sonames+=$$lib=\$$($$lib.so-version)";;\
esac; \
done; \
echo soversions.mk-done = t;) < $< > $@T; exit 0
mv -f $@T $@
endif
endif
postclean-generated += soversions.mk soversions.i \
shlib-versions.v shlib-versions.v.i
before-compile += $(common-objpfx)libc-modules.h
common-generated += libc-modules.h libc-modules.stmp
ifeq ($(soversions.mk-done),t)
# Generate a header with macro definitions for use with the IS_IN macro.
# These are the possible values for the MODULE_NAME macro defined when building
# sources, to identify which module the translation unit is going to be built
# into.
$(common-objpfx)libc-modules.h: $(common-objpfx)libc-modules.stmp; @:
$(common-objpfx)libc-modules.stmp: $(..)scripts/gen-libc-modules.awk \
$(common-objpfx)soversions.i
$(AWK) -v buildlist="$(subst -,_,$(built-modules))" -f $^ > ${@:stmp=T}
$(move-if-change) ${@:stmp=T} ${@:stmp=h}
touch $@
endif
Add framework for tunables The tunables framework allows us to uniformly manage and expose global variables inside glibc as switches to users. tunables/README has instructions for glibc developers to add new tunables. Tunables support can be enabled by passing the --enable-tunables configure flag to the configure script. This patch only adds a framework and does not pose any limitations on how tunable values are read from the user. It also adds environment variables used in malloc behaviour tweaking to the tunables framework as a PoC of the compatibility interface. * manual/install.texi: Add --enable-tunables option. * INSTALL: Regenerate. * README.tunables: New file. * Makeconfig (CPPFLAGS): Define TOP_NAMESPACE. (before-compile): Generate dl-tunable-list.h early. * config.h.in: Add HAVE_TUNABLES. * config.make.in: Add have-tunables. * configure.ac: Add --enable-tunables option. * configure: Regenerate. * csu/init-first.c (__libc_init_first): Move __libc_init_secure earlier... * csu/init-first.c (LIBC_START_MAIN):... to here. Include dl-tunables.h, libc-internal.h. (LIBC_START_MAIN) [!SHARED]: Initialize tunables for static binaries. * elf/Makefile (dl-routines): Add dl-tunables. * elf/Versions (ld): Add __tunable_set_val to GLIBC_PRIVATE namespace. * elf/dl-support (_dl_nondynamic_init): Unset MALLOC_CHECK_ only when !HAVE_TUNABLES. * elf/rtld.c (process_envvars): Likewise. * elf/dl-sysdep.c [HAVE_TUNABLES]: Include dl-tunables.h (_dl_sysdep_start): Call __tunables_init. * elf/dl-tunable-types.h: New file. * elf/dl-tunables.c: New file. * elf/dl-tunables.h: New file. * elf/dl-tunables.list: New file. * malloc/tst-malloc-usable-static.c: New test case. * malloc/Makefile (tests-static): Add it. * malloc/arena.c [HAVE_TUNABLES]: Include dl-tunables.h. Define TUNABLE_NAMESPACE. (DL_TUNABLE_CALLBACK (set_mallopt_check)): New function. (DL_TUNABLE_CALLBACK_FNDECL): New macro. Use it to define callback functions. (ptmalloc_init): Set tunable values. * scripts/gen-tunables.awk: New file. * sysdeps/mach/hurd/dl-sysdep.c: Include dl-tunables.h. (_dl_sysdep_start): Call __tunables_init.
2017-01-01 02:02:17 +08:00
# Build the tunables list header early since it could be used by any module in
# glibc.
before-compile += $(common-objpfx)dl-tunable-list.h
common-generated += dl-tunable-list.h dl-tunable-list.stmp
$(common-objpfx)dl-tunable-list.h: $(common-objpfx)dl-tunable-list.stmp; @:
$(common-objpfx)dl-tunable-list.stmp: \
$(..)scripts/gen-tunables.awk \
$(..)elf/dl-tunables.list \
$(wildcard $(subdirs:%=$(..)%/dl-tunables.list)) \
$(wildcard $(sysdirs:%=%/dl-tunables.list))
LC_ALL=C $(AWK) -f $^ > ${@:stmp=T}
$(move-if-change) ${@:stmp=T} ${@:stmp=h}
touch $@
Add framework for tunables The tunables framework allows us to uniformly manage and expose global variables inside glibc as switches to users. tunables/README has instructions for glibc developers to add new tunables. Tunables support can be enabled by passing the --enable-tunables configure flag to the configure script. This patch only adds a framework and does not pose any limitations on how tunable values are read from the user. It also adds environment variables used in malloc behaviour tweaking to the tunables framework as a PoC of the compatibility interface. * manual/install.texi: Add --enable-tunables option. * INSTALL: Regenerate. * README.tunables: New file. * Makeconfig (CPPFLAGS): Define TOP_NAMESPACE. (before-compile): Generate dl-tunable-list.h early. * config.h.in: Add HAVE_TUNABLES. * config.make.in: Add have-tunables. * configure.ac: Add --enable-tunables option. * configure: Regenerate. * csu/init-first.c (__libc_init_first): Move __libc_init_secure earlier... * csu/init-first.c (LIBC_START_MAIN):... to here. Include dl-tunables.h, libc-internal.h. (LIBC_START_MAIN) [!SHARED]: Initialize tunables for static binaries. * elf/Makefile (dl-routines): Add dl-tunables. * elf/Versions (ld): Add __tunable_set_val to GLIBC_PRIVATE namespace. * elf/dl-support (_dl_nondynamic_init): Unset MALLOC_CHECK_ only when !HAVE_TUNABLES. * elf/rtld.c (process_envvars): Likewise. * elf/dl-sysdep.c [HAVE_TUNABLES]: Include dl-tunables.h (_dl_sysdep_start): Call __tunables_init. * elf/dl-tunable-types.h: New file. * elf/dl-tunables.c: New file. * elf/dl-tunables.h: New file. * elf/dl-tunables.list: New file. * malloc/tst-malloc-usable-static.c: New test case. * malloc/Makefile (tests-static): Add it. * malloc/arena.c [HAVE_TUNABLES]: Include dl-tunables.h. Define TUNABLE_NAMESPACE. (DL_TUNABLE_CALLBACK (set_mallopt_check)): New function. (DL_TUNABLE_CALLBACK_FNDECL): New macro. Use it to define callback functions. (ptmalloc_init): Set tunable values. * scripts/gen-tunables.awk: New file. * sysdeps/mach/hurd/dl-sysdep.c: Include dl-tunables.h. (_dl_sysdep_start): Call __tunables_init.
2017-01-01 02:02:17 +08:00
# Dump the GCC macros used by the default compiler flags to a header
# file, so that they can be inspected when using different compiler
# flags. Add the GCCMACRO prefix to make these macro names unique.
$(common-objpfx)gcc-macros.h.in: $(common-objpfx)config.status
$(CC) $(CFLAGS) $(CPPFLAGS) -E -dM -x c -o $@ /dev/null
$(common-objpfx)gcc-macros.h: $(common-objpfx)gcc-macros.h.in
sed 's/^#define /#define GCCMACRO/' < $< > $@
before-compile += $(common-objpfx)gcc-macros.h
# Generate version maps, but wait until sysdep-subdirs is known
ifeq ($(sysd-sorted-done),t)
ifeq ($(build-shared),yes)
-include $(common-objpfx)sysd-versions
-include $(common-objpfx)Versions.mk
$(addprefix $(common-objpfx),$(version-maps)): $(common-objpfx)sysd-versions
common-generated += $(version-maps)
postclean-generated += sysd-versions Versions.all abi-versions.h \
Versions.def Versions.v.i Versions.v Versions.mk
ifndef avoid-generated
ifneq ($(sysd-versions-subdirs),$(sorted-subdirs) $(config-sysdirs))
sysd-versions-force = FORCE
FORCE:
endif
$(common-objpfx)Versions.def: $(..)scripts/versionlist.awk \
$(common-objpfx)Versions.v
LC_ALL=C $(AWK) -f $^ > $@T
mv -f $@T $@
$(common-objpfx)Versions.all: $(..)scripts/firstversions.awk \
$(common-objpfx)soversions.i \
$(common-objpfx)Versions.def
{ while read which lib version setname; do \
test x"$$which" = xDEFAULT || continue; \
test -z "$$setname" || echo "$$lib : $$setname"; \
done < $(word 2,$^); \
cat $(word 3,$^); \
} | LC_ALL=C $(AWK) -f $< > $@T
mv -f $@T $@
$(common-objpfx)Versions.mk: $(..)scripts/haveversions.awk \
$(common-objpfx)Versions.all
$(AWK) -f $^ > $@T
mv -f $@T $@
# See %.v/%.v.i implicit rules in Makeconfig.
$(common-objpfx)Versions.v.i: $(wildcard $(subdirs:%=$(..)%/Versions)) \
$(wildcard $(sysdirs:%=%/Versions)) \
$(sysd-versions-force)
$(common-objpfx)sysd-versions: $(common-objpfx)versions.stmp
$(common-objpfx)versions.stmp: $(common-objpfx)Versions.all \
$(common-objpfx)Versions.v \
$(..)scripts/versions.awk
( echo 'sysd-versions-subdirs = $(subdirs) $(config-sysdirs)' ; \
cat $(word 2,$^) \
| LC_ALL=C $(AWK) -v buildroot=$(common-objpfx) -v defsfile=$< \
-v move_if_change='$(move-if-change)' \
-f $(word 3,$^); \
) > $(common-objpfx)sysd-versionsT
mv -f $(common-objpfx)sysd-versionsT $(common-objpfx)sysd-versions
touch $@
endif # avoid-generated
endif # $(build-shared) = yes
y2038: Add test coverage It is enabled through a new rule, tests-y2038, which is built only when the ABI supports the comapt 64-bit time_t (defined by the header time64-compat.h, which also enables the creation of the symbol Version for Linux). It means the tests are not built for ABI which already provide default 64-bit time_t. The new rule already adds the required LFS and 64-bit time_t compiler flags. The current coverage is: * libc: - adjtime tst-adjtime-time64 - adjtimex tst-adjtimex-time64 - clock_adjtime tst-clock_adjtime-time64 - clock_getres tst-clock-time64, tst-cpuclock1-time64 - clock_gettime tst-clock-time64, tst-clock2-time64, tst-cpuclock1-time64 - clock_nanosleep tst-clock_nanosleep-time64, tst-cpuclock1-time64 - clock_settime tst-clock2-time64 - cnd_timedwait tst-cnd-timedwait-time64 - ctime tst-ctime-time64 - ctime_r tst-ctime-time64 - difftime tst-difftime-time64 - fstat tst-stat-time64 - fstatat tst-stat-time64 - futimens tst-futimens-time64 - futimes tst-futimes-time64 - futimesat tst-futimesat-time64 - fts_* tst-fts-time64 - getitimer tst-itimer-timer64 - getrusage - gettimeofday tst-clock_nanosleep-time64 - glob / globfree tst-gnuglob64-time64 - gmtime tst-gmtime-time64 - gmtime_r tst-gmtime-time64 - lstat tst-stat-time64 - localtime tst-y2039-time64 - localtime_t tst-y2039-time64 - lutimes tst-lutimes-time64 - mktime tst-mktime4-time64 - mq_timedreceive tst-mqueue{1248}-time64 - mq_timedsend tst-mqueue{1248}-time64 - msgctl test-sysvmsg-time64 - mtx_timedlock tst-mtx-timedlock-time64 - nanosleep tst-cpuclock{12}-time64, tst-mqueue8-time64, tst-clock-time64 - nftw / ftw ftwtest-time64 - ntp_adjtime tst-ntp_adjtime-time64 - ntp_gettime tst-ntp_gettime-time64 - ntp_gettimex tst-ntp_gettimex-time64 - ppoll tst-ppoll-time64 - pselect tst-pselect-time64 - pthread_clockjoin_np tst-join14-time64 - pthread_cond_clockwait tst-cond11-time64 - pthread_cond_timedwait tst-abstime-time64 - pthread_mutex_clocklock tst-abstime-time64 - pthread_mutex_timedlock tst-abstime-time64 - pthread_rwlock_clockrdlock tst-abstime-time64, tst-rwlock14-time64 - pthread_rwlock_clockwrlock tst-abstime-time64, tst-rwlock14-time64 - pthread_rwlock_timedrdlock tst-abstime-time64, tst-rwlock14-time64 - pthread_rwlock_timedwrlock tst-abstime-time64, tst-rwlock14-time64 - pthread_timedjoin_np tst-join14-time64 - recvmmsg tst-cancel4_2-time64 - sched_rr_get_interval tst-sched_rr_get_interval-time64 - select tst-select-time64 - sem_clockwait tst-sem5-time64 - sem_timedwait tst-sem5-time64 - semctl test-sysvsem-time64 - semtimedop test-sysvsem-time64 - setitimer tst-mqueue2-time64, tst-itimer-timer64 - settimeofday tst-settimeofday-time64 - shmctl test-sysvshm-time64 - sigtimedwait tst-sigtimedwait-time64 - stat tst-stat-time64 - thrd_sleep tst-thrd-sleep-time64 - time tst-mqueue{1248}-time64 - timegm tst-timegm-time64 - timer_gettime tst-timer4-time64 - timer_settime tst-timer4-time64 - timerfd_gettime tst-timerfd-time64 - timerfd_settime tst-timerfd-time64 - timespec_get tst-timespec_get-time64 - timespec_getres tst-timespec_getres-time64 - utime tst-utime-time64 - utimensat tst-utimensat-time64 - utimes tst-utimes-time64 - wait3 tst-wait3-time64 - wait4 tst-wait4-time64 * librt: - aio_suspend tst-aio6-time64 - mq_timedreceive tst-mqueue{1248}-time64 - mq_timedsend tst-mqueue{1248}-time64 - timer_gettime tst-timer4-time64 - timer_settime tst-timer4-time64 * libanl: - gai_suspend Reviewed-by: Lukasz Majewski <lukma@denx.de> Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: Carlos O'Donell <carlos@redhat.com>
2021-02-18 02:59:34 +08:00
-include $(common-objpfx)time64-compat.mk
postclean-generated += time64-compat.mk
$(common-objpfx)time64-compat.mk: $(common-objpfx)time64-compat.mk.i \
$(sysd-versions-force)
y2038: Add test coverage It is enabled through a new rule, tests-y2038, which is built only when the ABI supports the comapt 64-bit time_t (defined by the header time64-compat.h, which also enables the creation of the symbol Version for Linux). It means the tests are not built for ABI which already provide default 64-bit time_t. The new rule already adds the required LFS and 64-bit time_t compiler flags. The current coverage is: * libc: - adjtime tst-adjtime-time64 - adjtimex tst-adjtimex-time64 - clock_adjtime tst-clock_adjtime-time64 - clock_getres tst-clock-time64, tst-cpuclock1-time64 - clock_gettime tst-clock-time64, tst-clock2-time64, tst-cpuclock1-time64 - clock_nanosleep tst-clock_nanosleep-time64, tst-cpuclock1-time64 - clock_settime tst-clock2-time64 - cnd_timedwait tst-cnd-timedwait-time64 - ctime tst-ctime-time64 - ctime_r tst-ctime-time64 - difftime tst-difftime-time64 - fstat tst-stat-time64 - fstatat tst-stat-time64 - futimens tst-futimens-time64 - futimes tst-futimes-time64 - futimesat tst-futimesat-time64 - fts_* tst-fts-time64 - getitimer tst-itimer-timer64 - getrusage - gettimeofday tst-clock_nanosleep-time64 - glob / globfree tst-gnuglob64-time64 - gmtime tst-gmtime-time64 - gmtime_r tst-gmtime-time64 - lstat tst-stat-time64 - localtime tst-y2039-time64 - localtime_t tst-y2039-time64 - lutimes tst-lutimes-time64 - mktime tst-mktime4-time64 - mq_timedreceive tst-mqueue{1248}-time64 - mq_timedsend tst-mqueue{1248}-time64 - msgctl test-sysvmsg-time64 - mtx_timedlock tst-mtx-timedlock-time64 - nanosleep tst-cpuclock{12}-time64, tst-mqueue8-time64, tst-clock-time64 - nftw / ftw ftwtest-time64 - ntp_adjtime tst-ntp_adjtime-time64 - ntp_gettime tst-ntp_gettime-time64 - ntp_gettimex tst-ntp_gettimex-time64 - ppoll tst-ppoll-time64 - pselect tst-pselect-time64 - pthread_clockjoin_np tst-join14-time64 - pthread_cond_clockwait tst-cond11-time64 - pthread_cond_timedwait tst-abstime-time64 - pthread_mutex_clocklock tst-abstime-time64 - pthread_mutex_timedlock tst-abstime-time64 - pthread_rwlock_clockrdlock tst-abstime-time64, tst-rwlock14-time64 - pthread_rwlock_clockwrlock tst-abstime-time64, tst-rwlock14-time64 - pthread_rwlock_timedrdlock tst-abstime-time64, tst-rwlock14-time64 - pthread_rwlock_timedwrlock tst-abstime-time64, tst-rwlock14-time64 - pthread_timedjoin_np tst-join14-time64 - recvmmsg tst-cancel4_2-time64 - sched_rr_get_interval tst-sched_rr_get_interval-time64 - select tst-select-time64 - sem_clockwait tst-sem5-time64 - sem_timedwait tst-sem5-time64 - semctl test-sysvsem-time64 - semtimedop test-sysvsem-time64 - setitimer tst-mqueue2-time64, tst-itimer-timer64 - settimeofday tst-settimeofday-time64 - shmctl test-sysvshm-time64 - sigtimedwait tst-sigtimedwait-time64 - stat tst-stat-time64 - thrd_sleep tst-thrd-sleep-time64 - time tst-mqueue{1248}-time64 - timegm tst-timegm-time64 - timer_gettime tst-timer4-time64 - timer_settime tst-timer4-time64 - timerfd_gettime tst-timerfd-time64 - timerfd_settime tst-timerfd-time64 - timespec_get tst-timespec_get-time64 - timespec_getres tst-timespec_getres-time64 - utime tst-utime-time64 - utimensat tst-utimensat-time64 - utimes tst-utimes-time64 - wait3 tst-wait3-time64 - wait4 tst-wait4-time64 * librt: - aio_suspend tst-aio6-time64 - mq_timedreceive tst-mqueue{1248}-time64 - mq_timedsend tst-mqueue{1248}-time64 - timer_gettime tst-timer4-time64 - timer_settime tst-timer4-time64 * libanl: - gai_suspend Reviewed-by: Lukasz Majewski <lukma@denx.de> Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: Carlos O'Donell <carlos@redhat.com>
2021-02-18 02:59:34 +08:00
sed '/^[ ]*#/d;/^[ ]*$$/d' $< > $@T
mv -f $@T $@
$(common-objpfx)time64-compat.mk.i: $(..)Makeconfig
y2038: Add test coverage It is enabled through a new rule, tests-y2038, which is built only when the ABI supports the comapt 64-bit time_t (defined by the header time64-compat.h, which also enables the creation of the symbol Version for Linux). It means the tests are not built for ABI which already provide default 64-bit time_t. The new rule already adds the required LFS and 64-bit time_t compiler flags. The current coverage is: * libc: - adjtime tst-adjtime-time64 - adjtimex tst-adjtimex-time64 - clock_adjtime tst-clock_adjtime-time64 - clock_getres tst-clock-time64, tst-cpuclock1-time64 - clock_gettime tst-clock-time64, tst-clock2-time64, tst-cpuclock1-time64 - clock_nanosleep tst-clock_nanosleep-time64, tst-cpuclock1-time64 - clock_settime tst-clock2-time64 - cnd_timedwait tst-cnd-timedwait-time64 - ctime tst-ctime-time64 - ctime_r tst-ctime-time64 - difftime tst-difftime-time64 - fstat tst-stat-time64 - fstatat tst-stat-time64 - futimens tst-futimens-time64 - futimes tst-futimes-time64 - futimesat tst-futimesat-time64 - fts_* tst-fts-time64 - getitimer tst-itimer-timer64 - getrusage - gettimeofday tst-clock_nanosleep-time64 - glob / globfree tst-gnuglob64-time64 - gmtime tst-gmtime-time64 - gmtime_r tst-gmtime-time64 - lstat tst-stat-time64 - localtime tst-y2039-time64 - localtime_t tst-y2039-time64 - lutimes tst-lutimes-time64 - mktime tst-mktime4-time64 - mq_timedreceive tst-mqueue{1248}-time64 - mq_timedsend tst-mqueue{1248}-time64 - msgctl test-sysvmsg-time64 - mtx_timedlock tst-mtx-timedlock-time64 - nanosleep tst-cpuclock{12}-time64, tst-mqueue8-time64, tst-clock-time64 - nftw / ftw ftwtest-time64 - ntp_adjtime tst-ntp_adjtime-time64 - ntp_gettime tst-ntp_gettime-time64 - ntp_gettimex tst-ntp_gettimex-time64 - ppoll tst-ppoll-time64 - pselect tst-pselect-time64 - pthread_clockjoin_np tst-join14-time64 - pthread_cond_clockwait tst-cond11-time64 - pthread_cond_timedwait tst-abstime-time64 - pthread_mutex_clocklock tst-abstime-time64 - pthread_mutex_timedlock tst-abstime-time64 - pthread_rwlock_clockrdlock tst-abstime-time64, tst-rwlock14-time64 - pthread_rwlock_clockwrlock tst-abstime-time64, tst-rwlock14-time64 - pthread_rwlock_timedrdlock tst-abstime-time64, tst-rwlock14-time64 - pthread_rwlock_timedwrlock tst-abstime-time64, tst-rwlock14-time64 - pthread_timedjoin_np tst-join14-time64 - recvmmsg tst-cancel4_2-time64 - sched_rr_get_interval tst-sched_rr_get_interval-time64 - select tst-select-time64 - sem_clockwait tst-sem5-time64 - sem_timedwait tst-sem5-time64 - semctl test-sysvsem-time64 - semtimedop test-sysvsem-time64 - setitimer tst-mqueue2-time64, tst-itimer-timer64 - settimeofday tst-settimeofday-time64 - shmctl test-sysvshm-time64 - sigtimedwait tst-sigtimedwait-time64 - stat tst-stat-time64 - thrd_sleep tst-thrd-sleep-time64 - time tst-mqueue{1248}-time64 - timegm tst-timegm-time64 - timer_gettime tst-timer4-time64 - timer_settime tst-timer4-time64 - timerfd_gettime tst-timerfd-time64 - timerfd_settime tst-timerfd-time64 - timespec_get tst-timespec_get-time64 - timespec_getres tst-timespec_getres-time64 - utime tst-utime-time64 - utimensat tst-utimensat-time64 - utimes tst-utimes-time64 - wait3 tst-wait3-time64 - wait4 tst-wait4-time64 * librt: - aio_suspend tst-aio6-time64 - mq_timedreceive tst-mqueue{1248}-time64 - mq_timedsend tst-mqueue{1248}-time64 - timer_gettime tst-timer4-time64 - timer_settime tst-timer4-time64 * libanl: - gai_suspend Reviewed-by: Lukasz Majewski <lukma@denx.de> Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: Carlos O'Donell <carlos@redhat.com>
2021-02-18 02:59:34 +08:00
printf "#include <time64-compat.h>\n#ifdef TIME64_NON_DEFAULT\nhave-time64-compat = yes\n#endif" \
| $(CC) -E -undef $(CPPFLAGS) -x assembler-with-cpp - > $@T
mv -f $@T $@
endif # sysd-sorted-done
update from main archvie 961013 Sun Oct 13 22:52:56 1996 Ulrich Drepper <drepper@cygnus.com> * shlib-versions: Add version number/name for ld.so. * Makeconfig: Move definition of rtld-installed-name after inclusion of soversions.mk. Don't add . before version number from shlib-versions file when when name does not start with digit. This is needed for ld.so. Sat Oct 12 20:31:58 1996 Richard Henderson <rth@tamu.edu> * libio/iogets.c: Warn when gets used. * stdio/gets.c: Strengthen the warning. Sat Oct 12 23:10:43 1996 Ulrich Drepper <drepper@cygnus.com> * libio/Makefile [_LIBC_REENTRANT] (routines): Add peekc. * libio/libio.h: Add prototypes for _IO_getc, _IO_putc, _IO_feof, _IO_ferror, _IO_peekc_locked, and _IO_ftrylockfile. Remove prototypes for _IO_getc_locked and _IO_putc_locked. [_IO_MTSAFE_IO]: Add weak aliases for _IO_flockfile and _IO_funlockfile. [! _IO_MTSAFE_IO]: Define _IO_ftrylockfile as empty. Define _IO_getc, _IO_peekc, _IO_putc, _IO_feof, _IO_ferror to appropriate values according to __USE_REENTRANT. * libio/stdio.h: Add prototype for ftrylockfile. [!_LIBC]: Define getc_locked, getchar_locked, putchar_locked, getc, getchar, putc, and putchar using _IO_* names. * libio/feof.c: Rename to _IO_feof and make feof weak alias. * libio/ferror.c: Rename to _IO_ferror and make ferror weak alias. * libio/getc.c: Rename to _IO_getc and make getc weak alias. * libio/putc.c: Rename to _IO_putc and make putc weak alias. * libio/putc_u.c: Don't define alias _IO_putc_unlocked. * libio/peekc.c: New file. * stdio-common/vfprintf.c (vfprintf): Unconditionally call __flockfile. * sysdeps/stub/locfile.c [USE_IN_LIBIO]: Also define _IO_* names. * crypt/Makefile (tests): Add md5test and md5c-test. * crypt/md5-crypt.c: Correct various error. Now md5_process_bytes is called, the buffer limit is honoured and a loop in a inner loop is corrected. * crypt/md5.h (struct md5_ctx): Add new fields. Add prototypes for new functions. * crypt/md5.c (md5_init_ctx): Initialize new fields. (md5_finish_ctx): New function. Like md5_read_ctx but before perform correct finalization. (md5_process_bytes): New function. Similar to md5_proces_block, but does not require input size to be multiple of 64. (md5_stream): Rewrite using md5_process_bytes and md5_finish_ctx. (md5_buffer): Likewise. (md5_process_block): Count number of bytes. * crypt/md5test.c: New file. Test program for MD5 functions. * crypt/md5c-test.c: New file: Test program for MD5 crypt function. * po/fr.po: Update. * time/strptime.c: Recognize %s, %u, %g, and %G format. * posix/getopt.c: Add some more casts and initializations to prevent warnings. Sat Oct 12 16:15:29 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/speed.c (speeds): Removed. We provide an extra function to provide this functionality. (cfgetospeed): Simply return masked value. (cfsetospeed): Don't use speeds array and so we can simply test the value of SPEED for illegal values. * termios/cfsetspeed.c: Rewrite. We convert here between the real values and the B* constants. Changes suggested by Uwe Ohse <uwe@tirka.gun.de>. Fri Oct 11 21:45:34 1996 Andreas Jaeger <aj@arthur.pfalz.de> * locale/programs/xstrdup.c: Define prototypes. * locale/programs/xmalloc.c: Likewise. * stdio-common/xbug.c (main): Change definition to avoid warning. Fri Oct 11 23:36:31 1996 Miles Bader <miles@gnu.ai.mit.edu> * db/hash/hash.c (__hash_open): Correctly test for a read-write db.
1996-10-14 05:35:39 +08:00
# The name under which the run-time dynamic linker is installed.
# We are currently going for the convention that `/lib/ld.so.1'
# names the SVR4/ELF ABI-compliant dynamic linker.
ifndef rtld-installed-name
ifdef ld.so-version
rtld-installed-name = $(ld.so-version)
else
rtld-installed-name = ld.so.1
endif
endif
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 13:26:05 +08:00
ifndef rtld-version-installed-name
rtld-version-installed-name = ld-$(version).so
endif
endif # build-shared
Update. 1997-12-03 23:50 Ulrich Drepper <drepper@cygnus.com> * Makeconfig: Add shared-thread-library variable. * math/Makfile (CPPFLAGS): Add -D__LIBC_INTERNAL_MATH_INLINES. * sysdeps/i386/Makefile: Don't define ___LIBC_INTERNAL_MATH_INLINES here. * sysdeps/m68k/fpu/e_acos.c: Likewise. * sysdeps/m68k/fpu/e_atan2.c: Likewise. * sysdeps/m68k/fpu/e_fmod.c: Likewise. * sysdeps/m68k/fpu/e_pow.c: Likewise. * sysdeps/m68k/fpu/e_scalb.c: Likewise. * sysdeps/m68k/fpu/k_cos.c: Likewise. * sysdeps/m68k/fpu/k_sin.c: Likewise. * sysdeps/m68k/fpu/k_tan.c: Likewise. * sysdeps/m68k/fpu/s_atan.c: Likewise. * sysdeps/m68k/fpu/s_ccos.c: Likewise. * sysdeps/m68k/fpu/s_ccosh.c: Likewise. * sysdeps/m68k/fpu/s_cexp.c: Likewise. * sysdeps/m68k/fpu/s_csin.c: Likewise. * sysdeps/m68k/fpu/s_csinh.c: Likewise. * sysdeps/m68k/fpu/s_frexp.c: Likewise. * sysdeps/m68k/fpu/s_ilogb.c: Likewise. * sysdeps/m68k/fpu/s_isinf.c: Likewise. * sysdeps/m68k/fpu/s_llrint.c: Likewise. * sysdeps/m68k/fpu/s_llrintf.c: Likewise. * sysdeps/m68k/fpu/s_llrintl.c: Likewise. * sysdeps/m68k/fpu/s_lrint.c: Likewise. * sysdeps/m68k/fpu/s_modf.c: Likewise. * sysdeps/m68k/fpu/s_remquo.c: Likewise. * sysdeps/m68k/fpu/s_scalbn.c: Likewise. * sysdeps/m68k/fpu/s_sincos.c: Likewise. * libc.map: Add __libc_current_sigrtmin, __libc_current_sigrtmax, __libc_allocate_rtsig, sigqueue, sigtimedwait, sigwaitinfo. * signal/Makefile (headers): Add bits/siginfo.h. (routines): Add allocrtsig, sigtimedwait, sigwaitinfo, sigqueue. (distribute): Add testrtsig.h. * signal/allocrtsig.c: New file. * signal/signal.h: Define `union sigval'. Include <bits/siginfo.h>. Declare sigwaitinfo, sigtimedwait, sigqueue, __libc_current_sigrtmin, __libc_current_sigrtmax. * sysdeps/generic/sigqueue.c: New file. * sysdeps/generic/sigtimedwait.c: New file. * sysdeps/generic/sigwaitinfo.c: New file. * sysdeps/generic/testrtsig.h: New file. * sysdeps/generic/bits/siginfo.h: New file. * sysdeps/unix/sysv/linux/bits/siginfo.h: New file. * sysdeps/unix/sysv/linux/kernel_sigaction.h: Define struct as old_kernel_sigaction and rename sa_handler member to k_sa_handler. * sysdeps/unix/sysv/linux/rt_sigaction.c: New file. * sysdeps/unix/sysv/linux/rt_sigprocmask.c: New file. * sysdeps/unix/sysv/linux/rt_sigqueueinfo.c: New file. * sysdeps/unix/sysv/linux/rt_sigreturn.c: New file. * sysdeps/unix/sysv/linux/rt_sigsuspend.c: New file. * sysdeps/unix/sysv/linux/rt_sigtimedwait.c: New file. * sysdeps/unix/sysv/linux/sigpending.c: New file. * sysdeps/unix/sysv/linux/sigprocmask.c: New file. * sysdeps/unix/sysv/linux/sigqueue.c: New file. * sysdeps/unix/sysv/linux/sigreturn.c: New file. * sysdeps/unix/sysv/linux/sigtimedwait.c: New file. * sysdeps/unix/sysv/linux/sigwaitinfo.c: New file. * sysdeps/unix/sysv/linux/testrtsig.h: New file. * sysdeps/unix/sysv/linux/sigsuspend.c: Update for AIO. * sysdeps/unix/sysv/linux/syscalls.list: Update for AIO. * sysdeps/unix/sysv/linux/sigaction.c: Update for AIO. * sysdeps/unix/sysv/linux/bits/local_lim.h: Define AIO_PRIO_DELTA_MAX. * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define _XOPEN_REALTIME and _POSIX_REALTIME_SIGNALS. * sysdeps/unix/sysv/linux/bits/sigaction.h: Update for AIO. * sysdeps/unix/sysv/linux/bits/signum.h: Define SIGRTMIN/MAX and update _NSIG. * sysdeps/unix/sysv/linux/i386/sigaction.c: Update for AIO. * sysdeps/unix/sysv/linux/i386/sys/ucontext.h: Linux/i386 specific definitions. * Makefile (subdirs): Add rt. * shlib-versions: Add entry for librt. * rt/Makefile: New file. * rt/aio.h: New file. * rt/aio_cancel.c: New file. * rt/aio_error.c: New file. * rt/aio_fsync.c: New file. * rt/aio_misc.c: New file. * rt/aio_misc.h: New file. * rt/aio_read.c: New file. * rt/aio_read64.c: New file. * rt/aio_return.c: New file. * rt/aio_suspend.c: New file. * rt/aio_write.c: New file. * rt/aio_write64.c: New file. * rt/lio_listio.c: New file. * rt/lio_listio64.c: New file. * sysdeps/generic/aio_sigqueue.c: New file. * sysdeps/unix/sysv/linux/aio_sigqueue.c: New file. * sysdeps/unix/sysv/linux/Dist: Add new files * sysdeps/unix/sysv/linux/Makefile [$(subdir)=signal] (sysdep_routines): Add rt_sigsuspend, rt_sigprocmask, rt_sigtimedwait, rt_sigqueueinfo, rt_sigaction. * posix/Makefile (headers): Add bits/environments.h. * posix/confstr.c: Correctly handle _CS_XBS5_ILP32_OFFBIG_CFLAGS and _CS_LFS_CFLAGS on 64bit platforms. * posix/unistd.h: Define _XOPEN_LEGACY. Explain _XOPEN_REALTIME and _XOPEN_REALTIME_THREADS. Include bits/environments.h. * sysdeps/generic/bits/confname.h: Define _SC_* constants for compilation modules. * sysdeps/wordsize-32/bits/environments.h: New file. * sysdeps/wordsize-64/bits/environments.h: New file. * posix/getopt.c: Remove declaration of getpid and __libc_pid. * posix/getopt_init.c: Test for value 0xf00baa of uninitialized __libc_pid. * sysdeps/unix/sysv/linux/init-first.c: Initialize __libc_pid to 0xf00baa. * string/string.h: Add declaration of __strverscmp. * string/strverscmp.c: Rename function ot __strverscmp and make old name weak alias. * sysdeps/generic/dl-sysdep.c: Declare and define __libc_uid. * sysdeps/generic/enbl-secure.c: Likewise. * sysdeps/mach/hurd/dl-sysdep.c: Likewise. * sysdeps/unix/sysv/linux/bits/sigset.h: Pretty print. * sysdeps/unix/sysv/linux/sys/pci.h: New file. 1997-12-03 Ulrich Drepper <drepper@cygnus.com> * posix/sys/wait.h: Use __transparent_union__ instead of transparent_union. Reported by Roland McGrath. 1997-12-03 Andreas Jaeger <aj@arthur.rhein-neckar.de> * resolv/inet_neta.c (inet_neta): Change type of first parameter to u_int32_t. Suggested by John Lavagnino <John_Lavagnino@Brown.edu> [PR libc/366]. * resolv/inet_addr.c (inet_addr): Change return type to u_int32_t. * inet/arpa/inet.h: Change types of inet_neta and inet_addr. 1997-12-03 20:40 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * grp/initgroups.c: Increase buffer if it is too small. 1997-12-03 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/netinet/ip.h: Don't use u_int8_t for bit fields, this is no ISO C. Reported by Andreas Jaeger. 1997-12-03 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/i386/sys/ucontext.h (enum): Add missing commata. 1997-12-03 08:58 Philip Blundell <pb@nexus.co.uk> * sysdeps/generic/bits/utsname.h: <sys/utsname.h> defines _SYS_UTSNAME_H not _UTSNAME_H. 1997-11-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/dl-profile.c (_dl_start_profile): Avoid overflow when computing s_scale. 1997-11-29 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/libm-ieee754/s_csqrt.c: Use different formula for now. * sysdeps/libm-ieee754/s_csqrtf.c: Likewise. * sysdeps/libm-ieee754/s_csqrtl.c: Likewise. * math/libm-test.c (csqrt_test): Add testcase. 1997-12-03 15:44 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/sys/ultrasound.h: New file. * sysdeps/unix/sysv/linux/sys/Dist: Add it. * sysdeps/unix/sysv/linux/sys/Makefile [$(subdir)=misc]: Likewise. 1997-11-30 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/sys/timex.h: Fix declaration. 1997-12-01 Andreas Jaeger <aj@arthur.rhein-neckar.de> * math/libm-test.c (acos_test): Add more tests. (asin_test): Likewise. (atan_test): Likewise. (exp_test): Likewise. (sin_test): Likewise. (sqrt_test): Likewise. (cpow_test): Likewise. (csqrt_test): Likewise. (cexp_test): Correct typo in gcc version test. 1997-12-02 17:14 Philip Blundell <pb@nexus.co.uk> * sysdeps/arm/__longjmp.S: Define _SETJMP_H before including <bits/setjmp.h>. * sysdeps/arm/setjmp.S: Likewise. * sysdeps/unix/sysv/linux/arm/bits/mman.h: New file. 1997-12-02 18:07 Philip Blundell <pb@nexus.co.uk> * stdio/stdio.h: Add prototype for tmpfile64(). 1997-12-02 17:47 Philip Blundell <pb@nexus.co.uk> * stdio/stdio.h (__stdio_gen_tempname): Add extra argument to prototype to keep in step with libio version. * stdio-common/tmpfile64.c: Include <errno.h> for ENOSYS. 1997-12-02 17:41 Philip Blundell <pb@nexus.co.uk> * sysdeps/generic/Makefile: Don't try to use make_siglist if cross-compiling. 1997-12-02 01:18 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/clone.S: When cloned process returns load GOT ptr before jumping to _exit. Reported by Xavier Leroy.
1997-12-04 08:12:34 +08:00
2012-01-28 04:05:19 +08:00
ifeq ($(build-shared),yes)
libm = $(common-objpfx)math/libm.so$(libm.so-version)
libmvec = $(common-objpfx)mathvec/libmvec.so$(libmvec.so-version)
2012-01-28 04:05:19 +08:00
else
libm = $(common-objpfx)math/libm.a
libmvec = $(common-objpfx)mathvec/libmvec.a
2012-01-28 04:05:19 +08:00
endif
ifeq ($(build-shared),yes)
libsupport = $(common-objpfx)support/libsupport_nonshared.a
else
libsupport = $(common-objpfx)support/libsupport.a
endif
# This is a partial list of subdirectories containing the library source.
# The order is more or less arbitrary. The sorting step will take care of the
# dependencies and generate sorted-subdirs dynamically.
all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
* Makefile (subdir-target-args): New variable. ($(all-subdirs-targets)): Use it in place of -C option. * Rules: Use $(..) instead of ../ if it's already defined. * Makeconfig (subdir-srcdirs): New variable. * csu/Makefile (all-Banner-files): Use it. * configure.in (--enable-add-ons): Set to "yes" by default. Handle absolute add-on directory names when looking for configure fragments. Also look for sysdeps/*/preconfigure fragments in add-ons. Require add-on configure to set $libc_add_on_canonical, use that in $add_ons_sfx. Substitute add_on_subdirs with computed list of subdir names each add-on configure set in libc_add_on_subdirs. * configure: Regenerated. * Makefile (%/preconfigure: %/preconfigure.in): New pattern rule. * config.make.in (add-on-subdirs): New substituted variable. * Makeconfig (all-subdirs): Include $(add-on-subdirs). Remove $(add-ons), $(sysdep-subdirs). Don't filter out $(sysdep-inhibit-subdirs). ($(common-objpfx)sysd-dirs): Target removed. Don't include it. ($(common-objpfx)sysd-sorted): Rewritten to feed Depend and Subdirs files together to gen-sorted.awk, and $(subdirs) via -v. (subdirs): Remove magic reordering for mach and hurd. * scripts/gen-sorted.awk: Use subdirs from command line. Process Subdirs and Depend files directly. Let Subdirs files use "first dir" and "inhibit dir". Always move elf to the end of the list. * hurd/Depend: New file. * sysdeps/mach/Subdirs: Use "first mach". * Makefile (dist-separate): Remove linuxthreads. (dist-separate-linuxthreads): Variable removed. (glibc-%.tar rule): Use $(sysdeps-add-ons). * Makerules ($(common-objpfx)Versions.v.i): Use $(subdirs), not $(all-subdirs). (sysdep-makefiles): Use $(sysdirs). (sysdirs): Remove export. ($(+sysdir_pfx)sysd-rules): Handle absolute directory names in $(config-sysdirs). (+sysdir_pfx): Variable removed. (sysd-rules): Use $(common-objpfx) in place of it. (sysdirs): Variable moved to ... * Makeconfig (sysdirs): ... here. Handle absolute directory names in $(config-sysdirs). (full_config_sysdirs): Variable removed. * csu/Makefile: Use $(sysdirs) in vpath directive. * math/Makefile (ulps-file): Use $(sysdirs). * sysdeps/gnu/Makefile (errlist-c): Likewise. ($(objpfx)errlist-compat.c): Likewise. * Makeconfig (all-Subdirs-files): Likewise. ($(common-objpfx)config.status): Likewise. * configure.in (sysnames): Handle absolute add-on directory names. (sysdeps_add_ons): New variable, AC_SUBST it. Compute which add-ons contributed sysdeps directories. * configure: Regenerated. * config.make.in (sysdeps-add-ons): New substituted variable. * Makerules (+sysdep_dirs, +sysdep-includes): Variables moved ... * Makeconfig: ... to here. (+sysdep_dirs): Append $(sysdeps-add-ons) here. (+includes): Remove $(objpfx) include, already in $(+sysdep_dirs). Remove $(includes). (sysdep-makeconfigs): Use $(+sysdep_dirs). ($(common-objpfx)shlib-versions.v.i): Likewise. * Makeconfig: Remove hair to set Makeconfig-add-on. * sysdeps/unix/Makefile (sysdirs): Remove export. (asm_CPP): Variable removed. ($(common-objpfx)sysd-syscalls): Pass them directly for the script. * sysdeps/posix/Makefile: New file. * Makerules (L_tmpnam, TMP_MAX, L_ctermid, L_cuserid): Set non-posix values here with ?=. * stdlib/gen-mpn-copy: File removed. * stdlib/Makefile (distribute): Remove it. * configure.in: Don't grok --with-gmp. * configure: Regenerated. * configure.in (libc_cv_idn): Don't check it; libidn/configure does it. * configure: Regenerated. * bare: Directory removed, saved in ports repository.
2006-02-28 15:11:04 +08:00
stdlib stdio-common libio malloc string wcsmbs time dirent \
posix io termios resource misc socket sysvipc gmon \
gnulib iconv iconvdata wctype manual po argp \
localedata timezone rt conform debug mathvec support \
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 23:58:13 +08:00
dlfcn elf
ifndef avoid-generated
# sysd-sorted itself will contain rules making the sysd-sorted target
# depend on Depend files. But if you just added a Depend file to an
# existing directory not in all-subdirs, then sysd-sorted needs to
# be regenerated, so it depends on existing $(sorted-subdirs:=/Depend) files.
all-Depend-files := $(wildcard $(sort \
2014-05-09 02:27:14 +08:00
$(foreach dir,$(all-subdirs),\
$(firstword $($(dir)-srcdir) \
$(..)$(dir))/Depend) \
$(sorted-subdirs:=/Depend)))
* Makefile (subdir-target-args): New variable. ($(all-subdirs-targets)): Use it in place of -C option. * Rules: Use $(..) instead of ../ if it's already defined. * Makeconfig (subdir-srcdirs): New variable. * csu/Makefile (all-Banner-files): Use it. * configure.in (--enable-add-ons): Set to "yes" by default. Handle absolute add-on directory names when looking for configure fragments. Also look for sysdeps/*/preconfigure fragments in add-ons. Require add-on configure to set $libc_add_on_canonical, use that in $add_ons_sfx. Substitute add_on_subdirs with computed list of subdir names each add-on configure set in libc_add_on_subdirs. * configure: Regenerated. * Makefile (%/preconfigure: %/preconfigure.in): New pattern rule. * config.make.in (add-on-subdirs): New substituted variable. * Makeconfig (all-subdirs): Include $(add-on-subdirs). Remove $(add-ons), $(sysdep-subdirs). Don't filter out $(sysdep-inhibit-subdirs). ($(common-objpfx)sysd-dirs): Target removed. Don't include it. ($(common-objpfx)sysd-sorted): Rewritten to feed Depend and Subdirs files together to gen-sorted.awk, and $(subdirs) via -v. (subdirs): Remove magic reordering for mach and hurd. * scripts/gen-sorted.awk: Use subdirs from command line. Process Subdirs and Depend files directly. Let Subdirs files use "first dir" and "inhibit dir". Always move elf to the end of the list. * hurd/Depend: New file. * sysdeps/mach/Subdirs: Use "first mach". * Makefile (dist-separate): Remove linuxthreads. (dist-separate-linuxthreads): Variable removed. (glibc-%.tar rule): Use $(sysdeps-add-ons). * Makerules ($(common-objpfx)Versions.v.i): Use $(subdirs), not $(all-subdirs). (sysdep-makefiles): Use $(sysdirs). (sysdirs): Remove export. ($(+sysdir_pfx)sysd-rules): Handle absolute directory names in $(config-sysdirs). (+sysdir_pfx): Variable removed. (sysd-rules): Use $(common-objpfx) in place of it. (sysdirs): Variable moved to ... * Makeconfig (sysdirs): ... here. Handle absolute directory names in $(config-sysdirs). (full_config_sysdirs): Variable removed. * csu/Makefile: Use $(sysdirs) in vpath directive. * math/Makefile (ulps-file): Use $(sysdirs). * sysdeps/gnu/Makefile (errlist-c): Likewise. ($(objpfx)errlist-compat.c): Likewise. * Makeconfig (all-Subdirs-files): Likewise. ($(common-objpfx)config.status): Likewise. * configure.in (sysnames): Handle absolute add-on directory names. (sysdeps_add_ons): New variable, AC_SUBST it. Compute which add-ons contributed sysdeps directories. * configure: Regenerated. * config.make.in (sysdeps-add-ons): New substituted variable. * Makerules (+sysdep_dirs, +sysdep-includes): Variables moved ... * Makeconfig: ... to here. (+sysdep_dirs): Append $(sysdeps-add-ons) here. (+includes): Remove $(objpfx) include, already in $(+sysdep_dirs). Remove $(includes). (sysdep-makeconfigs): Use $(+sysdep_dirs). ($(common-objpfx)shlib-versions.v.i): Likewise. * Makeconfig: Remove hair to set Makeconfig-add-on. * sysdeps/unix/Makefile (sysdirs): Remove export. (asm_CPP): Variable removed. ($(common-objpfx)sysd-syscalls): Pass them directly for the script. * sysdeps/posix/Makefile: New file. * Makerules (L_tmpnam, TMP_MAX, L_ctermid, L_cuserid): Set non-posix values here with ?=. * stdlib/gen-mpn-copy: File removed. * stdlib/Makefile (distribute): Remove it. * configure.in: Don't grok --with-gmp. * configure: Regenerated. * configure.in (libc_cv_idn): Don't check it; libidn/configure does it. * configure: Regenerated. * bare: Directory removed, saved in ports repository.
2006-02-28 15:11:04 +08:00
$(common-objpfx)sysd-sorted: $(..)scripts/gen-sorted.awk \
$(common-objpfx)config.make $(..)Makeconfig \
$(wildcard $(sysdirs:=/Subdirs)) \
$(all-Depend-files)
$(AWK) -f $< \
-v subdirs='$(all-subdirs)' \
-v srcpfx='$(..)' \
$(filter %/Subdirs %/Depend,$^) > $@-tmp
mv -f $@-tmp $@
* po/.cvsignore: List libc.pot.files, and not any .pot names. * manual/maint.texi (Porting): Don't mention Dist files. * sysdeps/alpha/soft-fp/Dist: File removed. * sysdeps/alpha/Dist: File removed. * sysdeps/i386/i686/Dist: File removed. * sysdeps/i386/soft-fp/Dist: File removed. * sysdeps/i386/Dist: File removed. * sysdeps/mips/soft-fp/Dist: File removed. * sysdeps/mips/mips64/soft-fp/Dist: File removed. * sysdeps/mips/mips64/Dist: File removed. * sysdeps/mips/Dist: File removed. * sysdeps/wordsize-32/Dist: File removed. * sysdeps/m68k/fpu/switch/Dist: File removed. * sysdeps/m68k/fpu/Dist: File removed. * sysdeps/powerpc/powerpc64/Dist: File removed. * sysdeps/powerpc/soft-fp/Dist: File removed. * sysdeps/powerpc/powerpc32/fpu/Dist: File removed. * sysdeps/powerpc/powerpc32/Dist: File removed. * sysdeps/powerpc/fpu/Dist: File removed. * sysdeps/powerpc/Dist: File removed. * sysdeps/unix/common/Dist: File removed. * sysdeps/unix/bsd/bsd4.4/Dist: File removed. * sysdeps/unix/bsd/Dist: File removed. * sysdeps/unix/sysv/linux/alpha/Dist: File removed. * sysdeps/unix/sysv/linux/i386/Dist: File removed. * sysdeps/unix/sysv/linux/mips/mips64/Dist: File removed. * sysdeps/unix/sysv/linux/mips/Dist: File removed. * sysdeps/unix/sysv/linux/m68k/Dist: File removed. * sysdeps/unix/sysv/linux/powerpc/powerpc64/Dist: File removed. * sysdeps/unix/sysv/linux/powerpc/powerpc32/Dist: File removed. * sysdeps/unix/sysv/linux/powerpc/aix/Dist: File removed. * sysdeps/unix/sysv/linux/powerpc/Dist: File removed. * sysdeps/unix/sysv/linux/sparc/sparc32/Dist: File removed. * sysdeps/unix/sysv/linux/sparc/sparc64/Dist: File removed. * sysdeps/unix/sysv/linux/sparc/Dist: File removed. * sysdeps/unix/sysv/linux/ia64/Dist: File removed. * sysdeps/unix/sysv/linux/s390/s390-64/Dist: File removed. * sysdeps/unix/sysv/linux/s390/Dist: File removed. * sysdeps/unix/sysv/linux/s390/s390-32/Dist: File removed. * sysdeps/unix/sysv/linux/sh/Dist: File removed. * sysdeps/unix/sysv/linux/x86_64/Dist: File removed. * sysdeps/unix/sysv/linux/hppa/Dist: File removed. * sysdeps/unix/sysv/linux/Dist: File removed. * sysdeps/unix/sysv/Dist: File removed. * sysdeps/unix/Dist: File removed. * sysdeps/generic/Dist: File removed. * sysdeps/sparc/sparc32/soft-fp/Dist: File removed. * sysdeps/sparc/sparc32/sparcv9/Dist: File removed. * sysdeps/sparc/sparc32/sparcv8/Dist: File removed. * sysdeps/sparc/sparc32/Dist: File removed. * sysdeps/sparc/sparc64/soft-fp/Dist: File removed. * sysdeps/sparc/sparc64/Dist: File removed. * sysdeps/sparc/Dist: File removed. * sysdeps/gnu/Dist: File removed. * sysdeps/ia64/fpu/Dist: File removed. * sysdeps/ia64/Dist: File removed. * sysdeps/mach/mips/Dist: File removed. * sysdeps/mach/hurd/alpha/Dist: File removed. * sysdeps/mach/hurd/i386/Dist: File removed. * sysdeps/mach/hurd/mips/Dist: File removed. * sysdeps/mach/hurd/powerpc/Dist: File removed. * sysdeps/mach/hurd/Dist: File removed. * sysdeps/s390/s390-64/Dist: File removed. * sysdeps/s390/Dist: File removed. * sysdeps/s390/s390-32/Dist: File removed. * sysdeps/sh/Dist: File removed. * sysdeps/posix/Dist: File removed. * sysdeps/ieee754/dbl-64/Dist: File removed. * sysdeps/ieee754/ldbl-128/Dist: File removed. * sysdeps/ieee754/flt-32/Dist: File removed. * sysdeps/ieee754/Dist: File removed. * sysdeps/x86_64/soft-fp/Dist: File removed. * sysdeps/x86_64/Dist: File removed. * sysdeps/hppa/Dist: File removed. * Makerules (common-clean): Don't remove distinfo file. ($(objpfx)distinfo): Target removed. * manual/Makefile (mostlyclean): Don't remove distinfo file. (glibc-targets): Remove echo-distinfo. * scripts/list-sources.sh: New file. * Makefile (TAGS): New target. * po/Makefile (libc.pot, libc.pot.files): New targets. * Makeconfig (XGETTEXT): New variable. * Makerules ($(..)po/%.pot): Rule removed. (TAGS): Target removed. * Rules (subdir_TAGS): Target removed. * MakeTAGS: File removed. * Makefile (iconvdata/% localedata/% po/% manual/%): Depend on FORCE. * Makeconfig ($(all-Depend-files)): New targets with no-op commands.
2006-01-08 14:46:10 +08:00
$(all-Depend-files): ;
endif
# This gives partial TARGET:SOURCE pattern pairs to have rules
# emitted into sysd-rules. A sysdeps Makeconfig fragment can
# add its own special object file prefix to this list with e.g. foo-%:%
# to have foo-*.? compiled from *.? using $(foo-CPPFLAGS).
sysd-rules-patterns := %:% rtld-%:rtld-% rtld-%:% m_%:s_%
# Let sysdeps/ subdirs contain a Makeconfig fragment for us to include here.
* Makefile (subdir-target-args): New variable. ($(all-subdirs-targets)): Use it in place of -C option. * Rules: Use $(..) instead of ../ if it's already defined. * Makeconfig (subdir-srcdirs): New variable. * csu/Makefile (all-Banner-files): Use it. * configure.in (--enable-add-ons): Set to "yes" by default. Handle absolute add-on directory names when looking for configure fragments. Also look for sysdeps/*/preconfigure fragments in add-ons. Require add-on configure to set $libc_add_on_canonical, use that in $add_ons_sfx. Substitute add_on_subdirs with computed list of subdir names each add-on configure set in libc_add_on_subdirs. * configure: Regenerated. * Makefile (%/preconfigure: %/preconfigure.in): New pattern rule. * config.make.in (add-on-subdirs): New substituted variable. * Makeconfig (all-subdirs): Include $(add-on-subdirs). Remove $(add-ons), $(sysdep-subdirs). Don't filter out $(sysdep-inhibit-subdirs). ($(common-objpfx)sysd-dirs): Target removed. Don't include it. ($(common-objpfx)sysd-sorted): Rewritten to feed Depend and Subdirs files together to gen-sorted.awk, and $(subdirs) via -v. (subdirs): Remove magic reordering for mach and hurd. * scripts/gen-sorted.awk: Use subdirs from command line. Process Subdirs and Depend files directly. Let Subdirs files use "first dir" and "inhibit dir". Always move elf to the end of the list. * hurd/Depend: New file. * sysdeps/mach/Subdirs: Use "first mach". * Makefile (dist-separate): Remove linuxthreads. (dist-separate-linuxthreads): Variable removed. (glibc-%.tar rule): Use $(sysdeps-add-ons). * Makerules ($(common-objpfx)Versions.v.i): Use $(subdirs), not $(all-subdirs). (sysdep-makefiles): Use $(sysdirs). (sysdirs): Remove export. ($(+sysdir_pfx)sysd-rules): Handle absolute directory names in $(config-sysdirs). (+sysdir_pfx): Variable removed. (sysd-rules): Use $(common-objpfx) in place of it. (sysdirs): Variable moved to ... * Makeconfig (sysdirs): ... here. Handle absolute directory names in $(config-sysdirs). (full_config_sysdirs): Variable removed. * csu/Makefile: Use $(sysdirs) in vpath directive. * math/Makefile (ulps-file): Use $(sysdirs). * sysdeps/gnu/Makefile (errlist-c): Likewise. ($(objpfx)errlist-compat.c): Likewise. * Makeconfig (all-Subdirs-files): Likewise. ($(common-objpfx)config.status): Likewise. * configure.in (sysnames): Handle absolute add-on directory names. (sysdeps_add_ons): New variable, AC_SUBST it. Compute which add-ons contributed sysdeps directories. * configure: Regenerated. * config.make.in (sysdeps-add-ons): New substituted variable. * Makerules (+sysdep_dirs, +sysdep-includes): Variables moved ... * Makeconfig: ... to here. (+sysdep_dirs): Append $(sysdeps-add-ons) here. (+includes): Remove $(objpfx) include, already in $(+sysdep_dirs). Remove $(includes). (sysdep-makeconfigs): Use $(+sysdep_dirs). ($(common-objpfx)shlib-versions.v.i): Likewise. * Makeconfig: Remove hair to set Makeconfig-add-on. * sysdeps/unix/Makefile (sysdirs): Remove export. (asm_CPP): Variable removed. ($(common-objpfx)sysd-syscalls): Pass them directly for the script. * sysdeps/posix/Makefile: New file. * Makerules (L_tmpnam, TMP_MAX, L_ctermid, L_cuserid): Set non-posix values here with ?=. * stdlib/gen-mpn-copy: File removed. * stdlib/Makefile (distribute): Remove it. * configure.in: Don't grok --with-gmp. * configure: Regenerated. * configure.in (libc_cv_idn): Don't check it; libidn/configure does it. * configure: Regenerated. * bare: Directory removed, saved in ports repository.
2006-02-28 15:11:04 +08:00
sysdep-makeconfigs := $(wildcard $(+sysdep_dirs:=/Makeconfig))
ifneq (,$(sysdep-makeconfigs))
* Makefile (subdir-target-args): New variable. ($(all-subdirs-targets)): Use it in place of -C option. * Rules: Use $(..) instead of ../ if it's already defined. * Makeconfig (subdir-srcdirs): New variable. * csu/Makefile (all-Banner-files): Use it. * configure.in (--enable-add-ons): Set to "yes" by default. Handle absolute add-on directory names when looking for configure fragments. Also look for sysdeps/*/preconfigure fragments in add-ons. Require add-on configure to set $libc_add_on_canonical, use that in $add_ons_sfx. Substitute add_on_subdirs with computed list of subdir names each add-on configure set in libc_add_on_subdirs. * configure: Regenerated. * Makefile (%/preconfigure: %/preconfigure.in): New pattern rule. * config.make.in (add-on-subdirs): New substituted variable. * Makeconfig (all-subdirs): Include $(add-on-subdirs). Remove $(add-ons), $(sysdep-subdirs). Don't filter out $(sysdep-inhibit-subdirs). ($(common-objpfx)sysd-dirs): Target removed. Don't include it. ($(common-objpfx)sysd-sorted): Rewritten to feed Depend and Subdirs files together to gen-sorted.awk, and $(subdirs) via -v. (subdirs): Remove magic reordering for mach and hurd. * scripts/gen-sorted.awk: Use subdirs from command line. Process Subdirs and Depend files directly. Let Subdirs files use "first dir" and "inhibit dir". Always move elf to the end of the list. * hurd/Depend: New file. * sysdeps/mach/Subdirs: Use "first mach". * Makefile (dist-separate): Remove linuxthreads. (dist-separate-linuxthreads): Variable removed. (glibc-%.tar rule): Use $(sysdeps-add-ons). * Makerules ($(common-objpfx)Versions.v.i): Use $(subdirs), not $(all-subdirs). (sysdep-makefiles): Use $(sysdirs). (sysdirs): Remove export. ($(+sysdir_pfx)sysd-rules): Handle absolute directory names in $(config-sysdirs). (+sysdir_pfx): Variable removed. (sysd-rules): Use $(common-objpfx) in place of it. (sysdirs): Variable moved to ... * Makeconfig (sysdirs): ... here. Handle absolute directory names in $(config-sysdirs). (full_config_sysdirs): Variable removed. * csu/Makefile: Use $(sysdirs) in vpath directive. * math/Makefile (ulps-file): Use $(sysdirs). * sysdeps/gnu/Makefile (errlist-c): Likewise. ($(objpfx)errlist-compat.c): Likewise. * Makeconfig (all-Subdirs-files): Likewise. ($(common-objpfx)config.status): Likewise. * configure.in (sysnames): Handle absolute add-on directory names. (sysdeps_add_ons): New variable, AC_SUBST it. Compute which add-ons contributed sysdeps directories. * configure: Regenerated. * config.make.in (sysdeps-add-ons): New substituted variable. * Makerules (+sysdep_dirs, +sysdep-includes): Variables moved ... * Makeconfig: ... to here. (+sysdep_dirs): Append $(sysdeps-add-ons) here. (+includes): Remove $(objpfx) include, already in $(+sysdep_dirs). Remove $(includes). (sysdep-makeconfigs): Use $(+sysdep_dirs). ($(common-objpfx)shlib-versions.v.i): Likewise. * Makeconfig: Remove hair to set Makeconfig-add-on. * sysdeps/unix/Makefile (sysdirs): Remove export. (asm_CPP): Variable removed. ($(common-objpfx)sysd-syscalls): Pass them directly for the script. * sysdeps/posix/Makefile: New file. * Makerules (L_tmpnam, TMP_MAX, L_ctermid, L_cuserid): Set non-posix values here with ?=. * stdlib/gen-mpn-copy: File removed. * stdlib/Makefile (distribute): Remove it. * configure.in: Don't grok --with-gmp. * configure: Regenerated. * configure.in (libc_cv_idn): Don't check it; libidn/configure does it. * configure: Regenerated. * bare: Directory removed, saved in ports repository.
2006-02-28 15:11:04 +08:00
include $(sysdep-makeconfigs)
endif
# Compute just the target patterns. Makeconfig has set sysd-rules-patterns.
sysd-rules-targets := $(sort $(foreach p,$(sysd-rules-patterns),\
$(firstword $(subst :, ,$p))))
# $(libpthread-routines-var) and $(librt-routines-var) are the make
# variable to which pthread routines need to be added to land in the
# right library.
ifeq ($(pthread-in-libc),yes)
libpthread-routines-var = routines
librt-routines-var = routines
libanl-routines-var = routines
else
libpthread-routines-var = libpthread-routines
librt-routines-var = librt-routines
libanl-routines-var = libanl-routines
endif
# A sysdeps Makeconfig fragment may set libc-reentrant to yes.
ifeq (yes,$(libc-reentrant))
defines += -D_LIBC_REENTRANT
libio-mtsafe = -D_IO_MTSAFE_IO
endif
Generate .test-result files for ordinary tests. This patch, an updated version of <https://sourceware.org/ml/libc-alpha/2014-01/msg00193.html>, starts the process of generating explicit PASS or FAIL status for individual glibc tests. It's based on Tomas Dohnalek's patch <https://sourceware.org/ml/libc-alpha/2012-10/msg00278.html>, but is deliberately more minimal: it doesn't try to cover any tests outside of $(tests) / $(xtests) (that's for a later patch), nor does it put the result together in an overall summary file (again, a later patch): it just generates the .test-result files. Thus, this patch keeps the overall logic for when a testsuite run finishes completely unchanged: a test failing will terminate the run. I think we *should* move to a more conventional approach where plain "make check" does not terminate for an individual test failure, unless e.g. you say "make stop-on-test-failure=y check", but that sort of policy change is best done as a separate patch once the infrastructure is in place to generate summary files for completed test runs (which will entirely consist of PASS and XFAIL lines if the testsuite run reaches the point of generating them, until such a policy change is made). Tested x86_64. 2014-02-14 Tomas Dohnalek <tdohnale@redhat.com> Joseph Myers <joseph@codesourcery.com> * Makeconfig (test-name): New variable. (evaluate-test): Likewise. * Makerules (do-test-clean): Remove .test-result files. (common-mostlyclean): Likewise. * Rules ($(objpfx)%.out): Use $(evaluate-test) in both rules. * scripts/evaluate-test.sh: New file.
2014-02-15 09:04:57 +08:00
# The name to give to a test in test results summaries.
test-name = $(strip $(patsubst %.out, %, $(patsubst $(common-objpfx)%, %, $@)))
conformtest: split up running of tests from makefile. This patch changes the logic by which header conformance tests are run so that the makefiles run the tests for each (standard, header) pair separately rather than as a single test (there are 518 such pairs being tested at present). Since these tests are slow and previously couldn't be run in parallel, this obviously speeds up the whole test run significantly when using parallel testing. There are other benefits. These tests can now be marked as expected to fail at the level of (standard, header) pairs, meaning that regressions introduced by a header change are much more likely to be spotted (of course, such a regression could be a bug in the header or in the expectations, most of which have not been properly checked against the relevant standards). The patch introduces lists in conform/Makefile of the headers to test for each standard, with a new (quick) test for each standard that the list agrees with the set of headers for which there are in fact nonempty expectations for that standard. This means that each of the 518 pairs being tested is actually something meaningful to test rather than a null test. I also hope to use these lists of headers in various standards in future tests for namespace violations where a function in a standard is implemented to call a non-reserved name for a function outside that standard. Although there are a lot of tests now marked as expected to fail, I expect most of those to be easy to fix (whether with fixes to the expectations, the headers or both - if fixing a header bug, of course file it in Bugzilla first); only a limited number are likely to reflect actual missing features in glibc. Tested x86_64 (GCC 4.7 branch). It's quite possible some failures vary from platform to platform, in which case either additional XFAILs can be added here, or platform-specific header bugs (if applicable) the failures show up can be fixed. I made XFAILs unconditional for tests that should only fail for GCC 4.6 and earlier; we could make the GCC version available in the makefiles and condition these, but simply moving the XFAILing to a finer granularity seems a clear improvement on the previous state of the whole of conformtest being XFAILed. * Makeconfig (test-xfail-name): New variable. (evaluate-test): Use $(test-xfail-name) instead of $(@F:.out=) to compute variable name for expected failures. * conform/Makefile (conformtest-headers-data): New variable. (conformtest-standards): Likewise. (conformtest-headers-ISO): Likewise. (conformtest-headers-ISO99): Likewise. (conformtest-headers-ISO11): Likewise. (conformtest-headers-POSIX): Likewise. (conformtest-headers-XPG3): Likewise. (conformtest-headers-XPG4): Likewise. (conformtest-headers-UNIX98): Likewise. (conformtest-headers-XOPEN2K): Likewise. (conformtest-headers-POSIX2008): Likewise. (conformtest-headers-XOPEN2K8): Likewise. (conformtest-header-list-base): Likewise. (conformtest-header-list-tests): Likewise. (conformtest-header-base): Likewise. (conformtest-header-tests): Likewise. (tests-special): Add $(conformtest-header-list-tests). If [$(fast-check) && !$(cross-compiling)], add $(conformtest-header-tests) instead of $(objpfx)run-conformtest.out. (generated): Add $(conformtest-header-list-base). If [$(fast-check) && !$(cross-compiling)], add $(conformtest-header-base). Remove previous setting. ($(conformtest-header-list-tests)): New target. (test-xfail-run-conformtest): Remove variable. ($(objpfx)run-conformtest.out): Remove target. (test-xfail-ISO11/complex.h/conform): New variable. (test-xfail-ISO11/stdalign.h/conform): Likewise. (test-xfail-ISO11/stdnoreturn.h/conform): Likewise. (test-xfail-XPG3/varargs.h/conform): Likewise. (test-xfail-XPG4/varargs.h/conform): Likewise. (test-xfail-UNIX98/varargs.h/conform): Likewise. (test-xfail-XPG4/ndbm.h/conform): Likewise. (test-xfail-UNIX98/ndbm.h/conform): Likewise. (test-xfail-XOPEN2K/ndbm.h/conform): Likewise. (test-xfail-XOPEN2K8/ndbm.h/conform): Likewise. (test-xfail-XPG3/fcntl.h/conform): Likewise. (test-xfail-XPG3/ftw.h/conform): Likewise. (test-xfail-XPG3/grp.h/conform): Likewise. (test-xfail-XPG3/langinfo.h/conform): Likewise. (test-xfail-XPG3/limits.h/conform): Likewise. (test-xfail-XPG3/pwd.h/conform): Likewise. (test-xfail-XPG3/search.h/conform): Likewise. (test-xfail-XPG3/signal.h/conform): Likewise. (test-xfail-XPG3/stdio.h/conform): Likewise. (test-xfail-XPG3/stdlib.h/conform): Likewise. (test-xfail-XPG3/string.h/conform): Likewise. (test-xfail-XPG3/sys/ipc.h/conform): Likewise. (test-xfail-XPG3/sys/msg.h/conform): Likewise. (test-xfail-XPG3/sys/sem.h/conform): Likewise. (test-xfail-XPG3/sys/shm.h/conform): Likewise. (test-xfail-XPG3/sys/stat.h/conform): Likewise. (test-xfail-XPG3/sys/types.h/conform): Likewise. (test-xfail-XPG3/sys/wait.h/conform): Likewise. (test-xfail-XPG3/termios.h/conform): Likewise. (test-xfail-XPG3/time.h/conform): Likewise. (test-xfail-XPG3/unistd.h/conform): Likewise. (test-xfail-XPG4/arpa/inet.h/conform): Likewise. (test-xfail-XPG4/fcntl.h/conform): Likewise. (test-xfail-XPG4/langinfo.h/conform): Likewise. (test-xfail-XPG4/netdb.h/conform): Likewise. (test-xfail-XPG4/netinet/in.h/conform): Likewise. (test-xfail-XPG4/signal.h/conform): Likewise. (test-xfail-XPG4/stdio.h/conform): Likewise. (test-xfail-XPG4/stdlib.h/conform): Likewise. (test-xfail-XPG4/stropts.h/conform): Likewise. (test-xfail-XPG4/sys/ipc.h/conform): Likewise. (test-xfail-XPG4/sys/msg.h/conform): Likewise. (test-xfail-XPG4/sys/sem.h/conform): Likewise. (test-xfail-XPG4/sys/shm.h/conform): Likewise. (test-xfail-XPG4/sys/socket.h/conform): Likewise. (test-xfail-XPG4/sys/stat.h/conform): Likewise. (test-xfail-XPG4/sys/time.h/conform): Likewise. (test-xfail-XPG4/sys/types.h/conform): Likewise. (test-xfail-XPG4/sys/wait.h/conform): Likewise. (test-xfail-XPG4/termios.h/conform): Likewise. (test-xfail-XPG4/ucontext.h/conform): Likewise. (test-xfail-XPG4/unistd.h/conform): Likewise. (test-xfail-XPG4/utmpx.h/conform): Likewise. (test-xfail-POSIX/sched.h/conform): Likewise. (test-xfail-POSIX/signal.h/conform): Likewise. (test-xfail-POSIX/sys/wait.h/conform): Likewise. (test-xfail-POSIX/tar.h/conform): Likewise. (test-xfail-UNIX98/arpa/inet.h/conform): Likewise. (test-xfail-UNIX98/fcntl.h/conform): Likewise. (test-xfail-UNIX98/langinfo.h/conform): Likewise. (test-xfail-UNIX98/netdb.h/conform): Likewise. (test-xfail-UNIX98/netinet/in.h/conform): Likewise. (test-xfail-UNIX98/sched.h/conform): Likewise. (test-xfail-UNIX98/signal.h/conform): Likewise. (test-xfail-UNIX98/stdio.h/conform): Likewise. (test-xfail-UNIX98/stdlib.h/conform): Likewise. (test-xfail-UNIX98/stropts.h/conform): Likewise. (test-xfail-UNIX98/sys/ipc.h/conform): Likewise. (test-xfail-UNIX98/sys/msg.h/conform): Likewise. (test-xfail-UNIX98/sys/sem.h/conform): Likewise. (test-xfail-UNIX98/sys/shm.h/conform): Likewise. (test-xfail-UNIX98/sys/socket.h/conform): Likewise. (test-xfail-UNIX98/sys/time.h/conform): Likewise. (test-xfail-UNIX98/sys/wait.h/conform): Likewise. (test-xfail-UNIX98/ucontext.h/conform): Likewise. (test-xfail-UNIX98/unistd.h/conform): Likewise. (test-xfail-UNIX98/utmpx.h/conform): Likewise. (test-xfail-XOPEN2K/aio.h/conform): Likewise. (test-xfail-XOPEN2K/arpa/inet.h/conform): Likewise. (test-xfail-XOPEN2K/fcntl.h/conform): Likewise. (test-xfail-XOPEN2K/langinfo.h/conform): Likewise. (test-xfail-XOPEN2K/math.h/conform): Likewise. (test-xfail-XOPEN2K/mqueue.h/conform): Likewise. (test-xfail-XOPEN2K/netdb.h/conform): Likewise. (test-xfail-XOPEN2K/netinet/in.h/conform): Likewise. (test-xfail-XOPEN2K/semaphore.h/conform): Likewise. (test-xfail-XOPEN2K/signal.h/conform): Likewise. (test-xfail-XOPEN2K/stdarg.h/conform): Likewise. (test-xfail-XOPEN2K/stdio.h/conform): Likewise. (test-xfail-XOPEN2K/stropts.h/conform): Likewise. (test-xfail-XOPEN2K/sys/ipc.h/conform): Likewise. (test-xfail-XOPEN2K/sys/msg.h/conform): Likewise. (test-xfail-XOPEN2K/sys/sem.h/conform): Likewise. (test-xfail-XOPEN2K/sys/shm.h/conform): Likewise. (test-xfail-XOPEN2K/sys/socket.h/conform): Likewise. (test-xfail-XOPEN2K/sys/wait.h/conform): Likewise. (test-xfail-XOPEN2K/termios.h/conform): Likewise. (test-xfail-XOPEN2K/tgmath.h/conform): Likewise. (test-xfail-XOPEN2K/ucontext.h/conform): Likewise. (test-xfail-XOPEN2K/utmpx.h/conform): Likewise. (test-xfail-POSIX2008/arpa/inet.h/conform): Likewise. (test-xfail-POSIX2008/fcntl.h/conform): Likewise. (test-xfail-POSIX2008/netdb.h/conform): Likewise. (test-xfail-POSIX2008/netinet/in.h/conform): Likewise. (test-xfail-POSIX2008/signal.h/conform): Likewise. (test-xfail-POSIX2008/stropts.h/conform): Likewise. (test-xfail-POSIX2008/sys/socket.h/conform): Likewise. (test-xfail-POSIX2008/sys/wait.h/conform): Likewise. (test-xfail-XOPEN2K8/arpa/inet.h/conform): Likewise. (test-xfail-XOPEN2K8/fcntl.h/conform): Likewise. (test-xfail-XOPEN2K8/limits.h/conform): Likewise. (test-xfail-XOPEN2K8/math.h/conform): Likewise. (test-xfail-XOPEN2K8/netdb.h/conform): Likewise. (test-xfail-XOPEN2K8/netinet/in.h/conform): Likewise. (test-xfail-XOPEN2K8/signal.h/conform): Likewise. (test-xfail-XOPEN2K8/stdio.h/conform): Likewise. (test-xfail-XOPEN2K8/stropts.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/ipc.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/msg.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/select.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/sem.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/shm.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/socket.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/time.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/wait.h/conform): Likewise. (test-xfail-XOPEN2K8/termios.h/conform): Likewise. (test-xfail-XOPEN2K8/tgmath.h/conform): Likewise. (test-xfail-XOPEN2K8/utmpx.h/conform): Likewise. (conformtest-cc-flags): Likewise. ($(conformtest-header-tests): New target. * conform/check-header-lists.sh: New file. * conform/run-conformtest.sh: Remove.
2014-03-07 11:23:34 +08:00
# Likewise, in XFAIL variable names.
test-xfail-name = $(strip $(patsubst %.out, %, $(patsubst $(objpfx)%, %, $@)))
# Command to output a test status line (such as PASS: test-name). If
conformtest: split up running of tests from makefile. This patch changes the logic by which header conformance tests are run so that the makefiles run the tests for each (standard, header) pair separately rather than as a single test (there are 518 such pairs being tested at present). Since these tests are slow and previously couldn't be run in parallel, this obviously speeds up the whole test run significantly when using parallel testing. There are other benefits. These tests can now be marked as expected to fail at the level of (standard, header) pairs, meaning that regressions introduced by a header change are much more likely to be spotted (of course, such a regression could be a bug in the header or in the expectations, most of which have not been properly checked against the relevant standards). The patch introduces lists in conform/Makefile of the headers to test for each standard, with a new (quick) test for each standard that the list agrees with the set of headers for which there are in fact nonempty expectations for that standard. This means that each of the 518 pairs being tested is actually something meaningful to test rather than a null test. I also hope to use these lists of headers in various standards in future tests for namespace violations where a function in a standard is implemented to call a non-reserved name for a function outside that standard. Although there are a lot of tests now marked as expected to fail, I expect most of those to be easy to fix (whether with fixes to the expectations, the headers or both - if fixing a header bug, of course file it in Bugzilla first); only a limited number are likely to reflect actual missing features in glibc. Tested x86_64 (GCC 4.7 branch). It's quite possible some failures vary from platform to platform, in which case either additional XFAILs can be added here, or platform-specific header bugs (if applicable) the failures show up can be fixed. I made XFAILs unconditional for tests that should only fail for GCC 4.6 and earlier; we could make the GCC version available in the makefiles and condition these, but simply moving the XFAILing to a finer granularity seems a clear improvement on the previous state of the whole of conformtest being XFAILed. * Makeconfig (test-xfail-name): New variable. (evaluate-test): Use $(test-xfail-name) instead of $(@F:.out=) to compute variable name for expected failures. * conform/Makefile (conformtest-headers-data): New variable. (conformtest-standards): Likewise. (conformtest-headers-ISO): Likewise. (conformtest-headers-ISO99): Likewise. (conformtest-headers-ISO11): Likewise. (conformtest-headers-POSIX): Likewise. (conformtest-headers-XPG3): Likewise. (conformtest-headers-XPG4): Likewise. (conformtest-headers-UNIX98): Likewise. (conformtest-headers-XOPEN2K): Likewise. (conformtest-headers-POSIX2008): Likewise. (conformtest-headers-XOPEN2K8): Likewise. (conformtest-header-list-base): Likewise. (conformtest-header-list-tests): Likewise. (conformtest-header-base): Likewise. (conformtest-header-tests): Likewise. (tests-special): Add $(conformtest-header-list-tests). If [$(fast-check) && !$(cross-compiling)], add $(conformtest-header-tests) instead of $(objpfx)run-conformtest.out. (generated): Add $(conformtest-header-list-base). If [$(fast-check) && !$(cross-compiling)], add $(conformtest-header-base). Remove previous setting. ($(conformtest-header-list-tests)): New target. (test-xfail-run-conformtest): Remove variable. ($(objpfx)run-conformtest.out): Remove target. (test-xfail-ISO11/complex.h/conform): New variable. (test-xfail-ISO11/stdalign.h/conform): Likewise. (test-xfail-ISO11/stdnoreturn.h/conform): Likewise. (test-xfail-XPG3/varargs.h/conform): Likewise. (test-xfail-XPG4/varargs.h/conform): Likewise. (test-xfail-UNIX98/varargs.h/conform): Likewise. (test-xfail-XPG4/ndbm.h/conform): Likewise. (test-xfail-UNIX98/ndbm.h/conform): Likewise. (test-xfail-XOPEN2K/ndbm.h/conform): Likewise. (test-xfail-XOPEN2K8/ndbm.h/conform): Likewise. (test-xfail-XPG3/fcntl.h/conform): Likewise. (test-xfail-XPG3/ftw.h/conform): Likewise. (test-xfail-XPG3/grp.h/conform): Likewise. (test-xfail-XPG3/langinfo.h/conform): Likewise. (test-xfail-XPG3/limits.h/conform): Likewise. (test-xfail-XPG3/pwd.h/conform): Likewise. (test-xfail-XPG3/search.h/conform): Likewise. (test-xfail-XPG3/signal.h/conform): Likewise. (test-xfail-XPG3/stdio.h/conform): Likewise. (test-xfail-XPG3/stdlib.h/conform): Likewise. (test-xfail-XPG3/string.h/conform): Likewise. (test-xfail-XPG3/sys/ipc.h/conform): Likewise. (test-xfail-XPG3/sys/msg.h/conform): Likewise. (test-xfail-XPG3/sys/sem.h/conform): Likewise. (test-xfail-XPG3/sys/shm.h/conform): Likewise. (test-xfail-XPG3/sys/stat.h/conform): Likewise. (test-xfail-XPG3/sys/types.h/conform): Likewise. (test-xfail-XPG3/sys/wait.h/conform): Likewise. (test-xfail-XPG3/termios.h/conform): Likewise. (test-xfail-XPG3/time.h/conform): Likewise. (test-xfail-XPG3/unistd.h/conform): Likewise. (test-xfail-XPG4/arpa/inet.h/conform): Likewise. (test-xfail-XPG4/fcntl.h/conform): Likewise. (test-xfail-XPG4/langinfo.h/conform): Likewise. (test-xfail-XPG4/netdb.h/conform): Likewise. (test-xfail-XPG4/netinet/in.h/conform): Likewise. (test-xfail-XPG4/signal.h/conform): Likewise. (test-xfail-XPG4/stdio.h/conform): Likewise. (test-xfail-XPG4/stdlib.h/conform): Likewise. (test-xfail-XPG4/stropts.h/conform): Likewise. (test-xfail-XPG4/sys/ipc.h/conform): Likewise. (test-xfail-XPG4/sys/msg.h/conform): Likewise. (test-xfail-XPG4/sys/sem.h/conform): Likewise. (test-xfail-XPG4/sys/shm.h/conform): Likewise. (test-xfail-XPG4/sys/socket.h/conform): Likewise. (test-xfail-XPG4/sys/stat.h/conform): Likewise. (test-xfail-XPG4/sys/time.h/conform): Likewise. (test-xfail-XPG4/sys/types.h/conform): Likewise. (test-xfail-XPG4/sys/wait.h/conform): Likewise. (test-xfail-XPG4/termios.h/conform): Likewise. (test-xfail-XPG4/ucontext.h/conform): Likewise. (test-xfail-XPG4/unistd.h/conform): Likewise. (test-xfail-XPG4/utmpx.h/conform): Likewise. (test-xfail-POSIX/sched.h/conform): Likewise. (test-xfail-POSIX/signal.h/conform): Likewise. (test-xfail-POSIX/sys/wait.h/conform): Likewise. (test-xfail-POSIX/tar.h/conform): Likewise. (test-xfail-UNIX98/arpa/inet.h/conform): Likewise. (test-xfail-UNIX98/fcntl.h/conform): Likewise. (test-xfail-UNIX98/langinfo.h/conform): Likewise. (test-xfail-UNIX98/netdb.h/conform): Likewise. (test-xfail-UNIX98/netinet/in.h/conform): Likewise. (test-xfail-UNIX98/sched.h/conform): Likewise. (test-xfail-UNIX98/signal.h/conform): Likewise. (test-xfail-UNIX98/stdio.h/conform): Likewise. (test-xfail-UNIX98/stdlib.h/conform): Likewise. (test-xfail-UNIX98/stropts.h/conform): Likewise. (test-xfail-UNIX98/sys/ipc.h/conform): Likewise. (test-xfail-UNIX98/sys/msg.h/conform): Likewise. (test-xfail-UNIX98/sys/sem.h/conform): Likewise. (test-xfail-UNIX98/sys/shm.h/conform): Likewise. (test-xfail-UNIX98/sys/socket.h/conform): Likewise. (test-xfail-UNIX98/sys/time.h/conform): Likewise. (test-xfail-UNIX98/sys/wait.h/conform): Likewise. (test-xfail-UNIX98/ucontext.h/conform): Likewise. (test-xfail-UNIX98/unistd.h/conform): Likewise. (test-xfail-UNIX98/utmpx.h/conform): Likewise. (test-xfail-XOPEN2K/aio.h/conform): Likewise. (test-xfail-XOPEN2K/arpa/inet.h/conform): Likewise. (test-xfail-XOPEN2K/fcntl.h/conform): Likewise. (test-xfail-XOPEN2K/langinfo.h/conform): Likewise. (test-xfail-XOPEN2K/math.h/conform): Likewise. (test-xfail-XOPEN2K/mqueue.h/conform): Likewise. (test-xfail-XOPEN2K/netdb.h/conform): Likewise. (test-xfail-XOPEN2K/netinet/in.h/conform): Likewise. (test-xfail-XOPEN2K/semaphore.h/conform): Likewise. (test-xfail-XOPEN2K/signal.h/conform): Likewise. (test-xfail-XOPEN2K/stdarg.h/conform): Likewise. (test-xfail-XOPEN2K/stdio.h/conform): Likewise. (test-xfail-XOPEN2K/stropts.h/conform): Likewise. (test-xfail-XOPEN2K/sys/ipc.h/conform): Likewise. (test-xfail-XOPEN2K/sys/msg.h/conform): Likewise. (test-xfail-XOPEN2K/sys/sem.h/conform): Likewise. (test-xfail-XOPEN2K/sys/shm.h/conform): Likewise. (test-xfail-XOPEN2K/sys/socket.h/conform): Likewise. (test-xfail-XOPEN2K/sys/wait.h/conform): Likewise. (test-xfail-XOPEN2K/termios.h/conform): Likewise. (test-xfail-XOPEN2K/tgmath.h/conform): Likewise. (test-xfail-XOPEN2K/ucontext.h/conform): Likewise. (test-xfail-XOPEN2K/utmpx.h/conform): Likewise. (test-xfail-POSIX2008/arpa/inet.h/conform): Likewise. (test-xfail-POSIX2008/fcntl.h/conform): Likewise. (test-xfail-POSIX2008/netdb.h/conform): Likewise. (test-xfail-POSIX2008/netinet/in.h/conform): Likewise. (test-xfail-POSIX2008/signal.h/conform): Likewise. (test-xfail-POSIX2008/stropts.h/conform): Likewise. (test-xfail-POSIX2008/sys/socket.h/conform): Likewise. (test-xfail-POSIX2008/sys/wait.h/conform): Likewise. (test-xfail-XOPEN2K8/arpa/inet.h/conform): Likewise. (test-xfail-XOPEN2K8/fcntl.h/conform): Likewise. (test-xfail-XOPEN2K8/limits.h/conform): Likewise. (test-xfail-XOPEN2K8/math.h/conform): Likewise. (test-xfail-XOPEN2K8/netdb.h/conform): Likewise. (test-xfail-XOPEN2K8/netinet/in.h/conform): Likewise. (test-xfail-XOPEN2K8/signal.h/conform): Likewise. (test-xfail-XOPEN2K8/stdio.h/conform): Likewise. (test-xfail-XOPEN2K8/stropts.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/ipc.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/msg.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/select.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/sem.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/shm.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/socket.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/time.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/wait.h/conform): Likewise. (test-xfail-XOPEN2K8/termios.h/conform): Likewise. (test-xfail-XOPEN2K8/tgmath.h/conform): Likewise. (test-xfail-XOPEN2K8/utmpx.h/conform): Likewise. (conformtest-cc-flags): Likewise. ($(conformtest-header-tests): New target. * conform/check-header-lists.sh: New file. * conform/run-conformtest.sh: Remove.
2014-03-07 11:23:34 +08:00
# test-xfail-$(test-xfail-name) has a nonempty value, the status will be
# XPASS or XFAIL rather than PASS or FAIL.
Generate .test-result files for ordinary tests. This patch, an updated version of <https://sourceware.org/ml/libc-alpha/2014-01/msg00193.html>, starts the process of generating explicit PASS or FAIL status for individual glibc tests. It's based on Tomas Dohnalek's patch <https://sourceware.org/ml/libc-alpha/2012-10/msg00278.html>, but is deliberately more minimal: it doesn't try to cover any tests outside of $(tests) / $(xtests) (that's for a later patch), nor does it put the result together in an overall summary file (again, a later patch): it just generates the .test-result files. Thus, this patch keeps the overall logic for when a testsuite run finishes completely unchanged: a test failing will terminate the run. I think we *should* move to a more conventional approach where plain "make check" does not terminate for an individual test failure, unless e.g. you say "make stop-on-test-failure=y check", but that sort of policy change is best done as a separate patch once the infrastructure is in place to generate summary files for completed test runs (which will entirely consist of PASS and XFAIL lines if the testsuite run reaches the point of generating them, until such a policy change is made). Tested x86_64. 2014-02-14 Tomas Dohnalek <tdohnale@redhat.com> Joseph Myers <joseph@codesourcery.com> * Makeconfig (test-name): New variable. (evaluate-test): Likewise. * Makerules (do-test-clean): Remove .test-result files. (common-mostlyclean): Likewise. * Rules ($(objpfx)%.out): Use $(evaluate-test) in both rules. * scripts/evaluate-test.sh: New file.
2014-02-15 09:04:57 +08:00
evaluate-test = $(..)scripts/evaluate-test.sh $(test-name) $$? \
conformtest: split up running of tests from makefile. This patch changes the logic by which header conformance tests are run so that the makefiles run the tests for each (standard, header) pair separately rather than as a single test (there are 518 such pairs being tested at present). Since these tests are slow and previously couldn't be run in parallel, this obviously speeds up the whole test run significantly when using parallel testing. There are other benefits. These tests can now be marked as expected to fail at the level of (standard, header) pairs, meaning that regressions introduced by a header change are much more likely to be spotted (of course, such a regression could be a bug in the header or in the expectations, most of which have not been properly checked against the relevant standards). The patch introduces lists in conform/Makefile of the headers to test for each standard, with a new (quick) test for each standard that the list agrees with the set of headers for which there are in fact nonempty expectations for that standard. This means that each of the 518 pairs being tested is actually something meaningful to test rather than a null test. I also hope to use these lists of headers in various standards in future tests for namespace violations where a function in a standard is implemented to call a non-reserved name for a function outside that standard. Although there are a lot of tests now marked as expected to fail, I expect most of those to be easy to fix (whether with fixes to the expectations, the headers or both - if fixing a header bug, of course file it in Bugzilla first); only a limited number are likely to reflect actual missing features in glibc. Tested x86_64 (GCC 4.7 branch). It's quite possible some failures vary from platform to platform, in which case either additional XFAILs can be added here, or platform-specific header bugs (if applicable) the failures show up can be fixed. I made XFAILs unconditional for tests that should only fail for GCC 4.6 and earlier; we could make the GCC version available in the makefiles and condition these, but simply moving the XFAILing to a finer granularity seems a clear improvement on the previous state of the whole of conformtest being XFAILed. * Makeconfig (test-xfail-name): New variable. (evaluate-test): Use $(test-xfail-name) instead of $(@F:.out=) to compute variable name for expected failures. * conform/Makefile (conformtest-headers-data): New variable. (conformtest-standards): Likewise. (conformtest-headers-ISO): Likewise. (conformtest-headers-ISO99): Likewise. (conformtest-headers-ISO11): Likewise. (conformtest-headers-POSIX): Likewise. (conformtest-headers-XPG3): Likewise. (conformtest-headers-XPG4): Likewise. (conformtest-headers-UNIX98): Likewise. (conformtest-headers-XOPEN2K): Likewise. (conformtest-headers-POSIX2008): Likewise. (conformtest-headers-XOPEN2K8): Likewise. (conformtest-header-list-base): Likewise. (conformtest-header-list-tests): Likewise. (conformtest-header-base): Likewise. (conformtest-header-tests): Likewise. (tests-special): Add $(conformtest-header-list-tests). If [$(fast-check) && !$(cross-compiling)], add $(conformtest-header-tests) instead of $(objpfx)run-conformtest.out. (generated): Add $(conformtest-header-list-base). If [$(fast-check) && !$(cross-compiling)], add $(conformtest-header-base). Remove previous setting. ($(conformtest-header-list-tests)): New target. (test-xfail-run-conformtest): Remove variable. ($(objpfx)run-conformtest.out): Remove target. (test-xfail-ISO11/complex.h/conform): New variable. (test-xfail-ISO11/stdalign.h/conform): Likewise. (test-xfail-ISO11/stdnoreturn.h/conform): Likewise. (test-xfail-XPG3/varargs.h/conform): Likewise. (test-xfail-XPG4/varargs.h/conform): Likewise. (test-xfail-UNIX98/varargs.h/conform): Likewise. (test-xfail-XPG4/ndbm.h/conform): Likewise. (test-xfail-UNIX98/ndbm.h/conform): Likewise. (test-xfail-XOPEN2K/ndbm.h/conform): Likewise. (test-xfail-XOPEN2K8/ndbm.h/conform): Likewise. (test-xfail-XPG3/fcntl.h/conform): Likewise. (test-xfail-XPG3/ftw.h/conform): Likewise. (test-xfail-XPG3/grp.h/conform): Likewise. (test-xfail-XPG3/langinfo.h/conform): Likewise. (test-xfail-XPG3/limits.h/conform): Likewise. (test-xfail-XPG3/pwd.h/conform): Likewise. (test-xfail-XPG3/search.h/conform): Likewise. (test-xfail-XPG3/signal.h/conform): Likewise. (test-xfail-XPG3/stdio.h/conform): Likewise. (test-xfail-XPG3/stdlib.h/conform): Likewise. (test-xfail-XPG3/string.h/conform): Likewise. (test-xfail-XPG3/sys/ipc.h/conform): Likewise. (test-xfail-XPG3/sys/msg.h/conform): Likewise. (test-xfail-XPG3/sys/sem.h/conform): Likewise. (test-xfail-XPG3/sys/shm.h/conform): Likewise. (test-xfail-XPG3/sys/stat.h/conform): Likewise. (test-xfail-XPG3/sys/types.h/conform): Likewise. (test-xfail-XPG3/sys/wait.h/conform): Likewise. (test-xfail-XPG3/termios.h/conform): Likewise. (test-xfail-XPG3/time.h/conform): Likewise. (test-xfail-XPG3/unistd.h/conform): Likewise. (test-xfail-XPG4/arpa/inet.h/conform): Likewise. (test-xfail-XPG4/fcntl.h/conform): Likewise. (test-xfail-XPG4/langinfo.h/conform): Likewise. (test-xfail-XPG4/netdb.h/conform): Likewise. (test-xfail-XPG4/netinet/in.h/conform): Likewise. (test-xfail-XPG4/signal.h/conform): Likewise. (test-xfail-XPG4/stdio.h/conform): Likewise. (test-xfail-XPG4/stdlib.h/conform): Likewise. (test-xfail-XPG4/stropts.h/conform): Likewise. (test-xfail-XPG4/sys/ipc.h/conform): Likewise. (test-xfail-XPG4/sys/msg.h/conform): Likewise. (test-xfail-XPG4/sys/sem.h/conform): Likewise. (test-xfail-XPG4/sys/shm.h/conform): Likewise. (test-xfail-XPG4/sys/socket.h/conform): Likewise. (test-xfail-XPG4/sys/stat.h/conform): Likewise. (test-xfail-XPG4/sys/time.h/conform): Likewise. (test-xfail-XPG4/sys/types.h/conform): Likewise. (test-xfail-XPG4/sys/wait.h/conform): Likewise. (test-xfail-XPG4/termios.h/conform): Likewise. (test-xfail-XPG4/ucontext.h/conform): Likewise. (test-xfail-XPG4/unistd.h/conform): Likewise. (test-xfail-XPG4/utmpx.h/conform): Likewise. (test-xfail-POSIX/sched.h/conform): Likewise. (test-xfail-POSIX/signal.h/conform): Likewise. (test-xfail-POSIX/sys/wait.h/conform): Likewise. (test-xfail-POSIX/tar.h/conform): Likewise. (test-xfail-UNIX98/arpa/inet.h/conform): Likewise. (test-xfail-UNIX98/fcntl.h/conform): Likewise. (test-xfail-UNIX98/langinfo.h/conform): Likewise. (test-xfail-UNIX98/netdb.h/conform): Likewise. (test-xfail-UNIX98/netinet/in.h/conform): Likewise. (test-xfail-UNIX98/sched.h/conform): Likewise. (test-xfail-UNIX98/signal.h/conform): Likewise. (test-xfail-UNIX98/stdio.h/conform): Likewise. (test-xfail-UNIX98/stdlib.h/conform): Likewise. (test-xfail-UNIX98/stropts.h/conform): Likewise. (test-xfail-UNIX98/sys/ipc.h/conform): Likewise. (test-xfail-UNIX98/sys/msg.h/conform): Likewise. (test-xfail-UNIX98/sys/sem.h/conform): Likewise. (test-xfail-UNIX98/sys/shm.h/conform): Likewise. (test-xfail-UNIX98/sys/socket.h/conform): Likewise. (test-xfail-UNIX98/sys/time.h/conform): Likewise. (test-xfail-UNIX98/sys/wait.h/conform): Likewise. (test-xfail-UNIX98/ucontext.h/conform): Likewise. (test-xfail-UNIX98/unistd.h/conform): Likewise. (test-xfail-UNIX98/utmpx.h/conform): Likewise. (test-xfail-XOPEN2K/aio.h/conform): Likewise. (test-xfail-XOPEN2K/arpa/inet.h/conform): Likewise. (test-xfail-XOPEN2K/fcntl.h/conform): Likewise. (test-xfail-XOPEN2K/langinfo.h/conform): Likewise. (test-xfail-XOPEN2K/math.h/conform): Likewise. (test-xfail-XOPEN2K/mqueue.h/conform): Likewise. (test-xfail-XOPEN2K/netdb.h/conform): Likewise. (test-xfail-XOPEN2K/netinet/in.h/conform): Likewise. (test-xfail-XOPEN2K/semaphore.h/conform): Likewise. (test-xfail-XOPEN2K/signal.h/conform): Likewise. (test-xfail-XOPEN2K/stdarg.h/conform): Likewise. (test-xfail-XOPEN2K/stdio.h/conform): Likewise. (test-xfail-XOPEN2K/stropts.h/conform): Likewise. (test-xfail-XOPEN2K/sys/ipc.h/conform): Likewise. (test-xfail-XOPEN2K/sys/msg.h/conform): Likewise. (test-xfail-XOPEN2K/sys/sem.h/conform): Likewise. (test-xfail-XOPEN2K/sys/shm.h/conform): Likewise. (test-xfail-XOPEN2K/sys/socket.h/conform): Likewise. (test-xfail-XOPEN2K/sys/wait.h/conform): Likewise. (test-xfail-XOPEN2K/termios.h/conform): Likewise. (test-xfail-XOPEN2K/tgmath.h/conform): Likewise. (test-xfail-XOPEN2K/ucontext.h/conform): Likewise. (test-xfail-XOPEN2K/utmpx.h/conform): Likewise. (test-xfail-POSIX2008/arpa/inet.h/conform): Likewise. (test-xfail-POSIX2008/fcntl.h/conform): Likewise. (test-xfail-POSIX2008/netdb.h/conform): Likewise. (test-xfail-POSIX2008/netinet/in.h/conform): Likewise. (test-xfail-POSIX2008/signal.h/conform): Likewise. (test-xfail-POSIX2008/stropts.h/conform): Likewise. (test-xfail-POSIX2008/sys/socket.h/conform): Likewise. (test-xfail-POSIX2008/sys/wait.h/conform): Likewise. (test-xfail-XOPEN2K8/arpa/inet.h/conform): Likewise. (test-xfail-XOPEN2K8/fcntl.h/conform): Likewise. (test-xfail-XOPEN2K8/limits.h/conform): Likewise. (test-xfail-XOPEN2K8/math.h/conform): Likewise. (test-xfail-XOPEN2K8/netdb.h/conform): Likewise. (test-xfail-XOPEN2K8/netinet/in.h/conform): Likewise. (test-xfail-XOPEN2K8/signal.h/conform): Likewise. (test-xfail-XOPEN2K8/stdio.h/conform): Likewise. (test-xfail-XOPEN2K8/stropts.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/ipc.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/msg.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/select.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/sem.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/shm.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/socket.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/time.h/conform): Likewise. (test-xfail-XOPEN2K8/sys/wait.h/conform): Likewise. (test-xfail-XOPEN2K8/termios.h/conform): Likewise. (test-xfail-XOPEN2K8/tgmath.h/conform): Likewise. (test-xfail-XOPEN2K8/utmpx.h/conform): Likewise. (conformtest-cc-flags): Likewise. ($(conformtest-header-tests): New target. * conform/check-header-lists.sh: New file. * conform/run-conformtest.sh: Remove.
2014-03-07 11:23:34 +08:00
$(if $(test-xfail-$(test-xfail-name)),true,false) \
Do not terminate default test runs on test failure. This patch is an updated version of <https://sourceware.org/ml/libc-alpha/2014-01/msg00198.html> and <https://sourceware.org/ml/libc-alpha/2014-03/msg00180.html>. Normal practice for software testsuites is that rather than terminating immediately when a test fails, they continue running and report at the end on how many tests passed or failed. The principle behind the glibc testsuite stopping on failure was probably that the expected state is no failures and so any failure indicates a problem such as miscompilation. In practice, while this is fairly close to true for native testing on x86_64 and x86 (kernel bugs and race conditions can still cause intermittent failures), it's less likely to be the case on other platforms, and so people testing glibc run the testsuite with "make -k" and then examine the logs to determine whether the failures are what they expect to fail on that platform, possibly with some automation for the comparison. This patch switches the glibc testsuite to the normal convention of not stopping on failure - unless you use stop-on-test-failure=y, in which case it behaves essentially as it did before (and does not generate overall test summaries on failure). Instead, the summary tests.sum may contain tests that FAILed. At the end of the test run, any FAIL or ERROR lines from tests.sum are printed, and then it exits with error status if there were any such lines. In addition, build failures will also cause the test run to stop - this has the justification that those *do* indicate serious problems that should be promptly fixed and aren't generally hard to fix (but apart from that, avoiding the build stopping on those failures seems harder). Note that unlike the previous patches in this series, this *does* require people with automation around testing glibc to change their processes - either to start using tests.sum / xtests.sum to track failures and compare them with expectations (with or without also using "make -k" and examining "make" logs to identify build failures), or else to use stop-on-test-failure=y and ignore the new tests.sum / xtests.sum mechanism. (If all you check is the exit status from "make check", no changes are needed unless you want to avoid test runs continuing after the first failure.) Tested x86_64. * scripts/evaluate-test.sh: Handle fourth argument to determine whether test run should stop on failure. * Makeconfig (stop-on-test-failure): New variable. (evaluate-test): Pass fourth argument to evaluate-test.sh based on $(stop-on-test-failure). * Makefile (tests): Give a summary of results from testing and exit with failure status if they include an ERROR or FAIL. (xtests): Likewise. * manual/install.texi (Configuring and compiling): Mention stop-on-test-failure=y. * INSTALL: Regenerated.
2014-03-15 05:02:40 +08:00
$(if $(stop-on-test-failure),true,false) \
Generate .test-result files for ordinary tests. This patch, an updated version of <https://sourceware.org/ml/libc-alpha/2014-01/msg00193.html>, starts the process of generating explicit PASS or FAIL status for individual glibc tests. It's based on Tomas Dohnalek's patch <https://sourceware.org/ml/libc-alpha/2012-10/msg00278.html>, but is deliberately more minimal: it doesn't try to cover any tests outside of $(tests) / $(xtests) (that's for a later patch), nor does it put the result together in an overall summary file (again, a later patch): it just generates the .test-result files. Thus, this patch keeps the overall logic for when a testsuite run finishes completely unchanged: a test failing will terminate the run. I think we *should* move to a more conventional approach where plain "make check" does not terminate for an individual test failure, unless e.g. you say "make stop-on-test-failure=y check", but that sort of policy change is best done as a separate patch once the infrastructure is in place to generate summary files for completed test runs (which will entirely consist of PASS and XFAIL lines if the testsuite run reaches the point of generating them, until such a policy change is made). Tested x86_64. 2014-02-14 Tomas Dohnalek <tdohnale@redhat.com> Joseph Myers <joseph@codesourcery.com> * Makeconfig (test-name): New variable. (evaluate-test): Likewise. * Makerules (do-test-clean): Remove .test-result files. (common-mostlyclean): Likewise. * Rules ($(objpfx)%.out): Use $(evaluate-test) in both rules. * scripts/evaluate-test.sh: New file.
2014-02-15 09:04:57 +08:00
> $(common-objpfx)$(test-name).test-result
1995-02-18 09:27:10 +08:00
endif # Makeconfig not yet included
# Local Variables:
# mode: makefile
# End: