Commit Graph

20407 Commits

Author SHA1 Message Date
DJ Delorie e4252e5c53 Add MAINTAINERS
Add a toplevel file "MAINTAINERS" that only points to the
MAINTAINERS page on the wiki.
2017-05-11 13:38:30 -04:00
Siddhesh Poyarekar 17284d650e tunables: Make tunable_list relro
As of now we don't need tunables to be writable after they have been
set initially, so there is no point in having them writable.  Put
tunable_list in .data.rel.ro so that it is set as read-only after
relocation.  This also allows us to move some of the dl_* variables
that are tunables controlled into the tunables infrastructure instead
of having two copies.

In future if we ever need specific tunables to be writable at runtime,
we can split the tunable_list into two.

Regression tested on x86_64 to verify that tests continue to pass.

	* scripts/gen-tunables.awk: Add attribute_relro to
	tunable_list.
2017-05-11 20:15:56 +05:30
Joseph Myers 5df4854ed2 Condition some sys/ucontext.h contents on __USE_MISC (bug 21457).
Continuing the fixes for namespace issues arising from sys/ucontext.h,
this patch conditions various definitions, that are not needed for
defining mcontext_t / ucontext_t, on __USE_MISC, so they do not appear
in strict POSIX modes.

This patch is non-exhaustive; that is, it only conditions
straightforward cases and there may be more such definitions that can
be conditioned for these and other architectures, to be dealt with
later in separate patches.  Also, using __USE_MISC is the minimum
change for these definitions where they conflict with POSIX; some
headers already have __USE_GNU conditionals on similar definitions of
names for registers.  The patch specifically does not do anything with
definitions in bits/sigcontext.h, and nor does it condition any
inclusions of bits/sigcontext.h even where in fact that is not needed
on some architectures for the definitions of mcontext_t / ucontext_t.

As other namespace issues in these headers remain, this patch does not
fix bug 21457, nor allow any XFAILs to be removed.

Tested with build-many-glibcs.py.

	[BZ #21457]
	* sysdeps/arm/sys/ucontext.h (R0): Condition on [__USE_MISC].
	(R1): Likewise.
	(R2): Likewise.
	(R3): Likewise.
	(R4): Likewise.
	(R5): Likewise.
	(R6): Likewise.
	(R7): Likewise.
	(R8): Likewise.
	(R9): Likewise.
	(R10): Likewise.
	(R11): Likewise.
	(R12): Likewise.
	(R13): Likewise.
	(R14): Likewise.
	(R15): Likewise.
	* sysdeps/i386/sys/ucontext.h (REG_GS): Likewise.
	(REG_FS): Likewise.
	(REG_ES): Likewise.
	(REG_DS): Likewise.
	(REG_EDI): Likewise.
	(REG_ESI): Likewise.
	(REG_EBP): Likewise.
	(REG_ESP): Likewise.
	(REG_EBX): Likewise.
	(REG_EDX): Likewise.
	(REG_ECX): Likewise.
	(REG_EAX): Likewise.
	(REG_TRAPNO): Likewise.
	(REG_ERR): Likewise.
	(REG_EIP): Likewise.
	(REG_CS): Likewise.
	(REG_EFL): Likewise.
	(REG_UESP): Likewise.
	(REG_SS): Likewise.
	* sysdeps/m68k/sys/ucontext.h (R_D0): Likewise.
	(R_D1): Likewise.
	(R_D2): Likewise.
	(R_D3): Likewise.
	(R_D4): Likewise.
	(R_D5): Likewise.
	(R_D6): Likewise.
	(R_D7): Likewise.
	(R_A0): Likewise.
	(R_A1): Likewise.
	(R_A2): Likewise.
	(R_A3): Likewise.
	(R_A4): Likewise.
	(R_A5): Likewise.
	(R_A6): Likewise.
	(R_A7): Likewise.
	(R_SP): Likewise.
	(R_PC): Likewise.
	(R_PS): Likewise.
	(fpregset_t): Likewise.
	(MCONTEXT_VERSION): Likewise.
	* sysdeps/mips/sys/ucontext.h (CTX_R0): Likewise.
	(CTX_AT): Likewise.
	(CTX_V0): Likewise.
	(CTX_V1): Likewise.
	(CTX_A0): Likewise.
	(CTX_A1): Likewise.
	(CTX_A2): Likewise.
	(CTX_A3): Likewise.
	(CTX_T0): Likewise.
	(CTX_T1): Likewise.
	(CTX_T2): Likewise.
	(CTX_T3): Likewise.
	(CTX_T4): Likewise.
	(CTX_T5): Likewise.
	(CTX_T6): Likewise.
	(CTX_T7): Likewise.
	(CTX_S0): Likewise.
	(CTX_S1): Likewise.
	(CTX_S2): Likewise.
	(CTX_S3): Likewise.
	(CTX_S4): Likewise.
	(CTX_S5): Likewise.
	(CTX_S6): Likewise.
	(CTX_S7): Likewise.
	(CTX_T8): Likewise.
	(CTX_T9): Likewise.
	(CTX_K0): Likewise.
	(CTX_K1): Likewise.
	(CTX_GP): Likewise.
	(CTX_SP): Likewise.
	(CTX_S8): Likewise.
	(CTX_RA): Likewise.
	(CTX_MDLO): Likewise.
	(CTX_MDHI): Likewise.
	(CTX_CAUSE): Likewise.
	(CTX_EPC): Likewise.
	* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h: Condition
	inclusion of <sys/procfs.h> on [__USE_MISC].
	(greg_t): Condition on [__USE_MISC].
	(gregset_t): Likewise.
	(fpregset_t): Likewise.
	* sysdeps/unix/sysv/linux/arm/sys/ucontext.h (greg_t): Likewise.
	(NGREG): Likewise.
	(gregset_t): Likewise.
	(REG_R0): Likewise.
	(REG_R1): Likewise.
	(REG_R2): Likewise.
	(REG_R3): Likewise.
	(REG_R4): Likewise.
	(REG_R5): Likewise.
	(REG_R6): Likewise.
	(REG_R7): Likewise.
	(REG_R8): Likewise.
	(REG_R9): Likewise.
	(REG_R10): Likewise.
	(REG_R11): Likewise.
	(REG_R12): Likewise.
	(REG_R13): Likewise.
	(REG_R14): Likewise.
	(REG_R15): Likewise.
	(struct _libc_fpstate): Likewise.
	(fpregset_t): Likewise.
	* sysdeps/unix/sysv/linux/hppa/sys/ucontext.h (NGREG): Likewise.
	(NFPREG): Likewise.
	(gregset_t): Likewise.
	(fpregset_t): Likewise.
	* sysdeps/unix/sysv/linux/m68k/sys/ucontext.h (R_D0): Likewise.
	(R_D1): Likewise.
	(R_D2): Likewise.
	(R_D3): Likewise.
	(R_D4): Likewise.
	(R_D5): Likewise.
	(R_D6): Likewise.
	(R_D7): Likewise.
	(R_A0): Likewise.
	(R_A1): Likewise.
	(R_A2): Likewise.
	(R_A3): Likewise.
	(R_A4): Likewise.
	(R_A5): Likewise.
	(R_A6): Likewise.
	(R_A7): Likewise.
	(R_SP): Likewise.
	(R_PC): Likewise.
	(R_PS): Likewise.
	(fpregset_t): Likewise.
	(MCONTEXT_VERSION): Likewise.
	* sysdeps/unix/sysv/linux/nios2/sys/ucontext.h (MCONTEXT_VERSION):
	Likewise.
	* sysdeps/unix/sysv/linux/sh/sys/ucontext.h (REG_R0): Likewise.
	(REG_R1): Likewise.
	(REG_R2): Likewise.
	(REG_R3): Likewise.
	(REG_R4): Likewise.
	(REG_R5): Likewise.
	(REG_R6): Likewise.
	(REG_R7): Likewise.
	(REG_R8): Likewise.
	(REG_R9): Likewise.
	(REG_R10): Likewise.
	(REG_R11): Likewise.
	(REG_R12): Likewise.
	(REG_R13): Likewise.
	(REG_R14): Likewise.
	(REG_R15): Likewise.
	* sysdeps/unix/sysv/linux/tile/sys/ucontext.h: Condition inclusion
	of <arch/abi.h> on [__USE_MISC].
	(greg_t): Condition on [__USE_MISC].
	(NGREG): Likewise.
	(gregset_t): Likewise.
2017-05-11 14:15:26 +00:00
Adhemerval Zanella 0a19a91896 Remove wrong definitions from pthread header refactor
This patch removes wrong struct definition from eab380d (Move shared
pthread definitions to common headers) on ARM and hppa.

Checked on arm-linux-gnueabihf.

	* sysdeps/arm/nptl/bits/pthreadtypes-arch.h
	(__pthread_rwlock_arch_t): Remove __data definition.
	* sysdeps/hppa/nptl/bits/pthreadtypes-arch.h
	(__pthread_rwlock_arch_t): Likewise.
2017-05-11 10:46:03 -03:00
Florian Weimer d53b865288 inet_pton: Reformat in GNU style
Generated machine code is identical on x86-64.
2017-05-11 14:48:51 +02:00
Florian Weimer 8ec69bb7ec support_format_addrinfo: Fix flags and canonname formatting
The address family splitting via format_ai_family made unpredictable
the place where the canonname field was printed.  This commit adjusts
the implementation so that the ai_flags is checked for consistency
across the list, and ai_canonname must only be present on the first
list element.

Tests for AI_CANONNAME are added to resolv/tst-resolv-basic.
2017-05-11 11:51:34 +02:00
Florian Weimer 46ce8881ad getaddrinfo: Unconditionally use malloc for address list
getaddrinfo has to call malloc eventually anyway, so the complexity
of avoiding malloc calls is not worth potential savings.
2017-05-11 10:01:49 +02:00
Andreas Schwab faa9066c4b Use test-driver in ntpl/tst-fork1.c 2017-05-10 09:38:18 +02:00
Joseph Myers 8fa11673d6 Fix rawmemchr build with GCC 8.
The default rawmemchr implementation uses memchr with size (size_t)-1,
which produces a warning with current GCC mainline.  The warning seems
reasonable for normal code, so this patch uses the DIAG_* macros to
disable it.

Tested (compilation of glibc only) with build-many-glibcs.py for
arm-linux-gnueabi and powerpc64le-linux-gnu, two architectures for
which the build was previously failing.  Note that the glibc testsuite
will still fail to build with GCC mainline because of
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80669>.

	* string/rawmemchr.c: Include <libc-diag.h>.
	(RAWMEMCHR): Disable -Wstringop-overflow around call to memchr
	with size (size_t)-1.
2017-05-10 00:25:59 +00:00
Joseph Myers d08a482bc2 Remove MIPS32 accept4, recvmmsg, sendmmsg implementations.
MIPS32 has its own implementations of accept4, recvmmsg and sendmmsg
because at one point it needed to avoid socketcall being used for
those functions (MIPS32 has socketcall, but has never used it in
glibc, and so never had socket.S at the time when socketcall used such
a per-architecture file instead of C code).  The current code no
longer uses socketcall based on __NR_socketcall being defined, and the
syscalls are always present on MIPS for supported kernels so the
socketcall case in the code is dead for MIPS; this patch removes the
implementations that are, as Adhemerval noted, no longer needed.

Tested compilation for mips-linux-gnu with build-many-glibcs.py.

	* sysdeps/unix/sysv/linux/mips/mips32/accept4.c: Remove file.
	* sysdeps/unix/sysv/linux/mips/mips32/recvmmsg.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips32/sendmmsg.c: Likewise.
2017-05-09 23:16:19 +00:00
Joseph Myers e3b0580d0d Simplify accept4, recvmmsg, sendmmsg code.
The accept4, recvmmsg and sendmmsg functions had macros
__ASSUME_*_SYSCALL_WITH_SOCKETCALL.  Before we could assume kernels
with the relevant functionality, these macros represented the
conditions under which, on a socketcall architecture, glibc could just
call the syscall unconditionally and not have to deal with socketcall
at all for those functions, because if the syscall didn't work for
them the socketcall call wouldn't either.

Now we can assume kernels with the relevant functionality, the only
question is whether we can assume the syscall is present; if not, we
are on a socketcall architecture and just use socketcall instead.
Thus, this patch removes the macros that are no longer necessary, and
simplifies the code for accept4, recvmmsg and sendmmsg to use the same
logic as the other C implementations of socket functions that may use
a syscall or socketcall depending on kernel support.

Tested for x86_64 and x86.

	* sysdeps/unix/sysv/linux/accept4.c (accept4): Use syscall if
	[__ASSUME_ACCEPT4_SYSCALL], otherwise socketcall.
	* sysdeps/unix/sysv/linux/recvmmsg.c (recvmmsg): Use syscall if
	[__ASSUME_RECVMMSG_SYSCALL], otherwise socketcall.
	* sysdeps/unix/sysv/linux/sendmmsg.c (__sendmmsg): Use syscall if
	[__ASSUME_SENDMMSG_SYSCALL], otherwise socketcall.
	* sysdeps/unix/sysv/linux/kernel-features.h
	(__ASSUME_ACCEPT4_SYSCALL): Move to general list of macros for
	socket syscalls.
	(__ASSUME_RECVMMSG_SYSCALL): Likewise.
	(__ASSUME_SENDMMSG_SYSCALL): Likewise.
	* sysdeps/unix/sysv/linux/i386/kernel-features.h
	(__ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL): Remove.
	(__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
	* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
	(__ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL): Remove.
	* sysdeps/unix/sysv/linux/powerpc/kernel-features.h
	(__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
	* sysdeps/unix/sysv/linux/sh/kernel-features.h
	(__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
	* sysdeps/unix/sysv/linux/sparc/kernel-features.h
	(__ASSUME_ACCEPT4_SYSCALL_WITH_SOCKETCALL): Likewise.
	(__ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
	(__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
2017-05-09 21:59:36 +00:00
Adhemerval Zanella eab380d8ec Move shared pthread definitions to common headers
This patch removes all the replicated pthread definition accross the
architectures and consolidates it on shared headers.  The new
organization is as follow:

  * Architecture specific definition (such as pthread types sizes) are
    place in the new pthreadtypes-arch.h header in arch specific path.

  * All shared structure definition are moved to a common NPTL header
    at sysdeps/nptl/bits/pthreadtypes.h (with now includes the arch
    specific one for internal definitions).

  * Also, for C11 future thread support, both mutex and condition
    definition are placed in a common header at
    sysdeps/nptl/bits/thread-shared-types.h.

It is also a refactor patch without expected functional changes.
Checked with a build for all major ABI (aarch64-linux-gnu, alpha-linux-gnu,
arm-linux-gnueabi, i386-linux-gnu, ia64-linux-gnu,
m68k-linux-gnu, microblaze-linux-gnu, mips{64}-linux-gnu, nios2-linux-gnu,
powerpc{64le}-linux-gnu, s390{x}-linux-gnu, sparc{64}-linux-gnu,
tile{pro,gx}-linux-gnu, and x86_64-linux-gnu).

	* posix/Makefile (headers): Add pthreadtypes-arch.h and
	thread-shared-types.h.
	* sysdeps/aarch64/nptl/bits/pthreadtypes-arch.h: New file: arch
	specific thread definition.
	* sysdeps/alpha/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/arm/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/hppa/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/ia64/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/m68k/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/microblaze/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/mips/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/nios2/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/s390/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/sh/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/sparc/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/tile/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/x86/nptl/bits/pthreadtypes-arch.h: Likewise.
	* sysdeps/nptl/bits/thread-shared-types.h: New file: shared
	thread definition between POSIX and C11.
	* sysdeps/aarch64/nptl/bits/pthreadtypes.h.: Remove file.
	* sysdeps/alpha/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/arm/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/hppa/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/m68k/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/microblaze/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/mips/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/nios2/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/ia64/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/powerpc/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/s390/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/sh/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/sparc/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/tile/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/x86/nptl/bits/pthreadtypes.h: Likewise.
	* sysdeps/nptl/bits/pthreadtypes.h: New file: common thread
	definitions shared across all architectures.
2017-05-09 17:49:17 -03:00
Joseph Myers 0cb5da5c09 Simplify sendmmsg code.
Now we can assume a kernel with sendmmsg support, this patch
simplifies the implementation to be similar to that for accept4:
either using socketcall or the syscall according to whether the
syscall is known to be available, without further fallback
implementations.  The __ASSUME_SENDMMSG macro is kept (now defined
unconditionally), since it's used in resolv/res_send.c.

Tested for x86_64 and x86.

	* sysdeps/unix/sysv/linux/kernel-features.h
	(__ASSUME_SENDMMSG_SYSCALL): Define unconditionally.
	(__ASSUME_SENDMMSG): Likewise.
	(__ASSUME_SENDMMSG_SOCKETCALL): Remove macro.
	* sysdeps/unix/sysv/linux/sendmmsg.c (__sendmmsg): Define using
	sendmmsg syscall if that can be assumed to be present, socketcall
	otherwise, with no fallback for runtime failure.
2017-05-09 20:01:52 +00:00
Joseph Myers 9a45f54310 Simplify recvmmsg code.
Now we can assume a kernel with recvmmsg support, this patch
simplifies the implementation to be similar to that for accept4:
either using socketcall or the syscall according to whether the
syscall is known to be available, without further fallback
implementations.

(In fact further simplification is possible, getting rid of the
__ASSUME_*_SYSCALL_WITH_SOCKETCALL macros now that the minimum kernel
is guaranteed support for all of accept4, recvmmsg, sendmmsg, whether
through syscalls or through socketcall.  I intend to do that for all
of accept4 / recvmmsg / sendmmsg together - so making their
implementations just like those for older socket functions - once the
basic cleanup for 3.2 minimum kernel is done for sendmmsg as well as
recvmmsg.)

Tested for x86_64 and x86.

	* sysdeps/unix/sysv/linux/kernel-features.h
	(__ASSUME_RECVMMSG_SYSCALL): Define unconditionally.
	(__ASSUME_RECVMMSG_SOCKETCALL): Remove macro.
	(__ASSUME_RECVMMSG): Likewise.
	* sysdeps/unix/sysv/linux/recvmmsg.c (recvmmsg): Define using
	recvmmsg syscall if it can be assumed to be present, socketcall
	otherwise, with no fallback for runtime failure.
2017-05-09 20:01:01 +00:00
Paul E. Murphy 4fc12f0eda Add support for testing __STDC_WANT_IEC_60559_TYPES_EXT__
This macro is defined by TS 18661-3 for supporting the _FloatN and
_FloatNx types, as well as the functions suffixed with fN.

	* bits/libc-header-start.h:
	(__GLIBC_USE_IEC_60559_TYPES_EXT): New macro.
	* include/features.h: Describe __STDC_WANT_IEC_60559_TYPES_EXT__.
	* manual/creature.texi: Likewise.
2017-05-09 11:40:28 -03:00
Paul E. Murphy 26265c3bce float128: Add _Float128 make bits to libm.
This adds the appropriate common bits for a platform to
enable float128 and expose ABI.

	* math/Makefile:
	(type-float128-suffix): New variable
	(type-float128-routines): Likewise
	(type-float128-yes): Likewise
	(types): Append float128 if supported
	(types-basic): New variable to control the use of templates for
	float, double, and long double, but not for float128 or newer types.
	(type-basic-foreach): Likewise.

	* sysdeps/ieee754/float128/Makeconfig: New file.
	* sysdeps/ieee754/float128/Versions: New file.
2017-05-09 11:40:28 -03:00
Joseph Myers 695d7d138e Assume prlimit64 is available.
This patch makes sysdeps/unix/sysv/linux code assume the prlimit64
syscall is always available, given the minimum of a 3.2 kernel.

__ASSUME_PRLIMIT64, which in fact was no longer used, is removed.
Code conditional on __NR_prlimit64 being defined is made
unconditional.  Fallback code for the case where prlimit64 produces an
ENOSYS error is removed, substantially simplifying some functions.

Tested for x86_64 and x86.

	* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_PRLIMIT64):
	Remove macro.
	* sysdeps/unix/sysv/linux/getrlimit64.c (__getrlimit64): Assume
	prlimit64 is always available and does not give an ENOSYS error.
	* sysdeps/unix/sysv/linux/prlimit.c [__NR_prlimit64]: Make code
	unconditional.
	[!__NR_prlimit64]: Remove conditional code.
	* sysdeps/unix/sysv/linux/setrlimit.c (__setrlimit): Assume
	prlimit64 is always available and does not give an ENOSYS error.
	* sysdeps/unix/sysv/linux/setrlimit64.c (__setrlimit64): Likewise.
2017-05-09 14:05:09 +00:00
Zack Weinberg a972dc672c sunrpc/tst-xdrmem2.c: Include stdint.h. 2017-05-09 07:50:56 -04:00
Florian Weimer 0ad970bb13 resolv: Use RES_DFLRETRY consistently [BZ #21474] 2017-05-09 13:19:55 +02:00
Zack Weinberg 2bfdaeddaa Rename cppflags-iterator.mk to libof-iterator.mk, remove extra-modules.mk.
cppflags-iterator.mk no longer has anything to do with CPPFLAGS; all
it does is set libof-$(foo) for a list of files.  extra-modules.mk
does the same thing, but with a different input variable, and doesn't
let the caller control the module.  Therefore, this patch gives
cppflags-iterator.mk a better name, removes extra-modules.mk, and
updates all uses of both.

	* extra-modules.mk: Delete file.
	* cppflags-iterator.mk: Rename to ...
	* libof-iterator.mk: ...this.  Adjust comments.

	* Makerules, extra-lib.mk, benchtests/Makefile, elf/Makefile
	* elf/rtld-Rules, iconv/Makefile, locale/Makefile, malloc/Makefile
	* nscd/Makefile, sunrpc/Makefile, sysdeps/s390/Makefile:
	Use libof-iterator.mk instead of cppflags-iterator.mk or
	extra-modules.mk.

	* benchtests/strcoll-inputs/filelist#en_US.UTF-8: Remove
	extra-modules.mk and cppflags-iterator.mk, add libof-iterator.mk.
2017-05-09 07:06:29 -04:00
Stefan Liebler 61f4fa7fd7 S390: Regenerate ULPs
Updated ulps file - Needed if build with GCC 7.

ChangeLog:

	* sysdeps/s390/fpu/libm-test-ulps: Regenerated.
2017-05-09 09:18:09 +02:00
Carlos O'Donell 7224e32d7b vfprintf.c: Refactor magic number 32 into EXTSIZ.
The magic number 32 is used everywhere as extra size to
use when doing certain operations. This commit refactors
that into a macro so you can change this value if you're
debugging something in a local build.
2017-05-08 16:13:16 -04:00
Joseph Myers 1721145f03 Remove __ASSUME_PROC_PID_TASK_COMM.
This patch removes the __ASSUME_PROC_PID_TASK_COMM macro, and
associated conditional code (in a testcase), now that 3.2 is the
global minimum Linux kernel version supported.

Tested for x86_64.

	* sysdeps/unix/sysv/linux/kernel-features.h
	(__ASSUME_PROC_PID_TASK_COMM): Remove macro.
	* sysdeps/unix/sysv/linux/tst-setgetname.c: Do not include
	<kernel-features.h>.
	(do_test) [!__ASSUME_PROC_PID_TASK_COMM]: Remove conditional code.
2017-05-08 16:44:54 +00:00
Joseph Myers 1278ed2c64 Remove __ASSUME_GETCPU_SYSCALL.
This patch removes the definition of __ASSUME_GETCPU_SYSCALL.  In fact
this macro is unused, probably since:

commit dd26c44403
Author: Adhemerval Zanella <adhemerval.zanella@linaro.com>
Date:   Wed Apr 22 14:21:39 2015 -0300

    Consolidate sched_getcpu

so it could have been removed even without the move to 3.2 as minimum
kernel version on x86_64.

Tested for x86_64.

	* sysdeps/unix/sysv/linux/x86_64/kernel-features.h
	(__ASSUME_GETCPU_SYSCALL): Remove macro.
2017-05-08 14:36:42 +00:00
Florian Weimer c22553effb support: Prevent multiple deletion of temporary files
Otherwise, another user might recreate these files after the first
deletion.  Particularly with temporary directories, this could result
in the removal of unintended files through symbol link attacks.
2017-05-08 16:20:40 +02:00
Florian Weimer 706256afb6 support: Delete temporary files in LIFO order
This is required to remove temporary directories which contain
temporary files.  Previously, FIFO order meant that directory
removal was attempted when the directory still contained files,
which meant that temporary directory cleanup was essentially
unsupported.
2017-05-08 15:54:10 +02:00
Florian Weimer cd354a3849 Remove <sys/ultrasound.h>
This header was once used for constants related to the Gravis
Ultrasound sound card.
2017-05-08 14:59:21 +02:00
Joseph Myers 139ace9575 Require Linux kernel 3.2 or later on x86 / x86_64.
As per the recent discussion, this patch implements a requirement for
Linux 3.2 or later for x86 and x86_64.  This is only the initial
change to increase the configured minimum; it's expected that followup
patches would deal with associated removal of conditionals that are no
longer needed.  If we remove the start-up test on the kernel version,
of course the NEWS and README text should then be revised (to reflect
that this version is just one such that glibc does not intend to
include compatibility code for any older kernel version, rather than
older kernels necessarily failing to work or glibc necessarily having
compatibility code for newer interfaces).

The followups would be able to assume presence of getcpu (x86_64),
recvmmsg (not always through its own syscall, sometimes only through
socketcall), sendmmsg (likewise), /proc/$pid/task/$tid/comm, f_flags
from statfs, prlimit64.

Tested for x86_64 and x86.

	* sysdeps/unix/sysv/linux/i386/configure.ac (arch_minimum_kernel):
	Remove.
	* sysdeps/unix/sysv/linux/i386/configure: Regenerated.
	* sysdeps/unix/sysv/linux/x86_64/64/configure.ac
	(arch_minimum_kernel): Remove.
	* sysdeps/unix/sysv/linux/x86_64/64/configure: Regenerated.
	* README: Update statement about Linux kernel requirements.
2017-05-08 10:45:20 +00:00
Adhemerval Zanella 717da4b3be manual: Add preadv and pwritev documentation
* manual/llio.texi: Add preadv and pwritev documentation.
2017-05-04 17:44:12 -03:00
Joseph Myers 176804300b Fix network headers stdint.h namespace (bug 21455).
conform/ namespace tests of arpa/inet.h, netdb.h and netinet/in.h fail
for UNIX98 and XPG42 because of inclusion of stdint.h, which defines
macros not permitted in those headers for those standards.  UNIX98
allows them to include inttypes.h, but (predating C99) has restricted
inttypes.h contents (not yet tested in the conform/ tests) not
including those macros; XPG4.2 has no such permission and no
inttypes.h / stdint.h at all.

This patch rearranges the headers to avoid this issue.  intN_t
definitions move to bits/stdint-intn.h, and uintN_t definitions to
bits/stdint-uintn.h.  (These are not bits/types/ headers because they
each define four types.  They are separate rather than just a single
header because sys/types.h defines intN_t but u_intN_t rather than
uintN_t - and while sys/types.h could define uintN_t because of the
POSIX reservation of *_t, existing practice there is largely to
condition types on appropriate feature test macros, and indeed there
is at least one open bug report (14553) about a type that's not
so-conditioned, so maybe types there should actually have conditions
added where appropriate.)  The affected network headers are then made
to include bits/stdint-uintn.h instead of stdint.h.  This allows six
XFAILs to be removed.

This doesn't do anything about inttypes.h defining more than it should
for UNIX98, but we don't have conformtest expectations for that case
at present (and my inclination is that a fix for that should be as
local as possible - affecting only inttypes.h, not stdint.h, only for
the case of __USE_UNIX98 && !__USE_ISOC99).

Tested for x86_64.

	[BZ #21455]
	* bits/stdint-intn.h: New file.
	* bits/stdint-uintn.h: Likewise.
	* stdlib/Makefile (headers): Add bits/stdint-intn.h and
	bits/stdint-uintn.h.
	* inet/netinet/in.h: Include <bits/stdint-uintn.h> instead of
	<stdint.h>.
	* posix/sys/types.h: Include <bits/stdint-intn.h>.
	(__int8_t_defined): Do not define here.
	(int8_t): Likewise.
	(int16_t): Likewise.
	(int32_t): Likewise.
	(int64_t): Likewise.
	[__GNUC_PREREQ (2, 7)] (__intN_t): Likewise.
	* resolv/netdb.h: Include <bits/stdint-uintn.h> instead of
	<stdint.h>.
	* include/netdb.h [_ISOMAC]: Do not include <stdint.h>.
	* sysdeps/generic/stdint.h: Include <bits/stdint-intn.h> and
	<bits/stdint-uintn.h>.
	(int8_t): Do not define here.
	(int16_t): Likewise.
	(int32_t): Likewise.
	(int64_t): Likewise.
	(uint8_t): Likewise.
	(uint16_t): Likewise.
	(uint32_t): Likewise.
	(uint64_t): Likewise.
	* conform/Makefile (test-xfail-XPG42/arpa/inet.h/conform): Remove
	variable.
	(test-xfail-XPG42/netdb.h/conform): Likewise.
	(test-xfail-XPG42/netinet/in.h/conform): Likewise.
	(test-xfail-UNIX98/arpa/inet.h/conform): Likewise.
	(test-xfail-UNIX98/netdb.h/conform): Likewise.
	(test-xfail-UNIX98/netinet/in.h/conform): Likewise.
2017-05-04 20:36:42 +00:00
Paul E. Murphy 593bf7189a ldbl-128: Use mathx_hidden_def inplace of hidden_def
This provides a extra macro expansion before invoking
the hidden_def macro.  This is necessary to build the
ldbl-128 files as float128 correctly.

	* sysdeps/generic/math_private.h:
	(mathx_hidden_def): New macro.
	* sysdeps/ieee754/ldbl-128/s_finitel.c: Replace hidden_def with
	the above.
	* sysdeps/ieee754/ldbl-128/s_isinfl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_isnanl.c: Likewise.
2017-05-04 14:47:27 -03:00
Joseph Myers 4c3992fc45 Fix signal.h bsd_signal namespace (bug 21445).
signal.h declares bsd_signal for __USE_XOPEN.  But this function was
obsoleted in the 2001 edition of POSIX and removed in the 2008
edition, so it should not be declared when the 2008 edition is in use.
This patch fixes the conditionals accordingly.  (This does not fix any
conform/ test failures because of other namespace issues in signal.h.)

Tested for x86_64.

	[BZ #21445]
	* signal/signal.h [__USE_XOPEN2K8] (bsd_signal): Do not declare.
2017-05-04 17:38:05 +00:00
Joseph Myers fd9f30f6f9 Use __glibc_reserved convention in mcontext, sigcontext (bug 21457).
This patch implements the most straightforward part of fixing
namespace issues for sys/ucontext.h and related headers: where fields
in sys/ucontext.h or bits/sigcontext.h are named "reserved", "padding"
or similar, they are renamed to use the __glibc_reserved* naming
convention.  It does not change fields with a leading underscore, or
even those with a prefix such as uc_ or sc_.  It only fixes a small
part of bug 21457, so no XFAILs are removed.

Tested for x86_64 and x86, and with build-many-glibcs.py.

	[BZ #21457]
	* sysdeps/unix/sysv/linux/mips/sys/ucontext.h
	[_MIPS_SIM != _ABIO32] (mcontext_t): Rename field reserved to
	__glibc_reserved1.
	* sysdeps/unix/sysv/linux/x86/bits/sigcontext.h
	(struct _fpx_sw_bytes): Rename field padding to __glibc_reserved1.
	(struct _fpxreg): Likewise.
	[!__x86_64__] (struct _fpstate): Rename field reserved to
	__glibc_reserved1.  Rename field padding to __glibc_reserved2.
	[__x86_64__] (struct _fpstate): Rename field padding to
	__glibc_reserved1.
	(struct _xsave_hdr): Rename field reserved1 to __glibc_reserved1.
	Rename field reserved2 to __glibc_reserved2.
	* sysdeps/unix/sysv/linux/x86/sys/ucontext.h
	[__x86_64__] (struct _libc_fpxreg): Rename field padding to
	__glibc_reserved1.
	[__x86_64__] (struct _libc_fpstate): Rename field padding to
	__glibc_reserved1.
2017-05-04 11:26:33 +00:00
Rajalakshmi Srinivasaraghavan 808befbf9e powerpc: Fix strncat ifunc selection
Correct hwcap usage in strncat introduced by commit
249dcdb71b.
Tested on power7 and power8 systems
2017-05-04 12:35:56 +05:30
H.J. Lu 1432d38ea0 x86: Set dl_platform and dl_hwcap from CPU features [BZ #21391]
dl_platform and dl_hwcap are set from AT_PLATFORM and AT_HWCAP very
early during startup.  They are used by dynamic linker to determine
platform and build an array of hardware capability names, which are
added to search path when loading shared object.  dl_platform and
dl_hwcap are unused on x86-64.  On i386, i386, i486, i586 and i686
platforms were supported and only SSE2 capability was used.

On x86, usage of AT_PLATFORM and AT_HWCAP to determine platform and
processor capabilities is obsolete since all information is available
in dl_x86_cpu_features.  This patch sets dl_platform and dl_hwcap from
dl_x86_cpu_features in dynamic linker.  On i386, the available plaforms
are changed to i586 and i686 since i386 has been deprecated.  On x86-64,
the available plaforms are haswell, which is for Haswell class processors
with BMI1, BMI2, LZCNT, MOVBE, POPCNT, AVX2 and FMA, and xeon_phi, which
is for Xeon Phi class processors with AVX512F, AVX512CD, AVX512ER and
AVX512PF.  A capability, avx512_1, is also added to x86-64 for AVX512
ISAs: AVX512F, AVX512CD, AVX512BW, AVX512DQ and AVX512VL.

	[BZ #21391]
	* sysdeps/i386/dl-machine.h (dl_platform_init) [IS_IN (rtld)]:
	Only call init_cpu_features.
	[!IS_IN (rtld)]: Only set GLRO(dl_platform) to NULL if needed.
	* sysdeps/x86_64/dl-machine.h (dl_platform_init): Likewise.
	* sysdeps/i386/dl-procinfo.h: Removed.
	* sysdeps/unix/sysv/linux/i386/dl-procinfo.h: Don't include
	<sysdeps/i386/dl-procinfo.h> nor <ldsodefs.h>.  Include
	<sysdeps/x86/dl-procinfo.h>.
	(_dl_procinfo): Replace _DL_HWCAP_COUNT with 32.
	* sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h [!IS_IN (ldconfig)]:
	Include <sysdeps/x86/dl-procinfo.h> instead of
	 <sysdeps/generic/dl-procinfo.h>.
	* sysdeps/x86/cpu-features.c: Include <dl-hwcap.h>.
	(init_cpu_features): Set dl_platform, dl_hwcap and dl_hwcap_mask.
	* sysdeps/x86/cpu-features.h (bit_cpu_LZCNT): New.
	(bit_cpu_MOVBE): Likewise.
	(bit_cpu_BMI1): Likewise.
	(bit_cpu_BMI2): Likewise.
	(index_cpu_BMI1): Likewise.
	(index_cpu_BMI2): Likewise.
	(index_cpu_LZCNT): Likewise.
	(index_cpu_MOVBE): Likewise.
	(index_cpu_POPCNT): Likewise.
	(reg_BMI1): Likewise.
	(reg_BMI2): Likewise.
	(reg_LZCNT): Likewise.
	(reg_MOVBE): Likewise.
	(reg_POPCNT): Likewise.
	* sysdeps/x86/dl-hwcap.h: New file.
	* sysdeps/x86/dl-procinfo.h: Likewise.
	* sysdeps/x86/dl-procinfo.c (_dl_x86_hwcap_flags): New.
	(_dl_x86_platforms): Likewise.
2017-05-03 13:44:35 -07:00
DJ Delorie 3b5f801ddb Tweak realloc/MREMAP comment to be more accurate.
MMap'd memory isn't shrunk without MREMAP, but IIRC this is intentional for
performance reasons.  Regardless, this patch tweaks the existing comment to
be more accurate wrt the existing code.

	[BZ #21411]
	* malloc/malloc.c: Tweak realloc/MREMAP comment to be more accurate.
2017-05-03 16:28:01 -04:00
Phil Blundell e35ac97cc8 Correct misplaced comments in struct ip_mreq_source 2017-05-03 20:59:51 +01:00
Carlos O'Donell fa17b9c720 Bug 20116: Clarify behaviour of PD->lock.
Add comments to the concurrency notes to clarify the semaphore-like and
mutex-like behaviours of PD->lock.
2017-05-03 15:24:43 -04:00
Adhemerval Zanella b62c381591 Consolidate Linux epoll_wait syscall
This patch consolidates the epoll_wait Linux syscall generation on
sysdeps/unix/sysv/linux/epoll_wait.c.  The implementation tries to
use __NR_epoll_wait if defined, otherwise calls epoll_pwait.

Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32,
arch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu.

	* sysdeps/unix/sysv/linux/epoll_wait.c: New file.
	* sysdeps/unix/sysv/linux/generic/epoll_wait.c: Remove file.
	* sysdeps/unix/sysv/linux/syscalls.list: Remove epoll_wait from
	auto-generation list.
2017-05-03 10:36:43 -03:00
Adhemerval Zanella 26f28fd73d Consolidate Linux select implementation
This patch consolidates the select Linux syscall implementation on
sysdeps/unix/sysv/linux/select.c.  The changes are:

  1. Remove select from auto-generation syscalls.list on the architecture
     that uses __NR_select.
  2. Remove generic implementation add a default one that handle all
     current cases (with the expection of alpha)
     The new default implementation will either use __NR_select if
     available of fallback to __NR_pselect6 otherwise.
  3. Add a alpha outlier implementation which requires old compatibility
     symbols.

Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32,
arch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu.

	* sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Add
	osf_select.
	* sysdeps/unix/sysv/linux/alpha/select.c: New file.
	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove select and
	osf_select from auto-generation list.
	* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise.
	* sysdeps/unix/sysv/linux/generic/select.c: Remove file.
	* sysdeps/unix/sysv/linux/select.c: New file.
2017-05-03 10:36:36 -03:00
Adhemerval Zanella b5eede9730 Consolidate Linux poll implementation
This patch consolidates the poll Linux syscall implementation on
sysdeps/unix/sysv/linux/poll.c.  It basically removes poll from
auto-generation list and add a default implementation that either
call __NR_poll directly (if the kernel headers defines it) or
ppoll adjusting the timeout argument (as the generic implementation).

Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32,
aarch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu.

	* sysdeps/unix/sysv/linux/generic/poll.c: Remove file.
	* sysdeps/unix/sysv/linux/poll.c: New file.
	* sysdeps/unix/sysv/linux/syscalls.list: Remove poll from
	auto-generation list.
2017-05-03 10:36:01 -03:00
Joseph Myers 14ea415d04 Add HWCAP_ASIMDRDM from Linux 4.11 to AArch64 bits/hwcap.h.
This patch adds the HWCAP_ASIMDRDM macro from Linux 4.11 to the
AArch64 bits/hwcap.h.

Tested (compilation only) with build-many-glibcs.py.

	* sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h (HWCAP_ASIMDRDM):
	New macro.
2017-05-03 11:04:07 +00:00
Vladimir Mezentsev b3d9c9a20c sparc: handle R_SPARC_DISP64 and R_SPARC_REGISTER relocs
The Studio compiler generates relocation types which are not supported
in glibc. Handle these relocs.

Tested in sparc64-linux-gnu. No regressions.

	BZ #21179]
	* sysdeps/sparc/sparc64/dl-machine.h: Handle R_SPARC_DISP64 and
	R_SPARC_REGISTER relocations.
2017-05-02 16:57:31 -03:00
Adhemerval Zanella 827b823783 posix: Fix internal p{read,write} plt usage
This patch adds internal alias for __pread, __pread64, and __pwrite
following the already in place one for __pwrite64.  This is not used
in any implementation but on microblaze on preadv/pwritev fallback
(since it does not define __ASSUME_PREADV).

In fact it was signaled by commit c35db50ff5 which update the expected
localptl.data for the architecture based on resulted value.  This patch
updates the plt for microblaze now that p{read,write}{64} are correctly
routed to use internal alias.

Checked on x86_64-linux-gnu and a build for all supported architectures
(no all variants although).

	* include/unistd.h (__pread): Add libc_hidden_proto.
	(__pread64): Likewise.
	(__pwrite): Likewise.
	* sysdeps/unix/sysv/linux/microblaze/localplt.data [libc.so]
	(__pread64): Remove.
	* sysdeps/unix/sysv/linux/pread.c (__pread64): Add libc_hidden_weak.
	* sysdeps/unix/sysv/linux/pread64.c (__pread64): Likewise.
	* sysdeps/unix/sysv/linux/pwrite.c (__pwrite): Likewise.
2017-05-02 14:57:40 -03:00
Tulio Magno Quites Machado Filho 24a10cfb3e powerpc: Update powerpc-fpu libm-test-ulps
* sysdeps/powerpc/fpu/libm-test-ulps: Update.
2017-05-02 13:40:11 -03:00
Adhemerval Zanella fa66f341a0 nptl: Using libsupport for tst-cancel4*
Checked on x86_64-linux-gnu.

	* nptl/tst-cancel4-common.c: Use libsupport.
	* nptl/tst-cancel4-common.h: Likewise.
	* nptl/tst-cancel4.c (tf_read): Likewise.
	(tf_readv): Likewise.
	(tf_write): Likewise.
	(tf_writev): Likewise.
	(tf_sleep): Likewise.
	(tf_usleep): Likewise.
	(tf_nanosleep): Likewise.
	(tf_select): Likewise.
	(tf_pselect): Likewise.
	(tf_poll): Likewise.
	(tf_ppoll): Likewise.
	(tf_wait): Likewise.
	(tf_waitpid): Likewise.
	(tf_waitid): Likewise.
	(tf_sigpause): Likewise.
	(tf_sigsuspend): Likewise.
	(tf_sigwait): Likewise.
	(tf_sigwaitinfo): Likewise.
	(tf_sigtimedwait): Likewise.
	(tf_pause): Likewise.
	(tf_accept): Likewise.
	(tf_send): Likewise.
	(tf_recv): Likewise.
	(tf_recvfrom): Likewise.
	(tf_recvmsg): Likewise.
	(tf_open): Likewise.
	(tf_close): Likewise.
	(tf_pread): Likewise.
	(tf_pwrite): Likewise.
	(tf_preadv): Likewise.
	(tf_pwritev): Likewise.
	(tf_fsync): Likewise.
	(tf_fdatasync): Likewise.
	(tf_msync): Likewise.
	(tf_sendto): Likewise.
	(tf_sendmsg): Likewise.
	(tf_creat): Likewise.
	(tf_connect): Likewise.
	(tf_tcdrain): Likewise.
	(tf_msgrcv): Likewise.
	(tf_msgsnd): Likewise.
	* nptl/tst-cancel4_1.c (tf_sendmmsg): Likewise.
	* nptl/tst-cancel4_2.c (tf_recvmmsg): Likewise.
2017-05-01 15:41:46 -03:00
Adhemerval Zanella ffd6023885 posix: Using libsupport for p{write,read}v tests
Checked on x86_64-linux-gnu.

	* misc/tst-preadvwritev-common.c (do_prepare): Use libsupport
	expected arguments.
	(do_test): Adapt to use libsupport.
2017-05-01 15:41:45 -03:00
Joseph Myers 25e39b4229 Add TCP_FASTOPEN_CONNECT from Linux 4.11 to netinet/tcp.h.
This patch adds the TCP_FASTOPEN_CONNECT macro from Linux 4.11 to
sysdeps/gnu/netinet/tcp.h.

Tested for x86-64.

	* sysdeps/gnu/netinet/tcp.h (TCP_FASTOPEN_CONNECT): New macro.
2017-05-01 16:18:31 +00:00
Joseph Myers ef0e5f2f5c Add PF_SMC, AF_SMC from Linux 4.11 to bits/socket.h.
This patch adds the PF_SMC / AF_SMC macros from Linux 4.11 to
sysdeps/unix/sysv/linux/bits/socket.h.

Tested for x86_64.

	* sysdeps/unix/sysv/linux/bits/socket.h (PF_SMC): New macro.
	(PF_MAX): Set to 44.
	(AF_SMC): New macro.
2017-05-01 15:11:33 +00:00
Joseph Myers 3e4df7ef13 Default Linux kernel version in build-many-glibcs.py to 4.11.
* scripts/build-many-glibcs.py (Context.checkout): Default Linux
	kernel version to 4.11.
2017-05-01 11:15:43 +00:00