Commit Graph

19114 Commits

Author SHA1 Message Date
Flavio Cruz
e42ce0f45e Fix O_DIRECTORY lookup on trivial translators
* hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Do not remove
leading slash when `file_name' is "/".
2016-01-13 00:48:30 +01:00
Joseph Myers
fb53a27c57 Add new header definitions from Linux 4.4 (plus older ptrace definitions).
This patch adds some new header definitions from Linux 4.4:

* MCL_ONFAULT is added to bits/mman.h / bits/mman-linux.h (this was
  already done for hppa).

* PTRACE_SECCOMP_GET_FILTER is added to sys/ptrace.h.  Along with it,
  the older PTRACE_GETSIGMASK and PTRACE_SETSIGMASK, added in Linux
  3.11 but missed at the time, are also added.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

	* bits/mman-linux.h [!MCL_CURRENT] (MCL_ONFAULT): New macro.
	* sysdeps/unix/sysv/linux/alpha/bits/mman.h (MCL_ONFAULT):
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/mman.h (MCL_ONFAULT):
	Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/mman.h (MCL_ONFAULT):
	Likewise.
	* sysdeps/unix/sysv/linux/sys/ptrace.h (PTRACE_GETSIGMASK): New
	enum constant and macro.
	(PTRACE_SETSIGMASK): Likewise.
	(PTRACE_SECCOMP_GET_FILTER): Likewise.
	* sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
	(PTRACE_GETSIGMASK): Likewise.
	(PTRACE_SETSIGMASK): Likewise.
	(PTRACE_SECCOMP_GET_FILTER): Likewise.
	* sysdeps/unix/sysv/linux/ia64/sys/ptrace.h (PTRACE_GETSIGMASK):
	Likewise.
	(PTRACE_SETSIGMASK): Likewise.
	(PTRACE_SECCOMP_GET_FILTER): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
	(PTRACE_GETSIGMASK): Likewise.
	(PTRACE_SETSIGMASK): Likewise.
	(PTRACE_SECCOMP_GET_FILTER): Likewise.
	* sysdeps/unix/sysv/linux/s390/sys/ptrace.h (PTRACE_GETSIGMASK):
	Likewise.
	(PTRACE_SETSIGMASK): Likewise.
	(PTRACE_SECCOMP_GET_FILTER): Likewise.
	* sysdeps/unix/sysv/linux/sparc/sys/ptrace.h (PTRACE_GETSIGMASK):
	Likewise.
	(PTRACE_SETSIGMASK): Likewise.
	(PTRACE_SECCOMP_GET_FILTER): Likewise.
	* sysdeps/unix/sysv/linux/tile/sys/ptrace.h (PTRACE_GETSIGMASK):
	Likewise.
	(PTRACE_SETSIGMASK): Likewise.
	(PTRACE_SECCOMP_GET_FILTER): Likewise.
2016-01-12 12:42:55 +00:00
Adhemerval Zanella
d9b965fa56 Fix isinf/isnan declaration conflict with C++11
GLIBC declares isinf and isnan as expected by Unix98 and for C99 programs
these functions are hidden by the generics inf and isnan macros.
However C++11 defines isinf and isnan with the same semantics as C99
but requires that they are functions not macros (C++11 26.8 [c.math]
paragraph 10).

This then results in a conflict for perfectly valid C++11 programs:

--
using std::isinf;
using std::isnan;

double d1 = isinf(1.0);
double d2 = isnan(1.0);

d.cc:3:12: error: ‘constexpr bool std::isinf(double)’ conflicts with a previous declaration
 using std::isinf;
[...]
/usr/include/bits/mathcalls.h:201:1: note: previous declaration ‘int isinf(double)’
 __MATHDECL_1 (int,isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));
[...]
--

This patch fixes the prototypes by leaving the obsolete functions
defined for C++98 code (since they do not conflict with any standard
function in C++98), however preventing them on C++11.

No issues found in libstdc++ tests and check on x86_64 and i686 with
glibc testsuite.

Patch from Jonathan Wakely  <jwakely.gcc@gmail.com>.

	[BZ #19439]
	* math/bits/mathcalls.h
	[!__cplusplus || __cplusplus < 201103L] (isinf): Do not declare
	prototype.
	[!__cplusplus || __cplusplus < 201103L] (isnan): Likewise.
2016-01-11 17:13:36 -02:00
Andreas Schwab
c83196b0df Force rereading TZDEFRULES after it was used to set DST rules only (bug #19253)
If the TZDEFRULES file was used to set the DST rules when $TZ didn't
provide any we need to make sure that the next time it is used we
recompute everything as __tzfile_default changes some setting from what is
provided by TZDEFRULES.
2016-01-11 16:42:25 +01:00
Paul Eggert
97ee300903 Fix doc quoting problems with Texinfo 5
Without this change, in the info file output, Texinfo 5 quotes code
in text with undirected single quotes 'like this' and generates
code examples that with many PDF readers cannot be cut out of PDFs
and pasted into code.
* manual/libc.texinfo: Configure the libc manual like the GNU
Emacs manual, by using @documentencoding and setting
txicodequoteundirected and txicodequotebacktick.  This way,
Texinfo 5 quotes code in text with directed single quotes ‘like
this’ and produces examples that can be cut out of PDFs.  This
change causes Texinfo 5 to generate info files that contain UTF-8
characters in the set {'‘', '’', '“', '”', 'Ä', 'ä', 'ö', '−',
'–', '—', '©', '⇒', '•', '…'}, which is OK nowadays.
2016-01-10 00:20:51 -08:00
Tulio Magno Quites Machado Filho
42bf1c8971 powerpc: Enforce compiler barriers on hardware transactions
Work around a GCC behavior with hardware transactional memory built-ins.
GCC doesn't treat the PowerPC transactional built-ins as compiler
barriers, moving instructions past the transaction boundaries and
altering their atomicity.
2016-01-08 17:47:33 -02:00
Marko Myllynen
bc49a7afd3 Make shebang interpreter directives consistent
Undo changes in files maintained elsewhere.
2016-01-08 14:09:06 -05:00
Carlos Eduardo Seo
d2de9ef7ad powerpc: Add hwcap2 bits for POWER9.
Added hwcap2 bit masks for Power ISA 3.0 and VSX IEEE binary float 128-bit
features.
2016-01-08 11:19:40 -02:00
John David Anglin
48025aa9ed hppa: fix dladdr [BZ #19415]
The attached patch fixes dladdr on hppa.

Instead of using the generic version of _dl_lookup_address, we use an
implementation more or less modeled after __canonicalize_funcptr_for_compare()
in gcc.  The function pointer is analyzed and if it points to the
trampoline used to call _dl_runtime_resolve just before the global
offset table, then we call _dl_fixup to resolve the function pointer.
Then, we return the instruction pointer from the first word of the
descriptor.

The change fixes the testcase provided in [BZ #19415] and the Debian
nss package now builds successfully.
2016-01-08 02:19:26 -05:00
Mike Frysinger
6e76c11f89 longlong: fix sh -Wundef builds
This file fails when building for SuperH as it assumes __SHMEDIA__
is always defined.  Update the code to check if it's defined.
2016-01-07 17:29:17 -05:00
Andrew Stubbs
5d29eefd61 longlong: add SH FDPIC support 2016-01-07 17:27:32 -05:00
Richard Henderson
7f49b7c020 longlong.h: Disable alpha umul_ppmm for old g++
Causes "unexpected AST of kind MULT_HIGHPART" error with bootstrap from gcc 4.8.
2016-01-07 17:22:30 -05:00
Mike Frysinger
1f89b8d881 xstat: only check to see if __ASSUME_ST_INO_64_BIT is defined
We define __ASSUME_ST_INO_64_BIT by default for Linux targets, and then
undef it for alpha/sh targets.  But the code that uses it looks at its
value (as 0/1) rather than whether it's defined (like all other assume
knobs).  Change the code to see if it's defined to fix build Wundef build
errors for alpha/sh.
2016-01-07 14:37:09 -05:00
Paul Eggert
670a687dea Update timezone code from tzcode 2015g.
This patch updates the timezone code from tzcode 2015g.  The Makefile
and README changes are based on those in Paul's patch
<https://sourceware.org/ml/libc-alpha/2015-05/msg00553.html>.

Tested for x86_64 and x86.

2016-01-06  Paul Eggert  <eggert@cs.ucla.edu>
	    Joseph Myers  <joseph@codesourcery.com>

	* timezone/private.h: Update from tzcode 2015g.
	* timezone/tzfile.h: Likewise.
	* timezone/tzselect.ksh: Likewise.
	* timezone/zdump.c: Likewise.
	* timezone/zic.c: Likewise.
	* timezone/ialloc.c: Remove file.
	* timezone/scheck.c: Likewise.
	* timezone/Makefile (extra-objs): Remove variable.
	($(objpfx)zic): Do not depend on scheck.o and ialloc.o.
	(tz-cflags): Add -DHAVE_GETTEXT -DUSE_LTZ=0
	-Wno-maybe-uninitialized.
	(CFLAGS-zdump.c): Remove -fwrapv -DNOID -DHAVE_GETTEXT.
	(CFLAGS-zic.c): Remove -DNOID -DHAVE_GETTEXT.
	(CFLAGS-ialloc.c): Remove variable.
	(CFLAGS-scheck.c): Likewise.
	* timezone/README: Update list of files from tzcode.
2016-01-07 11:45:07 +00:00
Khem Raj
45c4f3665a argp: Use fwrite_unlocked instead of __fxprintf when !_LIBC
__fxprintf is not available when argp is built outside libc.
gnulib has the same logic already.
2016-01-07 04:25:54 -05:00
Marko Myllynen
48d0341cdd Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
John David Anglin
d7f914848b hppa: fix pthread spinlock
URL: https://bugs.debian.org/725508
2016-01-06 17:26:04 -05:00
H.J. Lu
730bbab2c3 Mark internal unistd functions hidden in ld.so
Since internal unistd functions are only used internally in ld.so and
libc.so, they can be made hidden.  __close, __getcwd, __getpid,
__libc_read and __libc_write can't be hidden in ld.so on Hurd since they
will be preempted by the ones in libc.so after bootstrap.

	[BZ #19122]
	* include/unistd.h [IS_IN (rtld)]: Include <dl-unistd.h>.
	* sysdeps/generic/dl-unistd.h: New file.
	* sysdeps/mach/hurd/dl-unistd.h: Likewise.
2016-01-06 12:54:10 -08:00
H.J. Lu
38acf35697 Mark ld.so internal mmap functions hidden in ld.so
Since ld.so internal mmap functions are only used internally in ld.so,
they can be made hidden.  Don't hide __mmap on Hurd, since __mmap in
ld.so will be preempted by the one in libc.so after bootstrap.

	 [BZ #19122]
	 * include/sys/mman.h [IS_IN (rtld)]: Include <dl-mman.h>.
	 * sysdeps/generic/dl-mman.h: New file.
	 * sysdeps/mach/hurd/dl-mman.h: Likewise.
2016-01-06 11:28:56 -08:00
Joseph Myers
084e7d57bb Update miscellaneous files from upstream sources.
This patch updates texinfo.tex, config.guess, config.sub and
move-if-change from their respective upstream sources.

	* manual/texinfo.tex: Update to version 2016-01-04.21 with
	trailing whitespace removed.
	* scripts/config.guess: Update to version 2016-01-01.
	* scripts/config.sub: Update to version 2016-01-01.
	* scripts/move-if-change: Update from gnulib.
2016-01-05 18:04:06 +00:00
Anton Blanchard
0a1f1e78fb Eliminate redundant sign extensions in pow()
When looking at the code generated for pow() on ppc64 I noticed quite
a few sign extensions. Making the array indices unsigned reduces the
number of sign extensions from 24 to 7.

Tested for powerpc64le and x86_64.
2016-01-04 14:55:38 -02:00
Joseph Myers
1979f3c1ad Update copyright dates not handled by scripts/update-copyrights.
I've updated copyright dates in glibc for 2016.  This is the patch for
the changes not generated by scripts/update-copyrights and subsequent
build / regeneration of generated files.

	* NEWS: Update copyright dates.
	* catgets/gencat.c (print_version): Likewise.
	* csu/version.c (banner): Likewise.
	* debug/catchsegv.sh: Likewise.
	* debug/pcprofiledump.c (print_version): Likewise.
	* debug/xtrace.sh (do_version): Likewise.
	* elf/ldconfig.c (print_version): Likewise.
	* elf/ldd.bash.in: Likewise.
	* elf/pldd.c (print_version): Likewise.
	* elf/sotruss.sh: Likewise.
	* elf/sprof.c (print_version): Likewise.
	* iconv/iconv_prog.c (print_version): Likewise.
	* iconv/iconvconfig.c (print_version): Likewise.
	* locale/programs/locale.c (print_version): Likewise.
	* locale/programs/localedef.c (print_version): Likewise.
	* login/programs/pt_chown.c (print_version): Likewise.
	* malloc/memusage.sh (do_version): Likewise.
	* malloc/memusagestat.c (print_version): Likewise.
	* malloc/mtrace.pl: Likewise.
	* manual/libc.texinfo: Likewise.
	* nptl/version.c (banner): Likewise.
	* nscd/nscd.c (print_version): Likewise.
	* nss/getent.c (print_version): Likewise.
	* nss/makedb.c (print_version): Likewise.
	* posix/getconf.c (main): Likewise.
	* scripts/test-installation.pl: Likewise.
	* sysdeps/unix/sysv/linux/lddlibc4.c (main): Likewise.
2016-01-04 16:26:30 +00:00
Joseph Myers
f7a9f785e5 Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
Helge Deller
d4eed61f85 hppa: Add MAP_HUGETLB and MAP_STACK defines [BZ #19285]
The attached patch adds some upstream defines like MAP_HUGETLB and MAP_STACK
in mman.h for the hppa architecture.

The existing MADV_xxK_PAGES defines were dropped upstream, because they were
originally added many years ago based on a proposed patch for the Linux kernel
which was never applied. So, this patch drops those unneeded defines.
2016-01-02 23:39:49 -05:00
Mike Frysinger
19e0751014 ia64: fpu: fix gamma definition handling [BZ #15421]
The rework in commit d709042a6e broke
buiding on ia64 due to compat_symbol expanding into ... in some cases.
The common files were wrapped in a BUILD_LGAMMA check, but the ia64
ones were not.  Add that logic to the ia64 files too.
2016-01-01 22:17:07 -05:00
Dmitry V. Levin
e0043e17df Fix linux personality syscall wrapper
The personality system call, starting with linux kernel commit
v2.6.29-6609-g11d06b2a1e5658f448a308aa3beb97bacd64a940, always
successfully changes the personality if requested.  The syscall
wrapper, however, still can return an error in the following cases:
- the value returned by the system call looks like an error
due to architecture limitations of 32-bit kernels;
- a personality greater than 0xffffffff is passed to the system call,
and the 64-bit kernel does not have commit
v2.6.35-rc1-372-g485d527686850d68a0e9006dd9904f19f122485e
that would truncate this value to unsigned int;
- on sparc64, the value returned by the system call looks like an error
due to sparc64 kernel sign extension bug.

The solution is three-fold:
- move generic syscalls.list personality entry to generic 64-bit
syscalls.list file;
- for each 32-bit architecture that use negated errno semantics,
add a NOERRNO personality entry to their syscalls.list file;
- for sparc64 and 32-bit architectures that use dedicated registers
to flag syscall errors, add a wrapper around personality syscall;
if the system call return value is flagged as an error, this wrapper
returns the negated "would be errno" value, otherwise it returns
the system call return value; on sparc64, it also truncates the
personality argument to unsigned int before passing it to the kernel.

[BZ #19408]
* sysdeps/unix/sysv/linux/personality.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/personality.c: Likewise.
* sysdeps/unix/sysv/linux/tst-personality.c: Likewise.
* sysdeps/unix/sysv/linux/Makefile [$(subdir) == misc]
(sysdep_routines): Add personality.
(tests): Add tst-personality.
* sysdeps/unix/sysv/linux/syscalls.list (personality): Move ...
* sysdeps/unix/sysv/linux/wordsize-64/syscalls.list: ... here.
* sysdeps/unix/sysv/linux/arm/syscalls.list (personality): New entry.
* sysdeps/unix/sysv/linux/hppa/syscalls.list (personality): Likewise.
* sysdeps/unix/sysv/linux/i386/syscalls.list (personality): Likewise.
* sysdeps/unix/sysv/linux/m68k/syscalls.list (personality): Likewise.
* sysdeps/unix/sysv/linux/microblaze/syscalls.list (personality):
Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list (personality):
Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list (personality):
Likewise.
* sysdeps/unix/sysv/linux/sh/syscalls.list (personality): Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list (personality):
Likewise.
2015-12-31 00:17:48 +00:00
Aurelien Jarno
cc42170ef6 Cleanup ARM ioperm implementation (step 2)
Since GLIBC requires a minimum 2.6.32 kernel, the sysctl (CTL_BUS,
CTL_BUS_ISA, ISA_*) is always available.  We can therefore remove the
fallback code reading /etc/arm_systype or parsing /proc/cpuinfo.

Remove fscanf from localplt.data as it is no longer called from within
GLIBC.

	* sysdeps/unix/sysv/linux/arm/ioperm.c: Do not include <string.h>.
	(PATH_ARM_SYSTYPE): Remove.
	(PATH_CPUINFO): Likewise.
	(IO_BASE_FOOTBRIDGE): Likewise.
	(IO_SHIFT_FOOTBRIDGE): Likewise.
	(struct platform): Likewise.
	(init_iosys): Remove compatibility code for 2.4 kernels.
	* sysdeps/unix/sysv/linux/arm/localplt.data: Remove fscanf.
2015-12-30 23:31:18 +01:00
Florian Weimer
1bd5483e10 malloc: Test various special cases related to allocation failures
This test case exercises unusual code paths in allocation functions,
related to allocation failures.  Specifically, the test can reveal
the following bugs:

(a) calloc returns non-zero memory on fallback to sysmalloc.
(b) calloc can self-deadlock because it fails to release
    the arena lock on certain allocation failures.
(c) pvalloc can dereference a NULL arena pointer.

(a) and (b) appear specific to a faulty downstream backport.
(c) was fixed as part of commit 10ad46bc65.

The test for (a) was inspired by a reproducer supplied by Jeff Layton.
2015-12-29 20:32:35 +01:00
Mike Frysinger
d108b75561 list-fixed-bugs: use argparse for the commandline
This makes the interface more friendly to users.
2015-12-29 13:34:51 -05:00
Rob Wu
b674b82109 resolv: Reset defdname before use in __res_vinit [BZ #19369]
Resetting defdname (default domain name) before use in __res_vinit
ensures that the default domain name is correctly set to a default
value when it is not set by the LOCALDOMAIN environment variable or
the "domain" or "search" parameters in resolv.conf

Tested using the steps from:
https://sourceware.org/bugzilla/show_bug.cgi?id=19369
2015-12-29 13:28:04 -05:00
John David Anglin
d51442aacd hppa: Define __NO_LONG_DOUBLE_MATH so headers are consistent with libm build [BZ #19270]
The attached patch fixes BZ #19270 and the Debian gmt package now builds
successfully.  Aside from the comment, the define of __NO_LONG_DOUBLE_MATH
is similar to that in the generic version of glibc.

Build tested on hppa-unknown-linux-gnu with no observed regressions.
2015-12-29 13:24:51 -05:00
Mike Frysinger
d46256f440 ia64: fpu: fix gammaf typo [BZ #15421]
The lgamma rewrite in commit d709042a6e
used "gammaf" in this function when it should have used "gamma".
2015-12-28 22:20:03 -05:00
Dmitry V. Levin
3cf74f8a4a Fix getaddrinfo bug number in ChangeLog and NEWS files
This amends commit 34a9094f49
that erroneously mentions number 11869 instead of 11884.
2015-12-23 20:44:23 +00:00
Torvald Riegel
389fdf78b2 Do not violate mutex destruction requirements.
POSIX and C++11 require that a thread can destroy a mutex if no other
thread owns the mutex, is blocked on the mutex, or will try to acquire
it in the future.  After destroying the mutex, it can reuse or unmap the
underlying memory.  Thus, we must not access a mutex' memory after
releasing it.  Currently, we can load the private flag after releasing
the mutex, which is fixed by this patch.
See https://sourceware.org/bugzilla/show_bug.cgi?id=13690 for more
background.

We need to call futex_wake on the lock after releasing it, however.  This
is by design, and can lead to spurious wake-ups on unrelated futex words
(e.g., when the mutex memory is reused for another mutex).  This behavior
is documented in the glibc-internal futex API and in recent drafts of the
Linux kernel's futex documentation (see the draft_futex branch of
git://git.kernel.org/pub/scm/docs/man-pages/man-pages.git).
2015-12-23 18:44:53 +01:00
Florian Weimer
7962541a32 malloc: Update comment for list_lock 2015-12-23 17:23:33 +01:00
Carlos Eduardo Seo
c676e65939 powerpc: Export __parse_hwcap_and_convert_at_platform to libc.a.
Commit 67385a01d2 added a new feature for
powerpc, where we store HWCAP/Platform bits in the TCB.  In the dynamic
linking case, we use the versioned symbol
'__parse_hwcap_and_convert_at_platform' to verify if this feature is
available.  However, the same symbol was not exported to libc.a, making
it not possible for GCC to check for it prior to link time.
2015-12-22 15:41:19 -02:00
Carlos Eduardo Seo
b1f19b8ef1 powerpc: Add basic support for POWER9 sans hwcap.
This patch adds the minimum changes for supporting the POWER9 processor.
2015-12-22 14:45:55 -02:00
Samuel Thibault
2cf3e1aa74 Harmonize generic stdio-lock support with nptl
This fixes build when _IO_funlockfile is a macro, fixes build where
	_IO_acquire_lock_clear_flags2 is used, and fixes unlocking on unexpected
	stack unwind.

	* sysdeps/generic/stdio-lock.h [__EXCEPTIONS] (_IO_acquire_lock,
	_IO_release_lock ): Use cleanup attribute on new
	_IO_acquire_lock_file variable instead of assuming that
	_IO_release_lock will be called.
	[!__EXCEPTIONS] (_IO_acquire_lock): Define to non-existing
	_IO_acquire_lock_needs_exceptions_enabled.
	(_IO_acquire_lock_clear_flags2): New macro.
2015-12-22 14:39:19 +01:00
Adhemerval Zanella
661a29a518 powerpc: Regenerate libm-test-ulps
* sysdeps/powerpc/fpu/libm-test-ulps: Regenerated.
2015-12-22 11:11:01 -02:00
Florian Weimer
90c400bd49 malloc: Fix list_lock/arena lock deadlock [BZ #19182]
* malloc/arena.c (list_lock): Document lock ordering requirements.
	(free_list_lock): New lock.
	(ptmalloc_lock_all): Comment on free_list_lock.
	(ptmalloc_unlock_all2): Reinitialize free_list_lock.
	(detach_arena): Update comment.  free_list_lock is now needed.
	(_int_new_arena): Use free_list_lock around detach_arena call.
	Acquire arena lock after list_lock.  Add comment, including FIXME
	about incorrect synchronization.
	(get_free_list): Switch to free_list_lock.
	(reused_arena): Acquire free_list_lock around detach_arena call
	and attached threads counter update.  Add two FIXMEs about
	incorrect synchronization.
	(arena_thread_freeres): Switch to free_list_lock.
	* malloc/malloc.c (struct malloc_state): Update comments to
	mention free_list_lock.
2015-12-21 16:42:46 +01:00
Siddhesh Poyarekar
b300455644 Consolidate sincos computation for 2.426265 < |x| < 105414350
Like the previous change, exploit the fact that computation for sin
and cos is identical except that it is apart by a quadrant.  Also
remove csloww, csloww1 and csloww2 since they can easily be expressed
in terms of sloww, sloww1 and sloww2.
2015-12-21 10:43:04 +05:30
Siddhesh Poyarekar
f7953c44d5 Consolidate sin and cos code for 105414350 <|x|< 281474976710656
The sin and cos computation for this range of input is identical
except for a difference in quadrants by 1.  Exploit that fact and the
common argument reduction to reduce computations for sincos.
2015-12-21 10:41:46 +05:30
Siddhesh Poyarekar
a045832deb Consolidate range reduction in sincos for x > 281474976710656
Range reduction needs to be done only once for sin and cos, so copy
over all of the relevant functions (__sin, __cos, reduce_and_compute)
and consolidate common code.
2015-12-21 10:40:32 +05:30
Siddhesh Poyarekar
760c2eb7da Fix up ChangeLog 2015-12-21 10:38:45 +05:30
Aurelien Jarno
5537f466d6 i386: move ULPs to i686/multiarch and regenerate new ones for i386
The i386 ULPs are actually the i686/multiarch ones. The i686/multiarch
float ULPs are more precise as the SSE2 version (when available) uses
double for the cosf and sinf functions.

On the other hand the higher precision of the x86 FPU improves the
precision for a few other math functions.

	* sysdeps/i386/fpu/libm-test-ulps: Move to ....
	* sysdeps/i386/i686/multiarch/fpu/libm-test-ulps: ...here.
	* sysdeps/i386/fpu/libm-test-ulps: Regenerate.
2015-12-20 16:36:45 +01:00
Andrew Senkevich
83d776f979 Added memset optimized with AVX512 for KNL hardware.
It shows improvement up to 28% over AVX2 memset (performance results
attached at <https://sourceware.org/ml/libc-alpha/2015-12/msg00052.html>).

    * sysdeps/x86_64/multiarch/memset-avx512-no-vzeroupper.S: New file.
    * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Added new file.
    * sysdeps/x86_64/multiarch/ifunc-impl-list.c: Added new tests.
    * sysdeps/x86_64/multiarch/memset.S: Added new IFUNC branch.
    * sysdeps/x86_64/multiarch/memset_chk.S: Likewise.
    * sysdeps/x86/cpu-features.h (bit_Prefer_No_VZEROUPPER,
    index_Prefer_No_VZEROUPPER): New.
    * sysdeps/x86/cpu-features.c (init_cpu_features): Set the
    Prefer_No_VZEROUPPER for Knights Landing.
2015-12-19 02:47:28 +03:00
Torvald Riegel
794950ed1d Remove unused variable in math/atest-exp2.c. 2015-12-18 11:53:22 +01:00
Adhemerval Zanella
fc48bfbc79 Fix SYSCALL_CANCEL for empty argumetns
This patch fixes the SYSCALL_CANCEL macro for usage with zero argument
number (for instance SYSCALL_CANCEL (pause)) using a similar approach
used for SOCKETCALL_CANCEL.

GLIBC build still does not hit this issue still since SYSCALL_CANCEL
is not currently being used for zero arguments calls.

Tested on i386, x86_64, powerpc64le, aarch64.

	* sysdeps/unix/sysdep.h (SYSCALL_CANCEL): Fix macro for zero argument
	syscalls.
	(__SYSCALL0): New macro.
	(__SYSCALL1): Likewise.
	(__SYSCALL2): Likewise.
	(__SYSCALL3): Likewise.
	(__SYSCALL4): Likewise.
	(__SYSCALL5): Likewise.
	(__SYSCALL6): Likewise.
	(__SYSCALL7): Likewise.
	(__SYSCALL_CONCAT_X): Likewise.
	(__SYSCALL_CONCAT): Likewise.
	(__SYSCALL_DIST): Likewise.
	(__SYSCALL_CALL): Likewise.
2015-12-17 18:16:59 -02:00
H.J. Lu
8ead7a9b94 Provide x32 times
Since times returns 64-bit clock_t on x32, we need to provide x32 times
by redefining INTERNAL_SYSCALL_NCS and INTERNAL_SYSCALL_ERROR_P with
64-bit return type for syscall.  All system calls returning 64-bit
integer, which are lseek, time and times, must be handled specially for
x32.  lseek is handled by x32 lseek.S and time doesn't check syscall
return.  times is the only missed one.  Before this patch, there are

0000000 <__times>:
   0:	b8 64 00 00 40       	mov    $0x40000064,%eax
   5:	0f 05                	syscall
   7:	48 63 d0             	movslq %eax,%rdx
                                ^^^^^^^^^^ Incorrect signed extension
   a:	48 83 fa f2          	cmp    $0xfffffffffffffff2,%rdx
   e:	75 07                	jne    17 <__times+0x17>
  10:	3d 00 f0 ff ff       	cmp    $0xfffff000,%eax
                                ^^^^^^^^^^^^^^^^^^^^^ 32-bit compare
  15:	77 11                	ja     28 <__times+0x28>
  17:	48 83 fa ff          	cmp    $0xffffffffffffffff,%rdx
  1b:	b8 00 00 00 00       	mov    $0x0,%eax
  20:	48 0f 45 c2          	cmovne %rdx,%rax
  24:	c3                   	retq

After this patch, there are

00000000 <__times>:
   0:	b8 64 00 00 40       	mov    $0x40000064,%eax
   5:	0f 05                	syscall
   7:	48 83 f8 f2          	cmp    $0xfffffffffffffff2,%rax
   b:	75 08                	jne    15 <__times+0x15>
   d:	48 3d 00 f0 ff ff    	cmp    $0xfffffffffffff000,%rax
  13:	77 13                	ja     28 <__times+0x28>
  15:	48 83 f8 ff          	cmp    $0xffffffffffffffff,%rax
  19:	ba 00 00 00 00       	mov    $0x0,%edx
  1e:	48 0f 44 c2          	cmove  %rdx,%rax
  22:	c3                   	retq

The incorrect signed extension and 32-bit compare are gone.

	[BZ #19363]
	* sysdeps/unix/sysv/linux/x86_64/x32/times.c: New file.
2015-12-17 11:47:06 -08:00
Adhemerval Zanella
2094350c9c Fix POWER7 logb results for negative subnormals (bug 19375)
The optimized POWER7 logb implementation does not use the absolute
value of the word extracted from the input to apply the leading 0-bits
builtin (to ignore the float sign).  This patch fixes it by
clearing the signal bit in the resulting word.

It fixes the subnormal tests failures when running on POWER7 ou
newer chip.

Tested on powerpc64le (POWER8).

	[BZ# 19375]
	* sysdeps/powerpc/power7/fpu/s_logb.c (__logb): Fix return for
	negative subnormals.
2015-12-17 14:34:33 -02:00
H.J. Lu
d29d57eed9 Add REGISTERS_CLOBBERED_BY_SYSCALL for x86-64
X86-64 system calls use a different calling convention, which clobbers
CC, %r11 an %rcx registers.  Define REGISTERS_CLOBBERED_BY_SYSCALL for
x86-64 inline asm statements.

	* sysdeps/unix/sysv/linux/x86_64/sysdep.h
	(REGISTERS_CLOBBERED_BY_SYSCALL): New.
	(INTERNAL_SYSCALL_NCS): Use it.
	(INTERNAL_SYSCALL_NCS_TYPES): Likewise.
2015-12-16 05:20:15 -08:00
Florian Weimer
3da825ce48 malloc: Fix attached thread reference count handling [BZ #19243]
reused_arena can increase the attached thread count of arenas on the
free list.  This means that the assertion that the reference count is
zero is incorrect.  In this case, the reference count initialization
is incorrect as well and could cause arenas to be put on the free
list too early (while they still have attached threads).

	* malloc/arena.c (get_free_list): Remove assert and adjust
	reference count handling.  Add comment about reused_arena
	interaction.
	(reused_arena): Add comments abount get_free_list interaction.
	* malloc/tst-malloc-thread-exit.c: New file.
	* malloc/Makefile (tests): Add tst-malloc-thread-exit.
	(tst-malloc-thread-exit): Link against libpthread.
2015-12-16 12:39:48 +01:00
H.J. Lu
f1aceee392 Add missing ChangeLog entries 2015-12-15 13:36:34 -08:00
H.J. Lu
c9afcaaafa Enable Silvermont optimizations for Knights Landing
Knights Landing processor is based on Silvermont.  This patch enables
Silvermont optimizations for Knights Landing.

	* sysdeps/x86/cpu-features.c (init_cpu_features): Enable
	Silvermont optimizations for Knights Landing.
2015-12-15 11:46:54 -08:00
Andreas Schwab
42d6443faf Don't emit invalid extra shift character at block boundary by iconv (bug 17197) 2015-12-15 13:40:20 +01:00
Florian Weimer
04ae79a363 Fix aliasing violation in tst-rec-dlopen 2015-12-15 11:48:27 +01:00
Joseph Myers
eed3e1eb79 Make obsolete syscall wrappers into compat symbols (bug 18472).
Various Linux kernel syscalls have become obsolete over time.
Specifically, the following are obsolete in all kernel versions
supported by glibc, are not present for architectures more recently
added to the kernel, and as such, the wrapper functions for them
should be compat symbols, not in static libc and not available for new
links with shared libc.

* bdflush: in Linux 2.6, does nothing if present.

* create_module get_kernel_syms query_module: Linux 2.4 module
  interface, syscalls not present in Linux 2.6.

* uselib: part of the mechanism for loading a.out shared libraries,
  irrelevant with ELF.

This patch adds support for syscalls.list to list syscall aliases of
the form NAME@VERSION:OBSOLETED, with SHLIB_COMPAT conditionals being
generated for such aliases.  Those five syscalls are then made into
compat symbols (obsoleted in glibc 2.23, so future ports won't have
these symbols at all), with the header <sys/kdaemon.h> declaring
bdflush being removed.  When we move to 3.2 as minimum kernel version,
the same can be done for nfsservctl (removed in Linux 3.1) as well.

Tested for x86_64 and x86 (testsuite, as well as checking that the
symbols in question indeed become compat symbols, that they are indeed
omitted from static libc, and that the generated SHLIB_COMPAT
conditionals look right).

	[BZ #18472]
	* sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Handle entries
	for the form NAME@VERSION:OBSOLETED and generate SHLIB_COMPAT
	conditionals for them.
	* sysdeps/unix/make-syscalls.sh (emit_weak_aliases): Likewise.
	* sysdeps/unix/sysv/linux/sys/kdaemon.h: Remove file.
	* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Remove
	sys/kdaemon.h.
	* sysdeps/unix/sysv/linux/syscalls.list (bdflush): Make into
	compat-only syscall, obsoleted in glibc 2.23.
	(create_module): Likewise.
	(get_kernel_syms): Likewise.
	(query_module): Likewise.
	(uselib): Likewise.
	* manual/sysinfo.texi (System Parameters): Do not mention bdflush.
2015-12-14 22:52:15 +00:00
Aurelien Jarno
5db0877750 Cleanup ARM ioperm implementation
Since GLIBC requires a minimum 2.6.32 kernel, the patch cleanups
the ARM ioperm by removing pre-2.4.23 kernel support.
2015-12-12 11:52:06 +01:00
Steve Ellcey
976ef87054 Fix indentation.
* sysdeps/ieee754/flt-32/k_rem_pio2f.c (__kernel_rem_pio2f):
	Fix indentation.
2015-12-11 09:19:37 -08:00
Steve Ellcey
996b03dc22 Fix indentation.
* stdio-common/vfscanf.c (_IO_vfscanf_internal): Fix indentation.
2015-12-11 09:08:45 -08:00
Steve Ellcey
895f3a1f84 Fix indentation.
* stdlib/strtol_l.c (__strtol_l): Fix indentation.
2015-12-11 09:02:16 -08:00
Aurelien Jarno
77356912e8 grantpt: trust the kernel about pty group and permission mode
According to POSIX the grantpt() function does the following:

  The grantpt() function shall change the mode and ownership of the
  slave pseudo-terminal device associated with its master
  pseudo-terminal counterpart. The fildes argument is a file descriptor
  that refers to a master pseudo-terminal device. The user ID of the
  slave shall be set to the real UID of the calling process and the
  group ID shall be set to an unspecified group ID. The permission
  mode of the slave pseudo-terminal shall be set to readable and
  writable by the owner, and writable by the group.

Historically the GNU libc has been responsible to setup the permission
mode to 0620 and the group to 'tty' usually number 5, using the pt_chown
helper, badly known for its security issues. With the creation of the
devpts filesytem in the Linux kernel, this responsibility has been moved
to the Linux kernel. The system is responsible to mount the devpts
filesystem in /dev/pts with the options gid=5 and mode=0620. In that
case the GNU libc has nothing to do and pt_chown is not need anymore. So
far so good.

The problem is that by default the devpts filesystem is shared between
all mounts, and that contrary to other filesystem, the mount options are
honored at the second mount, including for the default mount options.
Given it corresponds to mode=0600 without gid parameter (that is the
filesystem GID of the creating process), it's common to see systems
where the devpts filesystem is mounted using these options. It is enough
to run a "mount -t devpts devpts /mychroot/dev/pts" to come into this
situation, and it's unfortunately wrongly used in a lot of scripts
dealing with chroots, or for creating virtual machines images.

When this happens the GNU libc tries to fix the group and permission
mode of the pty nodes, and given it fails to do so for non-root users,
grantpt() almost always fail. It means users are not able to open new
terminals.

This patch changes grantpt() to not enforce this anymore, while still
enforcing minimum security measures to the permission mode. Therefore
the responsibility to follow POSIX is now shared at the system level,
i.e. kernel + system scripts + GNU libc. It stops trying to change the
group, and makes the pty node readable and writable by the owner, and
writable by the group only when originally writable and when the group
is the tty one.

As a result, on a system wrongly mounted with gid=0 and mode=0600, the
pty nodes won't be accessible by the tty group, but the grantpt()
function will succeed and users will have a working system. The system
is not fully POSIX compliant (which might be an admin choice to default
to "mesg n" mode), but the GNU libc is not to blame here, as without the
pt_chown helper it can't do anything.

With this patch there should not be any reason left to build the GNU
libc with the --enable-pt_chown configure option on a GNU/Linux system.
2015-12-10 22:33:10 +01:00
Paul Eggert
0a13c9e9de Split large string section; add truncation advice
* manual/examples/strncat.c: Remove.
This example was misleading, as the code would have undefined
behavior if "hello" was longer than SIZE.  Anyway, the manual
shouldn't encourage strncpy+strncat for this sort of thing.
* manual/string.texi (Copying Strings and Arrays): Split into
three sections Copying Strings and Arrays, Concatenating Strings,
and Truncating Strings, as this section was way too long.  All
cross-referenced changed.  Add advice about string-truncation
functions.  Remove misleading strncat example.
2015-12-10 08:29:30 -08:00
Carlos O'Donell
d4e301c5c6 Document best practice for disconnected NSS modules.
NSS modules which can run in disconnected modes should
return NSS_STATUS_NOTFOUND and SUCCESS in order to follow
best practice for such modules and ensure user applications
can have these modules configured without causing problems
if the data sources are not connected.
2015-12-10 00:48:15 -05:00
Mike FABIAN
23256f5ed8 Update to Unicode 8.0.0.
Update __STDC_ISO_10646__ to 201505L for Unicode 8.0.0.
Update character encoding, ctype, and transliteration tables.
New scripts autogenerate transliteration tables.
2015-12-10 00:33:48 -05:00
Carlos O'Donell
40b59cace2 Regenerate locale/C-translit.h. 2015-12-09 22:24:26 -05:00
Mike FABIAN
6f84663a4f Generic updates to transliterations.
- Remove duplicate transliterations for U+0152 and U+0153 from
  C-translit.h.in.
- Change Ö U+00D6 LATIN CAPITAL LETTER O WITH STROKE → O
  (instead of → OE)
- Change ö U+00F6 LATIN SMALL LETTER O WITH STROKE → o
  (instead of → oe)
- Add ₹ U+20B9 INDIAN RUPEE SIGN → INR
- Add ₫ U+20AB DONG SIGN → Dong (in addition to "₫ → Đồng")
- Add many others from
  http://unicode.org/cldr/trac/browser/trunk/common/transforms/Latin-ASCII.xml
- Add some more currency signs suggested by Marko Myllynen
- Add another patch with more characters by Marko Myllynen
2015-12-09 21:51:26 -05:00
Joseph Myers
e6a6b1c3de Fix ldbl-128ibm logl inaccuracy near 1 (bug 19351).
The ldbl-128ibm implementation of logl is inaccurate for arguments
near 1, because when deciding whether to bypass a series expansion for
log(1+z), where z = x-1, it compares the square of z rather than z
itself with an epsilon value.  This patch fixes that comparison, so
eliminating the test failures for inaccuracy of logl in such cases.

Tested for powerpc.

	[BZ #19351]
	* sysdeps/ieee754/ldbl-128ibm/e_logl.c (__ieee754_logl): When
	expanding log(1+z), compare z rather than its square with epsilon
	to determine when to avoid evaluating the expansion.
2015-12-09 23:51:11 +00:00
Joseph Myers
f517e06ab7 Fix ldbl-128ibm sinhl spurious overflows (bug 19350).
The ldbl-128ibm implementation of sinhl uses a slightly too small
overflow threshold (similar to bug 16407 for coshl).  This patch fixes
it to use a safe threshold (so that values whose high part is above
the value compared with definitely result in an overflow in all
rounding modes).

Tested for powerpc.

	[BZ #19350]
	* sysdeps/ieee754/ldbl-128ibm/e_sinhl.c (__ieee754_sinhl):
	Increase overflow threshold.
2015-12-09 22:37:08 +00:00
Joseph Myers
ca2fcac629 Fix ldbl-128ibm tanhl inaccuracy for small arguments (bug 19349).
The ldbl-128ibm implementation of tanhl is inaccurate for small
arguments, because it returns x*(1+x) (maybe in an attempt to raise
"inexact") when x itself would be the accurate return value but
multiplying by 1+x introduces large errors.  This patch fixes it to
return x in that case (when the mathematical result is x plus a
negligible remainder on the order of x^3) to avoid those errors.

Tested for powerpc.

	[BZ #19349]
	* sysdeps/ieee754/ldbl-128ibm/s_tanhl.c (__tanhl): Return argument
	when small.
2015-12-09 21:20:18 +00:00
Joseph Myers
e5a5315e2d Use direct socket syscalls for new kernels on i386, m68k, microblaze, sh.
Now that we have __ASSUME_* macros for direct socket syscalls to use
them instead of socketcall when they can be assumed to be available on
socketcall architectures, this patch defines those macros when
appropriate for i386, m68k, microblaze and sh (for 4.3, 4.3, all
supported kernels and 2.6.37, respectively; the only use of socketcall
support on microblaze is it allows accept4 and sendmmsg to be
supported on a wider range of kernel versions).

David, it seems that 32-bit SPARC is the only architecture supported
by glibc that still lacks these direct syscalls.  It would be good to
get them added to the SPARC kernel so we can eventually eliminate
socketcall support in glibc (and thereby just use entries in
sysdeps/unix/syscalls.list for most of these functions) when we can
assume new-enough kernels.

Tested for i386 (testsuite, and that installed shared libraries are
unchanged by this patch - not using a new enough kernel, so this
doesn't actually test much, but the i386 and m68k code is essentially
the same as that already in use for s390).

	* sysdeps/unix/sysv/linux/i386/kernel-features.h
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SOCKET_SYSCALL):
	New macro.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_SOCKETPAIR_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_BIND_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_CONNECT_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_LISTEN_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_ACCEPT4_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_GETSOCKOPT_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_SETSOCKOPT_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_GETSOCKNAME_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_GETPEERNAME_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDTO_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_SENDTO_FOR_SEND_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDMSG_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVFROM_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_RECVFROM_FOR_RECV_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVMSG_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SHUTDOWN_SYSCALL):
	Likewise.
	* sysdeps/unix/sysv/linux/m68k/kernel-features.h
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVMMSG_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDMMSG_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SOCKET_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_SOCKETPAIR_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_BIND_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_CONNECT_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_LISTEN_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_ACCEPT4_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_GETSOCKOPT_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_SETSOCKOPT_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_GETSOCKNAME_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_GETPEERNAME_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDTO_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_SENDTO_FOR_SEND_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDMSG_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVFROM_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300]
	(__ASSUME_RECVFROM_FOR_RECV_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVMSG_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SHUTDOWN_SYSCALL):
	Likewise.
	* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
	(__ASSUME_SOCKET_SYSCALL): Likewise.
	(__ASSUME_BIND_SYSCALL): Likewise.
	(__ASSUME_CONNECT_SYSCALL): Likewise.
	(__ASSUME_LISTEN_SYSCALL): Likewise.
	(__ASSUME_ACCEPT_SYSCALL): Likewise.
	(__ASSUME_GETSOCKNAME_SYSCALL): Likewise.
	(__ASSUME_GETPEERNAME_SYSCALL): Likewise.
	(__ASSUME_SOCKETPAIR_SYSCALL): Likewise.
	(__ASSUME_SEND_SYSCALL): Likewise.
	(__ASSUME_SENDTO_SYSCALL): Likewise.
	(__ASSUME_RECV_SYSCALL): Likewise.
	(__ASSUME_RECVFROM_SYSCALL): Likewise.
	(__ASSUME_SHUTDOWN_SYSCALL): Likewise.
	(__ASSUME_GETSOCKOPT_SYSCALL): Likewise.
	(__ASSUME_SETSOCKOPT_SYSCALL): Likewise.
	(__ASSUME_SENDMSG_SYSCALL): Likewise.
	(__ASSUME_RECVMSG_SYSCALL): Likewise.
	* sysdeps/unix/sysv/linux/sh/kernel-features.h
	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SOCKET_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_BIND_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_CONNECT_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_LISTEN_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_ACCEPT_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625]
	(__ASSUME_GETSOCKNAME_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625]
	(__ASSUME_GETPEERNAME_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625]
	(__ASSUME_SOCKETPAIR_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SEND_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SENDTO_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_RECV_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_RECVFROM_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SHUTDOWN_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625]
	(__ASSUME_GETSOCKOPT_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625]
	(__ASSUME_SETSOCKOPT_SYSCALL): Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SENDMSG_SYSCALL):
	Likewise.
	[__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_RECVMSG_SYSCALL):
	Likewise.
2015-12-09 20:59:43 +00:00
Aurelien Jarno
578d080544 mips: fix testsuite build for O32 FPXX ABI on pre-R2 CPU
On MIPS when the toolchain is using the O32 FPXX ABI, the testsuite
fails to build for pre-R2 CPU.

It assumes that it is possible to use the -mfp64 option to build
tst-abi-fp64amod and tst-abi-fp64mod, while this requires a CPU which
supports the mfhc1 and mthc1 instructions, ie at least a R2 CPU:

  error: '-mgp32' and '-mfp64' can only be combined if the target
  supports the mfhc1 and mthc1 instructions

The same way it assumes that it is possible to use the -modd-spreg option
to build tst-abi-fpxxomod and tst-abi-fp64mod, while this requires at
least a R1 CPU:

  warning: the 'mips2' architecture does not support odd
  single-precision registers

This patches changes that by checking the usability of -mfp64 and
-modd-spreg options in configure, and disable those tests when they can
not be used.
2015-12-09 19:03:46 +01:00
Aurelien Jarno
3b51c390f7 Fix grantpt basename namespace bug
Commit cf06a4e3 removed test-xfail-POSIX2008/unistd.h/linknamespace, but
left one basename namespace issue in grantpt. However this issue is not
visible with the default configuration buy only when configure is passed
the --enable-pt_chown option.
2015-12-09 19:03:43 +01:00
Siddhesh Poyarekar
aad287f35a benchtests: ffs and ffsll are string functions, not math
The ffs and ffsll functions were listed as math functions when they
are actually defined in strings.h and string.h respectively.  Shuffle
around the Makefile variables a bit and make a separate space for ffs
and ffsll.
2015-12-09 00:15:15 +05:30
Siddhesh Poyarekar
520e7edb85 benchtests: Add inputs from sin and cos to sincos
The sincos benchmark has only about a dozen inputs that don't measure
the impact of changes to various passes.  Since much of the code
properties are inherited from sin and cos, copy those inputs in to get
more comprehensive coverage.
2015-12-09 00:10:51 +05:30
Andrew Senkevich
377ed004f2 Utilize x86_64 vector math functions w/o -fopenmp.
This patch allows to use x86_64 vector math functions with GCC 6.*
without OpenMP SIMD constructs.  For additional details please visit
<https://sourceware.org/glibc/wiki/libmvec#Example_2>.

    * sysdeps/x86/fpu/bits/math-vector.h: W/o -fopenmp declare vector math
    functions with GCC 6.* __attribute__ ((__simd__)).
2015-12-07 21:58:26 +03:00
Paul Eggert
5d1d4918ee Fix typo in strncat, wcsncat manual entries
* manual/string.texi (Copying and Concatenation): Fix typos in
sample implementations of strncat and wcsncat, by having them use
the old value of the destination length, not the new one.
2015-12-04 15:24:35 -08:00
Joseph Myers
8f5e8b01a1 Fix nan functions handling of payload strings (bug 16961, bug 16962).
The nan, nanf and nanl functions handle payload strings by doing e.g.:

  if (tagp[0] != '\0')
    {
      char buf[6 + strlen (tagp)];
      sprintf (buf, "NAN(%s)", tagp);
      return strtod (buf, NULL);
    }

This is an unbounded stack allocation based on the length of the
argument.  Furthermore, if the argument starts with an n-char-sequence
followed by ')', that n-char-sequence is wrongly treated as
significant for determining the payload of the resulting NaN, when ISO
C says the call should be equivalent to strtod ("NAN", NULL), without
being affected by that initial n-char-sequence.  This patch fixes both
those problems by using the __strtod_nan etc. functions recently
factored out of strtod etc. for that purpose, with those functions
being exported from libc at version GLIBC_PRIVATE.

Tested for x86_64, x86, mips64 and powerpc.

	[BZ #16961]
	[BZ #16962]
	* math/s_nan.c (__nan): Use __strtod_nan instead of constructing a
	string on the stack for strtod.
	* math/s_nanf.c (__nanf): Use __strtof_nan instead of constructing
	a string on the stack for strtof.
	* math/s_nanl.c (__nanl): Use __strtold_nan instead of
	constructing a string on the stack for strtold.
	* stdlib/Versions (libc): Add __strtof_nan, __strtod_nan and
	__strtold_nan to GLIBC_PRIVATE.
	* math/test-nan-overflow.c: New file.
	* math/test-nan-payload.c: Likewise.
	* math/Makefile (tests): Add test-nan-overflow and
	test-nan-payload.
2015-12-04 20:36:28 +00:00
Florian Weimer
79e0d340a9 Revert "tst-res_hconf_reorder: Set RESOLV_REORDER environment variable"
This reverts commit 731a713b72.

This change is unnecessary because the Makefile already sets up the
environment for the test.
2015-12-04 19:25:59 +01:00
Florian Weimer
731a713b72 tst-res_hconf_reorder: Set RESOLV_REORDER environment variable
Otherwise, the problematic code does not run.
2015-12-04 19:02:12 +01:00
Paul Eggert
2cc4b9cce5 Consistency about byte vs character in string.texi
* manual/string.texi (String and Array Utilities):
Distinguish more carefully among bytes, multibyte characters,
and wide characters.  Use "byte" when talking about C 'char',
to distinguish it more clearly from multibyte characters.
Say "wide character" or "multibyte character" instead of
"character", when a wide or multibyte character is intended.
Similarly for "multibyte string" versus "string".
Define these terms more carefully.
2015-12-04 08:28:34 -08:00
Chris Metcalf
e59c94fa0e math: add LDBL_CLASSIFY_COMPAT support
If a platform does not define "long-double-fcts = yes" in its
Makefiles and it does define __NO_LONG_DOUBLE_MATH in its installed
headers, it will currently create exported symbols for __finitel,
__isinfl, and __isnanl that can't be reached from userspace by
correct use of the finite(), isinf(), or isnan() macros in <math.h>.

To avoid this situation, by default for such platforms we now no
longer export these symbols, thus causing appropriate link-time
errors.  However, for platforms that previously exported these
symbols, we continue to do so as compat symbols; this is enabled
by adding LDBL_CLASSIFY_COMPAT to math_private.h for the platform.

For tile, remove the now-unnecessary exports of those functions from
libc and libm.
2015-12-03 13:00:46 -05:00
Andrew Senkevich
b3f6040781 Corrected path to installed libmvec_nonshared.a
* math/Makefile ($(inst_libdir)/libm.so): Corrected path to
    libmvec_nonshared.a
2015-12-03 20:24:37 +03:00
Carlos Eduardo Seo
67385a01d2 powerpc: Add hwcap/hwcap2/platform data to TCB.
This patch adds a new feature for powerpc.  In order to get faster access to
the HWCAP/HWCAP2 bits and platform number (i.e. for implementing
__builtin_cpu_is () / __builtin_cpu_supports () in GCC) without the overhead of
reading from the auxiliary vector, we now reserve space for them in the TCB.
This is an ABI change for GLIBC 2.23.

A new versioned symbol '__parse_hwcap_and_convert_at_platform' is available to
get the data from the auxiliary vector and parse it, and store it for later use
in the TLS initialization code.  This function is called very early
(in _dl_sysdep_start () via DL_PLATFORM_INFO for the dynamic linking case, and
in __libc_start_main () for the static linking case) to make sure the data is
available at the time of TLS initialization.

	* sysdeps/powerpc/Makefile (sysdep-dl-routines): Add hwcapinfo.
	(sysdep_routines): Likewise.
	(sysdep-rtld-routines): Likewise.
	[$(subdir) = nptl](tests): Add test-get_hwcap and test-get_hwcap-static
	[$(subdir) = nptl](tests-static): test-get_hwcap-static
	* sysdeps/powerpc/Versions: Added new
	__parse_hwcap_and_convert_at_platform symbol to GLIBC-2.23.
	* sysdeps/powerpc/hwcapinfo.c: New file.
	(__tcb_parse_hwcap_and_convert_at_platform): New function to initialize
	and parse hwcap, hwcap2 and platform number information.
	* sysdeps/powerpc/hwcapinfo.h: New file.  Creates global variables
	to store HWCAP+HWCAP2 and platform number.
	* sysdeps/powerpc/nptl/tcb-offsets.sym: Added new offsets
	for HWCAP+HWCAP2 and platform number in the TCB.
	* sysdeps/powerpc/nptl/tls.h: New functionality.  Stores
	the HWCAP, HWCAP2 and platform number in the TCB.
	(dtv): Added new fields for HWCAP+HWCAP2 and platform number.
	(TLS_INIT_TP): Included calls to add the hwcap and
	at_platform values in the TCB in TP initialization.
	(TLS_DEFINE_INIT_TP): Likewise.
	(THREAD_GET_HWCAP): New macro.
	(THREAD_SET_HWCAP): Likewise.
	(THREAD_GET_AT_PLATFORM): Likewise.
	(THREAD_SET_AT_PLATFORM): Likewise.
	* sysdeps/powerpc/powerpc32/dl-machine.h:
	(dl_platform_init): New function that calls
	__parse_hwcap_and_convert_at_platform for the dymanic linking case for
	powerpc32.
	* sysdeps/powerpc/powerpc64/dl-machine.h: Likewise, for powerpc64.
	* sysdeps/powerpc/test-get_hwcap-static.c: New file.  Testcase for
	this functionality, static linking case.
	* sysdeps/powerpc/test-get_hwcap.c: New file.  Likewise, dynamic
	linking case.
	* sysdeps/unix/sysv/linux/powerpc/libc-start.c: Added call to
	__parse_hwcap_and_convert_at_platform for the static linking case.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/ld.abilist:
	Included the new __parse_hwcap_and_convert_at_platform symbol in the
	ABI list for GLIBC 2.23.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/ld-le.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/ld.abilist:
	Likewise.
2015-12-03 13:56:13 -02:00
Ludovic Courtès
db340c904d Use shell's builtin pwd.
Insisting on /bin/pwd is unnecessary nowadays.  Autoconf-generated
scripts have been using the shell's built-in "pwd" for a long time.`
2015-12-02 23:58:15 -05:00
Carlos O'Donell
4de3b51e08 Comment on IBM930, IBM933, IBM935, IBM937, IBM939.
Add comments for IBM930, IBM933, IBM935, IBM937, and IBM939 which
explain exactly what purpose these encodings have and provide a URL to
the upstream IBM database that further provides the details of the
encoding.
2015-12-02 22:13:47 -05:00
Adhemerval Zanella
d0e3ffb7a5 nptl: Fix racy pipe closing in tst-cancel{20,21}
The tst-cancel20 open two pipes and creates a thread which blocks
reading the first pipe.  It then issues a signal to activate the
signal handler which in turn blocks reading the second pipe end.
Finally the cancellation cleanup-up handlers are tested by first
closing the all the pipes ends and issuing a pthread_cancel.
The tst-cancel21 have a similar behavior, but use an extra fork
after the test itself.

The race condition occurs if the cancellation handling acts after the
pipe close: in this case read will return EOF (indicating side-effects)
and thus the cancellation must not act.  However current GLIBC
cancellation behavior acts regardless the syscalls returns with
sid-effects.

This patch adjust the test by moving the pipe closing after the
cancellation handling.  This avoid spurious cancellation if the case
of the race described.

Checked on x86_64 and i386.

	* nptl/tst-cancel20.c (do_one_test): Move the pipe closing after
	pthread_join.
	* nptl/tst-cancel21.c (tf): Likewise.
2015-12-02 14:45:50 -02:00
H.J. Lu
7635a88d32 Add __CPU_MASK_TYPE for __cpu_mask
Since x86-64 and x32 use the same set of sched_XXX system call interface:

[hjl@gnu-6 linux-stable]$ grep sched_
arch/x86/entry/syscalls/syscall_64.tbl
24	common	sched_yield		sys_sched_yield
142	common	sched_setparam		sys_sched_setparam
143	common	sched_getparam		sys_sched_getparam
144	common	sched_setscheduler	sys_sched_setscheduler
145	common	sched_getscheduler	sys_sched_getscheduler
146	common	sched_get_priority_max	sys_sched_get_priority_max
147	common	sched_get_priority_min	sys_sched_get_priority_min
148	common	sched_rr_get_interval	sys_sched_rr_get_interval
203	common	sched_setaffinity	sys_sched_setaffinity
204	common	sched_getaffinity	sys_sched_getaffinity
314	common	sched_setattr		sys_sched_setattr
315	common	sched_getattr		sys_sched_getattr
[hjl@gnu-6 linux-stable]$

__cpu_mask should be unsigned long long, instead of unsigned long, for
x32.  This patch adds __CPU_MASK_TYPE so that each architecture can
define the proper type for __cpu_mask.

	[BZ #19313]
	* bits/typesizes.h (__CPU_MASK_TYPE): New.
	* sysdeps/mach/hurd/bits/typesizes.h (__CPU_MASK_TYPE): Likewise.
	* sysdeps/nacl/bits/typesizes.h (__CPU_MASK_TYPE): Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__CPU_MASK_TYPE):
	Likewise.
	* sysdeps/unix/sysv/linux/generic/bits/typesizes.h (__CPU_MASK_TYPE):
	Likewise.
	* sysdeps/unix/sysv/linux/s390/bits/typesizes.h (__CPU_MASK_TYPE):
	Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__CPU_MASK_TYPE):
	Likewise.
	* sysdeps/unix/sysv/linux/x86/bits/typesizes.h (__CPU_MASK_TYPE):
	* sysdeps/unix/sysv/linux/bits/sched.h (__cpu_mask): Replace
	unsigned long int with __CPU_MASK_TYPE.
2015-12-01 10:25:44 -08:00
Szabolcs Nagy
c960ded0d5 [AArch64] Regenerate libm-test-ulps
* sysdeps/aarch64/libm-test-ulps: Regenerated.
2015-12-01 12:57:16 +00:00
Joseph Myers
60f435bb0c Use hex float constants in sysdeps/ieee754/dbl-64/e_sqrt.c.
Various sysdeps/ieee754/dbl-64 functions use double constants defined
using a union between a double and two ints, with separate big-endian
and little-endian definitions of the constants.

With modern C, this is unnecessary complication; hex float constants
(or __builtin_inf etc.) suffice to specify the exact value desired,
and so can avoid separate versions for each endianness.  Having this
complication also complicates cleanups such as removing slow paths
from these library functions, as they need to make sure to remove both
copies of variables that are no longer used after such a cleanup (and
in at least one case, proper removal of a slow path will also involve
removing slow-path-only values from the middle of an array - an array
with both big-endian and little-endian copies - and adjusting other
references to that array).

So it makes sense to clean up the code to define these constants using
hex floats and so eliminate the endianness conditional.  This patch
does so in the case of sqrt, where the two constants are such that it
makes sense just to put them directly in the code using them and
eliminate the names for them altogether.

Tested for arm (the code generated for sqrt does change, though not in
any significant way).

	* sysdeps/ieee754/dbl-64/e_sqrt.c: Do not include uroot.h.
	(__ieee754_sqrt): Use hex float constants instead of tm256.x and
	t512.x.
	* sysdeps/ieee754/dbl-64/uroot.h: Remove file.
2015-12-01 01:01:36 +00:00
H.J. Lu
9627da32ec Update family and model detection for AMD CPUs
AMD CPUs uses the similar encoding scheme for extended family and model
as Intel CPUs as shown in:

http://support.amd.com/TechDocs/25481.pdf

This patch updates get_common_indeces to get family and model for both
Intel and AMD CPUs when family == 0x0f.

	[BZ #19214]
	* sysdeps/x86/cpu-features.c (get_common_indeces): Add an
	argument to return extended model.  Update family and model
	with extended family and model when family == 0x0f.
	(init_cpu_features): Updated.
2015-11-30 09:01:31 -08:00
Samuel Thibault
5f75f6bdf8 hurd: Make mmap64 use vm_offset_t for overflow check
The RPC interface used by mmap uses the unsigned vm_offset_t, not the
	signed off_t, so 32bit bigger than 2GiB values are fine actually.

	* sysdeps/mach/hurd/mmap64.c: New file.
2015-11-29 17:26:50 +01:00
Thomas Schwinge
894f3e1311 hurd: install correct number of send rights on fork
* sysdeps/mach/hurd/fork.c (__fork): Install correct number of send
	rights for its main user thread in NEWTASK.
2015-11-29 16:41:00 +01:00
Maciej W. Rozycki
db4855bf0c MIPS: Wire FCSR.ABS2008 to FCSR.NAN2008
Revision 3.50 of the MIPS architecture defined FCSR ABS2008 and NAN2008
bits as optionally read/write [1][2].  No hardware implementation has
ever made use of this feature though.  For example the first processor
to implement these bits, the MIPS32r3 proAptiv core, has both bits
read-only, hardwired to 1 [3].  And as from revision 5.03 of the MIPS
architecture the bits are required to be read-only, preset by hardware
[4][5].  Additionally all hardware implementations in existence have the
bits hardwired both to the same value, either of `0' and `1'.

These bits may still be read/write or hardwired to opposite values in
simulated hardware implementations such as QEMU or the FPU emulator
included with the Linux kernel.  However to match real hardware
implementations the Linux kernel will set FCSR ABS2008 and NAN2008 bits
both to the same value where possible, reflecting the setting of the
EF_MIPS_NAN2008 ELF file header bit.

Therefore update the bit patterns in macro definitions we use for the
control word, in the 2008-NaN encoding mode, so that both bits have the
same value in a given bit pattern.  Additionally mark the FCSR ABS2008
bit as reserved, so that high-level calls to change the control word do
not affect the bit.

This covers the regular FPU configurations, only leaving exotic corner
cases with the value of FCSR control word initially set by the kernel
different to what our code thinks it is.  To address the remaining cases
the AT_FPUCW auxiliary vector entry would have to be implemented in the
Linux kernel, which currently is not.

References:

[1] "MIPS Architecture For Programmers, Volume I-A: Introduction to the
    MIPS32 Architecture", MIPS Technologies, Inc., Document Number:
    MD00082, Revision 3.50, September 20, 2012, Table 5.5 "FCSR Register
    Field Descriptions", p. 80

[2] "MIPS Architecture For Programmers, Volume I-A: Introduction to the
    MIPS64 Architecture", MIPS Technologies, Inc., Document Number:
    MD00083, Revision 3.50, September 20, 2012, Table 5.5 "FCSR Register
    Field Descriptions", p. 82

[3] "MIPS32 proAptiv Multiprocessing System Software User's Manual",
    MIPS Technologies, Inc., Document Number: MD00878, Revision 01.22,
    May 14, 2013, Table 12.10 "FCSR Bit Field Descriptions", p. 570

[4] "MIPS Architecture For Programmers, Volume I-A: Introduction to the
    MIPS32 Architecture", MIPS Technologies, Inc., Document Number:
    MD00082, Revision 5.03, Sept. 9, 2013, Table 5.7 "FCSR Register
    Field Descriptions", p. 82

[5] "MIPS Architecture For Programmers, Volume I-A: Introduction to the
    MIPS64 Architecture", MIPS Technologies, Inc., Document Number:
    MD00083, Revision 5.03, Sept. 9, 2013, Table 5.7 "FCSR Register
    Field Descriptions", p. 84

	* sysdeps/mips/fpu_control.h (_FPU_RESERVED): Include ABS2008.
	(_FPU_DEFAULT, _FPU_IEEE) [__mips_nan2008]: Set ABS2008.
2015-11-28 11:01:16 +00:00
Carlos O'Donell
90fe682d30 Rename localedir to complocaledir (bug 14259).
In preparation to fix the --localedir configure argument we must
move the existing conflicting definition of localedir to a more
appropriate name. Given that all current internal uses of localedir
relate to the compiled locales we rename to complocaledir.
2015-11-27 10:22:38 -05:00
Andrew Senkevich
977a30801f Better workaround for aliases of *_finite symbols in vector math library.
Old workaround based on assembly aliases can lead to link fail (bug 19058).
This patch makes workaround in another way to avoid it.

    [BZ #19058]
    * math/Makefile ($(inst_libdir)/libm.so): Added libmvec_nonshared.a
    to AS_NEEDED.
    * sysdeps/x86/fpu/bits/math-vector.h: Removed code with old workaround.
    * sysdeps/x86_64/fpu/Makefile (libmvec-support,
    libmvec-static-only-routines): Added new file.
    * sysdeps/x86_64/fpu/svml_finite_alias.S: New file.
2015-11-27 16:22:26 +03:00
Samuel Thibault
4d952856e3 hurd: Initialize __libc_stack_end for hidden support
* sysdeps/mach/hurd/dl-sysdep.c (__libc_stack_end): Initialize to get
	into initialized data instead of common.
2015-11-25 17:48:51 +01:00
Samuel Thibault
c679db4352 Do not add relro attribute to __libc_stack_end
It does not actually work yet

* sysdeps/mach/hurd/dl-sysdep.c (__libc_stack_end): Remove relro attribute.
2015-11-25 17:05:53 +01:00
Samuel Thibault
d1e815ed25 Revert not defining NO_HIDDEN on hurd
* sysdeps/mach/hurd/configure.ac (NO_HIDDEN): Define.
       * sysdeps/mach/hurd/configure: Regenerate.
2015-11-25 02:48:22 +01:00
Samuel Thibault
6e45e6ef4d Fix hurd build with hidden support
* hurd/sigunwind.c (_hurdsig_longjmp_from_handler): Destroy reply port
	of interrupted RPC instead of restoring it.

	* sysdeps/i386/setjmp.S (__sigsetjmp): Add hidden_def.
	* sysdeps/mach/hurd/accept4.c (__libc_accept4): Remove
	libc_hidden_def.
	* sysdeps/mach/hurd/dl-sysdep.c (__libc_stack_end): Add relro
	attribute, define rtld_hidden_data_def.
	* sysdeps/mach/hurd/fxstatat64.c (__fxstatat64): Add libc_hidden_def.
	* sysdeps/mach/hurd/if_index.c (__if_freenameindex): Add
	libc_hidden_def.
	(if_freenameindex): Add libc_hidden_weak.
	(if_nameindex): Add libc_hidden_weak.
	* sysdeps/mach/hurd/open.c (_open64): Rename libc_hidden_weak into
	__open64.
	* sysdeps/mach/hurd/sigwait.c (__sigwait): Add libc_hidden_def.
	* sysdeps/mach/hurd/xmknodat.c (__xmknodat): Add libc_hidden_def.
	* sysdeps/mach/nanosleep.c: Include <time.h>
	(__nanosleep): Rename to __libc_nanosleep.
	(__nanosleep): Add weak_alias.
	(nanosleep): Update alias.
	* sysdeps/mach/hurd/configure.ac (NO_HIDDEN): Do not define.
	* sysdeps/mach/hurd/configure: Regenerate.
2015-11-25 02:35:18 +01:00
Samuel Thibault
fb304035c4 Fix RPC breakage when longjumping from signal handler
* hurd/sigunwind.c (_hurdsig_longjmp_from_handler): Destroy reply port
	of interrupted RPC instead of restoring it.
2015-11-25 01:09:13 +01:00
Joseph Myers
e02cabecf0 Refactor strtod parsing of NaN payloads.
The nan* functions handle their string argument by constructing a
NAN(...) string on the stack as a VLA and passing it to strtod
functions.

This approach has problems discussed in bug 16961 and bug 16962: the
stack usage is unbounded, and it gives incorrect results in certain
cases where the argument is not a valid n-char-sequence.

The natural fix for both issues is to refactor the NaN payload parsing
out of strtod into a separate function that the nan* functions can
call directly, so that no temporary string needs constructing on the
stack at all.  This patch does that refactoring in preparation for
fixing those bugs (but without actually using the new functions from
nan* - which will also require exporting them from libc at version
GLIBC_PRIVATE).  This patch is not intended to change any user-visible
behavior, so no tests are added (fixes for the above bugs will of
course add tests for them).

This patch builds on my recent fixes for strtol and strtod issues in
Turkish locales.  Given those fixes, the parsing of NaN payloads is
locale-independent; thus, the new functions do not need to take a
locale_t argument.

Tested for x86_64, x86, mips64 and powerpc.

	* stdlib/strtod_nan.c: New file.
	* stdlib/strtod_nan_double.h: Likewise.
	* stdlib/strtod_nan_float.h: Likewise.
	* stdlib/strtod_nan_main.c: Likewise.
	* stdlib/strtod_nan_narrow.h: Likewise.
	* stdlib/strtod_nan_wide.h: Likewise.
	* stdlib/strtof_nan.c: Likewise.
	* stdlib/strtold_nan.c: Likewise.
	* sysdeps/ieee754/ldbl-128/strtod_nan_ldouble.h: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/strtod_nan_ldouble.h: Likewise.
	* sysdeps/ieee754/ldbl-96/strtod_nan_ldouble.h: Likewise.
	* wcsmbs/wcstod_nan.c: Likewise.
	* wcsmbs/wcstof_nan.c: Likewise.
	* wcsmbs/wcstold_nan.c: Likewise.
	* stdlib/Makefile (routines): Add strtof_nan, strtod_nan and
	strtold_nan.
	* wcsmbs/Makefile (routines): Add wcstod_nan, wcstold_nan and
	wcstof_nan.
	* include/stdlib.h (__strtof_nan): Declare and use
	libc_hidden_proto.
	(__strtod_nan): Likewise.
	(__strtold_nan): Likewise.
	(__wcstof_nan): Likewise.
	(__wcstod_nan): Likewise.
	(__wcstold_nan): Likewise.
	* include/wchar.h (____wcstoull_l_internal): Declare.
	* stdlib/strtod_l.c: Do not include <ieee754.h>.
	(____strtoull_l_internal): Remove declaration.
	(STRTOF_NAN): Define macro.
	(SET_MANTISSA): Remove macro.
	(STRTOULL): Likewise.
	(____STRTOF_INTERNAL): Use STRTOF_NAN to parse NaN payload.
	* stdlib/strtof_l.c (____strtoull_l_internal): Remove declaration.
	(STRTOF_NAN): Define macro.
	(SET_MANTISSA): Remove macro.
	* sysdeps/ieee754/ldbl-128/strtold_l.c (STRTOF_NAN): Define macro.
	(SET_MANTISSA): Remove macro.
	* sysdeps/ieee754/ldbl-128ibm/strtold_l.c (STRTOF_NAN): Define
	macro.
	(SET_MANTISSA): Remove macro.
	* sysdeps/ieee754/ldbl-64-128/strtold_l.c (STRTOF_NAN): Define
	macro.
	(SET_MANTISSA): Remove macro.
	* sysdeps/ieee754/ldbl-96/strtold_l.c (STRTOF_NAN): Define macro.
	(SET_MANTISSA): Remove macro.
	* wcsmbs/wcstod_l.c (____wcstoull_l_internal): Remove declaration.
	* wcsmbs/wcstof_l.c (____wcstoull_l_internal): Likewise.
	* wcsmbs/wcstold_l.c (____wcstoull_l_internal): Likewise.
2015-11-24 22:24:52 +00:00
Joseph Myers
a7f0c5ae41 Fix strtod ("NAN(I)") in Turkish locales (bug 19266).
The implementations of strtod and related functions use
locale-specific conversions to lower case when parsing the contents of
a string NAN(n-char-sequence_opt).  This has the consequence that
NAN(I) is not treated as being of that form (only the initial NAN part
is accepted).  The syntax of n-char-sequence directly maps to the
ASCII letters, digits and underscore as in identifiers, so it is
unambiguous that all ASCII letters must be accepted in all locales.

This patch, relative to a tree with
<https://sourceware.org/ml/libc-alpha/2015-11/msg00258.html> (pending
review) applied and depending on that patch, fixes this problem by
checking directly for ASCII letters.  This will have the side effect
of no longer accepting 'İ' (dotted 'I') inside NAN() in Turkish
locales, which seems appropriate (that letter wouldn't have been
interpreted as having any meaning in the NaN payload anyway, as not
acceptable to strtoull).

Tested for x86_64 and x86.

	[BZ #19266]
	* stdlib/strtod_l.c (____STRTOF_INTERNAL): Check directly for
	upper case and lower case letters inside NAN(), not using TOLOWER.
	* stdlib/tst-strtod-nan-locale-main.c: New file.
	* stdlib/tst-strtod-nan-locale.c: Likewise.
	* stdlib/Makefile (tests): Add tst-strtod-nan-locale.
	[$(run-built-tests) = yes] ($(objpfx)tst-strtod-nan-locale.out):
	Depend on $(gen-locales).
	($(objpfx)tst-strtod-nan-locale): Depend on $(libm).
	* wcsmbs/tst-wcstod-nan-locale.c: New file.
	* wcsmbs/Makefile (tests): Add tst-wcstod-nan-locale.
	[$(run-built-tests) = yes] ($(objpfx)tst-wcstod-nan-locale.out):
	Depend on $(gen-locales).
	($(objpfx)tst-wcstod-nan-locale): Depend on $(libm).
2015-11-24 22:21:59 +00:00
Chris Metcalf
869c2f1eae misc/tst-tsearch.c: bump up TIMEOUT to 10 seconds. 2015-11-24 14:09:31 -05:00
Chris Metcalf
6a4448afe3 tile: define __NO_LONG_DOUBLE_MATH
This avoids build failures in the tests, and matches what is in
bits/mathdef.h.

Update the libc and libm abilist files to include __finitel,
__isinfl, and __isnanl.
2015-11-24 14:09:31 -05:00
Gleb Fotengauer-Malinovskiy
87d0eecece malloc: remove redundant getenv call
* malloc/memusage.c (me): Remove redundant getenv call.
2015-11-24 20:07:12 +03:00
Florian Weimer
2359035ac5 Remove CPU set size checking from affinity functions [BZ #19143]
With current kernel versions, the check does not reliably detect that
unavailable CPUs are requested, for these reasons:

(1) The kernel will silently ignore non-allowed CPUs, that is, CPUs
    which are physically present but disallowed for the thread
    based on system configuration.

(2) Similarly, CPU bits which lack an online CPU (possible CPUs)
    are ignored.

(3) The existing probing code assumes that the CPU mask size is a
    power of two and at least 1024.  Neither has it to be a power
    of two, nor is the minimum possible value 1024, so the value
    determined is often too large.  This means that the CPU set
    size check in glibc accepts CPU bits beyond the actual hard
    system limit.

(4) Future kernel versions may not even have a fixed CPU set size.

After the removal of the probing code, the kernel still returns
EINVAL if no CPU in the requested set remains which can run the
thread after the affinity change.

Applications which care about the exact affinity mask will have
to query it using sched_getaffinity after setting it.  Due to the
effects described above, this commit does not change this.

The new tests supersede tst-getcpu, which is removed.  This
addresses bug 19164 because the new tests allocate CPU sets
dynamically.

	* nptl/check-cpuset.h: Remove.
	* nptl/pthread_attr_setaffinity.c (__pthread_attr_setaffinity_new):
	Remove CPU set size check.
	* nptl/pthread_setattr_default_np.c (pthread_setattr_default_np):
	Likewise.
	* sysdeps/unix/sysv/linux/check-cpuset.h: Remove.
	* sysdeps/unix/sysv/linux/pthread_setaffinity.c
	(__kernel_cpumask_size, __determine_cpumask_size): Remove.
	(__pthread_setaffinity_new): Remove CPU set size check.
	* sysdeps/unix/sysv/linux/sched_setaffinity.c
	(__kernel_cpumask_size): Remove.
	(__sched_setaffinity_new): Remove CPU set size check.
	* manual/threads.texi (Default Thread Attributes): Remove stale
	reference to check_cpuset_attr, determine_cpumask_size in comment.
	* sysdeps/unix/sysv/linux/Makefile [$(subdir) == posix] (tests):
	Remove tst-getcpu.  Add tst-affinity, tst-affinity-pid.
	[$(subdir) == nptl] (tests): Add tst-thread-affinity-pthread,
	tst-thread-affinity-pthread2, tst-thread-affinity-sched.
	* sysdeps/unix/sysv/linux/tst-affinity.c: New file.
	* sysdeps/unix/sysv/linux/tst-affinity-pid.c: New file.
	* sysdeps/unix/sysv/linux/tst-skeleton-affinity.c: New skeleton test file.
	* sysdeps/unix/sysv/linux/tst-thread-affinity-sched.c: New file.
	* sysdeps/unix/sysv/linux/tst-thread-affinity-pthread.c: New file.
	* sysdeps/unix/sysv/linux/tst-thread-affinity-pthread2.c: New file.
	* sysdeps/unix/sysv/linux/tst-thread-skeleton-affinity.c: New
	skeleton test file.
	* sysdeps/unix/sysv/linux/tst-getcpu.c: Remove.  Superseded by
	tst-affinity-pid.
2015-11-24 17:21:01 +01:00
Florian Weimer
c100dca32a Implement "make update-all-abi"
* scripts/update-abilist.sh: New file.
	* Makefile (+subdir_targets): Add subdir_update-all-abi.
	* Makerules (update-all-abi-%, update-all-abi)
	(subdir_update-all-abi): New targets.
	* elf/Makefile (update-all-abi): New target.
2015-11-24 17:10:19 +01:00
Florian Weimer
400e12265d Replace MUTEX_INITIALIZER with _LIBC_LOCK_INITIALIZER in generic code
* sysdeps/mach/hurd/libc-lock.h (_LIBC_LOCK_INITIALIZER): Define.
	(__libc_lock_define_initialized): Use it.
	* sysdeps/nptl/libc-lockP.h (_LIBC_LOCK_INITIALIZER): Define.
	* malloc/arena.c (list_lock): Use _LIBC_LOCK_INITIALIZER.
	* malloc/malloc.c (main_arena): Likewise.
	* sysdeps/generic/malloc-machine.h (MUTEX_INITIALIZER): Remove.
	* sysdeps/nptl/malloc-machine.h (MUTEX_INITIALIZER): Remove.
2015-11-24 16:37:15 +01:00
Joseph Myers
a61a1a2576 Update <sys/ptrace.h> for Linux 4.3.
This patch updates <sys/ptrace.h> for Linux 4.3, adding
PTRACE_O_SUSPEND_SECCOMP and updating the value of PTRACE_O_MASK.
Some architectures were missing the older PTRACE_O_EXITKILL, so that
was added to the files missing it as well.

Tested for x86_64 (testsuite, and that installed shared libraries are
unchanged by the patch).

	* sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
	(PTRACE_O_EXITKILL): New value in enum __ptrace_setoptions.
	(PTRACE_O_SUSPEND_SECCOMP): Likewise.
	(PTRACE_O_MASK): Update value.
	* sysdeps/unix/sysv/linux/ia64/sys/ptrace.h (PTRACE_O_EXITKILL):
	New value in enum __ptrace_setoptions.
	(PTRACE_O_SUSPEND_SECCOMP): Likewise.
	(PTRACE_O_MASK): Update value.
	* sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
	(PTRACE_O_SUSPEND_SECCOMP): New value in enum __ptrace_setoptions.
	(PTRACE_O_MASK): Update value.
	* sysdeps/unix/sysv/linux/s390/sys/ptrace.h
	(PTRACE_O_SUSPEND_SECCOMP): New value in enum __ptrace_setoptions.
	(PTRACE_O_MASK): Update value.
	* sysdeps/unix/sysv/linux/sparc/sys/ptrace.h
	(PTRACE_O_SUSPEND_SECCOMP): New value in enum __ptrace_setoptions.
	(PTRACE_O_MASK): Update value.
	* sysdeps/unix/sysv/linux/sys/ptrace.h (PTRACE_O_SUSPEND_SECCOMP):
	New value in enum __ptrace_setoptions.
	(PTRACE_O_MASK): Update value.
	* sysdeps/unix/sysv/linux/tile/sys/ptrace.h (PTRACE_O_EXITKILL):
	New value in enum __ptrace_setoptions.
	(PTRACE_O_SUSPEND_SECCOMP): Likewise.
	(PTRACE_O_MASK): Update value.
2015-11-23 17:53:08 +00:00
Joseph Myers
dd17ede807 Update <netpacket/packet.h> for Linux 4.3.
In the course of reviewing Linux 4.3 changes for any glibc header
updates needed, I found that
sysdeps/unix/sysv/linux/netpacket/packet.h was extremely out of date
(last updated for Linux 2.3.15, it seems).  This patch updates the
sets of constants present in that header to include those added to
those sets in newer kernels (include/uapi/linux/if_packet.h).

Tested for x86_64 (testsuite, and that installed shared libraries are
unchanged by the patch).

	* sysdeps/unix/sysv/linux/netpacket/packet.h (PACKET_COPY_THRESH):
	New macro.
	(PACKET_AUXDATA): Likewise.
	(PACKET_ORIGDEV): Likewise.
	(PACKET_VERSION): Likewise.
	(PACKET_HDRLEN): Likewise.
	(PACKET_RESERVE): Likewise.
	(PACKET_TX_RING): Likewise.
	(PACKET_LOSS): Likewise.
	(PACKET_VNET_HDR): Likewise.
	(PACKET_TX_TIMESTAMP): Likewise.
	(PACKET_TIMESTAMP): Likewise.
	(PACKET_FANOUT): Likewise.
	(PACKET_TX_HAS_OFF): Likewise.
	(PACKET_QDISC_BYPASS): Likewise.
	(PACKET_ROLLOVER_STATS): Likewise.
	(PACKET_FANOUT_DATA): Likewise.
	(PACKET_MR_UNICAST): Likewise.
2015-11-23 17:52:08 +00:00
Joseph Myers
f5eee5c72b Fix strtol in Turkish locales (bug 19242).
The implementations of strtol and related functions use
locale-specific conversions to upper case before determining whether a
character is a valid letter in the argument.  This means that in
Turkish locales such as tr_TR.UTF-8 and tr_TR.ISO-8859-9, "i" is
interpreted as not being a valid number, when if the base passed to
strtol is 19 or more it should be interpreted as the number 18.

ISO C explicitly says "The letters from a (or A) through z (or Z) are
ascribed the values 10 through 35", so clearly intends the standard
ASCII letters (otherwise you wouldn't generally have exactly 26
letters to ascribe such values) (whereas white-space must be
identified according to the locale).  In particular, 'i' and 'I' must
be understood to be in that sequence.

This patch makes the code do the case conversions and classification
in the C locale; the user's locale remains used for whitespace testing
(explicitly correct according to ISO C).  Note that the way the code
worked, the only non-ASCII letter that would previously have been
accepted would have been the Turkish 'ı' (dotless 'i'), because the
uppercase version of that in Turkish locales is 'I'.  This patch means
that will no longer be accepted, which seems appropriate.

Tested for x86_64 and x86.

	[BZ #19242]
	* stdlib/strtol_l.c (ISALPHA): Use _nl_C_locobj_ptr for locale.
	(TOUPPER): Likewise.
	* stdlib/tst-strtol-locale-main.c: New file.
	* stdlib/tst-strtol-locale.c: Likewise.
	* stdlib/Makefile (tests): Add tst-strtol-locale.
	[$(run-built-tests) = yes] (LOCALES): Add tr_TR.ISO-8859-9.
	[$(run-built-tests) = yes] ($(objpfx)tst-strtol-locale.out):
	Depend on $(gen-locales).
	* wcsmbs/tst-wcstol-locale.c: New file.
	* wcsmbs/Makefile (tests): Add tst-wcstol-locale.
	[$(run-built-tests) = yes] (LOCALES): Add tr_TR.UTF-8 and
	tr_TR.ISO-8859-9.
	[$(run-built-tests) = yes] ($(objpfx)tst-wcstol-locale.out):
	Depend on $(gen-locales).
2015-11-23 08:50:53 +00:00
Roland McGrath
f549f0bcba NaCl: Use allocate_code_data after dyncode_create 2015-11-20 16:16:35 -08:00
Joseph Myers
2d2c271aea Fix math_private.h multiple include guards.
Various math_private.h headers are guarded by "#ifndef
_MATH_PRIVATE_H", but never define the macro.  Nothing else defines
the macro either (the generic math_private.h that they include defines
a different macro, _MATH_PRIVATE_H_), so those guards are ineffective.

With the recent inclusion of s_sin.c in s_sincos.c, this breaks the
build for MIPS, since the build of s_sincos.c ends up including
<math_private.h> twice and the MIPS version defines inline functions
such as libc_feholdexcept_mips, without a separate fenv_private.h
header with its own guards such as some architectures have.

This patch fixes all the problem headers to use architecture-specific
guard macro names, and to define those macros in the headers they
guard, just as some architectures already do.

Tested for x86 (testsuite, and that installed shared libraries are
unchanged by the patch), and for mips64 (that it fixes the build).

	* sysdeps/arm/math_private.h [!_MATH_PRIVATE_H]: Change guard to
	[!ARM_MATH_PRIVATE_H].
	[!ARM_MATH_PRIVATE_H] (ARM_MATH_PRIVATE_H): Define macro.
	* sysdeps/hppa/math_private.h [!_MATH_PRIVATE_H]: Change guard to
	[!HPPA_MATH_PRIVATE_H].
	[!HPPA_MATH_PRIVATE_H] (HPPA_MATH_PRIVATE_H): Define macro.
	* sysdeps/i386/fpu/math_private.h [!_MATH_PRIVATE_H]: Change guard
	to [!I386_MATH_PRIVATE_H].
	[!I386_MATH_PRIVATE_H] (I386_MATH_PRIVATE_H): Define macro.
	* sysdeps/m68k/m680x0/fpu/math_private.h [!_MATH_PRIVATE_H]:
	Change guard to [!M68K_MATH_PRIVATE_H].
	[!M68K_MATH_PRIVATE_H] (M68K_MATH_PRIVATE_H): Define macro.
	* sysdeps/microblaze/math_private.h [!_MATH_PRIVATE_H]: Change
	guard to [!MICROBLAZE_MATH_PRIVATE_H].
	[!MICROBLAZE_MATH_PRIVATE_H] (MICROBLAZE_MATH_PRIVATE_H): Define
	macro.
	* sysdeps/mips/math_private.h [!_MATH_PRIVATE_H]: Change guard to
	[!MIPS_MATH_PRIVATE_H].
	[!MIPS_MATH_PRIVATE_H] (MIPS_MATH_PRIVATE_H): Define macro.
	* sysdeps/nios2/math_private.h [!_MATH_PRIVATE_H]: Change guard to
	[!NIO2_MATH_PRIVATE_H].
	[!NIO2_MATH_PRIVATE_H] (NIO2_MATH_PRIVATE_H): Define macro.
	* sysdeps/tile/math_private.h [!_MATH_PRIVATE_H]: Change guard to
	[!TILE_MATH_PRIVATE_H].
	[!TILE_MATH_PRIVATE_H] (TILE_MATH_PRIVATE_H): Define macro.
2015-11-20 23:46:23 +00:00
Joseph Myers
d709042a6e Fix lgamma setting signgam for ISO C (bug 15421).
The lgamma (and likewise lgammaf, lgammal) function wrongly sets the
signgam variable even when building for strict ISO C conformance
(-std=c99 / -std=c11), although the user may define such a variable
and it's only in the implementation namespace for POSIX with XSI
extensions enabled.

Following discussions starting at
<https://sourceware.org/ml/libc-alpha/2013-04/msg00767.html> and
<https://sourceware.org/ml/libc-alpha/2015-10/msg00844.html>, it seems
that the safest approach for fixing this particular issue is for
signgam to become a weak alias for a newly exported symbol __signgam,
with the library functions only setting __signgam, at which point
static linker magic will preserve the alias for newly linked binaries
that refer to the library's signgam rather than defining their own,
while breaking the alias for programs that define their own signgam,
with new symbol versions for lgamma functions and with compat symbols
for existing binaries that set both signgam and __signgam.

This patch implements that approach for the fix.  signgam is made into
a weak alias.  The four symbols __signgam, lgamma, lgammaf, lgammal
get new symbol versions at version GLIBC_2.23, with the existing
versions of lgamma, lgammaf and lgammal becoming compat symbols.

When the compat versions are built, gamma, gammaf and gammal are
aliases for the compat versions (i.e. always set signgam); this is OK
as they are not ISO C functions, and avoids adding new symbol versions
for them unnecessarily.  When the compat versions are not built
(i.e. for static linking and for future glibc ports), gamma, gammaf
and gammal are aliases for the new versions that set __signgam.  The
ldbl-opt versions are updated accordingly.

The lgamma wrappers are adjusted so that the same source files,
included from different files with different definitions of
USE_AS_COMPAT, can build either the new versions or the compat
versions.  Similar changes are made to the ia64 versions (untested).

Tests are added that the lgamma functions do not interfere with a user
variable called signgam for ISO C, with various choices for the size
of that variable, whether it is initialized, and for static and
dynamic linking.  The conformtest whitelist entry is removed as well.

Tested for x86_64, x86, mips64 and powerpc, including looking at
objdump --dynamic-syms output to make sure the expected sets of
symbols were aliases.  Also spot-tested that a binary built with old
glibc works properly (i.e. gets signgam set) when run with new glibc.

	[BZ #15421]
	* sysdeps/ieee754/s_signgam.c (signgam): Rename to __signgam,
	initialize with 0 and define as weak alias of __signgam.
	* include/math.h [!_ISOMAC] (__signgam): Declare.
	* math/Makefile (libm-calls): Add w_lgamma_compat.
	(tests): Add test-signgam-uchar, test-signgam-uchar-init,
	test-signgam-uint, test-signgam-uint-init, test-signgam-ullong and
	test-signgam-ullong-init.
	(tests-static): Add test-signgam-uchar-static,
	test-signgam-uchar-init-static, test-signgam-uint-static,
	test-signgam-uint-init-static, test-signgam-ullong-static and
	test-signgam-ullong-init-static.
	(CFLAGS-test-signgam-uchar.c): New variable.
	(CFLAGS-test-signgam-uchar-init.c): Likewise.
	(CFLAGS-test-signgam-uchar-static.c): Likewise.
	(CFLAGS-test-signgam-uchar-init-static.c): Likewise.
	(CFLAGS-test-signgam-uint.c): Likewise.
	(CFLAGS-test-signgam-uint-init.c): Likewise.
	(CFLAGS-test-signgam-uint-static.c): Likewise.
	(CFLAGS-test-signgam-uint-init-static.c): Likewise.
	(CFLAGS-test-signgam-ullong.c): Likewise.
	(CFLAGS-test-signgam-ullong-init.c): Likewise.
	(CFLAGS-test-signgam-ullong-static.c): Likewise.
	(CFLAGS-test-signgam-ullong-init-static.c): Likewise.
	* math/Versions (libm): Add GLIBC_2.23.
	* math/lgamma-compat.h: New file.
	* math/test-signgam-main.c: Likewise.
	* math/test-signgam-uchar-init-static.c: Likewise.
	* math/test-signgam-uchar-init.c: Likewise.
	* math/test-signgam-uchar-static.c: Likewise.
	* math/test-signgam-uchar.c: Likewise.
	* math/test-signgam-uint-init-static.c: Likewise.
	* math/test-signgam-uint-init.c: Likewise.
	* math/test-signgam-uint-static.c: Likewise.
	* math/test-signgam-uint.c: Likewise.
	* math/test-signgam-ullong-init-static.c: Likewise.
	* math/test-signgam-ullong-init.c: Likewise.
	* math/test-signgam-ullong-static.c: Likewise.
	* math/test-signgam-ullong.c: Likewise.
	* math/w_lgamma.c: Rename to w_lgamma_main.c and replace by
	wrapper of w_lgamma_main.c.
	* math/w_lgamma_compat.c: New file.
	* math/w_lgamma_compatf.c: Likewise.
	* math/w_lgamma_compatl.c: Likewise.
	* math/w_lgamma_main.c: New file.  Based on w_lgamma.c.  Include
	<lgamma-compat.h>.  Condition contents on [BUILD_LGAMMA].  Support
	defining compatibility symbols.
	(__lgamma): Change to LGFUNC (__lgamma).  Use CALL_LGAMMA.
	* math/w_lgammaf.c: Rename to w_lgammaf_main.c and replace by
	wrapper of w_lgammaf_main.c.
	* math/w_lgammaf_main.c: New file.  Based on w_lgammaf.c.  Include
	<lgamma-compat.h>.  Condition contents on [BUILD_LGAMMA].  Support
	defining compatibility symbols.
	(__lgammaf): Change to LGFUNC (__lgammaf).  Use CALL_LGAMMA.
	* math/w_lgammal.c: Rename to w_lgammal_main.c and replace by
	wrapper of w_lgammal_main.c.
	* math/w_lgammal_main.c: New file.  Based on w_lgammal.c.  Include
	<lgamma-compat.h>.  Condition contents on [BUILD_LGAMMA].  Support
	defining compatibility symbols.
	(__lgammal): Change to LGFUNC (__lgammal).  Use CALL_LGAMMA.
	* sysdeps/ia64/fpu/lgamma-compat.h: New file.
	* sysdeps/ia64/fpu/w_lgamma.c: Move to ....
	* sysdeps/ia64/fpu/w_lgamma_main.c: ...here.  Include
	<lgamma-compat.h>.
	(__ieee754_lgamma): Change to LGFUNC (lgamma).  Use CALL_LGAMMA.
	(__ieee754_gamma): Define as alias.
	* sysdeps/ia64/fpu/w_lgammaf.c: Move to ....
	* sysdeps/ia64/fpu/w_lgammaf_main.c: ...here.  Include
	<lgamma-compat.h>.
	(__ieee754_lgammaf): Change to LGFUNC (lgammaf).  Use CALL_LGAMMA.
	(__ieee754_gammaf): Define as alias.
	* sysdeps/ia64/fpu/w_lgammal.c: Move to ....
	* sysdeps/ia64/fpu/w_lgammal_main.c: ...here.  Include
	<lgamma-compat.h>.
	(__ieee754_lgammal): Change to LGFUNC (lgammal).  Use CALL_LGAMMA.
	(__ieee754_gammal): Define as alias.
	* sysdeps/ieee754/ldbl-opt/w_lgamma.c: Move to ....
	* sysdeps/ieee754/ldbl-opt/w_lgamma_compat.c: ...here.  Include
	<math/w_lgamma_compat.c>.
	[LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)] (__lgammal_dbl_compat):
	Define as alias of __lgamma_compat and use in defining lgammal.
	* sysdeps/ieee754/ldbl-opt/w_lgammal.c: Move to ....
	* sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c: ...here.  Include
	<math/lgamma-compat.h> and <math/w_lgamma_compatl.c>.
	(USE_AS_COMPAT): New macro.
	(LGAMMA_OLD_VER): Undefine and redefine.
	(lgammal): Do not define here.
	(gammal): Only define here if [GAMMA_ALIAS].
	* conform/linknamespace.pl (@whitelist): Remove signgam.
	* sysdeps/nacl/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
2015-11-20 22:49:59 +00:00
Adhemerval Zanella
8c873bf019 Remove signal handling for nanosleep (bug 16364)
Linux 2.6.32 and forward do not show the issue regarding SysV SIGCHLD
vs. SIG_IGN for nanosleep which make it feasible to use it for sleep
implementation without requiring any hacking to handle the spurious
wake up.  The issue is likely being fixed before 2.6 and git
history [1] [2].

This patch simplifies the sleep code to call nanosleep directly by
using the posix default version.  It also removes the early cancellation
tests for zero argument, since nanosleep will handle cancellation
in this case.

[1] https://lkml.org/lkml/2004/11/25/5
[2] https://lkml.org/lkml/2003/11/8/50

Checked on x86_64, ppc64le, and aarch64.

	[BZ #16364]
	* sysdeps/unix/sysv/linux/sleep.c: Remove file
	* sysdeps/posix/sleep.c (__sleep): Simplify cancellation handling.
2015-11-20 11:16:07 -02:00
Stefan Liebler
31cf39421b S390: Use __asm__ instead of asm.
* sysdeps/s390/fpu/bits/mathinline.h:
	Use __asm__ [__volatile__] instead of asm [volatile].
	* sysdeps/s390/abort-instr.h: Likewise.
	* sysdeps/s390/atomic-machine.h: Likewise.
	* sysdeps/s390/bits/string.h: Likewise.
	* sysdeps/s390/dl-tls.h: Likewise.
	* sysdeps/s390/fpu/e_sqrt.c: Likewise.
	* sysdeps/s390/fpu/e_sqrtf.c: Likewise.
	* sysdeps/s390/fpu/e_sqrtl.c: Likewise.
	* sysdeps/s390/fpu/fesetround.c: Likewise.
	* sysdeps/s390/fpu/fpu_control.h: Likewise.
	* sysdeps/s390/fpu/s_fma.c: Likewise.
	* sysdeps/s390/fpu/s_fmaf.c: Likewise.
	* sysdeps/s390/memusage.h: Likewise.
	* sysdeps/s390/multiarch/ifunc-resolve.h: Likewise.
	* sysdeps/s390/nptl/pthread_spin_lock.c: Likewise.
	* sysdeps/s390/nptl/pthread_spin_trylock.c: Likewise.
	* sysdeps/s390/nptl/pthread_spin_unlock.c: Likewise.
	* sysdeps/s390/nptl/tls.h: Likewise.
	* sysdeps/s390/s390-32/__longjmp.c: Likewise.
	* sysdeps/s390/s390-32/backtrace.c: Likewise.
	* sysdeps/s390/s390-32/dl-machine.h: Likewise.
	* sysdeps/s390/s390-32/multiarch/memcmp.c: Likewise.
	* sysdeps/s390/s390-32/stackguard-macros.h: Likewise.
	* sysdeps/s390/s390-32/tls-macros.h: Likewise.
	* sysdeps/s390/s390-64/__longjmp.c: Likewise.
	* sysdeps/s390/s390-64/backtrace.c: Likewise.
	* sysdeps/s390/s390-64/dl-machine.h: Likewise.
	* sysdeps/s390/s390-64/iso-8859-1_cp037_z900.c: Likewise.
	* sysdeps/s390/s390-64/multiarch/memcmp.c: Likewise.
	* sysdeps/s390/s390-64/stackguard-macros.h: Likewise.
	* sysdeps/s390/s390-64/tls-macros.h: Likewise.
	* sysdeps/s390/s390-64/utf16-utf32-z9.c: Likewise.
	* sysdeps/s390/s390-64/utf8-utf16-z9.c: Likewise.
	* sysdeps/s390/s390-64/utf8-utf32-z9.c: Likewise.
	* sysdeps/unix/sysv/linux/s390/brk.c: Likewise.
	* sysdeps/unix/sysv/linux/s390/elision-trylock.c: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/s390/sysconf.c: Likewise.
2015-11-20 08:56:40 +01:00
Paul Murphy
9695cb3e65 powerpc: Spinlock optimization and cleanup
This patch optimizes powerpc spinlock implementation by:

* Use the correct EH hint bit on the larx for supported ISA.  For lock
  acquisition, the thread that acquired the lock with a successful stcx
  does not want to give away the write ownership on the cacheline.  The
  idea is to make the load reservation "sticky" about retaining write
  authority to the line.  That way, the store that must inevitably come
  to release the lock can succeed quickly and not contend with other
  threads issuing lwarx.  If another thread does a store to the line
  (false sharing), the winning thread must give up write authority to
  the proper value of EH for the larx for a lock acquisition is 1.

* Increase contented lock performance by up to 40%, and no measurable
  impact on uncontended locks on P8.

Thanks to Adhemerval Zanella who did most of the work.  I've run some
tests, and addressed some minor feedback.

	* sysdeps/powerpc/nptl/pthread_spin_lock.c (pthread_spin_lock):
	Add lwarx hint, and use macro for acquire instruction.
	* sysdeps/powerpc/nptl/pthread_spin_trylock.c (pthread_spin_trylock):
	Likewise.
	* sysdep/unix/sysv/linux/powerpc/pthread_spin_unlock.c: Move to ...
	* sysdeps/powerpc/nptl/pthread_spin_unlock.c: ... here, and
	update to use new atomic macros.
2015-11-19 18:04:30 -02:00
Paul Murphy
86b4939846 powerpc: More elision improvements
__lll_trylock_elision sets the adapt_count variable too
aggressively, and incorrectly on persistent aborts.  Taking
a cue from s390, adapt_count is only updated if the lock
is locked, or a persistent failure occurs.

In addition, the abort codes have been renumbered and
refactored for clarity.  As it stands, glibc only cares
if the abort is persistent or not.

All aborts are now persistent, excepting a busy lock.  This
includes changing _ABORT_NESTED_TRYLOCK into a persistent
abort.

	* sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
	(__lll_trylock_elision): Fix setting of adapt_count.
	* sysdeps/unix/sysv/linux/powerpc/htm.h
	(_ABORT_PERSISTENT): Define to clarify persistent aborts.
	(_ABORT_NESTED_TRYLOCK): Renumber, and make persistent.
	(_ABORT_SYSCALL): Renumber, and clarify definition.
	(_ABORT_LOCK_BUSY): Renumber, make non-persistent.
2015-11-19 16:15:42 -02:00
Paul Murphy
79adcb58f6 Shuffle includes in ldbl-128ibm/mpn2ldl.c
Kind of hokey, but errno.h drags in misc/sys/param.h which
defines MIN/MAX causing an error.  Include system headers
first to grab MIN/MAX definition in param.h, and define
HAVE_ALLOCA to preserve existing behavior.

	* sysdeps/ieee754/ldbl-128ibm/mpn2ldl.c: Include gmp headers
	after system headers to prevent MIN/MAX redefinition.  Define
	HAVE_ALLOCA to preserve builtin alloca usage.
2015-11-19 15:52:43 -02:00
Siddhesh Poyarekar
463ac90dab Include s_sin.c in s_sincos.c
Include the __sin and __cos functions as local static copies to allow
deper optimization of the functions.  This change shows an improvement
of about 17% in the min case and 12.5% in the mean case for the sincos
microbenchmark on x86_64.

	* sysdeps/ieee754/dbl-64/s_sin.c (__sin)[IN_SINCOS]: Mark function
	static and don't set or restore rounding.
	(__cos)[IN_SINCOS]: Likewise.
	* sysdeps/ieee754/dbl-64/s_sincos.c: Include s_sin.c.
	(__sincos): Set and restore rounding mode.  Remove check for infinite
	or NaN input.
2015-11-17 21:11:31 +05:30
Siddhesh Poyarekar
b7665e5163 Remove redundant else clauses in s_sin.c
Makes the code easier to read due to the reduced nesting.  The
generated binary is unchanged.
2015-11-17 16:03:11 +05:30
Siddhesh Poyarekar
4916acd87b benchtests: Mark output variables as used
Prevent function calls that don't return anything from being optimized
out by the compiler by marking its input variables as used.

This prevents the sincos function call from being optimized out in the
benchmark.
2015-11-17 16:01:15 +05:30
Florian Weimer
b43e85786f Work around conflicting declarations of math functions
This restores compilation on architectures such as armhfp which
alias acos and acosl because double and long double are the same.
2015-11-16 21:29:14 +01:00
H.J. Lu
89569c8bb6 Run tst-prelink test for GLOB_DAT reloc
Run tst-prelink test on targets with GLOB_DAT relocaton.

	* config.make.in (have-glob-dat-reloc): New.
	* configure.ac (libc_cv_has_glob_dat): New.  Set to yes if
	target supports GLOB_DAT relocaton. AC_SUBST.
	* configure: Regenerated.
	* elf/Makefile (tests): Add tst-prelink.
	(tests-special): Add $(objpfx)tst-prelink-cmp.out.
	(tst-prelink-ENV): New.
	($(objpfx)tst-prelink-conflict.out): Likewise.
	($(objpfx)tst-prelink-cmp.out): Likewise.
	* sysdeps/x86/tst-prelink.c: Moved to ...
	* elf/tst-prelink.c: Here.
	* sysdeps/x86/tst-prelink.exp: Moved to ...
	* elf/tst-prelink.exp: Here.
	* sysdeps/x86/Makefile (tests): Don't add tst-prelink.
	(tst-prelink-ENV): Removed.
	($(objpfx)tst-prelink-conflict.out): Likewise.
	($(objpfx)tst-prelink-cmp.out): Likewise.
	(tests-special): Don't add $(objpfx)tst-prelink-cmp.out.
2015-11-14 12:00:38 -08:00
Joseph Myers
909f8e14db Fix ldbl-128ibm strtold overflow handling (bug 14551).
For ldbl-128ibm, if the result of strtold overflows in the final
conversion from MPN to IBM long double (because the exponent for a
106-bit IEEE result is 1023 but the high part would end up as
0x1p1024, which overflows), that conversion code fails to handle this
and produces an invalid long double value (high part infinite, low
part not zero) without raising exceptions or setting errno.  This
patch adds an explicit check for this case to ensure an appropriate
result is returned in a way that ensures the right exceptions are
raised, with errno set.

Tested for powerpc.

	[BZ #14551]
	* sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c: Include <errno.h>.
	(__mpn_construct_long_double): If high part overflows to infinity,
	set errno and recompute overflowed result of the correct sign.
	* sysdeps/ieee754/ldbl-128ibm/Makefile
	[$(subdir) = stdlib] (tests): Add tst-strtold-ldbl-128ibm.
	[$(subdir) = stdlib] ($(objpfx)tst-strtold-ldbl-128ibm): Depend on
	$(libm).
	* sysdeps/ieee754/ldbl-128ibm/tst-strtold-ldbl-128ibm.c: New file.
2015-11-13 12:03:46 +00:00
Joseph Myers
21378ae0d3 Fix powerpc round, roundf spurious "inexact" (bug 19238).
The powerpc hard-float round and roundf functions, both 32-bit and
64-bit, raise spurious "inexact" exceptions for integer arguments from
adding 0.5 and rounding to integer toward zero.

Since these functions already save and restore the rounding mode, it's
natural to make them restore the full floating-point state instead to
fix this bug, which this patch does.  The save of the state is moved
after the first floating-point operation on the input so that any
"invalid" exceptions from signaling NaN inputs are properly
preserved.  As a consequence of this approach to the fix, "inexact"
for noninteger arguments (disallowed by TS 18661-1 but not by C99/C11,
see bug 15479) is also avoided for these implementations; this is
*not* a general fix for bug 15479 since plenty of other
implementations of various functions still raise spurious "inexact"
for noninteger arguments.

This issue and fix do not apply to builds using power5+ versions of
round and roundf, which use the frin instruction and avoid "inexact"
exceptions that way.

This patch should get hard-float powerpc32 and powerpc64 (default
function implementations) back to a state where test-float and
test-double will pass after ulps regeneration.

Tested for powerpc32 and powerpc64.

	[BZ #15479]
	[BZ #19238]
	* sysdeps/powerpc/powerpc32/fpu/s_round.S (__round): Save
	floating-point state after first operation on input.  Restore full
	state rather than just rounding mode.
	* sysdeps/powerpc/powerpc32/fpu/s_roundf.S (__roundf): Likewise.
	* sysdeps/powerpc/powerpc64/fpu/s_round.S (__round): Likewise.
	* sysdeps/powerpc/powerpc64/fpu/s_roundf.S (__roundf): Likewise.
2015-11-12 19:00:06 +00:00
Joseph Myers
32b71ad358 Fix powerpc64 lround, lroundf, llround, llroundf spurious "inexact" exceptions (bug 19235).
Similar to bug 19134 for powerpc32, the powerpc64 implementations of
lround, lroundf, llround, llroundf can raise spurious "inexact"
exceptions for integer arguments from adding 0.5 then converting to
integer (this does not apply to the power5+ version for double, which
uses the frin instruction which is defined never to raise "inexact"; I
don't know why power5+ doesn't use that version for float as well).

This patch fixes the bug in a similar way to the powerpc32 bug, by
testing for integers (adding and subtracting 2^52 and comparing with
the value before that addition and subtraction) and not adding 0.5 in
that case.

The powerpc maintainers may wish to look at making power5+ / power6x /
power8 use frin for float lround / llround as well as for double,
unless there's some reason I've missed that this isn't beneficial.

Tested for powerpc64.

	[BZ #19235]
	* sysdeps/powerpc/powerpc64/fpu/s_llround.S (__llround): Do not
	add 0.5 to integer arguments.
	* sysdeps/powerpc/powerpc64/fpu/s_llroundf.S (__llroundf):
	Likewise.
	(.LC2): New object.
2015-11-12 16:24:00 +00:00
Mike Frysinger
1a44f1433e pylintrc: disable reports
I've never found these useful, nor found anyone else who likes them.
Turn them off by default.
2015-11-11 13:41:57 -05:00
Roland McGrath
c0d6f2a33e NaCl: Use open_resource API for shared objects 2015-11-10 19:44:48 -08:00
Joseph Myers
71d1b0166b Fix powerpc nearbyint wrongly clearing "inexact" and leaving traps disabled (bug 19228).
Similar to bug 15491 recently fixed for x86_64 / x86, the powerpc
(both powerpc32 and powerpc64) hard-float implementations of
nearbyintf and nearbyint wrongly clear an "inexact" exception that was
raised before the function was called; this shows up as failure of the
test math/test-nearbyint-except added when that bug was fixed.  They
also wrongly leave traps on "inexact" disabled if they were enabled
before the function was called.

This patch fixes the bugs similar to how the x86 bug was fixed: saving
and restoring the whole floating-point state, both to restore the
original "inexact" flag state and to restore the original state of
whether traps on "inexact" were enabled.  Because there's a convenient
point in the powerpc implementations to save state after any sNaN
arguments will have raised "invalid" but before "inexact" traps need
to be disabled, no special handling for "invalid" is needed as in the
x86 version.

Tested for powerpc64 and powerpc32, where it fixes the
math/test-nearbyint-except failure as well as fixing the new test
math/test-nearbyint-except-2 added by this patch.  Also tested for
x86_64 and x86 that the new test passes.

If powerpc experts see a more efficient way of doing this
(e.g. instruction positioning that's better for pipelines on typical
processors) then of course followups optimizing the fix are welcome.

	[BZ #19228]
	* sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S (__nearbyint): Save
	and restore full floating-point state.
	* sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S (__nearbyintf):
	Likewise.
	* sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S (__nearbyint):
	Likewise.
	* sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S (__nearbyintf):
	Likewise.
	* math/test-nearbyint-except-2.c: New file.
	* math/Makefile (tests): Add test-nearbyint-except-2.
2015-11-11 00:06:09 +00:00
H.J. Lu
fe534fe898 Add a test for prelink output
This test applies to i386 and x86_64 which set R_386_GLOB_DAT and
R_X86_64_GLOB_DAT to ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA.

	[BZ #19178]
	* sysdeps/x86/Makefile (tests): Add tst-prelink.
	(tst-prelink-ENV): New.
	($(objpfx)tst-prelink-conflict.out): Likewise.
	($(objpfx)tst-prelink-cmp.out): Likewise.
	(tests-special): Add $(objpfx)tst-prelink-cmp.out.
	* sysdeps/x86/tst-prelink.c: New file.
	* sysdeps/x86/tst-prelink.exp: Likewise.
2015-11-10 12:27:24 -08:00
Joseph Myers
685312298f Add more tests of pow.
Prompted by a gcc-patches discussion, this patch adds tests of pow for
the cases where pow (x, 0.5) is required to return a different result
from sqrt (x), as those cases were previously missing from the tests
(although they worked correctly).

Tested for x86_64 and x86.

	* math/auto-libm-test-in: Add another test of pow.
	* math/auto-libm-test-out: Regenerated.
	* math/libm-test.inc (pow_test_data): Add another test.
2015-11-10 17:34:13 +00:00
Adhemerval Zanella
71bbdde7f5 Fix nearbyintl linkage for ia64 (bug 19219)
GLIBC fails to build for ia64 since commit d0d286d32d.
It is because this commit uses the internal definition for nearbyintl,
but ia64 specialized implementation (sysdeps/ia64/fpu/s_nearbyintl.S)
does not define it.

Tested with a ia64 build.

        [BZ #19219]
        * sysdeps/ia64/fpu/s_nearbyintl.S (__nearbyint): Define and
        weak_alias to nearbyintl.
2015-11-10 10:56:24 -02:00
Wilco Dijkstra
2fee269248 Enable _STRING_ARCH_unaligned on AArch64.
* sysdeps/aarch64/bits/string.h: New file.
        (_STRING_ARCH_unaligned): Define.
2015-11-10 11:15:59 +00:00
Wilco Dijkstra
755f6e0ad5 Remove __signbit* from localplt.data as they are no longer called from within GLIBC.
* sysdeps/unix/sysv/linux/aarch64/localplt.data: Remove __signbit*.
	* sysdeps/unix/sysv/linux/arm/localplt.data: Likewise.
	* sysdeps/unix/sysv/linux/microblaze/localplt.data: Likewise.
	* sysdeps/unix/sysv/linux/nios2/localplt.data: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data: Likewise.
2015-11-10 11:15:43 +00:00
Florian Weimer
a1b85ae88b ld.so: Add original DSO name if overridden by audit module [BZ #18251]
* elf/dl-load.c (_dl_map_object_from_fd): Add additional parameter
	for original name of the DSO.  Add it to the name list of the DSO
	if it is actually given.
	(_dl_map_object): Keep track of whether an audit module rewrote
	the file name.  If yes, pass the original name to
	_dl_map_object_from_fd in a new parameter, otherwise NULL.  When
	debugging is enabled, log the change of the file name.
	* sysdeps/mach/hur/dl-sysdep.c: Adjust commented-out call to
	_dl_map_object_from_fd.
	* elf/Makefile: Build and run tst-audit11 and tst-audit12.
	* elf/tst-audit11.c: New file
	* elf/tst-auditmod11.c: New file.
	* elf/tst-audit11mod1.c: New file.
	* elf/tst-audit11mod2.c: New file.
	* elf/tst-audit11mod2.map: New file.
	* elf/tst-audit12.c: New file
	* elf/tst-auditmod12.c: New file.
	* elf/tst-audit12mod1.c: New file.
	* elf/tst-audit12mod2.c: New file.
	* elf/tst-audit12mod2.map: New file.
	* elf/tst-audit12mod3.c: New file.
2015-11-09 17:01:46 +01:00
Stefan Liebler
37d13b179c S390: Clean setjmp, longjmp, getcontext symbols.
For each function setjmp, longjmp, getcontext, there exist a symbol
<func> and a default/versioned symbol <func>@@GLIBC_2.x in the build
obj-files.
This is wrong because it should only exist an unversioned or a
default-versioned symbol with the same name in an obj-file.
Glibc can't be build with recent binutils. See the already fixed linker
bug https://sourceware.org/bugzilla/show_bug.cgi?id=19073.
Nevertheless, this patch cleans this up.

Furthermore the BSD entry points setjmp, _setjmp were marked as weak,
but should be strong as on other architectures.
(see https://sourceware.org/ml/libc-alpha/2014-07/msg00568.html for an
older discussion with Andreas Schwab)

Some whitespace issues are corrected in sysdeps/s390/s390-64/setjmp.S,
too. But there is no change in the assembler code.

ChangeLog:

	* sysdeps/s390/longjmp.c (longjmp, _longjmp, siglongjmp):
	Don't create weak aliases,
	because versioned symbols are created later.
	* sysdeps/s390/s390-32/setjmp.S
	(setjmp, _setjmp): Remove weak and rename to an unique name
	in SHARED case due to existing versioned symbols.
	* sysdeps/s390/s390-64/setjmp.S: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S
	(getcontext): Create weak alias only in non SHARED case.
	* sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S: Likewise.
2015-11-09 16:14:49 +01:00
Stefan Liebler
016495b818 S390: Call direct system calls for socket operations.
this patch calls direct system calls for socket operations in the same way as power does. The system calls were introduced in kernel commit https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=977108f89c989b1eeb5c8d938e1e71913391eb5f.
There are no direct recv, send, accept syscalls available on s390. Thus
recvfrom, sendto, accept4 are called instead of the socketcall by defining __ASSUME_*_FOR_*_SYSCALL macros. See recv.c, send.c, accept.c in sysdeps/unix/sysv/linux/ folder.

The socketcalls in syscalls.list for s390-64 are removed. They were never used on s390x.

ChangeLog:

	* sysdeps/unix/sysv/linux/s390/kernel-features.h:
	(__ASSUME_*_SYSCALL) Define new macros.
	* sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list:
	Remove socketcall syscalls.
	* sysdeps/unix/sysv/linux/accept.c (__libc_accept):
	Use accept4 if defined __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL.
	* sysdeps/unix/sysv/linux/recv.c (__libc_recv):
	Use recvfrom if defined __ASSUME_RECVFROM_FOR_RECV_SYSCALL.
	* sysdeps/unix/sysv/linux/send.c (__libc_send):
	Use sendto if defined __ASSUME_SENDTO_FOR_SEND_SYSCALL.
2015-11-09 16:14:49 +01:00
Florian Weimer
2eecc8afd0 Terminate process on invalid netlink response from kernel [BZ #12926]
The recvmsg system calls for netlink sockets have been particularly
prone to picking up unrelated data after a file descriptor race
(where the descriptor is closed and reopened concurrently in a
multi-threaded process, as the result of a file descriptor
management issue elsewhere).  This commit adds additional error
checking and aborts the process if a datagram of unexpected length
(without the netlink header) is received, or an error code which
cannot happen due to the way the netlink socket is used.

	[BZ #12926]
	Terminate process on invalid netlink response.
	* sysdeps/unix/sysv/linux/netlinkaccess.h
	(__netlink_assert_response): Declare.
	* sysdeps/unix/sysv/linux/netlink_assert_response.c: New file.
	* sysdeps/unix/sysv/linux/Makefile [$(subdir) == inet]
	(sysdep_routines): Add netlink_assert_response.
	* sysdeps/unix/sysv/linux/check_native.c (__check_native): Call
	__netlink_assert_response.
	* sysdeps/unix/sysv/linux/check_pf.c (make_request): Likewise.
	* sysdeps/unix/sysv/linux/ifaddrs.c (__netlink_request): Likewise.
	* sysdeps/unix/sysv/linux/Versions (GLIBC_PRIVATE): Add
	__netlink_assert_response.
2015-11-09 12:48:41 +01:00
H.J. Lu
f3d18efb8a Keep only ELF_RTYPE_CLASS_{PLT|COPY} bits for prelink
prelink runs ld.so with the environment variable LD_TRACE_PRELINKING
set to dump the relocation type class from _dl_debug_bindings.  prelink
has the following relocation type classes:

 #define RTYPE_CLASS_VALID       8
 #define RTYPE_CLASS_PLT         (8|1)
 #define RTYPE_CLASS_COPY        (8|2)
 #define RTYPE_CLASS_TLS         (8|4)

where ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA has a conflict with
RTYPE_CLASS_TLS.

Since prelink only uses ELF_RTYPE_CLASS_PLT and ELF_RTYPE_CLASS_COPY
bits, we should clear the other bits when the DL_DEBUG_PRELINK bit is
set.

	[BZ #19178]
	* elf/dl-lookup.c (RTYPE_CLASS_VALID): New.
	(RTYPE_CLASS_PLT): Likewise.
	(RTYPE_CLASS_COPY): Likewise.
	(RTYPE_CLASS_TLS): Likewise.
	(_dl_debug_bindings): Use RTYPE_CLASS_TLS and RTYPE_CLASS_VALID
	to set relocation type class for DL_DEBUG_PRELINK.  Keep only
	ELF_RTYPE_CLASS_PLT and ELF_RTYPE_CLASS_COPY bits for
	DL_DEBUG_PRELINK.
2015-11-07 06:32:30 -08:00
Joseph Myers
d699ab25d3 Fix typo in signgam test messages.
I noticed a typo in the messages from the signgam tests I recently
added.  This patch fixes it.

Tested for x86_64 and x86.

	* math/test-signgam-finite.c (RUN_TESTS): Correct messages about
	calls with argument -0.5.
	* math/test-signgam-finite-c99.c (RUN_TESTS): Likewise.
2015-11-06 18:45:32 +00:00
Joseph Myers
b9eaf28a64 Remove configure tests for some linker -z options.
There are configure tests for the linker -z nodelete, -z nodlopen and
-z initfirst options.  These options were added in binutils 2.11, so
the tests are obsolete; this patch removes them.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	* configure.ac (libc_cv_z_nodelete): Remove configure test.
	(libc_cv_z_nodlopen): Likewise.
	(libc_cv_z_initfirst): Likewise.
	* configure: Regenerated.
2015-11-06 13:21:51 +00:00
Florian Weimer
8c77b6ad40 Simplify the abilist format
The new format lists the version on each line, as in:

	VERSION SYMBOL TYPE [VALUE]

This makes it easier to process the files with line-oriented tools.

The abilist files were converted with this awk script:

/^[^ ]/ { version = $1 }
/^ / { print version, substr($0, 2) }

And sorted under the "C" locale with sort.
2015-11-06 13:58:53 +01:00
Mark Wielaard
8b7b7f75d9 Add LFS support for fts functions (bug 11460)
fts didn't have large-file support yet and fts.h had an #error preventing
usage when _FILE_OFFSET_BITS was set. This required nasty workarounds for
programs using fts with LFS. This patch implements LFS support for fts by
adding FTS64 and FTENT64 variants plus fts64 functions. Which are simple
aliases for 64bit off_t arches.

Also includes a simple testcase for some of the fts functions with or
without LFS enabled.

	[BZ #11460]
	* io/Makefile (routines): Add fts64.
	(tests): Add tst-fts and tst-fts-lfs.
	(CFLAGS-fts64.c): New.
	* io/Versions (GLIBC_2.23): New.
	* io/fts.c: Replace FTS with FTSOBJ, FTSENT with FTSENTRY. Use
	function defines FTS_OPEN, FTS_CLOSE, FTS_READ, FTS_SET and
	FTS_CHILDREN. Define FTSOBJ, FTSENTRY, FTS_OPEN, FTS_CLOSE,
	FTS_READ, FTS_SET, FTS_CHILDREN, INO_T, STAT and LSTAT if necessary.
	* io/fts.h (FTS64): New if _USE_LARGEFILE64.
	(FTSENT64): Likewise.
	(fts64_children): Likewise.
	(fts64_close): Likewise.
	(fts64_open): Likewise.
	(fts64_read): Likewise.
	(fts64_set): Likewise.
	* io/fts64.c: New file.
	* io/tst-fts.c: New test.
	* io/tst-fts-lfs.c: Likewise.
	* sysdeps/unix/sysv/linux/aarch64/libc.abilist (GLIBC_2.23): Add
	GLIBC_2.23, fts64_children, fts64_close, fts64_open, fts64_read and
	fts64_set.
	* sysdeps/unix/sysv/linux/alpha/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/arm/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/hppa/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/i386/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/ia64/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/microblaze/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/nios2/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sh/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/64/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist: Likewise.
	* sysdeps/wordsize-64/fts.c: New file.
	* sysdeps/wordsize-64/fts64.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n64/fts.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n64/fts64.c: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/fts.c: likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/fts64.c: likewise.
2015-11-06 11:24:16 +01:00
Joseph Myers
5a28590adf Run libm-test tests for finite-math-only functions.
This patch arranges for the libm-test tests to be run for the
finite-math-only function variants, in addition to the existing runs
for out-of-line and bits/mathinline.h inline variants.

gen-libm-test.pl is made to add a flag to all tests with non-finite
inputs or outputs so that they can be skipped at runtime when the
finite-math-only variants are being tested (skipping is for all
rounding modes; that is, -ffinite-math-only is being treated as
excluding overflow cases even when the rounding mode is such that the
overflowed result is finite).  errno setting is not tested for these
variants (in general they don't set it, and it's
implementation-defined in ISO C whether it's set on underflow, with
the glibc definition being that it may not be for -ffinite-math-only;
other cases where errno would normally be expected to be set are
mostly excluded as having non-finite or overflowing arguments or
results).

As with the inline function tests, these ones are built with
-D__FINITE_MATH_ONLY=1 to select the function variants, rather than
-ffinite-math-only.  Use of -ffinite-math-only would not be suitable
for these tests because it would also affect libm-test.inc code that
e.g. tests whether results are infinities or NaNs - if these function
variants have bugs that incorrectly produce such results, we want them
to show up in the tests, which means the compiler should not be
optimizing the tests on the basis of results being finite.

The finite-math-only functions share the same ulps settings as the
main out-of-line functions.

These interfaces were one significant group of untested ABIs listed at
<https://sourceware.org/ml/libc-alpha/2013-07/msg00386.html>.  I
haven't rerun the script to list untested interfaces, but I expect
that the vast bulk of interfaces there are still untested and could do
with testcases being added (or, if applicable, being made compat
symbols; in general, most symbols not starting '_' are safe bets to
add tests for, while _* need more investigation of what the actual
public API is, if any).  I'd like to encourage people to help reduce
the accumulation of untested interfaces by adding more tests.

Tested for x86_64 and x86.  Given my recent lgamma/gamma and log*
fixes, the new tests pass (before those fixes, the new tests showed up
those bugs, so illustrating the practical utility of having tests for
these function variants).

	* math/libm-test.inc (NON_FINITE): New macro.
	(enable_test): Do not run tests flagged NON_FINITE if TEST_FINITE.
	* math/gen-libm-test.pl (show_exceptions): Add argument
	$non_finite.
	(parse_args): Update call to show_exceptions.
	* math/test-math-finite.h: New file.
	* math/test-math-no-finite.h: Likewise.
	* math/test-double-finite.c: Likewise.
	* math/test-float-finite.c: Likewise.
	* math/test-ldouble-finite.c: Likewise.
	* math/test-double.c: Include "test-math-no-finite.h".
	* math/test-float.c: Include "test-math-no-finite.h".
	* math/test-ldouble.c: Include "test-math-no-finite.h".
	* math/test-math-inline.h (TEST_FINITE): New macro.
	* math/test-math-vector.h (TEST_FINITE): Likewise.
	* math/Makefile (test-longdouble-yes): Add test-ldouble-finite.
	(libm-tests): Add test-float-finite and test-double-finite.
	($(objpfx)test-float-finite.o): New dependency on
	$(objpfx)libm-test.stmp.
	($(objpfx)test-double-finite.o): Likewise.
	($(objpfx)test-ldouble-finite.o): Likewise.
	(libm-test-no-inline-cflags): New variable.
	(libm-test-finite-cflags): Likewise.
	(CFLAGS-test-float-finite.c): Likewise.
	(CFLAGS-test-double-finite.c): Likewise.
	(CFLAGS-test-ldouble-finite.c): Likewise.
	(CFLAGS-test-float.c): Use $(libm-test-no-inline-cflags).
	(CFLAGS-test-double.c): Likewise.
	(CFLAGS-test-ldouble.c): Likewise.
2015-11-05 23:28:16 +00:00
Roland McGrath
f75226e6de Fix some stub prototypes missing ... after K&R conversion 2015-11-05 15:00:12 -08:00
Joseph Myers
f268ab5f69 Add script to list fixed bugs for the NEWS file.
This patch adds a script to list fixed bugs for the NEWS file, as
proposed in
<https://sourceware.org/ml/libc-alpha/2015-10/msg01043.html>, with the
bugs listed in the format proposed in
<https://sourceware.org/ml/libc-alpha/2015-11/msg00088.html>.

	* scripts/list-fixed-bugs.py: New file.
2015-11-05 22:18:32 +00:00
Joseph Myers
01189b083b Fix i386/x86_64 log* (1) zero sign for -ffinite-math-only (bug 19213).
For the -ffinite-math-only versions of various x86_64 and x86 log*
functions, a zero result from log* (1) is returned with incorrect sign
in round-downward mode.  This patch fixes this in a similar way to the
previous fixes for the non-*_finite versions of the functions.

Tested for x86_64 and x86 (including an i586 build), together with a
patch that will be applied separately to enable the main libm-test.inc
tests for the finite-math-only functions.

	[BZ #19213]
	* sysdeps/i386/fpu/e_log.S (__log_finite): Ensure +0 is always
	returned for argument 1.
	* sysdeps/i386/fpu/e_logf.S (__logf_finite): Likewise.
	* sysdeps/i386/fpu/e_logl.S (__logl_finite): Likewise.
	* sysdeps/i386/i686/fpu/e_logl.S (__logl_finite): Likewise.
	* sysdeps/x86_64/fpu/e_log10l.S (__log10l_finite): Likewise.
	* sysdeps/x86_64/fpu/e_log2l.S (__log2l_finite): Likewise.
	* sysdeps/x86_64/fpu/e_logl.S (__logl_finite): Likewise.
2015-11-05 21:56:31 +00:00
Joseph Myers
939fdd1c36 Fix finite-math-only lgamma functions signgam setting (bug 19211).
The lgamma inline functions in bits/math-finite.h do not set signgam
if __USE_ISOC99, even when other feature test macros mean a standard
such as XSI POSIX is selected for which it should be set.  (This is
essentially the opposite issue to bug 15421, the out-of-line versions
setting signgam even when they shouldn't.)

This patch fixes those functions to use __USE_MISC || __USE_XOPEN as
the condition for when to set signgam, since it's the condition for
when math.h declares signgam.  The legacy gamma* names are only
declared at all if __USE_MISC || __USE_XOPEN, so they just set signgam
unconditionally.

Tests for certain standards or not using _GNU_SOURCE cannot use
test-skeleton.c (this is a known issue noted on the wiki todo list).
Thus, the new tests that signgam remains not set in ISO C modes do not
use test-skeleton.c.  They also define _ISOMAC to avoid running into
declarations in the internal include/ headers that only work in
_GNU_SOURCE mode.

Tested for x86_64 and x86.

	[BZ #19211]
	* math/bits/math-finite.h (lgamma): Set signgam if [__USE_MISC ||
	__USE_XOPEN], not if [!__USE_ISOC99].
	(lgammaf): Likewise.
	(lgammal): Likewise.
	(gamma): Set signgam unconditionally, not if [!__USE_ISOC99].
	(gammaf): Likewise.
	(gammal): Likewise.
	* math/test-signgam-finite-c11.c: New file.
	* math/test-signgam-finite-c99.c: Likewise.
	* math/test-signgam-finite.c: Likewise.
	* math/Makefile (tests): Add test-signgam-finite,
	test-signgam-finite-c99 and test-signgam-finite-c11.
	(CFLAGS-test-signgam-finite.c): New variable.
	(CFLAGS-test-signgam-finite-c99.c): Likewise.
	(CFLAGS-test-signgam-finite-c11.c): Likewise.
2015-11-05 21:23:07 +00:00
Joseph Myers
f248238cf4 Fix features.h for -Wundef (bug 19212).
features.h is not clean with -Wundef (for the installed header, of
course this only appears with -Wsystem-headers).  In ISO C standards
modes, you get a series of warnings / errors relating to
_POSIX_C_SOURCE and _XOPEN_SOURCE not being defined when tested in
standards mode and uses #undef _GNU_SOURCE to avoid the default
_GNU_SOURCE from libc-symbols.h.  This patch changes the relevant #if
conditionals to avoid these warnings / errors.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	[BZ #19212]
	* include/features.h [(_XOPEN_SOURCE - 0) >= 500]: Change
	conditional to [defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >=
	500].
	[_POSIX_C_SOURCE >= 1]: Change conditional to [defined
	_POSIX_C_SOURCE && _POSIX_C_SOURCE >= 1].
	[(_POSIX_C_SOURCE - 0) >= 199309L]: Change conditional to [defined
	_POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199309L].
	[(_POSIX_C_SOURCE - 0) >= 199506L]: Change conditional to [defined
	_POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199506L].
	[(_POSIX_C_SOURCE - 0) >= 200112L]: Change conditional to [defined
	_POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200112L].
	[(_POSIX_C_SOURCE - 0) >= 200809L]: Change conditional to [defined
	_POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200809L].
2015-11-05 21:19:37 +00:00
Joseph Myers
8fed86556b Don't redirect ldexp to scalbn in bits/math-finite.h (bug 19209).
bits/math-finite.h maps ldexp functions to corresponding scalbn
functions.  This is (a) a namespace bug for C90, which has ldexp but
not scalbn, and (b) in any case useless, since the ldexp and scalbn
functions have identical semantics (for floating-point types with
radix 2), and since the fix for bug 6803 are actually aliases
(presumably the mapping was based around the old bug of scalbn not
setting errno).  This patch removes the bogus redirections.

Tested for x86_64 and x86.

	[BZ #19209]
	* math/bits/math-finite.h (ldexp): Remove declaration.
	(ldexpf): Likewise.
	(ldexpl): Likewise.
2015-11-05 17:00:31 +00:00
Joseph Myers
3bfee8beb8 Make bits/math-finite.h conditions match other headers (bug 19205).
bits/math-finite.h declares -ffinite-math-only variants of various
functions under conditions not matching those under which the normal
versions are declared.

* math.h only ever includes bits/mathcalls.h to declare float and long
  double functions if __USE_ISOC99, but bits/math-finite.h declares
  some float functions regardless (long double ones are conditioned on
  __MATH_DECLARE_LDOUBLE).  (For C90 functions this isn't a
  conformance bug because C90 reserves the float and long double
  names, but is still contrary to good glibc practice.  For some other
  functions in older XSI standards it *is* a conformance bug.)

* Some functions are defined as inlines using lgamma_r functions under
  conditions where those lgamma_r functions are not themselves
  declared.

* hypot is declared under __USE_XOPEN || __USE_ISOC99 in
  bits/mathcalls.h, __USE_ISOC99 only in bits/math-finite.h.

* float and long double versions of Bessel functions should be limited
  to __USE_MISC (as in bug 18977).

* gamma should not be declared for __USE_XOPEN2K (as in bug 18967).

* remainder should be restricted to __USE_XOPEN_EXTENDED ||
  __USE_ISOC99, not unconditional.

* scalb should not be declared for __USE_XOPEN2K8, and scalbf and
  scalbl are non-POSIX (as in bug 18967).

This patch fixes all these issues (it doesn't seem worth splitting
them into separate patches or bugs).  I put __USE_ISOC99 conditionals,
where needed, around both float and long double declarations, even
though formally redundant around the long double declarations because
__MATH_DECLARE_LDOUBLE isn't defined without __USE_ISOC99; it seemed
clearer that way.  The missing declarations of lgamma_r functions are
dealt with by directly using declarations of __lgamma*_r_finite, in
the implementation namespace, rather than having the inlines rely on
asm redirection of lgamma*_r.

After this patch, there are some apparently redundant nested
__USE_ISOC99 conditionals in lgamma / gamma definitions.  These
actually reflect a separate bug (the correct condition for the lgamma
inline functions to set signgam is __USE_MISC || __USE_XOPEN, the
condition under which signgam is declared, rather than disabling
setting it if __USE_ISOC99, which includes XSI POSIX versions for
which signgam *should* be set).  They'll be fixed as part of a fix for
that bug, which will also add tests for these inlines.  I've put a
note about more general conform/ test coverage for -ffinite-math-only
on
<https://sourceware.org/glibc/wiki/Development_Todo/Master#conformtest_improvements>,
alongside other options for which this is also relevant (some of which
have also had such bugs in the past relating to mismatched
conditionals).

I also intend to enable the main libm-test.inc tests for the
math-finite.h functions, but some other bugs in __*_finite need fixing
first.

	[BZ #19205]
	* math/bits/math-finite.h (acosf): Condition declaration on
	[__USE_ISOC99].
	(acosl): Likewise.
	(acoshf): Likewise.
	(acoshl): Likewise.
	(asinf): Likewise.
	(asinl): Likewise.
	(atan2f): Likewise.
	(atan2l): Likewise.
	(atanhf): Likewise.
	(atanhl): Likewise.
	(coshf): Likewise.
	(coshl): Likewise.
	(expf): Likewise.
	(expl): Likewise.
	(fmodf): Likewise.
	(fmodl): Likewise.
	(hypot): Change condition to [__USE_XOPEN || __USE_ISOC99].
	(j0f): Change condition to [__USE_MISC && __USE_ISOC99].
	(j0l): Likewise.
	(y0f): Likewise.
	(y0l): Likewise.
	(j1f): Likewise.
	(j1l): Likewise.
	(y1f): Likewise.
	(y1l): Likewise.
	(jnf): Likewise.
	(jnl): Likewise.
	(ynf): Likewise.
	(ynl): Likewise.
	(lgammaf_r): Condition declaration on [__USE_ISOC99].
	(lgammal_r): Likewise.
	(__lgamma_r_finite): New declaration.
	(__lgammaf_r_finite): Likewise.
	(__lgammal_r_finite): Likewise.
	(lgamma): Use __lgamma_r_finite.
	(lgammaf): Condition definition on [__USE_ISOC99].  Use
	__lgammaf_r_finite.
	(lgammal): Condition definition on [__USE_ISOC99].  Use
	__lgammal_r_finite.
	(gamma): Do not define for [!__USE_MISC && __USE_XOPEN2K].  Use
	__lgamma_r_finite.
	(gammaf): Condition definition on [__USE_ISOC99].  Use
	__lgammaf_r_finite.
	(gammal): Condition definition on [__USE_ISOC99].  Use
	__lgammal_r_finite.
	(logf): Condition declaration on [__USE_ISOC99].
	(logl): Likewise.
	(log10f): Likewise.
	(log10l): Likewise.
	(ldexpf): Likewise.
	(ldexpl): Likewise.
	(powf): Likewise.
	(powl): Likewise.
	(remainder): Condition declaration on [__USE_XOPEN_EXTENDED ||
	__USE_ISOC99].
	(remainderf): Condition declaration on [__USE_ISOC99].
	(remainderl): Likewise.
	(scalb): Do not declare for [!__USE_MISC && __USE_XOPEN2K8].
	(scalbf): Change condition to [__USE_MISC && __USE_ISOC99].
	(scalbl): Likewise.
	(sinhf): Condition declaration on [__USE_ISOC99].
	(sinhl): Likewise.
	(sqrtf): Likewise.
	(sqrtl): Likewise.
2015-11-05 00:48:57 +00:00
Joseph Myers
9f9f27248b Remove miscellaneous GCC >= 4.7 version conditionals.
This patch removes miscellaneous __GNUC_PREREQ (4, 7) conditionals
that are now dead.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

	* sysdeps/arm/atomic-machine.h
	[__GNUC_PREREQ (4, 7) && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4]:
	Change conditional to [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4].
	[__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 && !__GNUC_PREREQ (4, 7)]:
	Remove conditional code.
	[!__GNUC_PREREQ (4, 7) || !__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4]:
	Change conditional to [!__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4].
	* sysdeps/i386/sysdep.h [__ASSEMBLER__ && __GNUC_PREREQ (4, 7)]:
	Change conditional to [__ASSEMBLER__].
	[__ASSEMBLER__ && !__GNUC_PREREQ (4, 7)]: Remove conditional code.
	[!__ASSEMBLER__ && __GNUC_PREREQ (4, 7)]: Change conditional to
	[!__ASSEMBLER__].
	[!__ASSEMBLER__ && !__GNUC_PREREQ (4, 7)]: Remove conditional
	code.
	* sysdeps/unix/sysv/linux/sh/atomic-machine.h (rNOSP): Remove
	conditional macro definitions.
	(__arch_compare_and_exchange_val_8_acq): Use "u" instead of rNOSP.
	(__arch_compare_and_exchange_val_16_acq): Likewise.
	(__arch_compare_and_exchange_val_32_acq): Likewise.
	(atomic_exchange_and_add): Likewise.
	(atomic_add): Likewise.
	(atomic_add_negative): Likewise.
	(atomic_add_zero): Likewise.
	(atomic_bit_set): Likewise.
	(atomic_bit_test_set): Likewise.
	* sysdeps/x86_64/atomic-machine.h [__GNUC_PREREQ (4, 7)]: Make
	code unconditional.
	[!__GNUC_PREREQ (4, 7)]: Remove conditional code.
2015-11-04 21:34:36 +00:00
Joseph Myers
e3a0002094 Refactor libm-test inline tests disabling.
This patch refactors how libm-test.inc handles disabling
errno/exception handling tests, and some other tests, for
__FAST_MATH__ inline function tests.

The macro TEST_INLINE is changed from being defined/undefined to being
defined to 1 or 0, so that it can be tested in "if" conditionals
instead of #if.  For tests of errno and exception setting, separate
macros TEST_ERRNO and TEST_EXCEPTIONS are added, and TEST_ERRNO is
also used in the disabling of errno testing for vector function
tests.  The relevant conditionals are moved up a function, so that
they take effect before the code that counts the number of tests, so
the inline function tests now accurately report that 0 tests for
exceptions and errno were executed (whereas they previously reported a
large number desipte not running any such tests).

Tested for x86_64 and x86.

	* math/test-math-errno.h: New file.
	* math/test-math-inline.h (TEST_INLINE): Define to 1 instead of
	empty.
	(TEST_ERRNO): New macro.
	(TEST_EXCEPTIONS): Likewise.
	* math/test-math-no-inline.h (TEST_INLINE): Likewise.
	(TEST_EXCEPTIONS): Likewise.
	* math/test-math-vector.h (TEST_ERRNO): Likewise.
	* math/test-double.c: Include "test-math-errno.h".
	* math/test-float.c: Likewise.
	* math/test-ldouble.c: Likewise.
	* math/libm-test.inc (test_single_exception) [!TEST_INLINE]: Make
	code unconditional.
	(test_exceptions): Only run code if TEST_EXCEPTIONS.
	(test_single_errno) [!TEST_INLINE && !TEST_MATHVEC]: Make code
	unconditional.
	(test_errno): Only run code if TEST_ERRNO.
	(enable_test): Use "if" conditional on TEST_INLINE, not #ifdef.
2015-11-04 21:30:26 +00:00
Florian Weimer
b257c66884 Remove a spurious attribution
Martin Sebor confirmed that this attribution was inserted by mistake.
2015-11-04 11:32:36 +01:00
Joseph Myers
199a338654 Add more libm tests (scalb*, signbit, sin, sincos, sinh, sqrt, tan, tanh, tgamma, y0, y1, yn, significand).
This patch improves the libm test coverage for a few more functions.

Tested for x86_64 and x86.

	* math/auto-libm-test-in: Add more tests of sin, sincos, sinh,
	sqrt, tan, tanh, y0, y1 and yn.
	* math/auto-libm-test-out: Regenerated.
	* math/libm-test.inc (scalb_test_data): Add more tests.
	(scalbn_test_data): Likewise.
	(scalbln_test_data): Likewise.
	(signbit_test_data): Likewise.
	(sin_test_data): Likewise.
	(sincos_test_data): Likewise.
	(sinh_test_data): Likewise.
	(sqrt_test_data): Likewise.
	(tan_test_data): Likewise.
	(tanh_test_data): Likewise.
	(tgamma_test_data): Likewise.
	(y0_test_data): Likewise.
	(y1_test_data): Likewise.
	(yn_test_data): Likewise.
	(significand_test_data): Likewise.
	* sysdeps/i386/fpu/libm-test-ulps: Update.
2015-11-04 00:45:23 +00:00
David Kastrup
8ba14398e6 Don't macro-expand failed assertion expression [BZ #18604]
[BZ #18604]
	* assert/assert.h (assert): Don't macro-expand failed assertion
	expression in error message.
	* malloc/malloc.c (assert): Likewise.
2015-11-03 23:26:15 +01:00
Joseph Myers
cf09d0b052 Remove --no-whole-archive configure test.
There is a configure test for the --no-whole-archive linker option.
This option was added in binutils 2.7, so the test is obsolete; this
patch removes it.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	* configure.ac (libc_cv_ld_no_whole_archive): Remove configure
	test.
	* configure: Regenerated.
2015-11-03 13:03:52 +00:00
Joseph Myers
d86812df5a Add more libm tests (modf, nearbyint, nextafter, nexttoward, pow, remainder, remquo, rint).
This patch improves the libm test coverage for a few more functions.

Tested for x86_64 and x86.

	* math/libm-test.inc (modf_test_data): Add more tests.
	(nearbyint_test_data): Likewise.
	(nextafter_test_data): Likewise.
	(nexttoward_test_data): Likewise.
	(pow_test_data): Likewise.
	(remainder_test_data): Likewise.
	(remquo_test_data): Likewise.
	(rint_test_data): Likewise.
2015-11-03 00:20:29 +00:00
Joseph Myers
444ec6b8d8 Fix dbl-64 remainder sign of zero result (bug 19201).
For some large arguments, the dbl-64 implementation of remainder gives
zero results with the wrong sign, resulting from a subtraction that is
mathematically correct but does not guarantee that a zero result has
the sign of the first argument to remainder.  This patch adds an
appropriate check for this case, similar to other implementations of
remainder in the case of equality, and adds tests of remainder on
inputs already used to test remquo.

Tested for x86_64 and x86.

	[BZ #19201]
	* sysdeps/ieee754/dbl-64/e_remainder.c (__ieee754_remainder):
	Check for zero remainder in case of large exponents and ensure
	correct sign of result in that case.
	* math/libm-test.inc (remainder_test_data): Add more tests.
2015-11-03 00:11:49 +00:00
Joseph Myers
85422c2acb Make nextafter, nexttoward set errno (bug 6799).
nextafter and nexttoward fail to set errno on overflow and underflow.
This patch makes them do so in cases that should include all the cases
where such errno setting is required by glibc's goals for when to set
errno (but not all cases of underflow where the result is nonzero and
so glibc's goals do not require errno setting).

Tested for x86_64, x86, mips64 and powerpc.

	[BZ #6799]
	* math/s_nextafter.c: Include <errno.h>.
	(__nextafter): Set errno on overflow and underflow.
	* math/s_nexttowardf.c: Include <errno.h>.
	(__nexttowardf): Set errno on overflow and underflow.
	* sysdeps/i386/fpu/s_nextafterl.c: Include <errno.h>.
	(__nextafterl): Set errno on overflow and underflow.
	* sysdeps/i386/fpu/s_nexttoward.c: Include <errno.h>.
	(__nexttoward): Set errno on overflow and underflow.
	* sysdeps/i386/fpu/s_nexttowardf.c: Include <errno.h>.
	(__nexttowardf): Set errno on overflow and underflow.
	* sysdeps/ieee754/flt-32/s_nextafterf.c: Include <errno.h>.
	(__nextafterf): Set errno on overflow and underflow.
	* sysdeps/ieee754/ldbl-128/s_nextafterl.c: Include <errno.h>.
	(__nextafterl): Set errno on overflow and underflow.
	* sysdeps/ieee754/ldbl-128/s_nexttoward.c: Include <errno.h>.
	(__nexttoward): Set errno on overflow and underflow.
	* sysdeps/ieee754/ldbl-128/s_nexttowardf.c: Include <errno.h>.
	(__nexttowardf): Set errno on overflow and underflow.
	* sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c: Include <errno.h>.
	(__nextafterl): Set errno on overflow and underflow.
	* sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c: Include <errno.h>.
	(__nexttoward): Set errno on overflow and underflow.
	* sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c: Include <errno.h>.
	(__nexttowardf): Set errno on overflow and underflow.
	* sysdeps/ieee754/ldbl-96/s_nexttoward.c: Include <errno.h>.
	(__nexttoward): Set errno on overflow and underflow.
	* sysdeps/ieee754/ldbl-96/s_nexttowardf.c: Include <errno.h>.
	(__nexttowardf): Set errno on overflow and underflow.
	* sysdeps/ieee754/ldbl-opt/s_nexttowardfd.c: Include <errno.h>.
	(__nldbl_nexttowardf): Set errno on overflow and underflow.
	* sysdeps/m68k/m680x0/fpu/s_nextafterl.c: Include <errno.h>.
	(__nextafterl): Set errno on overflow and underflow.
	* math/libm-test.inc (nextafter_test_data): Do not allow errno
	setting to be missing on overflow.  Add more tests.
	(nexttoward_test_data): Likewise.
2015-11-02 18:54:19 +00:00
Joseph Myers
a9224562cb Remove init_array / fini_array configure test.
There is a configure test "for .preinit_array/.init_array/.fini_array
support".  Support for this feature was added in binutils 2.13, so the
configure test is obsolete; this patch removes it.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	* configure.ac (libc_cv_initfini_array): Remove configure test.
	* configure: Regenerated.
2015-11-02 15:08:25 +00:00
Joseph Myers
af1b2fd083 Fix ldbl-128 log1pl (-qNaN) spurious "invalid" exception (bug 19189).
The ldbl-128 version of log1pl raises a spurious "invalid" exception
for a -qNaN argument.  This patch fixes this by making the initial
check for infinities and NaNs handle arguments of both signs in such a
way that NaNs result in a NaN being returned (quietly if the input NaN
was quiet) while +Inf results in +Inf being returned and -Inf results
in a qNaN being returned with "invalid" exception raised.

Tested for mips64.

	[BZ #19189]
	* sysdeps/ieee754/ldbl-128/s_log1pl.c (__log1pl): Make check for
	non-finite argument handle arguments with negative sign.
2015-10-29 23:09:51 +00:00
Joseph Myers
68b7f7df0c Do not test sign of zero result from infinite argument to Bessel functions.
When Bessel functions return a zero result from an infinite argument,
the function oscillates as it approaches 0, so the sign of that zero
result should be indeterminate.  This patch weakens the expectations
accordingly not to check the sign of such results (the tests were
causing spurious failures for j1 (-Inf) for ldbl-128).

Tested for x86_64 and x86.

	* math/libm-test.inc (j0_test_data): Do not test sign of zero
	result from infinite argument.
	(j1_test_data): Likewise.
	(jn_test_data): Likewise.
	(y0_test_data): Likewise.
	(y1_test_data): Likewise.
	(yn_test_data): Likewise.
2015-10-29 22:45:47 +00:00
Joseph Myers
5ce8f12506 Make drem an alias of remainder (bug 16171).
The libm drem functions just call the corresponding __remainder
functions.  This patch removes the unnecessary wrappers by making them
into weak aliases at the ELF level.

Tested for x86_64, x86, mips64 and powerpc.

	[BZ #16171]
	* math/w_remainder.c (drem): Define as weak alias of __remainder.
	[NO_LONG_DOUBLE] (dreml): Define as weak alias of __remainder.
	* math/w_remainderf.c (dremf): Define as weak alias of
	__remainderf.
	* math/w_remainderl.c (dreml): Define as weak alias of
	__remainderl.
	* sysdeps/ia64/fpu/e_remainder.S (drem): Define as weak alias of
	__remainder.
	* sysdeps/ia64/fpu/e_remainderf.S (dremf): Define as weak alias of
	__remainderf.
	* sysdeps/ia64/fpu/e_remainderl.S (dreml): Define as weak alias of
	__remainderl.
	* sysdeps/ieee754/ldbl-opt/nldbl-remainder.c (dreml): Define as
	weak alias of remainderl.
	* sysdeps/ieee754/ldbl-opt/w_remainder.c
	[LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)] (__drem): Define as strong
	alias of __remainder.
	[LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)] (dreml): Use compat_symbol.
	* sysdeps/ieee754/ldbl-opt/w_remainderl.c (__dreml): Define as
	strong alias of __remainderl.
	(dreml): Use long_double_symbol.
	* math/Makefile (libm-calls): Remove w_drem.
	* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Remove drem.
	(CFLAGS-nldbl-drem.c): Remove variable.
	(CFLAGS-nldbl-remainder.c): Add -fno-builtin-dreml.
	* math/w_drem.c: Remove file.
	* math/w_dremf.c: Likewise.
	* math/w_dreml.c: Likewise.
	* sysdeps/ieee754/ldbl-opt/nldbl-drem.c: Likewise.
	* sysdeps/ieee754/ldbl-opt/w_drem.c: Likewise.
	* sysdeps/ieee754/ldbl-opt/w_dreml.c: Likewise.
2015-10-29 22:29:21 +00:00
Joseph Myers
91bcb95ad4 Remove cpuid.h configure tests.
There are configure tests for the cpuid.h header for x86 / x86_64.
GCC 4.3 and later install this header, so those tests are obsolete.
This patch removes them.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	* sysdeps/i386/configure.ac (cpuid.h): Do not test for header.
	* sysdeps/i386/configure: Regenerated.
	* sysdeps/x86_64/configure.ac (cpuid.h): Do not test for header.
	* sysdeps/x86_64/configure: Regenerated.
2015-10-29 14:43:46 +00:00
Joseph Myers
2a723ff6ff Remove configure tests for visibility support.
There are various configure tests for visibility support in the
compiler and assember.

GCC support for visibility attributes was added in GCC 3.3.  I don't
know what specific fix was intended by the test "for broken
__attribute__((visibility())", but it was added by
<https://sourceware.org/ml/libc-hacker/2002-08/msg00030.html>, and GCC
3.3 appears not to have that breakage, so I suspect it was only ever
in development versions before 3.3 was released.  The assembler
support was added in binutils 2.10.

This patch removes the tests in question as obsolete.  Two tests that
were formerly conditional on "if test $libc_cv_visibility_attribute =
yes", including the one for linker support for protected data, are now
unconditional.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	* configure.ac (libc_cv_asm_protected_directive): Remove configure
	test.
	(libc_cv_visibility_attribute): Likewise.
	(libc_cv_protected_data): Test unconditionally.
	(libc_cv_broken_visibility_attribute): Remove configure test.
	(libc_cv_have_sdata_section): Test unconditionally.
	* configure: Regenerated.
2015-10-29 12:48:24 +00:00
Joseph Myers
dbb7600658 Use max_align_t from <stddef.h>.
Now that we build with -std=gnu11 and can rely on a compiler providing
max_align_t in <stddef.h>, we no longer need our own version
libc_max_align_t.  This patch removes it and replaces the single user
with a use of max_align_t.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch for x86_64; for x86, I see
some code reordering of no significance).

	* include/libc-internal.h (libc_max_align_t): Remove typedef.
	* include/scratch_buffer.h: Include <stddef.h> instead of
	<libc-internal.h>.
	(struct scratch_buffer): Use max_align_t instead of
	libc_max_align_t.
2015-10-29 12:46:22 +00:00
Florian Weimer
58acfe6fa7 _dl_fini: Rewrite to use VLA instead of extend_alloca
In this case, extend_alloca is used to work around the lack of
deallocation on scope exit.  A VLA is automatically deallocated in this
way, so it is the more fitting approach.

To implement this, it is necessary to eliminate the goto.  In addition,
this change eliminates the trivially-true assert; the assert is always
skipped if nloaded > 0.

	* elf/dl-fini.c (_dl_fini): Rewrite to use variable-length array
	instead of extend_alloca.  Change control flow to avoid a goto.
	Remove assert which is trivially always true.
2015-10-29 09:26:03 +01:00
Joseph Myers
2145f97cee Handle more state in i386/x86_64 fesetenv (bug 16068).
fenv_t should include architecture-specific floating-point modes and
status flags.  i386 and x86_64 fesetenv limit which bits they use from
the x87 status and control words, when using saved state, and limit
which parts of the state they set to fixed values, when using
FE_DFL_ENV / FE_NOMASK_ENV.  The following should be included but are
excluded in at least some cases: status and masking for the "denormal
operand" exception (which isn't part of FE_ALL_EXCEPT); precision
control (explicitly mentioned in Annex F as something that counts as
part of the floating-point environment); MXCSR FZ and DAZ bits (for
FE_DFL_ENV and FE_NOMASK_ENV).  This patch arranges for this extra
state to be handled by fesetenv (and thereby by feupdateenv, which
calls fesetenv).

(Note that glibc functions using floating point are not generally
expected to work correctly with non-default values of this state,
especially precision control, but it is still logically part of the
floating-point environment and should be handled as such by fesetenv.
Changes to the state relating to subnormals ought generally to work
with libm functions when the arguments aren't subnormal and neither
are the expected results; that's a consequence of functions avoiding
spurious internal underflows.)

A question arising from this is whether FE_NOMASK_ENV should or should
not mask the "denormal operand" exception.  I decided it should mask
that exception.  This is the status quo - previously that exception
could only be unmasked by direct manipulation of control registers
(possibly via <fpu_control.h>).  In addition, it means that use of
FE_NOMASK_ENV leaves a floating-point environment the same as could be
obtained by fesetenv (FE_DFL_ENV); feenableexcept (FE_ALL_EXCEPT);,
rather than an environment in which an exception is unmasked that
could only be masked again by using fesetenv with FE_DFL_ENV (or a
previously saved environment) - this exception not being usable with
other <fenv.h> functions because it's outside FE_ALL_EXCEPT.

Tested for x86_64 and x86.

	[BZ #16068]
	* sysdeps/i386/fpu/fesetenv.c: Include <fpu_control.h>.
	(FE_ALL_EXCEPT_X86): New macro.
	(__fesetenv): Use FE_ALL_EXCEPT_X86 in most places instead of
	FE_ALL_EXCEPT.  Ensure precision control is included in
	floating-point state.  Ensure that FE_DFL_ENV and FE_NOMASK_ENV
	handle "denormal operand exception" and clear FZ and DAZ bits.
	* sysdeps/x86_64/fpu/fesetenv.c: Include <fpu_control.h>.
	(FE_ALL_EXCEPT_X86): New macro.
	(__fesetenv): Use FE_ALL_EXCEPT_X86 in most places instead of
	FE_ALL_EXCEPT.  Ensure precision control is included in
	floating-point state.  Ensure that FE_DFL_ENV and FE_NOMASK_ENV
	handle "denormal operand exception" and clear FZ and DAZ bits.
	* sysdeps/x86/fpu/test-fenv-sse-2.c: New file.
	* sysdeps/x86/fpu/test-fenv-x87.c: Likewise.
	* sysdeps/x86/fpu/Makefile [$(subdir) = math] (tests): Add
	test-fenv-x87 and test-fenv-sse-2.
	[$(subdir) = math] (CFLAGS-test-fenv-sse-2.c): New variable.
2015-10-28 22:58:29 +00:00
Joseph Myers
5878dd9d53 Use C11 CMPLX* macros in libm tests.
libm-test.inc has a macro BUILD_COMPLEX to construct a complex number
with given real and imaginary parts while allowing properly for signed
zeroes, infinities and NaNs (which don't work properly with a simple
real + I * imag, in the absence of compiler support for imaginary
types), using assignment to __real__ and __imag__ parts of the number.
C11 defines CMPLX* macros for this purpose, which GCC 4.7 and above
provide suitable built-in functions for.  This patch redefines
BUILD_COMPLEX in terms of the standard macros.

Tested for x86_64 and x86.

	* math/libm-test.inc (BUILD_COMPLEX): Remove macro.
	* math/test-double.h (BUILD_COMPLEX): New macro.
	* math/test-float.h (BUILD_COMPLEX): Likewise.
	* math/test-ldouble.h (BUILD_COMPLEX): Likewise.
2015-10-28 21:57:10 +00:00
Joseph Myers
1f4dafa3ea Use C11 *_TRUE_MIN macros where applicable.
C11 defines standard <float.h> macros *_TRUE_MIN for the least
positive subnormal value of a type.  Now that we build with
-std=gnu11, we can use these macros in glibc.  This patch replaces
previous uses of the GCC predefines __*_DENORM_MIN__ (used in
<float.h> to define *_TRUE_MIN), as well as *_DENORM_MIN references in
comments.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).  Also tested for powerpc that
installed stripped shared libraries are unchanged by the patch.

	* math/libm-test.inc (min_subnorm_value): Use LDBL_TRUE_MIN,
	DBL_TRUE_MIN and FLT_TRUE_MIN instead of __LDBL_DENORM_MIN__,
	__DBL_DENORM_MIN__ and __FLT_DENORM_MIN__.
	* sysdeps/ieee754/dbl-64/s_fma.c (__fma): Refer to DBL_TRUE_MIN
	instead of DBL_DENORM_MIN in comment.
	* sysdeps/ieee754/ldbl-128/s_fmal.c (__fmal): Refer to
	LDBL_TRUE_MIN instead of LDBL_DENORM_MIN in comment.
	* sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c: Include <float.h>.
	(__nextafterl): Use LDBL_TRUE_MIN instead of __LDBL_DENORM_MIN__.
	* sysdeps/ieee754/ldbl-96/s_fmal.c (__fmal): Refer to
	LDBL_TRUE_MIN instead of LDBL_DENORM_MIN in comment.
2015-10-28 21:42:52 +00:00
Florian Weimer
a62719ba90 malloc: Prevent arena free_list from turning cyclic [BZ #19048]
[BZ# 19048]
	* malloc/malloc.c (struct malloc_state): Update comment.  Add
	attached_threads member.
	(main_arena): Initialize attached_threads.
	* malloc/arena.c (list_lock): Update comment.
	(ptmalloc_lock_all, ptmalloc_unlock_all): Likewise.
	(ptmalloc_unlock_all2): Reinitialize arena reference counts.
	(deattach_arena): New function.
	(_int_new_arena): Initialize arena reference count and deattach
	replaced arena.
	(get_free_list, reused_arena): Update reference count and deattach
	replaced arena.
	(arena_thread_freeres): Update arena reference count and only put
	unreferenced arenas on the free list.
2015-10-28 21:29:23 +01:00
Joseph Myers
0b9af583a5 Fix i386/x86_64 fesetenv SSE exception clearing (bug 19181).
The i386 and x86_64 versions of fesetenv, when called with FE_DFL_ENV
or FE_NOMASK_ENV as argument, do not clear SSE exceptions raised in
MXCSR.  These arguments should, like other fenv_t values, represent
the whole of the floating-point state, so such exceptions should be
cleared; this patch adds the required clearing.  (Discovered while
working on bug 16068.)

Tested for x86_64 and x86.

	[BZ #19181]
	* sysdeps/i386/fpu/fesetenv.c (__fesetenv): Clear already-raised
	SSE exceptions when argument is FE_DFL_ENV or FE_NOMASK_ENV.
	* sysdeps/x86_64/fpu/fesetenv.c (__fesetenv): Likewise.
	* math/test-fenv-clear-main.c: New file.
	* math/test-fenv-clear.c: Likewise.
	* math/Makefile (tests): Add test-fenv-clear.
	* sysdeps/x86/fpu/test-fenv-clear-sse.c: New file.
	* sysdeps/x86/fpu/Makefile [$(subdir) = math] (tests): Add
	test-fenv-clear-sse.
	[$(subdir) = math] (CFLAGS-test-fenv-clear-sse.c): New variable.
2015-10-28 18:50:20 +00:00
Joseph Myers
eae6c382bd Use C11 *_DECIMAL_DIG macros in libm-test.inc.
Now that we build with -std=gnu11, we can use C11 <float.h> macros
such as FLT_DECIMAL_DIG instead of the GCC predefines such as
__FLT_DECIMAL_DIG__ that are used internally in <float.h>.  This patch
makes libm-test.inc do so.

Tested for x86_64 and x86.

	* math/libm-test.inc (TYPE_DECIMAL_DIG): Use LDBL_DECIMAL_DIG,
	DBL_DECIMAL_DIG and FLT_DECIMAL_DIG instead of __DECIMAL_DIG__,
	__DBL_DECIMAL_DIG__ and __FLT_DECIMAL_DIG__.
2015-10-28 17:12:20 +00:00
Carlos Eduardo Seo
352988a4a6 powerpc: Provide __tls_get_addr () in static libc
Since '--no-tls-optimize' is available for Power in ld, we need to provide
__tls_get_addr () in static libc in order to avoid undefined references to this
symbol when that flag is used.

	* sysdeps/powerpc/libc-tls.c: New file. Provides __tls_get_addr () in
	static libc.
2015-10-28 11:42:23 -02:00
Joseph Myers
c871b9b096 Remove -mavx2 configure tests.
There are configure tests for the -mavx2 compiler option.  AVX2
support was added in GCC 4.7, so these tests are now obsolete; this
patch removes them.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

	* sysdeps/i386/configure.ac (libc_cv_cc_avx2): Remove configure
	test.
	* sysdeps/i386/configure: Regenerated.
	* sysdeps/x86_64/configure.ac (libc_cv_cc_avx2): Remove configure
	test.
	* sysdeps/x86_64/configure: Regenerated.
	* config.h.in (HAVE_AVX2_SUPPORT): Remove #undef.
	* sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
	memset-avx2 unconditionally instead of conditionally on
	[$(config-cflags-avx2) = yes].
	* sysdeps/x86_64/multiarch/ifunc-impl-list.c
	(__libc_ifunc_impl_list) [HAVE_AVX2_SUPPORT]: Make code
	unconditional.
	* sysdeps/x86_64/multiarch/memset.S [HAVE_AVX2_SUPPORT]: Likewise.
	* sysdeps/x86_64/multiarch/memset_chk.S
	[IS_IN (libc) && SHARED && HAVE_AVX2_SUPPORT]: Change conditional
	to [IS_IN (libc) && SHARED].
2015-10-28 13:29:03 +00:00
Joseph Myers
56583289b1 Remove configure test for ARM TLS descriptors support.
GCC 4.7 added support for ARM TLS descriptors.  The binutils support
is present in binutils 2.22.  Thus, this patch removes the associated
configure test as obsolete (leaving Makefile conditionals, as NaCl
sets have-arm-tls-desc = no in its sysdeps fragment).

Tested for ARM that installed shared libraries are unchanged by the
patch.

	* sysdeps/arm/configure.ac (libc_cv_arm_tls_desc): Remove
	configure test.
	* sysdeps/arm/configure: Regenerated.
	* sysdeps/arm/Makefile [!have-arm-tls-desc] (have-arm-tls-desc):
	Define variable if not already defined.
2015-10-27 23:56:50 +00:00
Joseph Myers
8f82f28bba Remove MIPS16 atomics using __sync_* (bug 17404).
MIPS16 atomics used __sync_* with GCC before 4.7, which as noted in
bug 17404 is missing the required barrier semantics for
atomic_exchange_rel.  This patch removes the code in question as dead
now GCC before 4.7 is no longer supported for building glibc.

Sanity tested with builds for MIPS.

	[BZ #17404]
	* sysdeps/mips/atomic-machine.h
	[__GNUC_PREREQ (4, 8) || (__mips16 && __GNUC_PREREQ (4, 7))]:
	Change conditional to [__GNUC_PREREQ (4, 8) || __mips16].
	[__mips16 && !__GNUC_PREREQ (4, 7)]: Remove conditional code.
2015-10-27 23:47:56 +00:00
Joseph Myers
f1d237df1e Remove GCC version conditionals on -Wmaybe-uninitialized pragmas.
One common case of __GNUC_PREREQ (4, 7) conditionals is use of
diagnostic control pragmas for -Wmaybe-uninitialized, an option
introduced in GCC 4.7 where older GCC needed -Wuninitialized to be
controlled instead if the warning appeared with older GCC.  This patch
removes such conditionals.

(There remain several older uses of -Wno-uninitialized in makefiles
that still need to be converted to diagnostic control pragmas if the
issue is still present with current sources and supported GCC
versions, and it's likely that in most cases those pragmas also will
end up controlling -Wmaybe-uninitialized.)

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch, except for libresolv
since res_send.c contains assertions whose line numbers are changed by
the patch).

	* resolv/res_send.c (send_vc) [__GNUC_PREREQ (4, 7)]: Make code
	unconditional.
	* soft-fp/fmadf4.c [__GNUC_PREREQ (4, 7)]: Likewise.
	[!__GNUC_PREREQ (4, 7)]: Remove conditional code.
	* soft-fp/fmasf4.c [__GNUC_PREREQ (4, 7)]: Make code
	unconditional.
	[!__GNUC_PREREQ (4, 7)]: Remove conditional code.
	* soft-fp/fmatf4.c [__GNUC_PREREQ (4, 7)]: Make code
	unconditional.
	[!__GNUC_PREREQ (4, 7)]: Remove conditional code.
	* stdlib/setenv.c
	[((__GNUC__ << 16) + __GNUC_MINOR__) >= ((4 << 16) + 7)]: Make
	code unconditional.
	[!(((__GNUC__ << 16) + __GNUC_MINOR__) >= ((4 << 16) + 7))]:
	Remove conditional code.
	* sysdeps/ieee754/dbl-64/e_lgamma_r.c
	(__ieee754_lgamma_r) [__GNUC_PREREQ (4, 7)]: Make code
	unconditional.
	(__ieee754_lgamma_r) [!__GNUC_PREREQ (4, 7)]: Remove conditional
	code.
	* sysdeps/ieee754/flt-32/e_lgammaf_r.c
	(__ieee754_lgammaf_r) [__GNUC_PREREQ (4, 7)]: Make code
	unconditional.
	(__ieee754_lgammaf_r) [!__GNUC_PREREQ (4, 7)]: Remove conditional
	code.
	* sysdeps/ieee754/ldbl-128/k_tanl.c
	(__kernel_tanl) [__GNUC_PREREQ (4, 7)]: Make code unconditional.
	(__kernel_tanl) [!__GNUC_PREREQ (4, 7)]: Remove conditional code.
	* sysdeps/ieee754/ldbl-128ibm/k_tanl.c
	(__kernel_tanl) [__GNUC_PREREQ (4, 7)]: Make code unconditional.
	(__kernel_tanl) [!__GNUC_PREREQ (4, 7)]: Remove conditional code.
	* sysdeps/ieee754/ldbl-96/e_lgammal_r.c
	(__ieee754_lgammal_r) [__GNUC_PREREQ (4, 7)]: Make code
	unconditional.
	(__ieee754_lgammal_r) [!__GNUC_PREREQ (4, 7)]: Remove conditional
	code.
	* sysdeps/ieee754/ldbl-96/k_tanl.c
	(__kernel_tanl) [__GNUC_PREREQ (4, 7)]: Make code unconditional.
	(__kernel_tanl) [!__GNUC_PREREQ (4, 7)]: Remove conditional code.
2015-10-27 23:42:20 +00:00
Joseph Myers
678443ce17 Add -std=gnu11 and -std=c11 NPTL initializers tests.
NPTL has tests that initializers work with various -std= options.  Now
that we can rely on -std=gnu11 and -std=c11 being available, this
patch adds versions of those tests for those options.

Tested for x86_64 and x86 (testsuite).

	* nptl/tst-initializers1-c11.c: New file.
	* nptl/tst-initializers1-gnu11.c: Likewise.
	* nptl/Makefile (tests): Add these new tests.
	(CFLAGS-tst-initializers1-c11.c): New variable.
	(CFLAGS-tst-initializers1-gnu11.c): Likewise.
2015-10-27 21:48:34 +00:00
Joseph Myers
783dd2d3af Use -std=gnu11 instead of -std=gnu99.
Now that GCC 4.7 or later is required to build glibc, this patch moves
the build from using -std=gnu99 to -std=gnu11 (option added in 4.7).
This allows use of C11 features from GCC's headers, such as new
float.h macros and max_align_t.

Tested for x86_64 and x86 (testsuite; installed stripped shared
libraries are unchanged by the patch on x86_64, while I see some
slight code reordering of no significance on x86).

	* Makeconfig (CFLAGS): Use -std=gnu11 instead of -std=gnu99.
	* Makefile ($(objpfx)c++-types-check.out): Filter out -std=gnu11
	instead of -std=gnu99.
	* configure.ac (systemtap): Test with -std=gnu11 instead of
	-std=gnu99.
	* configure: Regenerated.
	* math/gen-auto-libm-tests.c: Use -std=gnu11 instead of -std=gnu99
	in compilation command in comment.
2015-10-27 21:47:22 +00:00
Joseph Myers
3e2ee6f0e3 Remove sysdeps/nptl/configure.ac.
sysdeps/nptl/configure.ac tests for forced unwind support and the C
cleanup attribute, giving errors if either is unsupported.  It does
nothing beyond running those two tests.

Both the attribute, and _Unwind_GetCFA which is used in the forced
unwind test, were added in GCC 3.3.  Thus these tests are long
obsolete, and this patch removes the configure fragment running them,
along with associated conditionals.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

	* sysdeps/nptl/configure.ac: Remove file.
	* sysdeps/nptl/configure: Remove generated file.
	* configure.ac (libc_cv_forced_unwind): Do not substitute.
	* configure: Regenerated.
	* config.h.in (HAVE_FORCED_UNWIND): Remove #undef.
	* config.make.in (have-forced-unwind): Remove variable.
	* nptl/Makefile [$(have-forced-unwind) = yes]: Make code
	unconditional.
	* nptl/descr.h [HAVE_FORCED_UNWIND]: Likewise.
	* nptl/unwind.c [HAVE_FORCED_UNWIND]: Likewise.
	(__pthread_unwind) [!HAVE_FORCED_UNWIND]: Remove conditional code.
	* nptl/version.c [HAVE_FORCED_UNWIND]: Make code unconditional.
	* sysdeps/nptl/Makefile [$(have-forced-unwind) = yes]: Make code
	unconditional.
2015-10-27 21:46:03 +00:00
Paul Murphy
72f1463df8 powerpc: Fix usage of elision transient failure adapt param
The skip_lock_out_of_tbegin_retries adaptive parameter was
not being used correctly, nor as described.  This prevents
a fallback for all users of the lock if a transient abort
occurs within the accepted number of retries.

	[BZ #19174]
	* sysdeps/powerpc/nptl/elide.h (__elide_lock): Fix usage of
	.skip_lock_out_of_tbegin_retries.
	* sysdeps/unix/sysv/linux/powerpc/elision-lock.c
	(__lll_lock_elision): Likewise, and respect a value of
	try_tbegin <= 0.
2015-10-27 17:27:41 -02:00
Carlos Eduardo Seo
76c5ae0028 Add AT_PLATFORM to _dl_aux_init ()
Added AT_PLATFORM to _dl_aux_init () function to keep it in sync with
_dl_sysdep_start ().

	* elf/dl-support.c (_dl_aux_init): Added AT_PLATFORM to the case
	statement.
2015-10-27 17:27:41 -02:00
Joseph Myers
8b126a4a2c Remove pre-GCC-4.7 conform/ test XFAILs.
Now that GCC 4.7 or later is required to build glibc, this patch
removes three conform/ test XFAILs that related to missing C11 support
in GCC 4.6.

Tested for x86_64 and x86 (conform/ tests).

	* conform/Makefile (test-xfail-ISO11/complex.h/conform): Remove
	variable.
	(test-xfail-ISO11/stdalign.h/conform): Likewise.
	(test-xfail-ISO11/stdnoreturn.h/conform): Likewise.
2015-10-27 17:13:14 +00:00
Joseph Myers
caf2d83659 Use -std=c11 for C11 conform/ tests.
Now that GCC 4.7 or later is required to build glibc, this patch makes
the conformance tests use -std=c11 for C11 tests instead of -std=c1x
-D_ISOC11_SOURCE.

Tested for x86_64 and x86 (conform/ tests).

	* conform/GlibcConform.pm ($CFLAGS{"ISO11"}): Use -std=c11 instead
	of -std=c1x -D_ISOC11_SOURCE.
2015-10-27 17:11:31 +00:00
Joseph Myers
b08b421835 Require GCC 4.7 or later to build glibc.
This patch implements a requirement of GCC 4.7 or later to build
glibc.

This was discussed in the thread starting at
<https://sourceware.org/ml/libc-alpha/2015-08/msg00851.html>.
Concerns were expressed by Mike and David.  At
<https://sourceware.org/ml/libc-alpha/2015-10/msg00453.html> I have
provided a 14-patch series showing in outline the cleanups facilitated
by this version requirement, as requested by Mike (this patch is the
first in that series, with the addition of a NEWS entry).  Given the
absence of further concerns or alternative proposals for criteria for
updates to this version requirement as requested in
<https://sourceware.org/ml/libc-alpha/2015-10/msg00065.html>, I am
interpreting this as "absence of sustained opposition" under Carlos's
definition at <https://sourceware.org/glibc/wiki/Consensus> and
proposing this patch for inclusion in glibc.  I'd like to remind
people testing with 4.6 that if they move to testing with GCC 5 then
it will probably be about four years before they need to update the
compiler they use to test glibc again.

Although on the principles of time-based updates I think a move to
requiring binutils 2.23 would be reasonable, I'm not currently aware
of any cleanups that would facilitate so am not proposing that at this
time (but would expect to propose a move to requiring binutils 2.24 in
a year's time, as that brings features such as AVX512 support that
should allow some conditionals to be cleaned up).  If someone thinks a
move to requiring 2.23 would help clean things up for their
architecture, please speak up.  (And in general, I suspect there are
lots of architecture-specific configure tests that could be removed on
the basis of current GCC and binutils version requirements, given how
I've found architecture-independent tests obsolete on the basis of
version requirements going back 20 years.)

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	* configure.ac (libc_cv_compiler_ok): Require GCC 4.7 or later.
	* configure: Regenerated.
	* manual/install.texi (Tools for Compilation): Document
	requirement for GCC 4.7 or later.
	* INSTALL: Regenerated.
2015-10-27 16:34:12 +00:00
Ludovic Courtès
0062ace229 Gracefully handle incompatible locale data
* locale/loadlocale.c (_nl_intern_locale_data): Change assertion
on CNT to a conditional jump to 'puntdata'.
2015-10-27 13:33:26 +01:00
Joseph Myers
7a4cb4ad11 Remove TLS configure tests.
There seemed to be support in response to
<https://sourceware.org/ml/libc-alpha/2015-10/msg00510.html> for
removing configure tests that exist only to produce errors, where we
expect that tool versions failing the tests would also fail the tests
of minimum GCC / binutils versions.

This patch removes the tests for TLS support as one instance of such
tests.  Since the addition of TLS emulation support in GCC 4.3, I
don't think these tests would have failed even if proper TLS support
(as required by glibc) was missing in that architecture's GCC back
end, so any new glibc ports wanting a substantive test (if there are
actual GCC or binutils versions for those architectures, with
supported version numbers, missing TLS support) would have needed an
architecture-specific test anyway.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	* configure.ac (libc_cv_gcc___thread): Remove configure test.
	(libc_cv_gcc_tls_model_attr): Likewise.
	* configure: Regenerated.
2015-10-27 10:48:05 +00:00
Joseph Myers
e4f5eae8f0 Remove configure test for needing -P for .S files.
There is a configure test for "whether we need to use -P to assemble
.S files".

I think this test is long obsolete.  I don't have a specific reference
to a binutils change or version that obsoleted this test, but: (a) we
only support GNU binutils; (b) it looks like every architecture
supported by glibc has '#' as a line comment character in its gas
port; (c) in any case, if the (compiler, assembler) combination in use
cannot compile a .S file without special options, that would clearly
be a substantially broken combination, which I don't think we need to
allow for at all.

The test in question was added by:

Thu Jan 27 16:46:03 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

        * configure.in (asm-CPPFLAGS): Add new check to see if assembling
        a .S file loses without -P.  If so, set asm-CPPFLAGS=-P in config.make.

This patch removes the test and the reference to this issue in the
comment on the default empty definition of asm-CPPFLAGS.  (Various
other settings of asm-CPPFLAGS remain in sysdeps Makefile fragments.)

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	* configure.ac (libc_cv_need_minus_P): Remove configure test.
	* configure: Regenerated.
	* Makeconfig (asm-CPPFLAGS): Remove reference to -P in comment.
2015-10-27 10:46:15 +00:00
Joseph Myers
f5659917f9 Remove support for removing glibc 2.0 headers.
There is a configure test for the presence of glibc 2.0 headers (that
were renamed / no longer installed in glibc 2.1) and associated
support for removing them on "make install".

Normal practice for subsequent removal / renaming of installed files
has been not to do anything special about removing them; if you want
installed files from an old installation removed reliably, you need to
use a packaging system that tracks what files were installed by a
previous glibc package (via installing in an intermediate directory
with install_root).  I think it's been long enough since 2.0 that it's
not particularly useful to have that special logic for those old
headers either; this patch removes it.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	* configure.ac (old_glibc_headers): Remove configure test.
	* configure: Regenerated.
	* config.make.in (old-glibc-headers): Remove variable.
	* Makefile [!$(install_root) && $(old-glibc-headers) = yes]
	(install): Remove dependency on remove-old-headers.
	(headers2_0): Remove variable.
	(remove-old-headers): Remove rule.
2015-10-26 22:46:04 +00:00
Joseph Myers
8c0c01dbe7 Remove configure test for assembler .text directive.
There is a configure test for assembler support for the .text
directive.

I suppose this test must have been aimed at some non-ELF platform or
non-GNU assembler.  Certainly the GNU assembler has had ELF-specific
architecture-independent handling for .text since version 2.2, and
generic non-ELF-specific support predates that.

This patch removes this test as obsolete.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	* configure.ac (libc_cv_dot_text): Remove configure test.
	(libc_cv_asm_set_directive): Use .text instead of
	${libc_cv_dot_text} in configure test.
	* configure: Regenerated.
2015-10-26 22:44:18 +00:00
Florian Weimer
e39edb0552 x86_64: Regenerate ulps [BZ #19168]
This comes from running “make regen-ulps” on AMD Opteron 6272 CPUs.
2015-10-26 13:15:48 +01:00
Florian Weimer
d337ceb76d Use the CXX compiler only if it can create dynamic and static programs
* configure.ac (CXX): Clear the variable if the C++ toolchain does
	not support static linking.
	* configure: Regenerate.
2015-10-26 09:41:10 +01:00
Joseph Myers
6d834d2216 Remove libm-test.inc special-casing of errors up to 0.5 ulp.
libm-test.inc has special-case code treating errors of up to 0.5 ulp
as allowed (for functions that aren't exactly determined) even if no
such errors appeared in libm-test-ulps.  This only applies to avoid
errors for individual function calls, not for the overall check of
ulps at the end of testing a function, resulting in confusing output
of the form:

testing double (without inline functions)
Maximal error of `log_upward'
 is      : 1 ulp
 accepted: 0 ulp

with no report of what testcase produced that error.  This patch
removes the special case, so that instead you get:

testing double (without inline functions)
Failure: Test: log_upward (0x1.0000000000001p+0)
Result:
 is:          2.2204460492503129e-16   0x1.fffffffffffffp-53
 should be:   2.2204460492503131e-16   0x1.0000000000000p-52
 difference:  2.4651903288156619e-32   0x1.0000000000000p-105
 ulp       :  0.5000
 max.ulp   :  0.0000
Maximal error of `log_upward'
 is      : 1 ulp
 accepted: 0 ulp

(for formats other than ldbl-128ibm, 0.5 ulp errors only occur in
unusual cases such as this where the correctly rounded result is a
power of 2 and the computed result is just below it).  This should not
affect which cases result in the test failing, just ensure that if it
fails then some failure for an individual function call was reported.

Tested for x86_64 and x86.

	* math/libm-test.inc (check_float_internal): Do not special-case
	errors up to 0.5 ulp.
2015-10-23 22:54:36 +00:00
Joseph Myers
9d1687b2df Add more libm tests (ilogb, is*, j0, j1, jn, lgamma, log*).
This patch improves the libm test coverage for a few more functions.

Tested for x86_64 and x86.

	* math/auto-libm-test-in: Add more tests of log, log10, log1p and
	log2.
	* math/auto-libm-test-out: Regenerated.
	* math/libm-test.inc (MAX_EXP): New macro.
	(ilogb_test_data): Add more tests.
	(isfinite_test_data): Likewise.
	(isgreater_test_data): Likewise.
	(isgreaterequal_test_data): Likewise.
	(isinf_test_data): Likewise.
	(isless_test_data): Likewise.
	(islessequal_test_data): Likewise.
	(islessgreater_test_data): Likewise.
	(isnan_test_data): Likewise.
	(isnormal_test_data): Likewise.
	(issignaling_test_data): Likewise.
	(isunordered_test_data): Likewise.
	(j0_test_data): Likewise.
	(j1_test_data): Likewise.
	(jn_test_data): Likewise.
	(lgamma_test_data): Likewise.
	(log_test_data): Likewise.
	(log10_test_data): Likewise.
	(log1p_test_data): Likewise.
	(log2_test_data): Likewise.
	(logb_test_data): Likewise.
	* sysdeps/x86_64/fpu/libm-test-ulps: Update.
2015-10-23 22:46:05 +00:00
Joseph Myers
c643db8792 Fix j1, jn missing errno setting on underflow (bug 18611).
j1 and jn can underflow for small arguments, but fail to set errno
when underflowing to 0.  This patch fixes them to set errno in that
case.

Tested for x86_64, x86, mips64 and powerpc.

	[BZ #18611]
	* sysdeps/ieee754/dbl-64/e_j1.c (__ieee754_j1): Set errno and
	avoid excess range and precision on underflow.
	* sysdeps/ieee754/dbl-64/e_jn.c (__ieee754_jn): Likewise.
	* sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_j1f): Likewise.
	* sysdeps/ieee754/flt-32/e_jnf.c (__ieee754_jnf): Likewise.
	* sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_j1l): Set errno on
	underflow.
	* sysdeps/ieee754/ldbl-128/e_jnl.c (__ieee754_jnl): Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_jnl.c (__ieee754_jnl): Likewise.
	* sysdeps/ieee754/ldbl-96/e_j1l.c (__ieee754_j1l): Likewise.
	* sysdeps/ieee754/ldbl-96/e_jnl.c (__ieee754_jnl): Likewise.
	* math/auto-libm-test-in: Do not allow missing errno setting for
	tests of j1 and jn.
	* math/auto-libm-test-out: Regenerated.
2015-10-23 21:37:33 +00:00
Joseph Myers
846d9a4a3a Fix i386 / x86_64 nearbyint exception clearing (bug 15491).
The implementations of nearbyint functions using x87 floating point
(i386 all versions, x86_64 long double only) use the fclex
instruction, which clears any exceptions that were raised before the
function was called.  These functions must not clear exceptions that
were raised before they were called.

This patch fixes these functions to save and restore the whole
floating-point environment (fnstenv / fldenv) as the way of avoiding
raising "inexact" (recall that there isn't an x87 instruction for
loading just the status word, so the whole environment has to be saved
and loaded instead - the code already saved and loaded the control
word, which is now obtained from the saved environment after this
patch, to disable traps on "inexact").  In the case of the long double
functions, any "invalid" exception from frndint (applied to a
signaling NaN) needs merging into the saved state; this issue doesn't
apply to the float and double functions because that exception would
have been raised when the argument is loaded, before the environment
is saved.

	[BZ #15491]
	* sysdeps/i386/fpu/s_nearbyint.S (__nearbyint): Save and restore
	floating-point environment instead of clearing all exceptions.
	* sysdeps/i386/fpu/s_nearbyintf.S (__nearbyintf): Likewise.
	* sysdeps/i386/fpu/s_nearbyintl.S (__nearbyintl): Likewise,
	merging in "invalid" exceptions from frndint.
	* sysdeps/x86_64/fpu/s_nearbyintl.S (__nearbyintl): Likewise.
	* math/test-nearbyint-except.c: New file.
	* math/Makefile (tests): Add test-nearbyint-except.
2015-10-22 23:14:55 +00:00
Chris Metcalf
45ccb8346b Update NEWS to mention drive-by fix for bug 18699.
Wilco fixed this tilegx bug in commit fe8c2b33ae ("Since we
now inline isinf, isnan and isfinite in math.h, replace uses
of __isinf_ns(l/f) with isinf, and remove the unused inlines
__isinf_ns(l/f), __isnan(f) and __finite(f).")

I verified that reverting math/s_cprojf.c back to using the
sysdeps/ieee754/flt-32/math_private.h version of __isinf_nsf()
instead of isinf() brings back the bug on tilegx.
2015-10-22 13:41:54 -04:00
Chris Metcalf
822095e8a4 tile: regenerate libm-test-ulps 2015-10-22 12:00:31 -04:00
Adhemerval Zanella
c2c904ffd3 Cleanup sync_file_range implementation
Since GLIBC requires a minimum 2.6.32 kernel, the patch cleanups
the mips code to assume __NR_sync_file_range and the powerpc one
to either assume __NR_sync_file_range2 or __NR_sync_file_range.

Checked on powerpc64le and build for mips (ABIO32, ABIN32, and ABI64).

	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c
	(__NR_sync_file_range2): Assume it is always defined.
	* sysdeps/unix/sysv/linux/mips/mips32/sync_file_range.c
	(__NR_sync_file_range): Assume it is always defined.
2015-10-22 12:00:06 -02:00
Andreas Schwab
751709fec9 Always use INTERNAL_SYSCALL_ERRNO with INTERNAL_SYSCALL 2015-10-22 14:59:29 +02:00
Joseph Myers
1ee1218e3f Move io/tst-fcntl temporary file creation to do_prepare.
This patch makes the io/tst-fcntl test create its temporary file in
do_prepare not do_test, so that add_temp_name is called in the parent
on the correct file name, as requested in the thread starting at
<https://sourceware.org/ml/libc-alpha/2015-10/msg00552.html>.  I don't
see any reason in this test that opening the file in the parent should
be problematic.

This patch is explicitly not exhaustive for such issues; other tests
still call add_temp_file in the child.  The general issue is noted at
<https://sourceware.org/glibc/wiki/Development_Todo/Master#Use_test-skeleton.c>.

Tested for x86_64 (that this test still passes and no longer leaves a
file behind in /tmp).

	* io/tst-fcntl.c (fd): New static variable.
	(do_prepare): Open temporary file here....
	(do_test): ...not here.
2015-10-21 23:37:02 +00:00
Joseph Myers
1107424331 Make io/ftwtest-sh remove temporary files on early exit.
The test io/ftwtest-sh creates a directory that at some points during
the test does not have execute permission.  To avoid leaving behind
such a directory that prevents the build directory from being removed
with a simple "rm -rf", it traps various signals to make the directory
executable and remove it before exit.  However, this doesn't cover the
case where one of the tests simply fails (which happens with cross
testing if testing on a remote system where the path to the build
directory involves a symlink, or if that remote system fell over
during testing - I think the latter is the case where the directory is
left behind with bad permissions).

This patch makes that test also trap signal 0 (exit) so that the
directory gets properly removed in such failure cases as well.

Tested in both configurations where the test passes and where it fails
to verify that the result of the test is unchanged but the directory
is no longer left behind where it was previously left behind.

	* io/ftwtest-sh: Also trap on exit to remove temporary files.
2015-10-21 21:18:21 +00:00
H.J. Lu
95b097779a Build i386 __libc_do_syscall when PROF is defined
Need to provide i386 __libc_do_syscall when PROF is defined.
Define OPTIMIZE_FOR_GCC_5 for .S files so that it can be used
in libc-do-syscall.S.

	* sysdeps/unix/sysv/linux/i386/libc-do-syscall.S: Replace
	__GNUC_PREREQ (5,0) with OPTIMIZE_FOR_GCC_5.
	* sysdeps/unix/sysv/linux/i386/sysdep.h (OPTIMIZE_FOR_GCC_5):
	Moved before "#ifdef __ASSEMBLER__".
2015-10-21 10:14:08 -07:00
Joseph Myers
0a90a8f2b9 Fix ldbl-128 j0l spurious underflows (bug 19156).
My recent addition of more tests for j0 showed up that the ldbl-128
implementation of j0l produces spurious underflow exceptions for
arguments close to 0 (when the result is very close to 1).  This patch
fixes this by just returning the argument in that case.

Tested for mips64 (where it fixes the recently-added tests that were
previously failing).

	[BZ #19156]
	* sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee754_j0l): Return 1 for
	arguments very close to 0.
2015-10-21 16:40:20 +00:00
Chris Metcalf
1245e51596 tile: avoid preprocessor redefinition warnings
PSEUDO_END and PSEUDO_END_NOERRNO are being defined in
sysdeps/unix/sysdep.h and then redefined for tile.  Add an
undef before each define to silence the warnings.
2015-10-21 12:18:08 -04:00
H.J. Lu
23c4baa214 Disable GCC 5 optimization when PROF is defined
Since asm ("ebp") can't be used to put the 6th argument in %ebp for
syscall when compiling for profiling, we disable GCC 5 optimization
when PROF is defined.

	* sysdeps/unix/sysv/linux/i386/sysdep.h (OPTIMIZE_FOR_GCC_5):
	New.  Defined for GCC 5 and above when not compiling for
	profiling.
	Replace __GNUC_PREREQ (5,0) with OPTIMIZE_FOR_GCC_5.
2015-10-21 09:07:46 -07:00
H.J. Lu
d8f7fcacd7 Apply -fomit-frame-pointer only to .o/.os files
Since -fomit-frame-pointer is compatible with -pg, apply it only to
.o/.os files.

	* sysdeps/unix/sysv/linux/i386/Makefile (CFLAGS-epoll_pwait.c):
	Renamed to ...
	(CFLAGS-epoll_pwait.o): This.
	(CFLAGS-mmap.c): Renamed to ...
	(CFLAGS-mmap.o): This.
	(CFLAGS-mmap64.c): Renamed to ...
	(CFLAGS-mmap64.o): This.
	(CFLAGS-epoll_pwait.os): New.
	(CFLAGS-mmap.os): Likewise.
	(CFLAGS-mmap64.os): Likewise.
	(CFLAGS-semtimedop.os): Likewise.
	(CFLAGS-semtimedop.c): Renamed to ...
	(CFLAGS-semtimedop.o): This.
2015-10-21 09:05:01 -07:00
Tulio Magno Quites Machado Filho
0ad76d1ee7 tst-backtrace4: fix a warning message
Modify a warning message so that it doesn't sound as an error, e.g.:
"Obtained backtrace with 6 functions (but wanted at least 6)"

Update a comment too.
2015-10-21 11:24:27 -04:00
Joseph Myers
8e2f7c6811 Use -Wold-style-definition.
This patch makes glibc build with -Wold-style-definition to avoid
old-style function definitions creeping back in by accident.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).  Also tested build for arm,
mips64 and powerpc32.  Hopefully there aren't any remaining
system-specific files with old-style definitions whose formatting
evaded my searches, but if there are, they will be easy to fix.

	* Makeconfig (+gccwarn-c): Add -Wold-style-definition.
	* Makefile ($(objpfx)c++-types-check.out): Filter out
	$(+gccwarn-c) instead of -Wstrict-prototypes.
2015-10-21 15:14:13 +00:00
Joseph Myers
85231522bb Convert a few more function definitions to prototype style.
This patch converts a few more function definitions in glibc from
old-style K&R to prototype style.  This is sufficient to build and
test on x86_64 and x86 with -Wold-style-definition (I'll test on some
more architectures before proposing the actual addition of
-Wold-style-definition).

Tested for x86_64 and x86 with -Wold-style-definition in use
(testsuite - this patch affects files containing assertions).

	* io/fts.c (fts_open): Convert to prototype-style function
	definition.
	* malloc/mcheck.c (mcheck): Likewise.
	(mcheck_pedantic): Likewise.
	* posix/regexec.c (re_search_2_stub): Likewise.  Use
	internal_function.
	(re_search_internal): Likewise.
	* resolv/res_init.c [RESOLVSORT] (net_mask): Convert to
	prototype-style function definition.
	* sunrpc/clnt_udp.c (clntudp_call): Likewise.
	* sunrpc/pmap_rmt.c (clnt_broadcast): Likewise.
	* sunrpc/rpcsvc/rusers.x (xdr_utmp): Likewise.
	(xdr_utmpptr): Likewise.
	(xdr_utmparr): Likewise.
	(xdr_utmpidle): Likewise.
	(xdr_utmpidleptr): Likewise.
	(xdr_utmpidlearr): Likewise.
2015-10-21 11:57:23 +00:00
Joseph Myers
ca88f362a7 Add more libm tests (fmod, fpclassify, frexp, hypot, ilogb, j0, j1, jn, log, log10, log2).
This patch improves the libm test coverage for a few more functions.

Tested for x86_64 and x86.

2015-10-21  Joseph Myers  <joseph@codesourcery.com>

	* math/auto-libm-test-in: Add more tests of hypot, j0, j1, jn,
	log, log10 and log2.
	* math/auto-libm-test-out: Regenerated.
	* math/libm-test.inc (fmod_test_data): Add more tests.
	(fpclassify_test_data): Likewise.
	(frexp_test_data): Likewise.
	(hypot_test_data): Likewise.
	(ilogb_test_data): Likewise.
2015-10-21 01:05:01 +00:00
Joseph Myers
80d9be8122 Convert miscellaneous function definitions to prototype style.
This patch converts various miscellaneous functions definitions in
glibc, found with grep and not covered by my previous scripted
conversions, from old-style K&R to prototype-style.  These changes
were made manually.  This is not necessarily exhaustive as formatting
variants may have prevented my grep from finding some such
definitions.

Regarding the changes to files from GMP, they may originally have been
omitted when removing __STDC__ conditionals because of the files
coming from another package, but (a) GMP no longer has __STDC__
conditionals there anyway and (b) we don't try to keep these files
verbatim in sync with GMP (and there are licensing differences), so
making the change to them in glibc seems reasonable.

Tested for x86_64 and x86 (testsuite - this patch affects files
containing assertions).

	* debug/fortify_fail.c (__fortify_fail): Convert to
	prototype-style function definition.  Use internal_function.
	* libio/genops.c (save_for_backup): Convert to prototype-style
	function definition.
	* libio/wgenops.c (save_for_wbackup): Likewise.
	* login/grantpt.c (grantpt): Likewise.
	* login/ptsname.c (ptsname): Likewise.
	(__ptsname_r): Likewise.
	* login/unlockpt.c (unlockpt): Likewise.
	* mach/msgserver.c (__mach_msg_server): Likewise.
	* misc/efgcvt.c (__APPEND (FUNC_PREFIX, fcvt)): Likewise.
	(__APPEND (FUNC_PREFIX, ecvt)): Likewise.
	(__APPEND (FUNC_PREFIX, gcvt)): Likewise.
	* misc/efgcvt_r.c (__APPEND (FUNC_PREFIX, fcvt_r)): Likewise.
	(__APPEND (FUNC_PREFIX, ecvt_r)): Likewise.
	* nptl/cleanup_compat.c (_pthread_cleanup_push): Likewise.
	* nptl/cleanup_defer_compat.c (_pthread_cleanup_push_defer):
	Likewise.
	* nptl/libc_pthread_init.c (__libc_pthread_init): Likewise.  Use
	internal_function.
	* nptl/pthread_atfork.c (__pthread_atfork): Convert to
	prototype-style function definition.
	* nptl/pthread_create.c (__pthread_create_2_1): Likewise.
	[SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)]
	(__pthread_create_2_0): Likewise.
	* nptl/pthread_key_create.c (__pthread_key_create): Likewise.
	* nptl/register-atfork.c (__register_atfork): Likewise.
	* posix/glob.c (glob): Likewise.
	* posix/regcomp.c (re_comp): Likewise.
	* posix/regexec.c (re_exec): Likewise.
	* stdlib/add_n.c [__STDC__]: Make code unconditional.
	[!__STDC__]: Remove conditional code.
	* stdlib/cmp.c [__STDC__]: Make code unconditional.
	[!__STDC__]: Remove conditional code.
	* stdlib/divmod_1.c [__STDC__]: Make code unconditional.
	[!__STDC__]: Remove conditional code.
	* stdlib/divrem.c [__STDC__]: Make code unconditional.
	[!__STDC__]: Remove conditional code.
	* stdlib/lshift.c [__STDC__]: Make code unconditional.
	[!__STDC__]: Remove conditional code.
	* stdlib/mod_1.c [__STDC__]: Make code unconditional.
	[!__STDC__]: Remove conditional code.
	* stdlib/mul.c [__STDC__]: Make code unconditional.
	[!__STDC__]: Remove conditional code.
	* stdlib/mul_n.c [__STDC__]: Make code unconditional.
	[!__STDC__]: Remove conditional code.
	* stdlib/rshift.c [__STDC__]: Make code unconditional.
	[!__STDC__]: Remove conditional code.
	* stdlib/strtod.c (INTERNAL (STRTOF)): Convert to prototype-style
	function definition.
	(STRTOF): Likewise.
	* stdlib/strtod_l.c (__STRTOF): Likewise.
	* stdlib/strtol.c (INTERNAL (strtol)): Likewise.
	* stdlib/strtol_l.c (INTERNAL (__strtol_l)): Likewise.
	(__strtol_l): Likewise.
	* stdlib/sub_n.c [__STDC__]: Make code unconditional.
	[!__STDC__]: Remove conditional code.
	* string/memrchr.c (MEMRCHR): Convert to prototype-style function
	definition.
	* string/strcasecmp.c (LOCALE_PARAM_DECL): Remove macro.
	[USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument
	type.
	(__strcasecmp): Convert to prototype-style function definition.
	* string/strncase.c (LOCALE_PARAM_DECL): Remove macro.
	[USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument
	type.
	(__strncasecmp): Convert to prototype-style function definition.
	* sunrpc/pm_getport.c (__libc_rpc_getport): Likewise.
	* sunrpc/xdr.c (xdr_union): Likewise.
	* sunrpc/xdr_array.c (xdr_array): Likewise.
	* sunrpc/xdr_ref.c (xdr_reference): Likewise.
	* sysdeps/m68k/m680x0/fpu/s_atan.c (__CONCATX(__,FUNC)): Likewise.
	* sysdeps/m68k/m680x0/fpu/s_isinf.c (__CONCATX(__,FUNC)):
	Likewise.
	* sysdeps/m68k/m680x0/fpu/s_scalbn.c (__CONCATX(__scalbn,suffix):
	Likewise.
	* sysdeps/m68k/m680x0/fpu/s_sincos.c (CONCATX(__,FUNC)): Likewise.
	* sysdeps/unix/sysv/linux/i386/scandir64.c (__old_scandir64):
	Likewise.
	* time/strftime_l.c (LOCALE_PARAM_DECL): Remove macro.
	(LOCALE_PARAM_PROTO): Likewise.
	[_LIBC && USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include
	argument type.
	(ut_argument_spec): Remove macro.
	(ut_argument_spec_iso): Rename to ut_argument_spec.
	(memcpy_lowcase): Use LOCALE_PARAM in declaration.  Convert to
	prototype-style function definition.
	(memcpy_uppcase): Likewise.
	(__strftime_internal): Likewise.
	(my_strftime): Likewise.
	* time/strptime_l.c (LOCALE_PARAM_PROTO): Remove macro.
	(LOCALE_PARAM_DECL): Likewise.
	[_LIBC] (LOCALE_PARAM): Include argument type.
	(__strptime_internal): Convert to prototype-style function
	definition.
	(strptime): Likewise.
	* wcsmbs/wcscasecmp.c (LOCALE_PARAM_DECL): Remove macro.
	[USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument
	type.
	(__wcscasecmp): Convert to prototype-style function definition.
	* wcsmbs/wcsncase.c (LOCALE_PARAM_DECL): Remove macro.
	[USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument
	type.
	(__wcsncasecmp): Convert to prototype-style function definition.
2015-10-20 21:27:22 +00:00
Joseph Myers
9dd346ff43 Convert 113 more function definitions to prototype style (files with assertions).
This mostly automatically-generated patch converts 113 function
definitions in glibc from old-style K&R to prototype-style.  Following
my other recent such patches, this one deals with the case of function
definitions in files that either contain assertions or where grep
suggested they might contain assertions - and thus where it isn't
possible to use a simple object code comparison as a sanity check on
the correctness of the patch, because line numbers are changed.

A few such automatically-generated changes needed to be supplemented
by manual changes for the result to compile.  openat64 had a prototype
declaration with "..." but an old-style definition in
sysdeps/unix/sysv/linux/dl-openat64.c, and "..." needed adding to the
generated prototype in the definition (I've filed
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68024> for diagnosing
such cases in GCC; the old state was undefined behavior not requiring
a diagnostic, but one seems a good idea).  In addition, as Florian has
noted regparm attribute mismatches between declaration and definition
are only diagnosed for prototype definitions, and five functions
needed internal_function added to their definitions (in the case of
__pthread_mutex_cond_lock, via the macro definition of
__pthread_mutex_lock) to compile on i386.

After this patch is in, remaining old-style definitions are probably
most readily fixed manually before we can turn on
-Wold-style-definition for all builds.

Tested for x86_64 and x86 (testsuite).

	* crypt/md5-crypt.c (__md5_crypt_r): Convert to prototype-style
	function definition.
	* crypt/sha256-crypt.c (__sha256_crypt_r): Likewise.
	* crypt/sha512-crypt.c (__sha512_crypt_r): Likewise.
	* debug/backtracesyms.c (__backtrace_symbols): Likewise.
	* elf/dl-minimal.c (_itoa): Likewise.
	* hurd/hurdmalloc.c (malloc): Likewise.
	(free): Likewise.
	(realloc): Likewise.
	* inet/inet6_option.c (inet6_option_space): Likewise.
	(inet6_option_init): Likewise.
	(inet6_option_append): Likewise.
	(inet6_option_alloc): Likewise.
	(inet6_option_next): Likewise.
	(inet6_option_find): Likewise.
	* io/ftw.c (FTW_NAME): Likewise.
	(NFTW_NAME): Likewise.
	(NFTW_NEW_NAME): Likewise.
	(NFTW_OLD_NAME): Likewise.
	* libio/iofwide.c (_IO_fwide): Likewise.
	* libio/strops.c (_IO_str_init_static_internal): Likewise.
	(_IO_str_init_static): Likewise.
	(_IO_str_init_readonly): Likewise.
	(_IO_str_overflow): Likewise.
	(_IO_str_underflow): Likewise.
	(_IO_str_count): Likewise.
	(_IO_str_seekoff): Likewise.
	(_IO_str_pbackfail): Likewise.
	(_IO_str_finish): Likewise.
	* libio/wstrops.c (_IO_wstr_init_static): Likewise.
	(_IO_wstr_overflow): Likewise.
	(_IO_wstr_underflow): Likewise.
	(_IO_wstr_count): Likewise.
	(_IO_wstr_seekoff): Likewise.
	(_IO_wstr_pbackfail): Likewise.
	(_IO_wstr_finish): Likewise.
	* locale/programs/localedef.c (normalize_codeset): Likewise.
	* locale/programs/locarchive.c (add_locale_to_archive): Likewise.
	(add_locales_to_archive): Likewise.
	(delete_locales_from_archive): Likewise.
	* malloc/malloc.c (__libc_mallinfo): Likewise.
	* math/gen-auto-libm-tests.c (init_fp_formats): Likewise.
	* misc/tsearch.c (__tfind): Likewise.
	* nptl/pthread_attr_destroy.c (__pthread_attr_destroy): Likewise.
	* nptl/pthread_attr_getdetachstate.c
	(__pthread_attr_getdetachstate): Likewise.
	* nptl/pthread_attr_getguardsize.c (pthread_attr_getguardsize):
	Likewise.
	* nptl/pthread_attr_getinheritsched.c
	(__pthread_attr_getinheritsched): Likewise.
	* nptl/pthread_attr_getschedparam.c
	(__pthread_attr_getschedparam): Likewise.
	* nptl/pthread_attr_getschedpolicy.c
	(__pthread_attr_getschedpolicy): Likewise.
	* nptl/pthread_attr_getscope.c (__pthread_attr_getscope):
	Likewise.
	* nptl/pthread_attr_getstack.c (__pthread_attr_getstack):
	Likewise.
	* nptl/pthread_attr_getstackaddr.c (__pthread_attr_getstackaddr):
	Likewise.
	* nptl/pthread_attr_getstacksize.c (__pthread_attr_getstacksize):
	Likewise.
	* nptl/pthread_attr_init.c (__pthread_attr_init_2_1): Likewise.
	(__pthread_attr_init_2_0): Likewise.
	* nptl/pthread_attr_setdetachstate.c
	(__pthread_attr_setdetachstate): Likewise.
	* nptl/pthread_attr_setguardsize.c (pthread_attr_setguardsize):
	Likewise.
	* nptl/pthread_attr_setinheritsched.c
	(__pthread_attr_setinheritsched): Likewise.
	* nptl/pthread_attr_setschedparam.c
	(__pthread_attr_setschedparam): Likewise.
	* nptl/pthread_attr_setschedpolicy.c
	(__pthread_attr_setschedpolicy): Likewise.
	* nptl/pthread_attr_setscope.c (__pthread_attr_setscope):
	Likewise.
	* nptl/pthread_attr_setstack.c (__pthread_attr_setstack):
	Likewise.
	* nptl/pthread_attr_setstackaddr.c (__pthread_attr_setstackaddr):
	Likewise.
	* nptl/pthread_attr_setstacksize.c (__pthread_attr_setstacksize):
	Likewise.
	* nptl/pthread_condattr_setclock.c (pthread_condattr_setclock):
	Likewise.
	* nptl/pthread_create.c (__find_in_stack_list): Likewise.
	* nptl/pthread_getattr_np.c (pthread_getattr_np): Likewise.
	* nptl/pthread_mutex_cond_lock.c (__pthread_mutex_lock): Define to
	use internal_function.
	* nptl/pthread_mutex_init.c (__pthread_mutex_init): Convert to
	prototype-style function definition.
	* nptl/pthread_mutex_lock.c (__pthread_mutex_lock): Likewise.
	(__pthread_mutex_cond_lock_adjust): Likewise.  Use
	internal_function.
	* nptl/pthread_mutex_timedlock.c (pthread_mutex_timedlock):
	Convert to prototype-style function definition.
	* nptl/pthread_mutex_trylock.c (__pthread_mutex_trylock):
	Likewise.
	* nptl/pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt):
	Likewise.
	(__pthread_mutex_unlock): Likewise.
	* nptl_db/td_ta_clear_event.c (td_ta_clear_event): Likewise.
	* nptl_db/td_ta_set_event.c (td_ta_set_event): Likewise.
	* nptl_db/td_thr_clear_event.c (td_thr_clear_event): Likewise.
	* nptl_db/td_thr_event_enable.c (td_thr_event_enable): Likewise.
	* nptl_db/td_thr_set_event.c (td_thr_set_event): Likewise.
	* nss/makedb.c (process_input): Likewise.
	* posix/fnmatch.c (__strchrnul): Likewise.
	(__wcschrnul): Likewise.
	(fnmatch): Likewise.
	* posix/fnmatch_loop.c (FCT): Likewise.
	* posix/glob.c (globfree): Likewise.
	(__glob_pattern_type): Likewise.
	(__glob_pattern_p): Likewise.
	* posix/regcomp.c (re_compile_pattern): Likewise.
	(re_set_syntax): Likewise.
	(re_compile_fastmap): Likewise.
	(regcomp): Likewise.
	(regerror): Likewise.
	(regfree): Likewise.
	* posix/regexec.c (regexec): Likewise.
	(re_match): Likewise.
	(re_search): Likewise.
	(re_match_2): Likewise.
	(re_search_2): Likewise.
	(re_search_stub): Likewise.  Use internal_function
	(re_copy_regs): Likewise.
	(re_set_registers): Convert to prototype-style function
	definition.
	(prune_impossible_nodes): Likewise.  Use internal_function.
	* resolv/inet_net_pton.c (inet_net_pton): Convert to
	prototype-style function definition.
	(inet_net_pton_ipv4): Likewise.
	* stdlib/strtod_l.c (____STRTOF_INTERNAL): Likewise.
	* sysdeps/pthread/aio_cancel.c (aio_cancel): Likewise.
	* sysdeps/pthread/aio_suspend.c (aio_suspend): Likewise.
	* sysdeps/pthread/timer_delete.c (timer_delete): Likewise.
	* sysdeps/unix/sysv/linux/dl-openat64.c (openat64): Likewise.
	Make variadic.
	* time/strptime_l.c (localtime_r): Convert to prototype-style
	function definition.
	* wcsmbs/mbsnrtowcs.c (__mbsnrtowcs): Likewise.
	* wcsmbs/mbsrtowcs_l.c (__mbsrtowcs_l): Likewise.
	* wcsmbs/wcsnrtombs.c (__wcsnrtombs): Likewise.
	* wcsmbs/wcsrtombs.c (__wcsrtombs): Likewise.
2015-10-20 11:54:09 +00:00
Joseph Myers
41075ae3e7 Convert 29 more function definitions to prototype style (multiple parameters in one K&R parameter declaration).
This automatically-generated patch converts 29 function definitions in
glibc (including one in an example in the manual) from old-style K&R
to prototype-style.  Following my other recent such patches, this one
deals with the case of function definitions where one K&R parameter
declaration declares multiple parameters, as in:

void
foo (a, b)
     int a, *b;
{
}

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

	* crypt/crypt.c (_ufc_doit_r): Convert to prototype-style function
	definition.
	(_ufc_doit_r): Likewise.
	* crypt/crypt_util.c (_ufc_copymem): Likewise.
	(_ufc_output_conversion_r): Likewise.
	* inet/inet_mkadr.c (__inet_makeaddr): Likewise.
	* inet/rcmd.c (rcmd_af): Likewise.
	(rcmd): Likewise.
	(ruserok_af): Likewise.
	(ruserok): Likewise.
	(ruserok2_sa): Likewise.
	(ruserok_sa): Likewise.
	(iruserok_af): Likewise.
	(iruserok): Likewise.
	(__ivaliduser): Likewise.
	(__validuser2_sa): Likewise.
	* inet/rexec.c (rexec_af): Likewise.
	(rexec): Likewise.
	* inet/ruserpass.c (ruserpass): Likewise.
	* locale/programs/xmalloc.c (xcalloc): Likewise.
	* manual/examples/timeval_subtract.c (timeval_subtract): Likewise.
	* math/w_drem.c (__drem): Likewise.
	* math/w_dremf.c (__dremf): Likewise.
	* math/w_dreml.c (__dreml): Likewise.
	* misc/daemon.c (daemon): Likewise.
	* resolv/res_debug.c (p_fqnname): Likewise.
	* stdlib/div.c (div): Likewise.
	* string/memcmp.c (memcmp_bytes): Likewise.
	* sunrpc/pmap_rmt.c (pmap_rmtcall): Likewise.
	* sunrpc/svc_udp.c (svcudp_bufcreate): Likewise.
2015-10-20 11:52:27 +00:00
Joseph Myers
a72ddc1424 Convert 24 more function definitions to prototype style (array parameters).
This automatically-generated patch converts 24 function definitions in
glibc from old-style K&R to prototype-style.  Following my other
recent such patches, this one deals with the case of functions with
array parameters.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

	* crypt/cert.c (main): Convert to prototype-style function
	definition.
	* io/pipe.c (__pipe): Likewise.
	* io/pipe2.c (__pipe2): Likewise.
	* misc/futimesat.c (futimesat): Likewise.
	* misc/utimes.c (__utimes): Likewise.
	* posix/execve.c (__execve): Likewise.
	* posix/execvp.c (execvp): Likewise.
	* posix/execvpe.c (__execvpe): Likewise.
	* posix/fexecve.c (fexecve): Likewise.
	* socket/socketpair.c (socketpair): Likewise.
	* stdlib/drand48-iter.c (__drand48_iterate): Likewise.
	* stdlib/erand48.c (erand48): Likewise.
	* stdlib/erand48_r.c (__erand48_r): Likewise.
	* stdlib/jrand48.c (jrand48): Likewise.
	* stdlib/jrand48_r.c (__jrand48_r): Likewise.
	* stdlib/lcong48.c (lcong48): Likewise.
	* stdlib/lcong48_r.c (__lcong48_r): Likewise.
	* stdlib/nrand48.c (nrand48): Likewise.
	* stdlib/nrand48_r.c (__nrand48_r): Likewise.
	* stdlib/seed48.c (seed48): Likewise.
	* stdlib/seed48_r.c (__seed48_r): Likewise.
	* sysdeps/mach/hurd/execve.c (__execve): Likewise.
	* sysdeps/mach/hurd/utimes.c (__utimes): Likewise.
	* sysdeps/unix/sysv/linux/fexecve.c (fexecve): Likewise.
2015-10-20 11:51:03 +00:00
Joseph Myers
864198ed30 Remove gnu_unique_object configure test.
There is a configure test for assembler support for the
gnu_unique_object symbol type.  This support was added in binutils
2.20, so is present in all versions supported for building glibc.

Thus, I think the configure test can be removed; this patch does so.
Now, there is a caveat that the gas NEWS entry refers to this as a
feature for GNU/Linux targets.  But the condition is use of
ELFOSABI_GNU or ELFOSABI_NONE.  ELFOSABI_GNU covers Hurd as well as
GNU/Linux (as was the case with the older ELFOSABI_LINUX name), and
ELFOSABI_NONE means this is effectively OS-independent.  Furthermore,
I think a correct binutils port for any glibc target ought to support
this feature for use with glibc; glibc supports this as an
OS-independent feature (the configure test is only about glibc
testcases).

Tested for x86_64 (testsuite, and that installed shared libraries are
unchanged by the patch).

	* configure.ac (libc_cv_asm_unique_object): Remove configure test.
	* configure: Regenerated.
	* config.h.in (HAVE_ASM_UNIQUE_OBJECT): Remove #undef.
	* elf/tst-unique1.c (do_test) [HAVE_ASM_UNIQUE_OBJECT]: Make code
	unconditional.
	* elf/tst-unique1mod1.c [HAVE_ASM_UNIQUE_OBJECT]: Likewise.
	* elf/tst-unique1mod2.c [HAVE_ASM_UNIQUE_OBJECT]: Likewise.
	* elf/tst-unique2.c (do_test) [HAVE_ASM_UNIQUE_OBJECT]: Likewise.
	(do_test) [!HAVE_ASM_UNIQUE_OBJECT]: Remove conditional code.
	* elf/tst-unique2mod1.c [HAVE_ASM_UNIQUE_OBJECT]: Make code
	unconditional.
	* elf/tst-unique2mod2.c [HAVE_ASM_UNIQUE_OBJECT]: Likewise.
2015-10-19 22:34:20 +00:00
Joseph Myers
d10a3ab273 Do not use -Wno-strict-prototypes.
Two glibc makefiles use -Wno-strict-prototypes.  I don't know if this
was needed before my recent conversion of many function definitions to
prototype style, but it's not needed now; this patch removes it.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

	* posix/Makefile (CFLAGS-regex.c): Remove variable.
	* resolv/Makefile (+cflags): Do not use -Wno-strict-prototypes.
2015-10-19 21:24:50 +00:00
Joseph Myers
f63f2bfdfa Convert 69 more function definitions to prototype style (line wrap cases).
This automatically-generated patch converts 69 function definitions in
glibc from old-style K&R to prototype-style.

This patch, covering both sysdeps and non-sysdeps files, deals with
cases where the prototype needed to be wrapped over more than one
line.  Otherwise, exclusions and caveats are as for
<https://sourceware.org/ml/libc-alpha/2015-10/msg00594.html> and
<https://sourceware.org/ml/libc-alpha/2015-10/msg00599.html>.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

	* crypt/crypt-entry.c (__crypt_r): Convert to prototype-style
	function definition.
	* crypt/crypt_util.c (__encrypt_r): Likewise.
	* libio/genops.c (_IO_no_init): Likewise.
	* libio/iofopncook.c (_IO_fopencookie): Likewise.
	(_IO_old_fopencookie): Likewise.
	* libio/iofwrite_u.c (fwrite_unlocked): Likewise.
	* libio/iogetline.c (_IO_getline): Likewise.
	(_IO_getline_info): Likewise.
	* libio/iogetwline.c (_IO_getwline): Likewise.
	(_IO_getwline_info): Likewise.
	* libio/vsnprintf.c (_IO_vsnprintf): Likewise.
	* libio/vswprintf.c (_IO_vswprintf): Likewise.
	* locale/programs/simple-hash.c (insert_entry_2): Likewise.
	(find_entry): Likewise.
	(iterate_table): Likewise.
	(lookup): Likewise.
	* login/forkpty.c (forkpty): Likewise.
	* misc/hsearch_r.c (__hsearch_r): Likewise.
	* misc/select.c (__select): Likewise.
	* nptl/cleanup_defer_compat.c (_pthread_cleanup_pop_restore):
	Likewise.
	* nptl/old_pthread_cond_init.c (__pthread_cond_init_2_0):
	Likewise.
	* nptl/old_pthread_cond_timedwait.c
	(__pthread_cond_timedwait_2_0): Likewise.
	* nptl/pthread_barrier_init.c (__pthread_barrier_init): Likewise.
	* nptl/pthread_barrierattr_getpshared.c
	(pthread_barrierattr_getpshared): Likewise.
	* nptl/pthread_getschedparam.c (__pthread_getschedparam):
	Likewise.
	* nptl/pthread_mutex_setprioceiling.c
	(pthread_mutex_setprioceiling): Likewise.
	* nptl/pthread_mutexattr_getprioceiling.c
	(pthread_mutexattr_getprioceiling): Likewise.
	* nptl/pthread_rwlock_init.c (__pthread_rwlock_init): Likewise.
	* nptl/pthread_rwlock_timedrdlock.c (pthread_rwlock_timedrdlock):
	Likewise.
	* nptl/pthread_rwlock_timedwrlock.c (pthread_rwlock_timedwrlock):
	Likewise.
	* nptl/pthread_setschedparam.c (__pthread_setschedparam):
	Likewise.
	* socket/recvfrom.c (__recvfrom): Likewise.
	* socket/sendto.c (__sendto): Likewise.
	* socket/setsockopt.c (__setsockopt): Likewise.
	* stdio-common/_itoa.c (_itoa): Likewise.
	* stdio-common/_itowa.c (_itowa): Likewise.
	* stdio-common/reg-printf.c (__register_printf_specifier):
	Likewise.
	(__register_printf_function): Likewise.
	* stdio-common/tempname.c (__path_search): Likewise.
	* stdlib/addmul_1.c (mpn_addmul_1): Likewise.
	* stdlib/mul_1.c (mpn_mul_1): Likewise.
	* stdlib/random_r.c (__initstate_r): Likewise.
	* stdlib/setenv.c (__add_to_environ): Likewise.
	* stdlib/submul_1.c (mpn_submul_1): Likewise.
	* streams/getpmsg.c (getpmsg): Likewise.
	* streams/putmsg.c (putmsg): Likewise.
	* streams/putpmsg.c (putpmsg): Likewise.
	* sunrpc/clnt_raw.c (clntraw_call): Likewise.
	* sunrpc/clnt_tcp.c (clnttcp_call): Likewise.
	* sunrpc/clnt_udp.c (clntudp_create): Likewise.
	* sunrpc/clnt_unix.c (clntunix_call): Likewise.
	* sunrpc/pm_getport.c (pmap_getport): Likewise.
	* sunrpc/svc_udp.c (cache_get): Likewise.
	* sunrpc/xdr_array.c (xdr_vector): Likewise.
	* sysdeps/mach/hurd/getcwd.c
	(__canonicalize_directory_name_internal): Likewise.
	* sysdeps/mach/hurd/pselect.c (__pselect): Likewise.
	* sysdeps/mach/hurd/recvfrom.c (__recvfrom): Likewise.
	* sysdeps/mach/hurd/select.c (__select): Likewise.
	* sysdeps/posix/ttyname_r.c (getttyname_r): Likewise.
	* sysdeps/pthread/timer_settime.c (timer_settime): Likewise.
	* sysdeps/sparc/nptl/pthread_barrier_init.c
	(__pthread_barrier_init): Likewise.
	* sysdeps/unix/sysv/linux/hppa/pthread_cond_timedwait.c
	(__pthread_cond_timedwait): Likewise.
	* sysdeps/unix/sysv/linux/i386/putmsg.c (putmsg): Likewise.
	* sysdeps/unix/sysv/linux/s390/semtimedop.c (semtimedop):
	Likewise.
	* sysdeps/unix/sysv/linux/semtimedop.c (semtimedop): Likewise.
	* sysdeps/unix/sysv/linux/timer_settime.c (timer_settime):
	Likewise.
	* sysvipc/semtimedop.c (semtimedop): Likewise.
	* time/setitimer.c (__setitimer): Likewise.
	* time/strftime_l.c (emacs_strftime): Likewise.
2015-10-19 21:23:47 +00:00
Mike Frysinger
6ab674ebff use -fstack-protector-strong when available
With gcc-4.9, a new -fstack-protector-strong flag is available that is
between -fstack-protector (pretty weak) and -fstack-protector-all (pretty
strong) that provides good trade-offs between overhead but still providing
good coverage.  Update the places in glibc that use ssp to use this flag
when it's available.

This also kills off the indirection of hardcoding the flag name in the
Makefiles and adding it based on a have-ssp boolean.  Instead, the build
always expands the $(stack-protector) variable to the best ssp setting.
This makes the build logic a bit simpler and allows people to easily set
to a diff flag like:
	make stack-protector=-fstack-protector-all
2015-10-19 15:36:48 -04:00
H.J. Lu
cf6d542db3 Mark ld.so internel __fxstatat64 hidden
Since ld.so internel __fxstatat64 is only used internally in ld.so, it
can be made hidden.

	[BZ #19122]
	* include/sys/stat.h [IS_IN (rtld)] (__fxstatat64): Add
	attribute_hidden.
2015-10-19 12:01:48 -07:00
Tulio Magno Quites Machado Filho
6ec52bf634 PowerPC: Fix a race condition when eliding a lock
The previous code used to evaluate the preprocessor token is_lock_free to
a variable before starting a transaction.  This behavior can cause an
error if another thread got the lock (without using a transaction)
between the evaluation of the token and the beginning of the transaction.

This bug can be triggered with the following order of events:
1. The lock accessed by is_lock_free is free.
2. Thread T1 evaluates is_lock_free and stores into register R1 that the
   lock is free.
3. Thread T2 acquires the same lock used in is_lock_free.
4. T1 begins the transaction, creating a memory barrier where is_lock_free
   is false, but R1 is true.
5. T1 reads R1 and doesn't abort the transaction.
6. T1 calls ELIDE_UNLOCK, which reads false from is_lock_free and decides
   to unlock a lock acquired by T2, leading to undefined behavior.

This patch delays the evaluation of is_lock_free to inside a transaction
by moving this part of the code to the macro ELIDE_LOCK.

	[BZ #18743]
	* sysdeps/powerpc/nptl/elide.h (__elide_lock): Move most of this
	code to...
	(ELIDE_LOCK): ...here.
	(__get_new_count): New function with part of the code from
	__elide_lock that updates the value of adapt_count after a
	transaction abort.
	(__elided_trylock): Moved this code to...
	(ELIDE_TRYLOCK): ...here.
2015-10-19 16:58:03 -02:00
Mike Frysinger
44f826e317 timezone: polish grammar a bit in documentation
Reported-by: ricaljasan@pacific.net
2015-10-19 14:12:03 -04:00
Geoffrey Thomas
2028f49dab pt_chown: Clear any signal mask inherited from the parent process.
If grantpt() is called from a thread that is masking signals (for
instance, from a program using signalfd or using a dedicated
signal-handling thread), then that mask will get inherited to pt_chown.
This means that signals like SIGINT will not interrup pt_chown, so if it
hangs (e.g., because getgrnam("tty") hangs on a remote name service),
Ctrl-C will terminate the parent process but leave pt_chown around. Since
it's setuid, it's hard to kill any other way.

It is safe for pt_chown to unmask all signals, because grantpt() can be
(and usually is) called from an unprivileged process with all signals
unmasked.
2015-10-19 19:33:28 +05:30
Joseph Myers
361468f226 Remove -fgnu89-inline configure test.
There is a configure test for -fgnu89-inline.  This option was added
in GCC 4.2, so the test is obsolete; this patch removes it.

Tested for x86_64 (testsuite, and that installed shared libraries are
unchanged by the patch).

	* configure.ac (libc_cv_gnu89_inline): Remove configure test.
	* configure: Regenerated.
	* config.make.in (gnu89-inline-CFLAGS): Remove variable.
	* Makeconfig (CFLAGS): Use -fgnu89-inline instead of
	$(gnu89-inline-CFLAGS).
2015-10-19 12:07:03 +00:00
Joseph Myers
210dd78238 Remove .weak, .weakext configure tests.
There are configure tests for assembler .weak support, and, as a
fallback, for .weakext support.

.weakext appears to be an ECOFF thing (although a few ELF targets
support it as well).  .weak has been supported by the GNU assembler
for ELF targets since version 2.2, so given the requirement for ELF
the configure tests are obsolete; this patch removes them.

Tested for x86_64 (testsuite, and that installed shared libraries are
unchanged by the patch).

	* configure.ac (libc_cv_asm_weak_directive): Remove configure
	test.
	(libc_cv_asm_weakext_directive): Likewise.
	* configure: Regenerated.
	* config.h.in (HAVE_ASM_WEAK_DIRECTIVE): Remove #undef.
	(HAVE_ASM_WEAKEXT_DIRECTIVE): Likewise.
	* include/libc-symbols.h
	[!HAVE_ASM_WEAK_DIRECTIVE && !HAVE_ASM_WEAKEXT_DIRECTIVE]: Remove
	#error.
	[HAVE_ASM_WEAKEXT_DIRECTIVE]: Remove conditional code.
	[!HAVE_ASM_WEAKEXT_DIRECTIVE]: Make code unconditional.
2015-10-19 12:06:00 +00:00
Joseph Myers
bd2260a206 Convert 231 sysdeps function definitions to prototype style.
This mostly automatically-generated patch converts 231 sysdeps
function definitions in glibc from old-style K&R to prototype-style.

For __aio_sigqueue and __gai_sigqueue I had to add internal_function
to the definitions as noted by Florian in
<https://sourceware.org/ml/libc-alpha/2015-10/msg00595.html> to keep
the functions compiling on x86 after conversion to prototype
definitions.  Otherwise, the patch is automatically generated with all
the same exclusions and caveats as in
<https://sourceware.org/ml/libc-alpha/2015-10/msg00594.html> except
that it's a patch for sysdeps files.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).  Also tested for arm,
mips64 and powerpc32 that installed stripped shared libraries are
unchanged by the patch.

	* sysdeps/arm/backtrace.c (__backtrace): Convert to
	prototype-style function definition.
	* sysdeps/i386/backtrace.c (__backtrace): Likewise.
	* sysdeps/i386/ffs.c (__ffs): Likewise.
	* sysdeps/i386/i686/ffs.c (__ffs): Likewise.
	* sysdeps/ia64/nptl/pthread_spin_lock.c (pthread_spin_lock):
	Likewise.
	* sysdeps/ia64/nptl/pthread_spin_trylock.c (pthread_spin_trylock):
	Likewise.
	* sysdeps/ieee754/ldbl-128/e_log2l.c (__ieee754_log2l): Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_log2l.c (__ieee754_log2l):
	Likewise.
	* sysdeps/m68k/ffs.c (__ffs): Likewise.
	* sysdeps/m68k/m680x0/fpu/e_acos.c (FUNC): Likewise.
	* sysdeps/m68k/m680x0/fpu/e_fmod.c (FUNC): Likewise.
	* sysdeps/mach/adjtime.c (__adjtime): Likewise.
	* sysdeps/mach/gettimeofday.c (__gettimeofday): Likewise.
	* sysdeps/mach/hurd/_exit.c (_exit): Likewise.
	* sysdeps/mach/hurd/access.c (__access): Likewise.
	* sysdeps/mach/hurd/adjtime.c (__adjtime): Likewise.
	* sysdeps/mach/hurd/chdir.c (__chdir): Likewise.
	* sysdeps/mach/hurd/chmod.c (__chmod): Likewise.
	* sysdeps/mach/hurd/chown.c (__chown): Likewise.
	* sysdeps/mach/hurd/cthreads.c (cthread_keycreate): Likewise.
	(cthread_getspecific): Likewise.
	(cthread_setspecific): Likewise.
	(__libc_getspecific): Likewise.
	* sysdeps/mach/hurd/euidaccess.c (__euidaccess): Likewise.
	* sysdeps/mach/hurd/faccessat.c (faccessat): Likewise.
	* sysdeps/mach/hurd/fchdir.c (__fchdir): Likewise.
	* sysdeps/mach/hurd/fchmod.c (__fchmod): Likewise.
	* sysdeps/mach/hurd/fchmodat.c (fchmodat): Likewise.
	* sysdeps/mach/hurd/fchown.c (__fchown): Likewise.
	* sysdeps/mach/hurd/fchownat.c (fchownat): Likewise.
	* sysdeps/mach/hurd/flock.c (__flock): Likewise.
	* sysdeps/mach/hurd/fsync.c (fsync): Likewise.
	* sysdeps/mach/hurd/ftruncate.c (__ftruncate): Likewise.
	* sysdeps/mach/hurd/getgroups.c (__getgroups): Likewise.
	* sysdeps/mach/hurd/gethostname.c (__gethostname): Likewise.
	* sysdeps/mach/hurd/getitimer.c (__getitimer): Likewise.
	* sysdeps/mach/hurd/getlogin_r.c (__getlogin_r): Likewise.
	* sysdeps/mach/hurd/getpgid.c (__getpgid): Likewise.
	* sysdeps/mach/hurd/getrusage.c (__getrusage): Likewise.
	* sysdeps/mach/hurd/getsockname.c (__getsockname): Likewise.
	* sysdeps/mach/hurd/group_member.c (__group_member): Likewise.
	* sysdeps/mach/hurd/isatty.c (__isatty): Likewise.
	* sysdeps/mach/hurd/lchown.c (__lchown): Likewise.
	* sysdeps/mach/hurd/link.c (__link): Likewise.
	* sysdeps/mach/hurd/linkat.c (linkat): Likewise.
	* sysdeps/mach/hurd/listen.c (__listen): Likewise.
	* sysdeps/mach/hurd/mkdir.c (__mkdir): Likewise.
	* sysdeps/mach/hurd/mkdirat.c (mkdirat): Likewise.
	* sysdeps/mach/hurd/openat.c (__openat): Likewise.
	* sysdeps/mach/hurd/poll.c (__poll): Likewise.
	* sysdeps/mach/hurd/readlink.c (__readlink): Likewise.
	* sysdeps/mach/hurd/readlinkat.c (readlinkat): Likewise.
	* sysdeps/mach/hurd/recv.c (__recv): Likewise.
	* sysdeps/mach/hurd/rename.c (rename): Likewise.
	* sysdeps/mach/hurd/renameat.c (renameat): Likewise.
	* sysdeps/mach/hurd/revoke.c (revoke): Likewise.
	* sysdeps/mach/hurd/rewinddir.c (__rewinddir): Likewise.
	* sysdeps/mach/hurd/rmdir.c (__rmdir): Likewise.
	* sysdeps/mach/hurd/seekdir.c (seekdir): Likewise.
	* sysdeps/mach/hurd/send.c (__send): Likewise.
	* sysdeps/mach/hurd/setdomain.c (setdomainname): Likewise.
	* sysdeps/mach/hurd/setegid.c (setegid): Likewise.
	* sysdeps/mach/hurd/seteuid.c (seteuid): Likewise.
	* sysdeps/mach/hurd/setgid.c (__setgid): Likewise.
	* sysdeps/mach/hurd/setgroups.c (setgroups): Likewise.
	* sysdeps/mach/hurd/sethostid.c (sethostid): Likewise.
	* sysdeps/mach/hurd/sethostname.c (sethostname): Likewise.
	* sysdeps/mach/hurd/setlogin.c (setlogin): Likewise.
	* sysdeps/mach/hurd/setpgid.c (__setpgid): Likewise.
	* sysdeps/mach/hurd/setregid.c (__setregid): Likewise.
	* sysdeps/mach/hurd/setreuid.c (__setreuid): Likewise.
	* sysdeps/mach/hurd/settimeofday.c (__settimeofday): Likewise.
	* sysdeps/mach/hurd/setuid.c (__setuid): Likewise.
	* sysdeps/mach/hurd/shutdown.c (shutdown): Likewise.
	* sysdeps/mach/hurd/sigaction.c (__sigaction): Likewise.
	* sysdeps/mach/hurd/sigaltstack.c (__sigaltstack): Likewise.
	* sysdeps/mach/hurd/sigpending.c (sigpending): Likewise.
	* sysdeps/mach/hurd/sigprocmask.c (__sigprocmask): Likewise.
	* sysdeps/mach/hurd/sigsuspend.c (__sigsuspend): Likewise.
	* sysdeps/mach/hurd/socket.c (__socket): Likewise.
	* sysdeps/mach/hurd/symlink.c (__symlink): Likewise.
	* sysdeps/mach/hurd/symlinkat.c (symlinkat): Likewise.
	* sysdeps/mach/hurd/telldir.c (telldir): Likewise.
	* sysdeps/mach/hurd/truncate.c (__truncate): Likewise.
	* sysdeps/mach/hurd/umask.c (__umask): Likewise.
	* sysdeps/mach/hurd/unlink.c (__unlink): Likewise.
	* sysdeps/mach/hurd/unlinkat.c (unlinkat): Likewise.
	* sysdeps/mips/mips64/__longjmp.c (__longjmp): Likewise.
	* sysdeps/posix/alarm.c (alarm): Likewise.
	* sysdeps/posix/cuserid.c (cuserid): Likewise.
	* sysdeps/posix/dirfd.c (dirfd): Likewise.
	* sysdeps/posix/dup.c (__dup): Likewise.
	* sysdeps/posix/dup2.c (__dup2): Likewise.
	* sysdeps/posix/euidaccess.c (euidaccess): Likewise.
	(main): Likewise.
	* sysdeps/posix/flock.c (__flock): Likewise.
	* sysdeps/posix/fpathconf.c (__fpathconf): Likewise.
	* sysdeps/posix/getcwd.c (__getcwd): Likewise.
	* sysdeps/posix/gethostname.c (__gethostname): Likewise.
	* sysdeps/posix/gettimeofday.c (__gettimeofday): Likewise.
	* sysdeps/posix/isatty.c (__isatty): Likewise.
	* sysdeps/posix/killpg.c (killpg): Likewise.
	* sysdeps/posix/libc_fatal.c (__libc_fatal): Likewise.
	* sysdeps/posix/mkfifoat.c (mkfifoat): Likewise.
	* sysdeps/posix/raise.c (raise): Likewise.
	* sysdeps/posix/remove.c (remove): Likewise.
	* sysdeps/posix/rename.c (rename): Likewise.
	* sysdeps/posix/rewinddir.c (__rewinddir): Likewise.
	* sysdeps/posix/seekdir.c (seekdir): Likewise.
	* sysdeps/posix/sigblock.c (__sigblock): Likewise.
	* sysdeps/posix/sigignore.c (sigignore): Likewise.
	* sysdeps/posix/sigintr.c (siginterrupt): Likewise.
	* sysdeps/posix/signal.c (__bsd_signal): Likewise.
	* sysdeps/posix/sigset.c (sigset): Likewise.
	* sysdeps/posix/sigsuspend.c (__sigsuspend): Likewise.
	* sysdeps/posix/sysconf.c (__sysconf): Likewise.
	* sysdeps/posix/sysv_signal.c (__sysv_signal): Likewise.
	* sysdeps/posix/time.c (time): Likewise.
	* sysdeps/posix/ttyname.c (getttyname): Likewise.
	(ttyname): Likewise.
	* sysdeps/posix/ttyname_r.c (__ttyname_r): Likewise.
	* sysdeps/posix/utime.c (utime): Likewise.
	* sysdeps/powerpc/fpu/s_isnan.c (__isnan): Likewise.
	* sysdeps/powerpc/nptl/pthread_spin_lock.c (pthread_spin_lock):
	Likewise.
	* sysdeps/powerpc/nptl/pthread_spin_trylock.c
	(pthread_spin_trylock): Likewise.
	* sysdeps/pthread/aio_error.c (aio_error): Likewise.
	* sysdeps/pthread/aio_read.c (aio_read): Likewise.
	* sysdeps/pthread/aio_read64.c (aio_read64): Likewise.
	* sysdeps/pthread/aio_write.c (aio_write): Likewise.
	* sysdeps/pthread/aio_write64.c (aio_write64): Likewise.
	* sysdeps/pthread/flockfile.c (__flockfile): Likewise.
	* sysdeps/pthread/ftrylockfile.c (__ftrylockfile): Likewise.
	* sysdeps/pthread/funlockfile.c (__funlockfile): Likewise.
	* sysdeps/pthread/timer_create.c (timer_create): Likewise.
	* sysdeps/pthread/timer_getoverr.c (timer_getoverrun): Likewise.
	* sysdeps/pthread/timer_gettime.c (timer_gettime): Likewise.
	* sysdeps/s390/ffs.c (__ffs): Likewise.
	* sysdeps/s390/nptl/pthread_spin_lock.c (pthread_spin_lock):
	Likewise.
	* sysdeps/s390/nptl/pthread_spin_trylock.c (pthread_spin_trylock):
	Likewise.
	* sysdeps/sh/nptl/pthread_spin_lock.c (pthread_spin_lock):
	Likewise.
	* sysdeps/sparc/nptl/pthread_barrier_destroy.c
	(pthread_barrier_destroy): Likewise.
	* sysdeps/sparc/nptl/pthread_barrier_wait.c
	(__pthread_barrier_wait): Likewise.
	* sysdeps/sparc/sparc32/e_sqrt.c (__ieee754_sqrt): Likewise.
	* sysdeps/sparc/sparc32/pthread_barrier_wait.c
	(__pthread_barrier_wait): Likewise.
	* sysdeps/sparc/sparc32/sem_init.c (__old_sem_init): Likewise.
	* sysdeps/tile/memcmp.c (memcmp_common_alignment): Likewise.
	(memcmp_not_common_alignment): Likewise.
	(MEMCMP): Likewise.
	* sysdeps/tile/wordcopy.c (_wordcopy_fwd_aligned): Likewise.
	(_wordcopy_fwd_dest_aligned): Likewise.
	(_wordcopy_bwd_aligned): Likewise.
	(_wordcopy_bwd_dest_aligned): Likewise.
	* sysdeps/unix/bsd/ftime.c (ftime): Likewise.
	* sysdeps/unix/bsd/gtty.c (gtty): Likewise.
	* sysdeps/unix/bsd/stty.c (stty): Likewise.
	* sysdeps/unix/bsd/tcflow.c (tcflow): Likewise.
	* sysdeps/unix/bsd/tcflush.c (tcflush): Likewise.
	* sysdeps/unix/bsd/tcgetattr.c (__tcgetattr): Likewise.
	* sysdeps/unix/bsd/tcgetpgrp.c (tcgetpgrp): Likewise.
	* sysdeps/unix/bsd/tcsendbrk.c (tcsendbreak): Likewise.
	* sysdeps/unix/bsd/tcsetattr.c (tcsetattr): Likewise.
	* sysdeps/unix/bsd/tcsetpgrp.c (tcsetpgrp): Likewise.
	* sysdeps/unix/bsd/ualarm.c (ualarm): Likewise.
	* sysdeps/unix/bsd/wait3.c (__wait3): Likewise.
	* sysdeps/unix/getlogin_r.c (__getlogin_r): Likewise.
	* sysdeps/unix/sockatmark.c (sockatmark): Likewise.
	* sysdeps/unix/stime.c (stime): Likewise.
	* sysdeps/unix/sysv/linux/_exit.c (_exit): Likewise.
	* sysdeps/unix/sysv/linux/aio_sigqueue.c (__aio_sigqueue):
	Likewise.  Use internal_function.
	* sysdeps/unix/sysv/linux/arm/sigaction.c (__libc_sigaction):
	Convert to prototype-style function definition.
	* sysdeps/unix/sysv/linux/faccessat.c (faccessat): Likewise.
	* sysdeps/unix/sysv/linux/fchmodat.c (fchmodat): Likewise.
	* sysdeps/unix/sysv/linux/fpathconf.c (__fpathconf): Likewise.
	* sysdeps/unix/sysv/linux/gai_sigqueue.c (__gai_sigqueue):
	Likewise.  Use internal_function.
	* sysdeps/unix/sysv/linux/gethostid.c (sethostid): Convert to
	prototype-style function definition
	* sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid):
	Likewise.
	(__getlogin_r): Likewise.
	* sysdeps/unix/sysv/linux/getpt.c (__posix_openpt): Likewise.
	* sysdeps/unix/sysv/linux/hppa/pthread_cond_broadcast.c
	(__pthread_cond_broadcast): Likewise.
	* sysdeps/unix/sysv/linux/hppa/pthread_cond_destroy.c
	(__pthread_cond_destroy): Likewise.
	* sysdeps/unix/sysv/linux/hppa/pthread_cond_init.c
	(__pthread_cond_init): Likewise.
	* sysdeps/unix/sysv/linux/hppa/pthread_cond_signal.c
	(__pthread_cond_signal): Likewise.
	* sysdeps/unix/sysv/linux/hppa/pthread_cond_wait.c
	(__pthread_cond_wait): Likewise.
	* sysdeps/unix/sysv/linux/i386/getmsg.c (getmsg): Likewise.
	* sysdeps/unix/sysv/linux/i386/setegid.c (setegid): Likewise.
	* sysdeps/unix/sysv/linux/ia64/sigaction.c (__libc_sigaction):
	Likewise.
	* sysdeps/unix/sysv/linux/ia64/sigpending.c (sigpending):
	Likewise.
	* sysdeps/unix/sysv/linux/ia64/sigprocmask.c (__sigprocmask):
	Likewise.
	* sysdeps/unix/sysv/linux/mips/sigaction.c (__libc_sigaction):
	Likewise.
	* sysdeps/unix/sysv/linux/msgget.c (msgget): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c
	(__ftruncate64): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c
	(truncate64): Likewise.
	* sysdeps/unix/sysv/linux/pt-raise.c (raise): Likewise.
	* sysdeps/unix/sysv/linux/pthread_getcpuclockid.c
	(pthread_getcpuclockid): Likewise.
	* sysdeps/unix/sysv/linux/pthread_getname.c (pthread_getname_np):
	Likewise.
	* sysdeps/unix/sysv/linux/pthread_setname.c (pthread_setname_np):
	Likewise.
	* sysdeps/unix/sysv/linux/pthread_sigmask.c (pthread_sigmask):
	Likewise.
	* sysdeps/unix/sysv/linux/pthread_sigqueue.c (pthread_sigqueue):
	Likewise.
	* sysdeps/unix/sysv/linux/raise.c (raise): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c
	(__libc_sigaction): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c (sigpending):
	Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c
	(__sigprocmask): Likewise.
	* sysdeps/unix/sysv/linux/semget.c (semget): Likewise.
	* sysdeps/unix/sysv/linux/semop.c (semop): Likewise.
	* sysdeps/unix/sysv/linux/setrlimit64.c (setrlimit64): Likewise.
	* sysdeps/unix/sysv/linux/shmat.c (shmat): Likewise.
	* sysdeps/unix/sysv/linux/shmdt.c (shmdt): Likewise.
	* sysdeps/unix/sysv/linux/shmget.c (shmget): Likewise.
	* sysdeps/unix/sysv/linux/sigaction.c (__libc_sigaction):
	Likewise.
	* sysdeps/unix/sysv/linux/sigpending.c (sigpending): Likewise.
	* sysdeps/unix/sysv/linux/sigprocmask.c (__sigprocmask): Likewise.
	* sysdeps/unix/sysv/linux/sigqueue.c (__sigqueue): Likewise.
	* sysdeps/unix/sysv/linux/sigstack.c (sigstack): Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c (sigpending):
	Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c
	(__sigprocmask): Likewise.
	* sysdeps/unix/sysv/linux/speed.c (cfgetospeed): Likewise.
	(cfgetispeed): Likewise.
	(cfsetospeed): Likewise.
	(cfsetispeed): Likewise.
	* sysdeps/unix/sysv/linux/tcflow.c (tcflow): Likewise.
	* sysdeps/unix/sysv/linux/tcflush.c (tcflush): Likewise.
	* sysdeps/unix/sysv/linux/tcgetattr.c (__tcgetattr): Likewise.
	* sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Likewise.
	* sysdeps/unix/sysv/linux/time.c (time): Likewise.
	* sysdeps/unix/sysv/linux/timer_create.c (timer_create): Likewise.
	* sysdeps/unix/sysv/linux/timer_delete.c (timer_delete): Likewise.
	* sysdeps/unix/sysv/linux/timer_getoverr.c (timer_getoverrun):
	Likewise.
	* sysdeps/unix/sysv/linux/timer_gettime.c (timer_gettime):
	Likewise.
	* sysdeps/unix/sysv/linux/x86_64/sigpending.c (sigpending):
	Likewise.
	* sysdeps/unix/sysv/linux/x86_64/sigprocmask.c (__sigprocmask):
	Likewise.
	* sysdeps/x86_64/backtrace.c (__backtrace): Likewise.
2015-10-19 12:04:33 +00:00
Florian Weimer
4e1665024a sunrpc: Rewrite with explicit TLS access using __thread 2015-10-17 12:07:04 +02:00
Florian Weimer
6782806d8f malloc: Rewrite with explicit TLS access using __thread 2015-10-17 12:06:48 +02:00
Florian Weimer
db8ad8fac3 vfprintf: Rewrite printf_positional to use struct scratch_buffer 2015-10-17 12:05:12 +02:00
Florian Weimer
52fb79d6cd Assume that SOCK_CLOEXEC is available and works
This fixes (harmless) data races when accessing the various
__have_sock_cloexec variables.
2015-10-17 12:02:37 +02:00
Florian Weimer
f546f87c4f The va_list pointer is unspecified after a call to vfprintf [BZ #18982]
This adjusts the documentation to the existing implementation.
2015-10-17 12:02:22 +02:00
Joseph Myers
8fe5f986c8 Add more libm tests (fabs, fdim, fma, fmax, fmin, fmod).
This patch improves the libm test coverage for a few more functions.

Tested for x86_64 and x86.

	* math/libm-test.inc (fabs_test_data): Add more tests.
	(fdim_test_data): Likewise.
	(fma_test_data): Likewise.
	(fmax_test_data): Likewise.
	(fmin_test_data): Likewise.
	(fmod_test_data): Likewise.
2015-10-16 22:52:52 +00:00
Steve Ellcey
45d8d77ad3 Make performance improvement to MIPS memcpy for small copies.
* sysdeps/mips/memcpy.S (memcpy):  Add word copies for small aligned
	data.
2015-10-16 14:32:49 -07:00
Joseph Myers
b0c3e04b71 Add more tests for ceil, floor, round, trunc.
This patch adds more tests for ceil, floor, round and trunc, with a
particular focus on verifying they don't raise spurious "inexact"
exceptions for integer arguments (a C99 / C11 requirement, as opposed
to the general principle that they shouldn't raise "inexact" for any
arguments at all which is a TS 18661-1 requirement).

Tested for x86_64 and x86.

	* math/libm-test.inc (ceil_test_data): Add more tests and more
	expectations for "inexact".
	(floor_test_data): Add more tests.
	(round_test_data): Likewise.
	(trunc_test_data): Likewise.
2015-10-16 21:28:03 +00:00
Joseph Myers
9d46370ca3 Convert 703 function definitions to prototype style.
This automatically-generated patch converts 703 function definitions
in glibc from old-style K&R to prototype-style.

This conversion is deliberately simplistic, excluding any tricky cases
as even a patch covering only simple cases is still very large.
Currently excluded are: sysdeps files (to improve test coverage for
the initial patch); files containing assertions (to avoid line number
changes so that generated libraries can be compared); any cases where
the generated function declaration would involve lines over 79
characters and so need to be wrapped; any cases with array parameters
or other cases where parameter declarators don't end with the
parameter name; any other cases that my script didn't parse.

I didn't try to make the ChangeLog generation indicate when function
definitions are conditional; it just lists the functions changed
without regard to that.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

	* crypt/cert.c (good_bye): Convert to prototype-style function
	definition.
	(get8): Likewise.
	(put8): Likewise.
	* crypt/crypt-entry.c (crypt): Likewise.
	(__fcrypt): Likewise.
	* crypt/crypt_util.c (_ufc_prbits): Likewise.
	(_ufc_set_bits): Likewise.
	(_ufc_clearmem): Likewise.
	(__init_des_r): Likewise.
	(shuffle_sb): Likewise.
	(shuffle_sb): Likewise.
	(_ufc_setup_salt_r): Likewise.
	(_ufc_mk_keytab_r): Likewise.
	(_ufc_dofinalperm_r): Likewise.
	(encrypt): Likewise.
	(__setkey_r): Likewise.
	(setkey): Likewise.
	* crypt/md5.c (md5_init_ctx): Likewise.
	(md5_read_ctx): Likewise.
	(md5_finish_ctx): Likewise.
	(md5_stream): Likewise.
	(md5_buffer): Likewise.
	(md5_process_bytes): Likewise.
	* crypt/sha256.c (__sha256_init_ctx): Likewise.
	(__sha256_finish_ctx): Likewise.
	(__sha256_process_bytes): Likewise.
	* crypt/sha512.c (__sha512_init_ctx): Likewise.
	(__sha512_finish_ctx): Likewise.
	(__sha512_process_bytes): Likewise.
	* ctype/isctype.c (__isctype): Likewise.
	* debug/backtrace.c (__backtrace): Likewise.
	* debug/backtracesymsfd.c (__backtrace_symbols_fd): Likewise.
	* debug/fgets_chk.c (__fgets_chk): Likewise.
	* debug/fgets_u_chk.c (__fgets_unlocked_chk): Likewise.
	* debug/memcpy_chk.c (__memcpy_chk): Likewise.
	* debug/memmove_chk.c (MEMMOVE_CHK): Likewise.
	* debug/mempcpy_chk.c (__mempcpy_chk): Likewise.
	* debug/memset_chk.c (__memset_chk): Likewise.
	* debug/strcat_chk.c (__strcat_chk): Likewise.
	* debug/strncat_chk.c (__strncat_chk): Likewise.
	* debug/strncpy_chk.c (__strncpy_chk): Likewise.
	* debug/vsprintf_chk.c (_IO_str_chk_overflow): Likewise.
	* dirent/dirfd.c (dirfd): Likewise.
	* dirent/getdents.c (__getdirentries): Likewise.
	* dirent/getdents64.c (getdirentries64): Likewise.
	* dirent/rewinddir.c (__rewinddir): Likewise.
	* dirent/seekdir.c (seekdir): Likewise.
	* dirent/telldir.c (telldir): Likewise.
	* elf/sln.c (makesymlinks): Likewise.
	(makesymlink): Likewise.
	* gmon/gmon.c (__moncontrol): Likewise.
	(__monstartup): Likewise.
	(write_hist): Likewise.
	(write_call_graph): Likewise.
	(write_bb_counts): Likewise.
	* grp/setgroups.c (setgroups): Likewise.
	* inet/inet_lnaof.c (inet_lnaof): Likewise.
	* inet/inet_net.c (inet_network): Likewise.
	* inet/inet_netof.c (inet_netof): Likewise.
	* inet/rcmd.c (rresvport_af): Likewise.
	(rresvport): Likewise.
	* io/access.c (__access): Likewise.
	* io/chdir.c (__chdir): Likewise.
	* io/chmod.c (__chmod): Likewise.
	* io/chown.c (__chown): Likewise.
	* io/close.c (__close): Likewise.
	* io/creat.c (creat): Likewise.
	* io/creat64.c (creat64): Likewise.
	* io/dup.c (__dup): Likewise.
	* io/dup2.c (__dup2): Likewise.
	* io/dup3.c (__dup3): Likewise.
	* io/euidaccess.c (__euidaccess): Likewise.
	* io/faccessat.c (faccessat): Likewise.
	* io/fchmod.c (__fchmod): Likewise.
	* io/fchmodat.c (fchmodat): Likewise.
	* io/fchown.c (__fchown): Likewise.
	* io/fchownat.c (fchownat): Likewise.
	* io/fcntl.c (__fcntl): Likewise.
	* io/flock.c (__flock): Likewise.
	* io/fts.c (fts_load): Likewise.
	(fts_close): Likewise.
	(fts_read): Likewise.
	(fts_set): Likewise.
	(fts_children): Likewise.
	(fts_build): Likewise.
	(fts_stat): Likewise.
	(fts_sort): Likewise.
	(fts_alloc): Likewise.
	(fts_lfree): Likewise.
	(fts_palloc): Likewise.
	(fts_padjust): Likewise.
	(fts_maxarglen): Likewise.
	(fts_safe_changedir): Likewise.
	* io/getwd.c (getwd): Likewise.
	* io/isatty.c (__isatty): Likewise.
	* io/lchown.c (__lchown): Likewise.
	* io/link.c (__link): Likewise.
	* io/linkat.c (linkat): Likewise.
	* io/lseek.c (__libc_lseek): Likewise.
	* io/mkdir.c (__mkdir): Likewise.
	* io/mkdirat.c (mkdirat): Likewise.
	* io/mkfifo.c (mkfifo): Likewise.
	* io/mkfifoat.c (mkfifoat): Likewise.
	* io/open.c (__libc_open): Likewise.
	* io/open64.c (__libc_open64): Likewise.
	* io/readlink.c (__readlink): Likewise.
	* io/readlinkat.c (readlinkat): Likewise.
	* io/rmdir.c (__rmdir): Likewise.
	* io/symlink.c (__symlink): Likewise.
	* io/symlinkat.c (symlinkat): Likewise.
	* io/ttyname.c (ttyname): Likewise.
	* io/ttyname_r.c (__ttyname_r): Likewise.
	* io/umask.c (__umask): Likewise.
	* io/unlink.c (__unlink): Likewise.
	* io/unlinkat.c (unlinkat): Likewise.
	* io/utime.c (utime): Likewise.
	* libio/clearerr.c (clearerr): Likewise.
	* libio/clearerr_u.c (clearerr_unlocked): Likewise.
	* libio/feof.c (_IO_feof): Likewise.
	* libio/feof_u.c (feof_unlocked): Likewise.
	* libio/ferror.c (_IO_ferror): Likewise.
	* libio/ferror_u.c (ferror_unlocked): Likewise.
	* libio/filedoalloc.c (_IO_file_doallocate): Likewise.
	* libio/fileno.c (__fileno): Likewise.
	* libio/fputc.c (fputc): Likewise.
	* libio/fputc_u.c (fputc_unlocked): Likewise.
	* libio/fputwc.c (fputwc): Likewise.
	* libio/fputwc_u.c (fputwc_unlocked): Likewise.
	* libio/freopen.c (freopen): Likewise.
	* libio/freopen64.c (freopen64): Likewise.
	* libio/fseek.c (fseek): Likewise.
	* libio/fseeko.c (fseeko): Likewise.
	* libio/fseeko64.c (fseeko64): Likewise.
	* libio/ftello.c (__ftello): Likewise.
	* libio/ftello64.c (ftello64): Likewise.
	* libio/fwide.c (fwide): Likewise.
	* libio/genops.c (_IO_un_link): Likewise.
	(_IO_link_in): Likewise.
	(_IO_least_marker): Likewise.
	(_IO_switch_to_main_get_area): Likewise.
	(_IO_switch_to_backup_area): Likewise.
	(_IO_switch_to_get_mode): Likewise.
	(_IO_free_backup_area): Likewise.
	(_IO_switch_to_put_mode): Likewise.
	(__overflow): Likewise.
	(__underflow): Likewise.
	(__uflow): Likewise.
	(_IO_setb): Likewise.
	(_IO_doallocbuf): Likewise.
	(_IO_default_underflow): Likewise.
	(_IO_default_uflow): Likewise.
	(_IO_default_xsputn): Likewise.
	(_IO_sgetn): Likewise.
	(_IO_default_xsgetn): Likewise.
	(_IO_sync): Likewise.
	(_IO_default_setbuf): Likewise.
	(_IO_default_seekpos): Likewise.
	(_IO_default_doallocate): Likewise.
	(_IO_init): Likewise.
	(_IO_old_init): Likewise.
	(_IO_default_sync): Likewise.
	(_IO_default_finish): Likewise.
	(_IO_default_seekoff): Likewise.
	(_IO_sputbackc): Likewise.
	(_IO_sungetc): Likewise.
	(_IO_set_column): Likewise.
	(_IO_set_column): Likewise.
	(_IO_adjust_column): Likewise.
	(_IO_get_column): Likewise.
	(_IO_init_marker): Likewise.
	(_IO_remove_marker): Likewise.
	(_IO_marker_difference): Likewise.
	(_IO_marker_delta): Likewise.
	(_IO_seekmark): Likewise.
	(_IO_unsave_markers): Likewise.
	(_IO_nobackup_pbackfail): Likewise.
	(_IO_default_pbackfail): Likewise.
	(_IO_default_seek): Likewise.
	(_IO_default_stat): Likewise.
	(_IO_default_read): Likewise.
	(_IO_default_write): Likewise.
	(_IO_default_showmanyc): Likewise.
	(_IO_default_imbue): Likewise.
	(_IO_iter_next): Likewise.
	(_IO_iter_file): Likewise.
	* libio/getc.c (_IO_getc): Likewise.
	* libio/getwc.c (_IO_getwc): Likewise.
	* libio/iofclose.c (_IO_new_fclose): Likewise.
	* libio/iofdopen.c (_IO_new_fdopen): Likewise.
	* libio/iofflush.c (_IO_fflush): Likewise.
	* libio/iofflush_u.c (__fflush_unlocked): Likewise.
	* libio/iofgetpos.c (_IO_new_fgetpos): Likewise.
	* libio/iofgetpos64.c (_IO_new_fgetpos64): Likewise.
	* libio/iofgets.c (_IO_fgets): Likewise.
	* libio/iofgets_u.c (__fgets_unlocked): Likewise.
	* libio/iofgetws.c (fgetws): Likewise.
	* libio/iofgetws_u.c (fgetws_unlocked): Likewise.
	* libio/iofopen64.c (_IO_fopen64): Likewise.
	* libio/iofopncook.c (_IO_cookie_read): Likewise.
	(_IO_cookie_write): Likewise.
	(_IO_cookie_seek): Likewise.
	(_IO_cookie_close): Likewise.
	(_IO_cookie_seekoff): Likewise.
	(_IO_old_cookie_seek): Likewise.
	* libio/iofputs.c (_IO_fputs): Likewise.
	* libio/iofputs_u.c (__fputs_unlocked): Likewise.
	* libio/iofputws.c (fputws): Likewise.
	* libio/iofputws_u.c (fputws_unlocked): Likewise.
	* libio/iofread.c (_IO_fread): Likewise.
	* libio/iofread_u.c (__fread_unlocked): Likewise.
	* libio/iofsetpos.c (_IO_new_fsetpos): Likewise.
	* libio/iofsetpos64.c (_IO_new_fsetpos64): Likewise.
	* libio/ioftell.c (_IO_ftell): Likewise.
	* libio/iofwrite.c (_IO_fwrite): Likewise.
	* libio/iogetdelim.c (_IO_getdelim): Likewise.
	* libio/iogets.c (_IO_gets): Likewise.
	* libio/iopadn.c (_IO_padn): Likewise.
	* libio/iopopen.c (_IO_new_proc_open): Likewise.
	(_IO_new_popen): Likewise.
	(_IO_new_proc_close): Likewise.
	* libio/ioputs.c (_IO_puts): Likewise.
	* libio/ioseekoff.c (_IO_seekoff_unlocked): Likewise.
	(_IO_seekoff): Likewise.
	* libio/ioseekpos.c (_IO_seekpos_unlocked): Likewise.
	(_IO_seekpos): Likewise.
	* libio/iosetbuffer.c (_IO_setbuffer): Likewise.
	* libio/iosetvbuf.c (_IO_setvbuf): Likewise.
	* libio/ioungetc.c (_IO_ungetc): Likewise.
	* libio/ioungetwc.c (ungetwc): Likewise.
	* libio/iovdprintf.c (_IO_vdprintf): Likewise.
	* libio/iovsscanf.c (_IO_vsscanf): Likewise.
	* libio/iowpadn.c (_IO_wpadn): Likewise.
	* libio/libc_fatal.c (__libc_fatal): Likewise.
	* libio/memstream.c (__open_memstream): Likewise.
	(_IO_mem_sync): Likewise.
	(_IO_mem_finish): Likewise.
	* libio/oldfileops.c (_IO_old_file_init): Likewise.
	(_IO_old_file_close_it): Likewise.
	(_IO_old_file_finish): Likewise.
	(_IO_old_file_fopen): Likewise.
	(_IO_old_file_attach): Likewise.
	(_IO_old_file_setbuf): Likewise.
	(_IO_old_do_write): Likewise.
	(old_do_write): Likewise.
	(_IO_old_file_underflow): Likewise.
	(_IO_old_file_overflow): Likewise.
	(_IO_old_file_sync): Likewise.
	(_IO_old_file_seekoff): Likewise.
	(_IO_old_file_write): Likewise.
	(_IO_old_file_xsputn): Likewise.
	* libio/oldiofclose.c (_IO_old_fclose): Likewise.
	* libio/oldiofdopen.c (_IO_old_fdopen): Likewise.
	* libio/oldiofgetpos.c (_IO_old_fgetpos): Likewise.
	* libio/oldiofgetpos64.c (_IO_old_fgetpos64): Likewise.
	* libio/oldiofopen.c (_IO_old_fopen): Likewise.
	* libio/oldiofsetpos.c (_IO_old_fsetpos): Likewise.
	* libio/oldiofsetpos64.c (_IO_old_fsetpos64): Likewise.
	* libio/oldiopopen.c (_IO_old_proc_open): Likewise.
	(_IO_old_popen): Likewise.
	(_IO_old_proc_close): Likewise.
	* libio/oldpclose.c (__old_pclose): Likewise.
	* libio/pclose.c (__new_pclose): Likewise.
	* libio/peekc.c (_IO_peekc_locked): Likewise.
	* libio/putc.c (_IO_putc): Likewise.
	* libio/putc_u.c (putc_unlocked): Likewise.
	* libio/putchar.c (putchar): Likewise.
	* libio/putchar_u.c (putchar_unlocked): Likewise.
	* libio/putwc.c (putwc): Likewise.
	* libio/putwc_u.c (putwc_unlocked): Likewise.
	* libio/putwchar.c (putwchar): Likewise.
	* libio/putwchar_u.c (putwchar_unlocked): Likewise.
	* libio/rewind.c (rewind): Likewise.
	* libio/setbuf.c (setbuf): Likewise.
	* libio/setlinebuf.c (setlinebuf): Likewise.
	* libio/vasprintf.c (_IO_vasprintf): Likewise.
	* libio/vscanf.c (_IO_vscanf): Likewise.
	* libio/vsnprintf.c (_IO_strn_overflow): Likewise.
	* libio/vswprintf.c (_IO_wstrn_overflow): Likewise.
	* libio/wfiledoalloc.c (_IO_wfile_doallocate): Likewise.
	* libio/wgenops.c (_IO_least_wmarker): Likewise.
	(_IO_switch_to_main_wget_area): Likewise.
	(_IO_switch_to_wbackup_area): Likewise.
	(_IO_wsetb): Likewise.
	(_IO_wdefault_pbackfail): Likewise.
	(_IO_wdefault_finish): Likewise.
	(_IO_wdefault_uflow): Likewise.
	(__woverflow): Likewise.
	(__wuflow): Likewise.
	(__wunderflow): Likewise.
	(_IO_wdefault_xsputn): Likewise.
	(_IO_wdefault_xsgetn): Likewise.
	(_IO_wdoallocbuf): Likewise.
	(_IO_wdefault_doallocate): Likewise.
	(_IO_switch_to_wget_mode): Likewise.
	(_IO_free_wbackup_area): Likewise.
	(_IO_switch_to_wput_mode): Likewise.
	(_IO_sputbackwc): Likewise.
	(_IO_sungetwc): Likewise.
	(_IO_adjust_wcolumn): Likewise.
	(_IO_init_wmarker): Likewise.
	(_IO_wmarker_delta): Likewise.
	(_IO_seekwmark): Likewise.
	(_IO_unsave_wmarkers): Likewise.
	* libio/wmemstream.c (open_wmemstream): Likewise.
	(_IO_wmem_sync): Likewise.
	(_IO_wmem_finish): Likewise.
	* locale/nl_langinfo.c (nl_langinfo): Likewise.
	* locale/nl_langinfo_l.c (__nl_langinfo_l): Likewise.
	* locale/programs/simple-hash.c (init_hash): Likewise.
	(delete_hash): Likewise.
	(insert_entry): Likewise.
	(set_entry): Likewise.
	(next_prime): Likewise.
	(is_prime): Likewise.
	* locale/programs/xmalloc.c (fixup_null_alloc): Likewise.
	(xmalloc): Likewise.
	(xrealloc): Likewise.
	* locale/programs/xstrdup.c (xstrdup): Likewise.
	* localedata/collate-test.c (xstrcoll): Likewise.
	* localedata/xfrm-test.c (xstrcmp): Likewise.
	* login/getlogin_r.c (__getlogin_r): Likewise.
	* login/getpt.c (__posix_openpt): Likewise.
	* login/login_tty.c (login_tty): Likewise.
	* login/setlogin.c (setlogin): Likewise.
	* mach/msg-destroy.c (__mach_msg_destroy): Likewise.
	(mach_msg_destroy_port): Likewise.
	(mach_msg_destroy_memory): Likewise.
	* malloc/mcheck.c (flood): Likewise.
	* misc/acct.c (acct): Likewise.
	* misc/brk.c (__brk): Likewise.
	* misc/chflags.c (chflags): Likewise.
	* misc/chroot.c (chroot): Likewise.
	* misc/fchflags.c (fchflags): Likewise.
	* misc/fstab.c (getfsspec): Likewise.
	(getfsfile): Likewise.
	* misc/fsync.c (fsync): Likewise.
	* misc/ftruncate.c (__ftruncate): Likewise.
	* misc/ftruncate64.c (__ftruncate64): Likewise.
	* misc/getdomain.c (getdomainname): Likewise.
	(getdomainname): Likewise.
	* misc/gethostname.c (__gethostname): Likewise.
	* misc/getpass.c (getpass): Likewise.
	* misc/getttyent.c (skip): Likewise.
	(value): Likewise.
	* misc/gtty.c (gtty): Likewise.
	* misc/hsearch.c (hsearch): Likewise.
	(hcreate): Likewise.
	* misc/hsearch_r.c (__hcreate_r): Likewise.
	(__hdestroy_r): Likewise.
	* misc/ioctl.c (__ioctl): Likewise.
	* misc/mkdtemp.c (mkdtemp): Likewise.
	* misc/mkostemp.c (mkostemp): Likewise.
	* misc/mkostemp64.c (mkostemp64): Likewise.
	* misc/mkostemps.c (mkostemps): Likewise.
	* misc/mkostemps64.c (mkostemps64): Likewise.
	* misc/mkstemp.c (mkstemp): Likewise.
	* misc/mkstemp64.c (mkstemp64): Likewise.
	* misc/mkstemps.c (mkstemps): Likewise.
	* misc/mkstemps64.c (mkstemps64): Likewise.
	* misc/mktemp.c (__mktemp): Likewise.
	* misc/preadv.c (preadv): Likewise.
	* misc/preadv64.c (preadv64): Likewise.
	* misc/pwritev.c (pwritev): Likewise.
	* misc/pwritev64.c (pwritev64): Likewise.
	* misc/readv.c (__readv): Likewise.
	* misc/revoke.c (revoke): Likewise.
	* misc/setdomain.c (setdomainname): Likewise.
	* misc/setegid.c (setegid): Likewise.
	* misc/seteuid.c (seteuid): Likewise.
	* misc/sethostid.c (sethostid): Likewise.
	* misc/sethostname.c (sethostname): Likewise.
	* misc/setregid.c (__setregid): Likewise.
	* misc/setreuid.c (__setreuid): Likewise.
	* misc/sstk.c (sstk): Likewise.
	* misc/stty.c (stty): Likewise.
	* misc/syscall.c (syscall): Likewise.
	* misc/syslog.c (setlogmask): Likewise.
	* misc/truncate.c (__truncate): Likewise.
	* misc/truncate64.c (truncate64): Likewise.
	* misc/ualarm.c (ualarm): Likewise.
	* misc/usleep.c (usleep): Likewise.
	* misc/ustat.c (ustat): Likewise.
	* misc/writev.c (__writev): Likewise.
	* nptl/cleanup_compat.c (_pthread_cleanup_pop): Likewise.
	* nptl/old_pthread_cond_broadcast.c
	(__pthread_cond_broadcast_2_0): Likewise.
	* nptl/old_pthread_cond_destroy.c (__pthread_cond_destroy_2_0):
	Likewise.
	* nptl/old_pthread_cond_signal.c (__pthread_cond_signal_2_0):
	Likewise.
	* nptl/old_pthread_cond_wait.c (__pthread_cond_wait_2_0):
	Likewise.
	* nptl/pt-raise.c (raise): Likewise.
	* nptl/pthread_barrier_destroy.c (pthread_barrier_destroy):
	Likewise.
	* nptl/pthread_barrier_wait.c (__pthread_barrier_wait): Likewise.
	* nptl/pthread_barrierattr_destroy.c
	(pthread_barrierattr_destroy): Likewise.
	* nptl/pthread_barrierattr_init.c (pthread_barrierattr_init):
	Likewise.
	* nptl/pthread_barrierattr_setpshared.c
	(pthread_barrierattr_setpshared): Likewise.
	* nptl/pthread_cond_broadcast.c (__pthread_cond_broadcast):
	Likewise.
	* nptl/pthread_cond_destroy.c (__pthread_cond_destroy): Likewise.
	* nptl/pthread_cond_init.c (__pthread_cond_init): Likewise.
	* nptl/pthread_cond_signal.c (__pthread_cond_signal): Likewise.
	* nptl/pthread_condattr_destroy.c (__pthread_condattr_destroy):
	Likewise.
	* nptl/pthread_condattr_getclock.c (pthread_condattr_getclock):
	Likewise.
	* nptl/pthread_condattr_getpshared.c
	(pthread_condattr_getpshared): Likewise.
	* nptl/pthread_condattr_init.c (__pthread_condattr_init):
	Likewise.
	* nptl/pthread_condattr_setpshared.c
	(pthread_condattr_setpshared): Likewise.
	* nptl/pthread_detach.c (pthread_detach): Likewise.
	* nptl/pthread_equal.c (__pthread_equal): Likewise.
	* nptl/pthread_getcpuclockid.c (pthread_getcpuclockid): Likewise.
	* nptl/pthread_getspecific.c (__pthread_getspecific): Likewise.
	* nptl/pthread_key_delete.c (pthread_key_delete): Likewise.
	* nptl/pthread_mutex_consistent.c (pthread_mutex_consistent):
	Likewise.
	* nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy):
	Likewise.
	* nptl/pthread_mutex_getprioceiling.c
	(pthread_mutex_getprioceiling): Likewise.
	* nptl/pthread_mutexattr_destroy.c (__pthread_mutexattr_destroy):
	Likewise.
	* nptl/pthread_mutexattr_getprotocol.c
	(pthread_mutexattr_getprotocol): Likewise.
	* nptl/pthread_mutexattr_getpshared.c
	(pthread_mutexattr_getpshared): Likewise.
	* nptl/pthread_mutexattr_getrobust.c
	(pthread_mutexattr_getrobust): Likewise.
	* nptl/pthread_mutexattr_gettype.c (pthread_mutexattr_gettype):
	Likewise.
	* nptl/pthread_mutexattr_init.c (__pthread_mutexattr_init):
	Likewise.
	* nptl/pthread_mutexattr_setprioceiling.c
	(pthread_mutexattr_setprioceiling): Likewise.
	* nptl/pthread_mutexattr_setprotocol.c
	(pthread_mutexattr_setprotocol): Likewise.
	* nptl/pthread_mutexattr_setpshared.c
	(pthread_mutexattr_setpshared): Likewise.
	* nptl/pthread_mutexattr_setrobust.c
	(pthread_mutexattr_setrobust): Likewise.
	* nptl/pthread_mutexattr_settype.c (__pthread_mutexattr_settype):
	Likewise.
	* nptl/pthread_rwlock_destroy.c (__pthread_rwlock_destroy):
	Likewise.
	* nptl/pthread_rwlockattr_destroy.c (pthread_rwlockattr_destroy):
	Likewise.
	* nptl/pthread_rwlockattr_getkind_np.c
	(pthread_rwlockattr_getkind_np): Likewise.
	* nptl/pthread_rwlockattr_getpshared.c
	(pthread_rwlockattr_getpshared): Likewise.
	* nptl/pthread_rwlockattr_init.c (pthread_rwlockattr_init):
	Likewise.
	* nptl/pthread_rwlockattr_setkind_np.c
	(pthread_rwlockattr_setkind_np): Likewise.
	* nptl/pthread_rwlockattr_setpshared.c
	(pthread_rwlockattr_setpshared): Likewise.
	* nptl/pthread_setcancelstate.c (__pthread_setcancelstate):
	Likewise.
	* nptl/pthread_setcanceltype.c (__pthread_setcanceltype):
	Likewise.
	* nptl/pthread_setconcurrency.c (pthread_setconcurrency):
	Likewise.
	* nptl/pthread_setschedprio.c (pthread_setschedprio): Likewise.
	* nptl/pthread_setspecific.c (__pthread_setspecific): Likewise.
	* nptl/pthread_spin_destroy.c (pthread_spin_destroy): Likewise.
	* nptl/pthread_tryjoin.c (pthread_tryjoin_np): Likewise.
	* nptl/sem_close.c (sem_close): Likewise.
	* nptl/sem_destroy.c (__new_sem_destroy): Likewise.
	* nptl/sem_init.c (__old_sem_init): Likewise.
	* nptl/sigaction.c (__sigaction): Likewise.
	* nptl/unregister-atfork.c (__unregister_atfork): Likewise.
	* posix/_exit.c (_exit): Likewise.
	* posix/alarm.c (alarm): Likewise.
	* posix/confstr.c (confstr): Likewise.
	* posix/fpathconf.c (__fpathconf): Likewise.
	* posix/getgroups.c (__getgroups): Likewise.
	* posix/getpgid.c (__getpgid): Likewise.
	* posix/group_member.c (__group_member): Likewise.
	* posix/pathconf.c (__pathconf): Likewise.
	* posix/sched_getaffinity.c (sched_getaffinity): Likewise.
	* posix/sched_setaffinity.c (sched_setaffinity): Likewise.
	* posix/setgid.c (__setgid): Likewise.
	* posix/setpgid.c (__setpgid): Likewise.
	* posix/setuid.c (__setuid): Likewise.
	* posix/sleep.c (__sleep): Likewise.
	* posix/sysconf.c (__sysconf): Likewise.
	* posix/times.c (__times): Likewise.
	* posix/uname.c (__uname): Likewise.
	* posix/waitid.c (__waitid): Likewise.
	* pwd/getpw.c (__getpw): Likewise.
	* resolv/base64.c (b64_pton): Likewise.
	* resolv/gai_sigqueue.c (__gai_sigqueue): Likewise.
	* resolv/gethnamaddr.c (Dprintf): Likewise.
	(gethostbyname): Likewise.
	(gethostbyname2): Likewise.
	(gethostbyaddr): Likewise.
	(_sethtent): Likewise.
	(_gethtbyname): Likewise.
	(_gethtbyname2): Likewise.
	(_gethtbyaddr): Likewise.
	(map_v4v6_address): Likewise.
	(map_v4v6_hostent): Likewise.
	(addrsort): Likewise.
	(ht_sethostent): Likewise.
	(ht_gethostbyname): Likewise.
	(ht_gethostbyaddr): Likewise.
	* resolv/inet_net_ntop.c (inet_net_ntop): Likewise.
	(inet_net_ntop_ipv4): Likewise.
	* resolv/inet_neta.c (inet_neta): Likewise.
	* resolv/inet_ntop.c (inet_ntop): Likewise.
	(inet_ntop4): Likewise.
	(inet_ntop6): Likewise.
	* resolv/inet_pton.c (__inet_pton): Likewise.
	(inet_pton4): Likewise.
	(inet_pton6): Likewise.
	* resolv/res_debug.c (loc_aton): Likewise.
	(loc_ntoa): Likewise.
	* resource/getpriority.c (__getpriority): Likewise.
	* resource/getrusage.c (__getrusage): Likewise.
	* resource/nice.c (nice): Likewise.
	* resource/setpriority.c (__setpriority): Likewise.
	* resource/setrlimit64.c (setrlimit64): Likewise.
	* resource/vlimit.c (vlimit): Likewise.
	* resource/vtimes.c (vtimes): Likewise.
	* rt/aio_error.c (aio_error): Likewise.
	* rt/aio_return.c (aio_return): Likewise.
	* rt/aio_sigqueue.c (__aio_sigqueue): Likewise.
	* signal/kill.c (__kill): Likewise.
	* signal/killpg.c (killpg): Likewise.
	* signal/raise.c (raise): Likewise.
	* signal/sigaction.c (__sigaction): Likewise.
	* signal/sigaddset.c (sigaddset): Likewise.
	* signal/sigaltstack.c (sigaltstack): Likewise.
	* signal/sigandset.c (sigandset): Likewise.
	* signal/sigblock.c (__sigblock): Likewise.
	* signal/sigdelset.c (sigdelset): Likewise.
	* signal/sigempty.c (sigemptyset): Likewise.
	* signal/sigfillset.c (sigfillset): Likewise.
	* signal/sighold.c (sighold): Likewise.
	* signal/sigignore.c (sigignore): Likewise.
	* signal/sigintr.c (siginterrupt): Likewise.
	* signal/sigisempty.c (sigisemptyset): Likewise.
	* signal/sigismem.c (sigismember): Likewise.
	* signal/signal.c (signal): Likewise.
	* signal/sigorset.c (sigorset): Likewise.
	* signal/sigpause.c (__sigpause): Likewise.
	* signal/sigpending.c (sigpending): Likewise.
	* signal/sigprocmask.c (__sigprocmask): Likewise.
	* signal/sigrelse.c (sigrelse): Likewise.
	* signal/sigreturn.c (__sigreturn): Likewise.
	* signal/sigset.c (sigset): Likewise.
	* signal/sigsetmask.c (__sigsetmask): Likewise.
	* signal/sigstack.c (sigstack): Likewise.
	* signal/sigsuspend.c (__sigsuspend): Likewise.
	* signal/sigvec.c (sigvec_wrapper_handler): Likewise.
	* signal/sysv_signal.c (__sysv_signal): Likewise.
	* socket/accept.c (accept): Likewise.
	* socket/accept4.c (__libc_accept4): Likewise.
	* socket/bind.c (__bind): Likewise.
	* socket/connect.c (__connect): Likewise.
	* socket/getpeername.c (getpeername): Likewise.
	* socket/getsockname.c (__getsockname): Likewise.
	* socket/getsockopt.c (getsockopt): Likewise.
	* socket/listen.c (__listen): Likewise.
	* socket/recv.c (__recv): Likewise.
	* socket/recvmsg.c (__recvmsg): Likewise.
	* socket/send.c (__send): Likewise.
	* socket/sendmsg.c (__sendmsg): Likewise.
	* socket/shutdown.c (shutdown): Likewise.
	* socket/sockatmark.c (sockatmark): Likewise.
	* socket/socket.c (__socket): Likewise.
	* stdio-common/ctermid.c (ctermid): Likewise.
	* stdio-common/cuserid.c (cuserid): Likewise.
	* stdio-common/printf-prs.c (parse_printf_format): Likewise.
	* stdio-common/remove.c (remove): Likewise.
	* stdio-common/rename.c (rename): Likewise.
	* stdio-common/renameat.c (renameat): Likewise.
	* stdio-common/tempname.c (__gen_tempname): Likewise.
	* stdio-common/xbug.c (InitBuffer): Likewise.
	(AppendToBuffer): Likewise.
	(ReadFile): Likewise.
	* stdlib/a64l.c (a64l): Likewise.
	* stdlib/drand48_r.c (drand48_r): Likewise.
	* stdlib/getcontext.c (getcontext): Likewise.
	* stdlib/getenv.c (getenv): Likewise.
	* stdlib/l64a.c (l64a): Likewise.
	* stdlib/llabs.c (llabs): Likewise.
	* stdlib/lldiv.c (lldiv): Likewise.
	* stdlib/lrand48_r.c (lrand48_r): Likewise.
	* stdlib/mrand48_r.c (mrand48_r): Likewise.
	* stdlib/putenv.c (putenv): Likewise.
	* stdlib/random.c (__srandom): Likewise.
	(__initstate): Likewise.
	(__setstate): Likewise.
	* stdlib/random_r.c (__srandom_r): Likewise.
	(__setstate_r): Likewise.
	(__random_r): Likewise.
	* stdlib/secure-getenv.c (__libc_secure_getenv): Likewise.
	* stdlib/setcontext.c (setcontext): Likewise.
	* stdlib/setenv.c (setenv): Likewise.
	(unsetenv): Likewise.
	* stdlib/srand48.c (srand48): Likewise.
	* stdlib/srand48_r.c (__srand48_r): Likewise.
	* stdlib/swapcontext.c (swapcontext): Likewise.
	* stdlib/system.c (__libc_system): Likewise.
	* stdlib/tst-strtod.c (expand): Likewise.
	* stdlib/tst-strtol.c (expand): Likewise.
	* stdlib/tst-strtoll.c (expand): Likewise.
	* streams/fattach.c (fattach): Likewise.
	* streams/fdetach.c (fdetach): Likewise.
	* streams/getmsg.c (getmsg): Likewise.
	* streams/isastream.c (isastream): Likewise.
	* string/ffs.c (__ffs): Likewise.
	* string/ffsll.c (ffsll): Likewise.
	* string/memcmp.c (memcmp_common_alignment): Likewise.
	(memcmp_not_common_alignment): Likewise.
	(MEMCMP): Likewise.
	* string/memcpy.c (memcpy): Likewise.
	* string/memmove.c (MEMMOVE): Likewise.
	* string/memset.c (memset): Likewise.
	* string/rawmemchr.c (RAWMEMCHR): Likewise.
	* string/strchrnul.c (STRCHRNUL): Likewise.
	* string/strerror.c (strerror): Likewise.
	* string/strndup.c (__strndup): Likewise.
	* string/strverscmp.c (__strverscmp): Likewise.
	* sunrpc/clnt_raw.c (clntraw_freeres): Likewise.
	* sunrpc/clnt_tcp.c (clnttcp_geterr): Likewise.
	(clnttcp_freeres): Likewise.
	* sunrpc/clnt_unix.c (clntunix_freeres): Likewise.
	* sunrpc/pmap_prot.c (xdr_pmap): Likewise.
	* sunrpc/pmap_prot2.c (xdr_pmaplist): Likewise.
	* sunrpc/pmap_rmt.c (xdr_rmtcallres): Likewise.
	* sunrpc/rpc_prot.c (xdr_replymsg): Likewise.
	(xdr_callhdr): Likewise.
	* sunrpc/rpcinfo.c (udpping): Likewise.
	(tcpping): Likewise.
	(pstatus): Likewise.
	(pmapdump): Likewise.
	(brdcst): Likewise.
	(deletereg): Likewise.
	(getprognum): Likewise.
	(getvers): Likewise.
	(get_inet_address): Likewise.
	* sunrpc/svc_raw.c (svcraw_recv): Likewise.
	* sunrpc/svc_udp.c (svcudp_create): Likewise.
	(svcudp_stat): Likewise.
	(svcudp_recv): Likewise.
	(svcudp_reply): Likewise.
	(svcudp_getargs): Likewise.
	(svcudp_freeargs): Likewise.
	(svcudp_destroy): Likewise.
	* sunrpc/xdr.c (xdr_bytes): Likewise.
	(xdr_netobj): Likewise.
	(xdr_string): Likewise.
	(xdr_wrapstring): Likewise.
	* sunrpc/xdr_float.c (xdr_float): Likewise.
	(xdr_double): Likewise.
	* sunrpc/xdr_mem.c (xdrmem_setpos): Likewise.
	* sunrpc/xdr_ref.c (xdr_pointer): Likewise.
	* sysvipc/ftok.c (ftok): Likewise.
	* sysvipc/msgctl.c (msgctl): Likewise.
	* sysvipc/msgget.c (msgget): Likewise.
	* sysvipc/msgrcv.c (msgrcv): Likewise.
	* sysvipc/msgsnd.c (msgsnd): Likewise.
	* sysvipc/semget.c (semget): Likewise.
	* sysvipc/semop.c (semop): Likewise.
	* sysvipc/shmat.c (shmat): Likewise.
	* sysvipc/shmctl.c (shmctl): Likewise.
	* sysvipc/shmdt.c (shmdt): Likewise.
	* sysvipc/shmget.c (shmget): Likewise.
	* termios/cfmakeraw.c (cfmakeraw): Likewise.
	* termios/speed.c (cfgetospeed): Likewise.
	(cfgetispeed): Likewise.
	(cfsetospeed): Likewise.
	(cfsetispeed): Likewise.
	* termios/tcflow.c (tcflow): Likewise.
	* termios/tcflush.c (tcflush): Likewise.
	* termios/tcgetattr.c (__tcgetattr): Likewise.
	* termios/tcgetpgrp.c (tcgetpgrp): Likewise.
	* termios/tcgetsid.c (tcgetsid): Likewise.
	* termios/tcsendbrk.c (tcsendbreak): Likewise.
	* termios/tcsetpgrp.c (tcsetpgrp): Likewise.
	* time/adjtime.c (__adjtime): Likewise.
	* time/dysize.c (dysize): Likewise.
	* time/ftime.c (ftime): Likewise.
	* time/getitimer.c (__getitimer): Likewise.
	* time/gettimeofday.c (__gettimeofday): Likewise.
	* time/gmtime.c (__gmtime_r): Likewise.
	(gmtime): Likewise.
	* time/localtime.c (__localtime_r): Likewise.
	(localtime): Likewise.
	* time/offtime.c (__offtime): Likewise.
	* time/settimeofday.c (__settimeofday): Likewise.
	* time/stime.c (stime): Likewise.
	* time/strftime_l.c (tm_diff): Likewise.
	(iso_week_days): Likewise.
	* time/strptime.c (strptime): Likewise.
	* time/time.c (time): Likewise.
	* time/timespec_get.c (timespec_get): Likewise.
	* time/tzset.c (tzset_internal): Likewise.
	(compute_change): Likewise.
	(__tz_compute): Likewise.
	* wcsmbs/btowc.c (__btowc): Likewise.
	* wcsmbs/mbrlen.c (__mbrlen): Likewise.
	* wcsmbs/mbsinit.c (__mbsinit): Likewise.
	* wcsmbs/mbsrtowcs.c (__mbsrtowcs): Likewise.
	* wcsmbs/wcpcpy.c (__wcpcpy): Likewise.
	* wcsmbs/wcpncpy.c (__wcpncpy): Likewise.
	* wcsmbs/wcscat.c (__wcscat): Likewise.
	* wcsmbs/wcschrnul.c (__wcschrnul): Likewise.
	* wcsmbs/wcscmp.c (WCSCMP): Likewise.
	* wcsmbs/wcscpy.c (WCSCPY): Likewise.
	* wcsmbs/wcscspn.c (wcscspn): Likewise.
	* wcsmbs/wcsdup.c (wcsdup): Likewise.
	* wcsmbs/wcslen.c (__wcslen): Likewise.
	* wcsmbs/wcsncat.c (WCSNCAT): Likewise.
	* wcsmbs/wcsncmp.c (WCSNCMP): Likewise.
	* wcsmbs/wcsncpy.c (__wcsncpy): Likewise.
	* wcsmbs/wcsnlen.c (__wcsnlen): Likewise.
	* wcsmbs/wcspbrk.c (wcspbrk): Likewise.
	* wcsmbs/wcsrchr.c (WCSRCHR): Likewise.
	* wcsmbs/wcsspn.c (wcsspn): Likewise.
	* wcsmbs/wcsstr.c (wcsstr): Likewise.
	* wcsmbs/wcstok.c (wcstok): Likewise.
	* wcsmbs/wctob.c (wctob): Likewise.
	* wcsmbs/wmemchr.c (__wmemchr): Likewise.
	* wcsmbs/wmemcmp.c (WMEMCMP): Likewise.
	* wcsmbs/wmemcpy.c (__wmemcpy): Likewise.
	* wcsmbs/wmemmove.c (__wmemmove): Likewise.
	* wcsmbs/wmempcpy.c (__wmempcpy): Likewise.
	* wcsmbs/wmemset.c (__wmemset): Likewise.
	* wctype/wcfuncs.c (__towlower): Likewise.
	(__towupper): Likewise.
2015-10-16 20:21:49 +00:00
Joseph Myers
5ef193391b Fix i386 build for lll_unlock_elision change.
Tested for i386.

	* sysdeps/unix/sysv/linux/i386/lowlevellock.h
	(lll_unlock_elision): Add adapt_count parameter.
2015-10-16 16:04:06 +00:00
Joseph Myers
15306e3888 Remove NPTL configure errors based on top-level configure tests.
sysdeps/nptl/configure.ac has code to give errors if certain tests in
the top-level configure failed.  However, all those failure conditions
also produce errors in the top-level configure, so the errors in the
NPTL configure are completely redundant; this patch removes them.

(As suggested in
<https://sourceware.org/ml/libc-alpha/2015-10/msg00510.html>, I think
the top-level tests in question can be completely removed as
unnecessary given the version tests.  But even without that there is
clearly no point in duplicating code that gives an error if the test
fails.)

Tested for x86_64 (testsuite, and that installed shared libraries are
unchanged by the patch).

	* sysdeps/nptl/configure.ac: Do not give errors based on the
	results of top-level configure tests.
	* sysdeps/nptl/configure: Regenerated.
2015-10-15 23:59:54 +00:00
Joseph Myers
2b714df5d8 Remove -Bgroup configure test.
There is a configure test for the -Bgroup linker option whose results
aren't used anywhere.  This patch removes that test.

Tested for x86_64 (testsuite, and that installed shared libraries are
unchanged by the patch).

	* configure.ac (libc_cv_Bgroup): Remove configure test.
	* configure: Regenerated.
	* config.make.in (have-Bgroup): Remove variable.
2015-10-15 23:36:22 +00:00
Joseph Myers
3d0dbdc467 Remove sizeof (long double) configure test.
There is a configure test for sizeof (long double) whose results
aren't used anywhere.  This patch removes that test.

Tested for x86_64 (testsuite, and that installed shared libraries are
unchanged by the patch).

	* configure.ac (sizeof_long_double): Remove configure test.
	* configure: Regenerated.
	* config.make.in (sizeof-long-double): Remove variable.
2015-10-15 23:30:42 +00:00
Joseph Myers
56ab386964 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-15 22:35:13 +00:00
Joseph Myers
cf1455657e Do not leave files behind in /tmp from testing.
I noticed that glibc testsuite runs left several files behind in /tmp
(or TMPDIR, if different).  The problem was testcases that generate a
template for mkstemp / mkstemp64, ending with XXXXXX, then pass that
template to add_temp_file before calling mkstemp / mkstemp64, meaning
that the template ending with XXXXXX is stored in the list of
temporary files to delete (add_temp_file uses strdup so that the
original string doesn't need to stay live), not the actual filename as
determined by mkstemp / mkstemp64.  This patch fixes those tests to
call add_temp_file later.

Tested for x86_64 (that the files are no longer left behind by a
testsuite run and the modified tests still pass).

	* io/test-lfs.c (do_prepare): Do not call add_temp_file until
	after mkstemp64.
	* login/tst-utmp.c (do_prepare): Likewise.
	* rt/tst-aio.c (do_prepare): Likewise.
	* rt/tst-aio64.c (do_prepare): Likewise.
2015-10-15 22:29:06 +00:00
Paul Murphy
fadd2ad9cc powerpc: Optimize lock elision for pthread_mutex_t
With TLE enabled, the adapt count variable update incurs
an 8% overhead before entering the critical section of an
elided mutex.

Instead, if it is done right after leaving the critical
section, this serialization can be avoided.

This alters the existing behavior of __lll_trylock_elision
as it will only decrement the adapt_count if it successfully
acquires the lock.

	* sysdeps/unix/sysv/linux/powerpc/elision-lock.c
	(__lll_lock_elision): Remove adapt_count decrement...
	* sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
	(__lll_trylock_elision): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
	(__lll_unlock_elision): ... to here. And utilize
	new adapt_count parameter.
	* sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
	(__lll_unlock_elision): Update to include adapt_count
	parameter.
	(lll_unlock_elision): Pass pointer to adapt_count
	variable.
2015-10-15 18:56:10 -03:00
Paul Murphy
e5e6bea22a nptl: Add adapt_count parameter to lll_unlock_elision
Adding this parameter will give architectures more freedom in
how they choose to update this variable.  This change has no
effect on architectures which choose not to use it.

	* nptl/pthread_mutex_unlock.c(lll_unlock_elision):
	Add elision adapt_count parameter to list of arguments.
	* sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
	(lll_unlock_elision): Update with new parameter list
	* sysdeps/unix/sysv/linux/s390/lowlevellock.h
	(lll_unlock_elision): Likewise
	* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
	(lll_unlock_elision): Likewise
2015-10-15 18:55:48 -03:00
H.J. Lu
3c82bb5042 Mark ld.so internel __uname hidden
Since ld.so internel __uname is only used internally in ld.so, it can
be made hidden.

	[BZ #19122]
	* include/sys/utsname.h [IS_IN (rtld)] (__uname): Add
	attribute_hidden.
2015-10-15 14:33:40 -07:00
H.J. Lu
f84114688a Mark ld.so internel string functions hidden
Since ld.so internel string functions are only used internally in
ld.so, they can be made hidden.

	[BZ #19122]
	* include/string.h [IS_IN (rtld)] (__stpcpy): Add
	attribute_hidden.
	[IS_IN (rtld)] (__strdup): Likewise.
	[IS_IN (rtld)] (__strerror_r): Likewise.
	[IS_IN (rtld)] (__strsep_g): Likewise.
	[IS_IN (rtld)] (memchr): Likewise.
	[IS_IN (rtld)] (memcmp): Likewise.
	[IS_IN (rtld)] (memcpy): Likewise.
	[IS_IN (rtld)] (memmove): Likewise.
	[IS_IN (rtld)] (memset): Likewise.
	[IS_IN (rtld)] (rawmemchr): Likewise.
	[IS_IN (rtld)] (stpcpy): Likewise.
	[IS_IN (rtld)] (strchr): Likewise.
	[IS_IN (rtld)] (strcmp): Likewise.
	[IS_IN (rtld)] (strlen): Likewise.
	[IS_IN (rtld)] (strnlen): Likewise.
	[IS_IN (rtld)] (strsep): Likewise.
2015-10-15 14:26:00 -07:00
H.J. Lu
f3fc94c04f Mark ld.so internel stdlib functions hidden
Since ld.so internel stdlib functions are only used internally in
ld.so, they can be made hidden.

	[BZ #19122]
	* include/stdlib.h [IS_IN (rtld)] (unsetenv): Add
	attribute_hidden.
	[IS_IN (rtld)] (__strtoul_internal): Likewise.
2015-10-15 14:24:35 -07:00
H.J. Lu
bdcd03eaca Mark ld.so internel sigaction functions hidden
Since ld.so internel sigaction functions are only used internally in
ld.so, they can be made hidden.

	[BZ #19122]
	* include/signal.h [IS_IN (rtld)] (__sigaction): Add
	attribute_hidden.
	[IS_IN (rtld)] (__libc_sigaction): Likewise.
2015-10-15 14:23:31 -07:00
H.J. Lu
661462d58f Mark internal setjmp functions hidden
Since internal dirent functions are only used internally in ld.so and
libc.so, they can be made hidden.

	[BZ #19122]
	* include/setjmp.h (__longjmp): Add attribute_hidden.
	[IS_IN (rtld)] (__sigsetjmp): Likewise.
2015-10-15 14:22:25 -07:00
H.J. Lu
e19f02428b Mark ld.so internel __profile_frequency hidden
Since ld.so internel __profile_frequency is only used internally in
ld.so, it can be made hidden.

	[BZ #19122]
	* include/libc-internal.h [IS_IN (rtld)] (__profile_frequency):
	Add attribute_hidden.
2015-10-15 14:20:59 -07:00
H.J. Lu
6d56699d7e Mark internal fcntl functions hidden
Since internal fcntl functions are only used internally in ld.so and
libc.so, they can be made hidden.

	[BZ #19122]
	* include/fcntl.h (__libc_fcntl): Add attribute_hidden.
	[IS_IN (rtld)] (__open): Likewise.
	[IS_IN (rtld)] (__fcntl): Likewise.
2015-10-15 14:16:41 -07:00
H.J. Lu
8303c7409c Mark internal dirent functions hidden
Since internal dirent functions are only used internally in ld.so and
libc.so, they can be made hidden.

	[BZ #19122]
	* include/dirent.h (__opendirat): Add attribute_hidden.
	(__getdents): Likewise.
	(__getdents64): Likewise.
	(__alloc_dir): Likewise.
	[IS_IN (rtld)] (__closedir): Likewise.
	[IS_IN (rtld)] (__fdopendir): Likewise.
	[IS_IN (rtld)] (__readdir): Likewise.
	[IS_IN (rtld)] (__readdir64): Likewise.
	[IS_IN (rtld)] (__rewinddir): Likewise.
2015-10-15 14:15:41 -07:00
H.J. Lu
d6e855d810 Mark _dl_catch_error hidden
Since _dl_catch_error is only used internally in ld.so, it should be
declared in sysdeps/generic/ldsodefs.h, not include/dlfcn.h and it can
be made hidden.

	[BZ #19122]
	* include/dlfcn.h (_dl_catch_error): Moved to ...
	* sysdeps/generic/ldsodefs.h (_dl_catch_error): Add
	attribute_hidden.
2015-10-15 14:13:50 -07:00
H.J. Lu
a1afb41193 Mark internal _itoa functions hidden
Since internal _itoa functions are only used internally in ld.so and
libc.so, they can be made hidden.

	[BZ #19122]
	* sysdeps/generic/_itoa.h (_itoa): Add attribute_hidden.
	(_itoa_word): Likewise.
2015-10-15 14:07:06 -07:00
H.J. Lu
58c9ff1bdb Mark internal _dl_XXX functions hidden
Since internal _dl_XXX functions are only used internally in ld.so,
they can be made hidden.

	[BZ #19122]
	* elf/dl-runtime.c (_dl_fixup): Add attribute_hidden.
	* elf/dynamic-link.h (_dl_try_allocate_static_tls): Likewise.
	* sysdeps/generic/dl-cache.h (_dl_cache_libcmp): Likewise.
	* sysdeps/generic/ldsodefs.h (_dl_name_match_p): Likewise.
	(_dl_higher_prime_number): Likewise.
	(_dl_debug_printf_c): Likewise.
	(_dl_signal_cerror): Likewise.
	(_dl_receive_error): Likewise.
	(_dl_reloc_bad_type): Likewise.
	(_dl_resolve_conflicts): Likewise.
	(_dl_check_all_versions): Likewise.
	(_dl_check_map_versions): Likewise.
	(_dl_sort_fini): Likewise.
	(_dl_debug_initialize): Likewise.
	(_dl_init_paths): Likewise.
	(_dl_show_auxv): Likewise.
	(_dl_next_ld_env_entry): Likewise.
	(_dl_important_hwcaps): Likewise.
	(_dl_load_cache_lookup): Likewise.
	(_dl_update_slotinfo): Likewise.
	(_dl_show_scope): Likewise.
2015-10-15 14:04:31 -07:00
H.J. Lu
b8b21bde18 Mark _wordcopy_XXX functions hidden
Since _wordcopy_XXX functions are only used internally in ld.so and
libc.so, they can be made hidden.

	[BZ #19122]
	* sysdeps/generic/memcopy.h (_wordcopy_fwd_aligned): Add
	attribute_hidden.
	(_wordcopy_fwd_dest_aligned): Likewise.
	(_wordcopy_bwd_aligned): Likewise.
	(_wordcopy_bwd_dest_aligned): Likewise.
2015-10-15 14:01:48 -07:00
H.J. Lu
9edf9b18b1 Mark x86 _dl_unmap/_dl_make_tlsdesc_dynamic hidden
Since x86 _dl_unmap and _dl_make_tlsdesc_dynamic are only used
internally in ld.so, they can be made hidden.

	[BZ #19122]
	* sysdeps/i386/dl-lookupcfg.h (_dl_unmap): Add attribute_hidden.
	* sysdeps/i386/dl-tlsdesc.h (_dl_make_tlsdesc_dynamic):
	Likewise.
	* sysdeps/x86_64/dl-tlsdesc.h (_dl_make_tlsdesc_dynamic):
	Likewise.
	* sysdeps/x86_64/dl-lookupcfg.h (_dl_unmap): Likewise.
2015-10-15 13:48:54 -07:00
H.J. Lu
983a33fa7d Add comments for GCC 5 requirement
* sysdeps/unix/sysv/linux/i386/sysdep.h: Add comments for
	GCC 5 requirement.
2015-10-15 13:35:40 -07:00
Joseph Myers
b7d09f0d63 Remove assembler -mtune=i686 configure test.
There is a configure test for assembler support for -mtune=i686.  This
option was added in binutils 2.18 so the test is obsolete; this patch
removes it.

Tested for x86 (testsuite, and that installed shared libraries are
unchanged by the patch).

	* sysdeps/i386/configure.ac (libc_cv_as_i686): Remove configure
	test.
	* sysdeps/i386/configure: Regenerated.
	* sysdeps/i386/i686/Makefile [$(config-asflags-i686) = yes]: Make
	code unconditional.
2015-10-15 20:28:27 +00:00
Joseph Myers
75b0964bc8 Remove .previous, .popsection configure tests.
There is a configure test for the assembler .previous directive, and,
as a fallback, for .popsection.

glibc now only supports ELF.  For ELF, the GNU assembler has supported
.previous since version 2.2 (support added by

Mon Jul 19 15:21:20 1993  Ken Raeburn  (raeburn@rtl.cygnus.com)

        * config/obj-elf.c (obj_elf_previous): New function.
        (previous_section, previous_subsection): New vars.
        (obj_elf_section): Save current place in case DWARF code wants us
        to pop back to it.  Handle unquoted section name as well as quoted
        section name.  Don't crash on invalid strings.
        (obj_pseudo_table): Handle new pseudos "previous", "2byte", and
        "4byte".

).  Thus this configure test is obsolete, and this patch removes it
(and with it the fallback .popsection test).

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	* configure.ac (libc_cv_asm_previous_directive): Remove configure
	test.
	(libc_cv_asm_popsection_directive): Likewise.
	* configure: Regenerated.
	* config.h.in (HAVE_ASM_PREVIOUS_DIRECTIVE): Remove #undef.
	(HAVE_ASM_POPSECTION_DIRECTIVE): Likewise.
	* include/libc-symbols.h [HAVE_ASM_PREVIOUS_DIRECTIVE]
	(__make_section_unallocated): Make definition unconditional.
	[HAVE_ASM_POPSECTION_DIRECTIVE] (__make_section_unallocated):
	Remove conditional definition.
	[!HAVE_ASM_PREVIOUS_DIRECTIVE && !HAVE_ASM_POPSECTION_DIRECTIVE]
	(__make_section_unallocated): Likewise.
2015-10-15 19:47:55 +00:00
Joseph Myers
30f58bb192 Remove -static-libgcc configure test.
There is a configure test for -static-libgcc.  GCC added this option
in version 3.0, so this test is obsolete; this patch removes it.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	* configure.ac (libc_cv_gcc_static_libgcc): Remove configure test.
	* configure: Regenerated.
	* config.make.in (static-libgcc): Remove variable.
	* Makerules (build-shlib-helper): Use -static-libgcc instead of
	$(static-libgcc).
	(build-module-helper): Likewise.
2015-10-15 19:32:58 +00:00
Joseph Myers
06e2c64669 Remove stddef.h configure test.
There is a configure test "for libc-friendly stddef.h", which sets a
makefile variable stddef.h that appears to be nowhere used.  It
appears the uses of this variable were removed by:

Tue Feb 21 00:10:50 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

        * Makefile (headers): Remove $(stddef.h).
        * Makeconfig (stddef.h): Variable removed; now require gcc version
        >= 2.2.
        * stddef.h: File removed.

(having been added by

Wed May 26 14:44:19 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

        * configure.in (autoconf checks): Add new check for a
        libc-friendly stddef.h.

so the test was of use for less than two years, before being obsolete
for over 20 years).  This patch removes the test.

Tested for x86_64 and x86 (testsuite, and that installed shared
libraries are unchanged by the patch).

	* configure.ac (libc_cv_friendly_stddef): Remove configure test.
	* configure: Regenerated.
2015-10-15 19:31:46 +00:00
Florian Weimer
95e8397481 vfscanf: Use struct scratch_buffer instead of extend_alloca
A custom character buffer is added in this commit, in the form of
struct char_buffer.  The char_buffer_add function replaces the
ADDW macro (which has grown with each successive security fix).
The char_buffer_add slow path is moved out-of-line, reducing
code size.

	* stdio-common/vfscanf.c (MEMCPY): Remove macro.
	(struct char_buffer): New type.
	(char_buffer_start, char_buffer_size, char_buffer_error)
	(char_buffer_rewind, char_buffer_add): New functions.
	(ADDW): Remove macro, replaced by the char_buffer_add function.
	(_IO_vfscanf_internal): Rewrite using struct char_buffer instead
	of extend_alloca.  Make control flow more explicit.
2015-10-15 17:18:51 +02:00
H.J. Lu
b994fd7937 Remove i386/epoll_pwait.S
Only i386 implements epoll_pwait in assembly code withot cancellation
support.  All other architectures implement epoll_pwait in epoll_pwait.c
with

int epoll_pwait (int epfd, struct epoll_event *events,
		 int maxevents, int timeout,
		 const sigset_t *set)
{
  return SYSCALL_CANCEL (epoll_pwait, epfd, events, maxevents,
			 timeout, set, _NSIG / 8);
}

Although there is no test for epoll_pwait in glibc, since SYSCALL_CANCEL
works on i386 and epoll_pwait.c works for other architectures, it is
safe to assume that epoll_pwait.c with SYSCALL_CANCEL also works on
i386.

	[BZ #19137]
	* sysdeps/unix/sysv/linux/i386/Makefile (CFLAGS-epoll_pwait.c):
	Add -fomit-frame-pointer.
	* sysdeps/unix/sysv/linux/i386/epoll_pwait.S: Remove file.
2015-10-15 06:26:50 -07:00
H.J. Lu
98ad631cd0 Optimize i386 syscall inlining for GCC 5
Since GCC 5 and above can properly spill %ebx when needed, we can inline
syscalls with 6 arguments if GCC 5 or above is used to compile glibc.
This patch rewrites INTERNAL_SYSCALL macros and skips __libc_do_syscall
for GCC 5.

For sysdeps/unix/sysv/linux/i386/brk.c, with -O2 -march=i686
-mtune=generic, GCC 5.2 now generates:

<__brk>:
   0:	push   %ebx
   1:	mov    $0x2d,%eax
   6:	mov    0x8(%esp),%ebx
   a:	call   b <__brk+0xb>	b: R_386_PC32	__x86.get_pc_thunk.dx
   f:	add    $0x2,%edx	11: R_386_GOTPC	_GLOBAL_OFFSET_TABLE_
  15:	call   *%gs:0x10
  1c:	mov    0x0(%edx),%edx	1e: R_386_GOT32	__curbrk
  22:	cmp    %eax,%ebx
  24:	mov    %eax,(%edx)
  26:	ja     30 <__brk+0x30>
  28:	xor    %eax,%eax
  2a:	pop    %ebx
  2b:	ret

instead of

<__brk>:
   0:	push   %ebx
   1:	mov    0x8(%esp),%ecx
   5:	call   6 <__brk+0x6>	6: R_386_PC32	__x86.get_pc_thunk.bx
   a:	add    $0x2,%ebx	c: R_386_GOTPC	_GLOBAL_OFFSET_TABLE_
  10:	xchg   %ecx,%ebx
  12:	mov    $0x2d,%eax
  17:	call   *%gs:0x10
  1e:	xchg   %ecx,%ebx
  20:	mov    %eax,%edx
  22:	mov    0x0(%ebx),%eax	24: R_386_GOT32	__curbrk
  28:	mov    %edx,(%eax)
  2a:	xor    %eax,%eax
  2c:	cmp    %edx,%ecx
  2e:	ja     38 <__brk+0x38>
  30:	pop    %ebx
  31:	ret

The new one is shorter by 2 instructions.

	* sysdeps/unix/sysv/linux/i386/libc-do-syscall.S
	(__libc_do_syscall): Defined only if !__GNUC_PREREQ (5,0).
	* sysdeps/unix/sysv/linux/i386/sysdep.h: Define assembler macros
	only if !__GNUC_PREREQ (5,0).
	(INTERNAL_SYSCALL_MAIN_6): Optimize for GCC 5.
	(INTERNAL_SYSCALL_MAIN_INLINE): Likewise.
	(INTERNAL_SYSCALL_NCS): Likewise.
	(LOADREGS_0): New macro for GCC 5.
	(ASMARGS_0): Likewise.
	(LOADREGS_1): Likewise.
	(ASMARGS_1): Likewise.
	(LOADREGS_2): Likewise.
	(ASMARGS_2): Likewise.
	(LOADREGS_3): Likewise.
	(ASMARGS_3): Likewise.
	(LOADREGS_4): Likewise.
	(ASMARGS_4): Likewise.
	(LOADREGS_5): Likewise.
	(ASMARGS_5): Likewise.
	(LOADREGS_6): Likewise.
	(ASMARGS_6): Likewise.
2015-10-15 05:23:58 -07:00
H.J. Lu
83c01ab32b i386: Remove syscall assembly codes with 6 arguments
This patch removes i386 assembly implementation for mmap, mmap64,
semtimeop now that i386 have 6 argument syscall support from C code
and GCC 5 can inline syscalls with 6 arguments.  We also compile mmap.c,
mmap64.c and semtimedop.c with -fomit-frame-pointer since %ebp may be
used to pass the 6th argument to syscall.

Fo sysdeps/unix/sysv/linux/i386/mmap.c, with -O2 -march=i686
-mtune=generic, GCC 5.2 now generates:

<__mmap>:
   0:	sub    $0x10,%esp
   3:	mov    0x28(%esp),%eax
   7:	mov    %ebx,(%esp)
   a:	mov    0x18(%esp),%ecx
   e:	mov    %esi,0x4(%esp)
  12:	mov    0x14(%esp),%ebx
  16:	mov    %edi,0x8(%esp)
  1a:	mov    0x1c(%esp),%edx
  1e:	test   $0xfff,%eax
  23:	mov    0x20(%esp),%esi
  27:	mov    %ebp,0xc(%esp)
  2b:	mov    0x24(%esp),%edi
  2f:	jne    60 <__mmap+0x60>
  31:	shr    $0xc,%eax
  34:	mov    %eax,%ebp
  36:	mov    $0xc0,%eax
  3b:	call   *%gs:0x10
  42:	cmp    $0xfffff000,%eax
  47:	ja     65 <__mmap+0x65>
  49:	mov    (%esp),%ebx
  4c:	mov    0x4(%esp),%esi
  50:	mov    0x8(%esp),%edi
  54:	mov    0xc(%esp),%ebp
  58:	add    $0x10,%esp
  5b:	ret
  5c:	lea    0x0(%esi,%eiz,1),%esi
  60:	mov    $0xffffffea,%eax
  65:	mov    (%esp),%ebx
  68:	mov    0x4(%esp),%esi
  6c:	mov    0x8(%esp),%edi
  70:	mov    0xc(%esp),%ebp
  74:	add    $0x10,%esp
  77:	jmp    78 <__mmap+0x78>

vs sysdeps/unix/sysv/linux/i386/mmap.S:

<__mmap>:
   0:	push   %ebp
   1:	push   %ebx
   2:	push   %esi
   3:	push   %edi
   4:	mov    0x14(%esp),%ebx
   8:	mov    0x18(%esp),%ecx
   c:	mov    0x1c(%esp),%edx
  10:	mov    0x20(%esp),%esi
  14:	mov    0x24(%esp),%edi
  18:	mov    0x28(%esp),%ebp
  1c:	test   $0xfff,%ebp
  22:	mov    $0xffffffea,%eax
  27:	jne    38 <__mmap+0x38>
  29:	shr    $0xc,%ebp
  2c:	mov    $0xc0,%eax
  31:	call   *%gs:0x10
  38:	pop    %edi
  39:	pop    %esi
  3a:	pop    %ebx
  3b:	pop    %ebp
  3c:	cmp    $0xfffff000,%eax
  41:	ja     44 <__mmap+0x44>
  43:	ret
  44:	call   45 <__mmap+0x45>	45: R_386_PC32	__x86.get_pc_thunk.cx
  49:	add    $0x2,%ecx	4b: R_386_GOTPC	_GLOBAL_OFFSET_TABLE_
  4f:	mov    0x0(%ecx),%ecx	51: R_386_TLS_GOTIE	__libc_errno
  55:	neg    %eax
  57:	mov    %eax,%gs:(%ecx)
  5a:	or     $0xffffffff,%eax
  5d:	ret

The C version has:

   3:	mov    0x28(%esp),%eax
...
  1e:	test   $0xfff,%eax
...
  31:	sar    $0xc,%eax
  34:	mov    %eax,%ebp

is due to missing $ebx register constraint for inline asm.  We have
to use "r" constraint with

register unsigned int _a6 asm ("ebp") = (unsigned int) (arg6);

and compiler chose %eax for offset (arg6) in

  if (offset & (MMAP_PAGE_UNIT - 1))

	* sysdeps/unix/sysv/linux/i386/Makefile (CFLAGS-epoll_pwait.c):
	Add -fomit-frame-pointer.
	(CFLAGS-mmap.c): Likewise.
	(CFLAGS-mmap64.c): Likewise.
	(CFLAGS-semtimedop.c): Likewise.
	* sysdeps/unix/sysv/linux/i386/mmap.c: New file.
	* sysdeps/unix/sysv/linux/i386/mmap.S: Remove file.
	* sysdeps/unix/sysv/linux/i386/mmap64.S: Likewise.
	* sysdeps/unix/sysv/linux/i386/semtimedop.S: Likewise.
2015-10-15 05:03:24 -07:00
Florian Weimer
a014cecd82 Always enable pointer guard [BZ #18928]
Honoring the LD_POINTER_GUARD environment variable in AT_SECURE mode
has security implications.  This commit enables pointer guard
unconditionally, and the environment variable is now ignored.

        [BZ #18928]
        * sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Remove
        _dl_pointer_guard member.
        * elf/rtld.c (_rtld_global_ro): Remove _dl_pointer_guard
        initializer.
        (security_init): Always set up pointer guard.
        (process_envvars): Do not process LD_POINTER_GUARD.
2015-10-15 09:23:32 +02:00
Joseph Myers
0c25f5b5bb Fix powerpc32 lround, lroundf spurious exceptions (bug 19134).
The powerpc32 implementation of lround and lroundf can produce
spurious exceptions from adding 0.5 then converting to integer.  This
includes "inexact" from the conversion to integer (not allowed for
integer arguments to these functions), and, for larger integer
arguments, "inexact", and "overflow" when rounding upward, from the
addition.  In addition, "inexact" is not allowed together with
"invalid" and so inexact addition must be avoided when the integer
will be out of range of 32-bit long, whether or not the argument is an
integer.

This patch fixes these problems.  As in the powerpc64 llround
implementation, a check is added for too-large arguments; in the
powerpc64 case that means arguments at least 2^52 in magnitude (so
that 0.5 cannot be added exactly), while in this case it means
arguments for which the result would overflow "long".  In those cases
a suitable overflowing value is used for the integer conversion
without adding 0.5, while for smaller arguments it's tested whether
the argument is an integer (by adding and subtracting 2^52 to the
absolute value and comparing with the original absolute value) to
avoid adding 0.5 to integers and generating spurious "inexact".

This code is not used when the power5+ sysdeps directories are used,
as there's a separate power5+ version of these functions..

Tested for powerpc.  This gets test-float (for a default powerpc32
hard-float build without any --with-cpu) back to the point where it
should pass once powerpc ulps are regenerated; test-double still needs
another problem with exceptions fixed to get back to that point (and I
haven't looked lately at what default powerpc64 results are like).

	[BZ #19134]
	* sysdeps/powerpc/powerpc32/fpu/s_lround.S (.LC1): New object.
	(.LC2): Likewise.
	(.LC3): Likewise.
	(__lround): Do not add 0.5 to integer or out-of-range arguments.
2015-10-14 21:13:42 +00:00
Szabolcs Nagy
1fae5a6800 [BZ #19129][ARM] Fix _dl_tlsdesc_resolve_hold to save r0
_dl_tlsdesc_resolve_hold calls into a C function that clobbers r0,
but it assumes the original argument is still in r0 after the call.
This can cause crash in case of concurrent TLS access when TLSDESC
is in use (-mtls-dialect=gnu2).

Run into this while fixing BZ 18572.

Both r0 and r1 are saved/restored so the stack remains 8 byte aligned.

	[BZ #19129]
	* sysdeps/arm/dl-tlsdesc.S (_dl_tlsdesc_resolve_hold): Save and restore
	r0 and r1.
2015-10-14 17:01:12 +01:00
Namhyung Kim
f45e45a3e0 manual/argp.texi (Specifying Argp Parsers): Fix typo. 2015-10-14 11:49:58 -04:00
Carlos O'Donell
90b2517115 include/stap-probe.h: Fix formatting.
Fix macro indentation.
2015-10-14 11:35:31 -04:00
Florian Weimer
f463c7b183 Fix double-checked locking in _res_hconf_reorder_addrs [BZ #19074]
[BZ #19074]
	* resolv/res_hconf.c (_res_hconf_reorder_addrs): Use atomics to
	load and store num_ifs.
2015-10-14 16:43:16 +02:00
H.J. Lu
d95453ef5d Avoid PLT when calling __sched_getaffinity_new
This patch adds an internal entry for __sched_getaffinity_new so that
__sched_getaffinity_old calls __sched_getaffinity_new without going
through PLT.

	[BZ #18822]
	* sysdeps/unix/sysv/linux/sched_getaffinity.c
	(__sched_getaffinity_new): Add libc_hidden_proto and
	libc_hidden_def.
2015-10-14 06:33:48 -07:00
H.J. Lu
d3d9c95aef Support PLT and GOT references in local PIC check
Linker in binutils 2.26 and newer generate GOT references instead
PLT references when -z now is passed to linker.  We need to extend
scripts/localplt.awk to allow PLT or GOT references.

	[BZ #19007]
	* scripts/localplt.awk: Also allow GOT references.
	* sysdeps/unix/sysv/linux/i386/localplt.data: Mark
	_Unwind_Find_FDE, calloc, memalign, realloc and __libc_memalign
	with "+ REL R_386_GLOB_DAT".
	* sysdeps/x86_64/localplt.data: Mark calloc, memalign, realloc
	and __libc_memalign with "+ RELA R_X86_64_GLOB_DAT".
2015-10-14 06:00:02 -07:00
H.J. Lu
8f763b04a0 Use INTERNAL_SYSCALL and INLINE_SYSCALL_ERROR_RETURN_VALUE
This patch uses INTERNAL_SYSCALL and INLINE_SYSCALL_ERROR_RETURN_VALUE
to avoid reading and writing errno directly so that we don't need to
call __x86.get_pc_thunk.reg to load PC into reg in case there is an
error.

	* sysdeps/unix/sysv/linux/i386/brk.c (__brk): Use
	INLINE_SYSCALL_ERROR_RETURN_VALUE.
	* sysdeps/unix/sysv/linux/i386/fxstatat.c (__fxstatat):
	Likewise.
	* sysdeps/unix/sysv/linux/i386/setegid.c (setegid): Likewise.
	* sysdeps/unix/sysv/linux/i386/seteuid.c (seteuid): Likewise.
	* sysdeps/unix/sysv/linux/i386/fxstat.c (__fxstat): Use
	INTERNAL_SYSCALLINTERNAL_SYSCALL and
	INLINE_SYSCALL_ERROR_RETURN_VALUE.
	* sysdeps/unix/sysv/linux/i386/lockf64.c (lockf64): Likewise.
	* sysdeps/unix/sysv/linux/i386/lxstat.c (__lxstat): Likewise.
	* sysdeps/unix/sysv/linux/i386/sigaction.c (__libc_sigaction):
	Likewise.
	* sysdeps/unix/sysv/linux/i386/xstat.c (__xstat): Likewise.
2015-10-14 03:45:46 -07:00
Joseph Myers
d7025badd8 Fix powerpc32 llround, llroundf exceptions (bug 19125).
The powerpc32 implementations of llroundf and llround produce spurious
and missing exceptions (some arising from such exceptions from
conversions to long long, some present even when fctidz is used).

This patch fixes those problems in a similar way to the llrint /
llrintf fixes.  The spurious exceptions in the fctidz case for large
arguments arise from a converted value that saturated as LLONG_MAX
being converted back to float or double (the conversion back being
inexact, but "inexact" must not be raised together with "invalid"),
and from the subtraction x - xrf also being inexact for sufficiently
large arguments (whether the saturation was to LLONG_MAX or
LLONG_MIN); those are fixed by returning early if the argument is
large enough that no rounding is needed.

This code is not used for --with-cpu=power4 builds (I suspect the code
used in that case may also produce spurious "inexact" exceptions, but
that's something to investigate later).

Tested for powerpc.

	[BZ #19125]
	* sysdeps/powerpc/powerpc32/fpu/s_llround.c: Include <limits.h>,
	<math_private.h> and <stdint.h>.
	(__llround): Avoid conversions to and from long long int, and
	subtractions, where those might raise spurious exceptions.
	* sysdeps/powerpc/powerpc32/fpu/s_llroundf.c: Include
	<math_private.h> and <stdint.h>.
	(__llroundf): Avoid conversions to and from long long int, and
	subtractions, where those might raise spurious exceptions.
2015-10-13 23:30:20 +00:00
H.J. Lu
2caca60d06 Use INLINE_SYSCALL_ERROR_RETURN_VALUE
This patch replaces

  {
    __set_errno (ERRNO);
    return -1;
  }

with INLINE_SYSCALL_ERROR_RETURN_VALUE (ERRNO).

	* sysdeps/unix/sysv/linux/adjtime.c (ADJTIME): Use
	INLINE_SYSCALL_ERROR_RETURN_VALUE.
	* sysdeps/unix/sysv/linux/dl-openat64.c (openat64): Likewise.
	* sysdeps/unix/sysv/linux/eventfd.c (eventfd): Likewise.
	* sysdeps/unix/sysv/linux/faccessat.c (faccessat): Likewise.
	* sysdeps/unix/sysv/linux/fchmodat.c (fchmodat): Likewise.
	* sysdeps/unix/sysv/linux/fcntl.c (do_fcntl): Likewise.
	* sysdeps/unix/sysv/linux/futimens.c (futimens): Likewise.
	* sysdeps/unix/sysv/linux/futimes.c (__futimes): Likewise.
	* sysdeps/unix/sysv/linux/fxstat.c (__fxstat): Likewise.
	* sysdeps/unix/sysv/linux/fxstatat.c (__fxstatat): Likewise.
	* sysdeps/unix/sysv/linux/fxstatat64.c (__fxstatat64): Likewise.
	* sysdeps/unix/sysv/linux/lutimes.c (lutimes): Likewise.
	* sysdeps/unix/sysv/linux/lxstat.c (__lxstat): Likewise.
	* sysdeps/unix/sysv/linux/lxstat64.c (___lxstat64): Likewise.
	* sysdeps/unix/sysv/linux/mmap64.c (__mmap64): Likewise.
	* sysdeps/unix/sysv/linux/mq_open.c (__mq_open): Likewise.
	* sysdeps/unix/sysv/linux/mq_unlink.c (mq_unlink): Likewise.
	* sysdeps/unix/sysv/linux/prlimit.c (prlimit): Likewise.
	* sysdeps/unix/sysv/linux/readahead.c (__readahead): Likewise.
	* sysdeps/unix/sysv/linux/shmat.c (shmat): Likewise.
	* sysdeps/unix/sysv/linux/signalfd.c (signalfd): Likewise.
	* sysdeps/unix/sysv/linux/speed.c (cfsetospeed): Likewise.
	* sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Likewise.
	* sysdeps/unix/sysv/linux/ustat.c (ustat): Likewise.
	* sysdeps/unix/sysv/linux/utimensat.c (utimensat): Likewise.
	* sysdeps/unix/sysv/linux/xmknod.c (__xmknod): Likewise.
	* sysdeps/unix/sysv/linux/xmknodat.c (__xmknodat): Likewise.
	* sysdeps/unix/sysv/linux/xstat.c (__xstat): Likewise.
	* sysdeps/unix/sysv/linux/xstatconv.c (__xstat_conv): Likewise.
	(__xstat64_conv): Likewise.
	(__xstat32_conv): Likewise.
2015-10-13 12:01:10 -07:00
H.J. Lu
fb1cf10811 Add INLINE_SYSCALL_ERROR_RETURN_VALUE
For ia32 PIC, the first thing of many syscalls does is to call
__x86.get_pc_thunk.reg to load PC into reg in case there is an error,
which is required for setting errno.  In most cases, there are no
errors.  But we still call __x86.get_pc_thunk.reg.  This patch adds
INLINE_SYSCALL_ERROR_RETURN_VALUE so that i386 can optimize setting
errno by branching to the internal __syscall_error without PLT.

With i386 INLINE_SYSCALL_ERROR_RETURN_VALUE and i386 syscall inlining
optimization for GCC 5, for sysdeps/unix/sysv/linux/fchmodat.c with
-O2 -march=i686 -mtune=generic, GCC 5.2 now generates:

<fchmodat>:
   0:	push   %ebx
   1:	mov    0x14(%esp),%eax
   5:	mov    0x8(%esp),%ebx
   9:	mov    0xc(%esp),%ecx
   d:	mov    0x10(%esp),%edx
  11:	test   $0xfffffeff,%eax
  16:	jne    38 <fchmodat+0x38>
  18:	test   $0x1,%ah
  1b:	jne    48 <fchmodat+0x48>
  1d:	mov    $0x132,%eax
  22:	call   *%gs:0x10
  29:	cmp    $0xfffff000,%eax
  2e:	ja     58 <fchmodat+0x58>
  30:	pop    %ebx
  31:	ret
  32:	lea    0x0(%esi),%esi
  38:	pop    %ebx
  39:	mov    $0xffffffea,%eax
  3e:	jmp    3f <fchmodat+0x3f>	3f: R_386_PC32	__syscall_error
  43:	nop
  44:	lea    0x0(%esi,%eiz,1),%esi
  48:	pop    %ebx
  49:	mov    $0xffffffa1,%eax
  4e:	jmp    4f <fchmodat+0x4f>	4f: R_386_PC32	__syscall_error
  53:	nop
  54:	lea    0x0(%esi,%eiz,1),%esi
  58:	pop    %ebx
  59:	jmp    5a <fchmodat+0x5a>	5a: R_386_PC32	__syscall_error

instead of

<fchmodat>:
   0:	sub    $0x8,%esp
   3:	mov    0x18(%esp),%eax
   7:	mov    %ebx,(%esp)
   a:	call   b <fchmodat+0xb>	b: R_386_PC32	__x86.get_pc_thunk.bx
   f:	add    $0x2,%ebx	11: R_386_GOTPC	_GLOBAL_OFFSET_TABLE_
  15:	mov    %edi,0x4(%esp)
  19:	test   $0xfffffeff,%eax
  1e:	jne    70 <fchmodat+0x70>
  20:	test   $0x1,%ah
  23:	jne    88 <fchmodat+0x88>
  25:	mov    0x14(%esp),%edx
  29:	mov    0x10(%esp),%ecx
  2d:	mov    0xc(%esp),%edi
  31:	xchg   %ebx,%edi
  33:	mov    $0x132,%eax
  38:	call   *%gs:0x10
  3f:	xchg   %edi,%ebx
  41:	cmp    $0xfffff000,%eax
  46:	ja     58 <fchmodat+0x58>
  48:	mov    (%esp),%ebx
  4b:	mov    0x4(%esp),%edi
  4f:	add    $0x8,%esp
  52:	ret
  53:	nop
  54:	lea    0x0(%esi,%eiz,1),%esi
  58:	mov    0x0(%ebx),%edx	5a: R_386_TLS_GOTIE	__libc_errno
  5e:	neg    %eax
  60:	mov    %eax,%gs:(%edx)
  63:	mov    $0xffffffff,%eax
  68:	jmp    48 <fchmodat+0x48>
  6a:	lea    0x0(%esi),%esi
  70:	mov    0x0(%ebx),%eax	72: R_386_TLS_GOTIE	__libc_errno
  76:	movl   $0x16,%gs:(%eax)
  7d:	mov    $0xffffffff,%eax
  82:	jmp    48 <fchmodat+0x48>
  84:	lea    0x0(%esi,%eiz,1),%esi
  88:	mov    0x0(%ebx),%eax	8a: R_386_TLS_GOTIE	__libc_errno
  8e:	movl   $0x5f,%gs:(%eax)
  95:	mov    $0xffffffff,%eax
  9a:	jmp    48 <fchmodat+0x48>

	* sysdeps/unix/sysv/linux/sysdep.h: New file.
	* sysdeps/unix/sysv/linux/i386/sysdep.c: Likewise.
	* sysdeps/unix/sysv/linux/alpha/sysdep.h: Include
	<sysdeps/unix/sysv/linux/sysdep.h>.
	* sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/generic/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/hppa/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/microblaze/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips32/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/Makefile [$(subdir) == csu]
	(sysdep-dl-routines): Add sysdep.
	[$(subdir) == nptl] (libpthread-routines): Likewise.
	[$(subdir) == rt] (librt-routines): Likewise.
	* sysdeps/unix/sysv/linux/i386/clone.S (__clone): Don't check
	PIC when branching to SYSCALL_ERROR_LABEL.
	* sysdeps/unix/sysv/linux/i386/sysdep.S: Removed.
	* sysdeps/unix/sysv/linux/i386/sysdep.h: Include
	<sysdeps/unix/sysv/linux/sysdep.h>.
	(SYSCALL_ERROR_LABEL): Changed to __syscall_error.
	(SYSCALL_ERROR_ERRNO): Removed.
	(SYSCALL_ERROR_HANDLER): Changed to empty.
	(SYSCALL_ERROR_HANDLER_TLS_STORE): Likewise.
	(__syscall_error): New prototype.
	[IS_IN (libc)] (INLINE_SYSCALL): New macro.
	(INLINE_SYSCALL_ERROR_RETURN_VALUE): Likewise.
2015-10-13 11:59:15 -07:00
H.J. Lu
0a5768fe9c Support x86-64 assmebler without AVX512
When x86-64 assmebler doesn't support AVX512, we should make
_dl_runtime_resolve_avx512/_dl_runtime_profile_avx512 as aliases of
_dl_runtime_resolve_avx/_dl_runtime_profile_avx.  Tested on x86-64
using GCC 5.2 with binutils 20151008 and GCC 4.8 with binutils 20130219.
There are no differences in ld.so with binutils 20151008.  There are no
unexpected failures with binutils 20130219 and 20151008.

	[BZ #19124]
	* sysdeps/x86_64/dl-trampoline.S [!HAVE_AVX512_ASM_SUPPORT]
	(_dl_runtime_resolve_avx512): Make it a hidden alias of
	_dl_runtime_resolve_avx.
	(_dl_runtime_profile_avx512): Make it a hidden alias of
	_dl_runtime_profile_avx.
2015-10-13 10:36:27 -07:00
Joseph Myers
2020748d8e Move powerpc llround implementations to powerpc32 directory.
sysdeps/powerpc/fpu/ has versions of llround and llroundf that are
actually used only for powerpc32 because
sysdeps/powerpc/powerpc64/fpu/ has its own versions of those
functions.  This patch moves them into sysdeps/powerpc/powerpc32/fpu
to reflect where they are actually used (in preparation for fixing
other problems with those functions).

Tested for powerpc that installed stripped shared libraries are
unchanged by this patch.

	* sysdeps/powerpc/fpu/s_llround.c: Move to ....
	* sysdeps/powerpc/powerpc32/fpu/s_llround.c: ...here.
	* sysdeps/powerpc/fpu/s_llroundf.c: Move to ....
	* sysdeps/powerpc/powerpc32/fpu/s_llroundf.c: ...here.
2015-10-13 16:53:09 +00:00
Joseph Myers
e8dab9477f Fix powerpc32 llrint, llrintf bad exceptions (bug 16422).
The versions of llrint and llrintf for older powerpc32 processors
convert the results of __rint / __rintf to long long int, resulting in
spurious exceptions from such casts in certain cases.  This patch
makes glibc work around the problems with the libgcc conversions when
the compiler used to build glibc doesn't use the fctidz instruction
for them.

Tested for powerpc.

	[BZ #16422]
	* sysdeps/powerpc/powerpc32/fpu/configure.ac (libc_cv_ppc_fctidz):
	New configure test.
	* sysdeps/powerpc/powerpc32/fpu/configure: Regenerated.
	* config.h.in [_LIBC] (HAVE_PPC_FCTIDZ): New macro.
	* sysdeps/powerpc/powerpc32/fpu/s_llrint.c: Include <limits.h>,
	<math_private.h> and <stdint.h>.
	(__llrint): Avoid conversions to long long int where those might
	raise spurious exceptions.
	* sysdeps/powerpc/powerpc32/fpu/s_llrintf.c: Include
	<math_private.h> and <stdint.h>.
	(__llrintf): Avoid conversions to long long int where those might
	raise spurious exceptions.
2015-10-13 00:52:54 +00:00
Andreas Schwab
5b1766a0cd Add bug reference 2015-10-12 15:28:24 +02:00
Andreas Schwab
f881f6ff62 Add dependencies on needed locales in each subdir tests (bug 18969) 2015-10-12 15:18:08 +02:00
Samuel Thibault
3fe29ca043 Make _hurd_raise_signal directly return the error
* hurd/hurd-raise.c (_hurd_raise_signal): Return error returned by
	__msg_sig_post.
2015-10-10 16:31:43 +02:00
Samuel Thibault
ee0976f7fc Make _hurd_raise_signal return errors
* hurd/hurd-raise.c (_hurd_raise_signal): Set errno to error returned
	by __msg_sig_post.
	* hurd/hurd/signal.h (_hurd_raise_signal): Add int return type.
2015-10-10 16:21:41 +02:00
Phil Blundell
39b3985bed ChangeLog: Fix incorrect email address
For reasons that are slightly unclear, the ChangeLog entry added in
67ac0f74a4 contained a mangled version
of my email address.  Replace that with the correct one.
2015-10-09 23:43:53 +01:00
Joseph Myers
368a24a0b2 Regenerate MIPS libm-test-ulps.
* sysdeps/mips/mips32/libm-test-ulps: Regenerated.
	* sysdeps/mips/mips64/libm-test-ulps: Likewise.
2015-10-09 22:39:11 +00:00
Joseph Myers
5471d141ac Regenerate ARM libm-test-ulps.
* sysdeps/arm/libm-test-ulps: Regenerated.
2015-10-09 22:30:26 +00:00
Joseph Myers
f1226a2ae3 Fix llrint, llround missing exceptions for ARM (bug 15470).
Similar to the recent fix for MIPS, ARM is also missing correct
exceptions on overflow from llrint and llround functions because casts
from floating-point types to long long do not result in correct
exceptions on overflow.  This patch enables the fix for this for ARM.

Tested for ARM.

	[BZ #15470]
	* sysdeps/arm/fix-fp-int-convert-overflow.h: New file.
2015-10-09 22:23:39 +00:00
Joseph Myers
06d97e5e61 Fix lrint, llrint, lround, llround missing exceptions for MIPS (bug 16399).
For 32-bit MIPS and some other systems, various of the lrint, llrint,
lround, llround functions can be missing exceptions on overflow
because casts do not (in current GCC) result in the proper
exceptions.  In the MIPS case there are two problems here: MIPS I code
generation uses an assembler macro that doesn't raise exceptions,
while the libgcc conversions of floating-point values to long long
also do not raise "invalid" on all overflow cases (and can raise
spurious "inexact").

This patch adds support in the generic code (only the functions for
which this problem has actually been seen) for forcing the "invalid"
exception in the problem cases, and enables that support for the
affected MIPS cases.

Tested for MIPS; also tested for x86_64 and x86 that installed
stripped shared libraries are unchanged by this patch.

	[BZ #16399]
	* sysdeps/generic/fix-fp-int-convert-overflow.h: New file.
	* sysdeps/ieee754/dbl-64/s_llrint.c: Include <fenv.h>, <limits.h>
	and <fix-fp-int-convert-overflow.h>.
	(__llrint) [FE_INVALID]: Force FE_INVALID exception as needed if
	FIX_DBL_LLONG_CONVERT_OVERFLOW.
	* sysdeps/ieee754/dbl-64/s_llround.c: Include <fenv.h>, <limits.h>
	and <fix-fp-int-convert-overflow.h>.
	(__llround) [FE_INVALID]: Force FE_INVALID exception as needed if
	FIX_DBL_LLONG_CONVERT_OVERFLOW.
	* sysdeps/ieee754/dbl-64/s_lrint.c: Include
	<fix-fp-int-convert-overflow.h>.
	(__lrint) [FE_INVALID]: Force FE_INVALID exception as needed if
	FIX_DBL_LLONG_CONVERT_OVERFLOW.
	* sysdeps/ieee754/dbl-64/s_lround.c: Include
	<fix-fp-int-convert-overflow.h>.
	(__lround) [FE_INVALID]: Force FE_INVALID exception as needed if
	FIX_DBL_LLONG_CONVERT_OVERFLOW.
	* sysdeps/ieee754/flt-32/s_llrintf.c: Include <fenv.h>, <limits.h>
	and <fix-fp-int-convert-overflow.h>.
	(__llrintf) [FE_INVALID]: Force FE_INVALID exception as needed if
	FIX_DBL_LLONG_CONVERT_OVERFLOW.
	* sysdeps/ieee754/flt-32/s_llroundf.c: Include <fenv.h>,
	<limits.h> and <fix-fp-int-convert-overflow.h>.
	(__llroundf) [FE_INVALID]: Force FE_INVALID exception as needed if
	FIX_DBL_LLONG_CONVERT_OVERFLOW.
	* sysdeps/ieee754/flt-32/s_lrintf.c: Include <fenv.h>, <limits.h>
	and <fix-fp-int-convert-overflow.h>.
	(__lrintf) [FE_INVALID]: Force FE_INVALID exception as needed if
	FIX_DBL_LLONG_CONVERT_OVERFLOW.
	* sysdeps/ieee754/flt-32/s_lroundf.c: Include <fenv.h>, <limits.h>
	and <fix-fp-int-convert-overflow.h>.
	(__lroundf) [FE_INVALID]: Force FE_INVALID exception as needed if
	FIX_DBL_LLONG_CONVERT_OVERFLOW.
	* sysdeps/mips/mips32/fpu/fix-fp-int-convert-overflow.h: New file.
2015-10-09 21:02:19 +00:00
Carlos O'Donell
facdd9ea29 Fix typo in bug-strcoll2 (Bug 18589)
Fix the copyright year and remove contributed by in the
bug-strcoll2 test. In addition add the correct dependency
on $(gen-locales) to ensure all the test locales are generated.
2015-10-09 16:38:04 -04:00
Adhemerval Zanella
67ac0f74a4 nptl: Add NPTL cases for cancellation failures cases
This patch pthread cancellation tests to check for failures cases
wherer the syscall cancel wrapper should both set the error and
the errno values.

Tested on i686, x86_64, x32, powerpc64le, and aarch64.

	* nptl/Makefile (tests): Add tst-cancel26.c and tst-cancel27.c.
	* nptl/tst-cancel26.c: New file.
	* nptl/tst-cancel27.c: Likewise.
2015-10-09 15:50:27 -03:00
H.J. Lu
4b71ce6c1a Update lrint/lrintf/lrintl for x32
The x86_64 versions of lrint/lrintf/ lrintl are aliases for the long
long versions which isn't correct for x32, where exceptions must respect
overflow for 32-bit long.  Separate versions of the long functions for
x32 that convert to 32-bit long and raise the right exceptions for that
conversion, while keeping the aliases in the non-x32 case.

Tested on x86_64 and x32.  There are no code changes in libm.so on
x86_64.

	* sysdeps/x86_64/fpu/s_llrint.S (__lrint): Add alias only if
	__ILP32__ isn't defined.
	(lrint): Likewise.
	* sysdeps/x86_64/fpu/s_llrintf.S (__lrintf): Likewise.
	(lrintf): Likewise.
	* sysdeps/x86_64/fpu/s_llrintl.S (__lrintl): Likewise.
	(lrintl): Likewise.
	* sysdeps/x86_64/x32/fpu/s_lrint.S: New file.
	* sysdeps/x86_64/x32/fpu/s_lrintf.S: Likewise.
	* sysdeps/x86_64/x32/fpu/s_lrintl.S: Likewise.
2015-10-09 11:42:10 -07:00
Adhemerval Zanella
0fcc93bce9 Mark lseek/llseek as non-cancellable
This patch sets lseek/llseek for 64-bit, MIPS n32, and x86_32 as non-
cancelable.  This make it consistant with 32-bit platform.

Tested on i686, x86_64, and x32.

	* sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (lseek): Set as
	non-cancelable.
	* sysdeps/unix/sysv/linux/wordsize-64/syscalls.list (llseek): Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/lseek.S (__libc_lseek64):
	Likewise.
2015-10-09 14:26:08 -03:00
Joseph Myers
ae5d8eaed0 Remove configure tests for -mno-vzeroupper support.
GCC added support for -mno-vzeroupper in version 4.6.  Thus the
configure tests for this support are obsolete, and this patch removes
them.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by this patch).

	* sysdeps/i386/configure.ac (libc_cv_cc_novzeroupper): Remove
	configure test.
	* sysdeps/i386/configure: Regenerated.
	* sysdeps/x86_64/configure.ac (libc_cv_cc_novzeroupper): Remove
	configure test.
	* sysdeps/x86_64/configure: Regenerated.
	* sysdeps/x86_64/Makefile [$(config-cflags-novzeroupper) = yes]:
	Make code unconditional.
2015-10-09 16:03:48 +00:00
Joseph Myers
b7848899a5 Remove configure tests for FMA4 support.
GCC added support for -mfma4 in version 4.5.  Thus the configure tests
for this support are obsolete, and this patch removes them.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by this patch).

	* sysdeps/i386/configure.ac (libc_cv_cc_fma4): Remove configure
	test.
	* sysdeps/i386/configure: Regenerated.
	* sysdeps/x86_64/configure.ac (libc_cv_cc_fma4): Remove configure
	test.
	* sysdeps/x86_64/configure: Regenerated.
	* sysdeps/x86_64/fpu/multiarch/Makefile [$(have-mfma4) = yes]:
	Make code unconditional.
	* sysdeps/x86_64/fpu/multiarch/e_asin.c [HAVE_FMA4_SUPPORT]:
	Likewise.
	* sysdeps/x86_64/fpu/multiarch/e_atan2.c [HAVE_FMA4_SUPPORT]:
	Likewise.
	[!HAVE_FMA4_SUPPORT]: Remove conditional code.
	* sysdeps/x86_64/fpu/multiarch/e_exp.c [HAVE_FMA4_SUPPORT]: Make
	code unconditional.
	[!HAVE_FMA4_SUPPORT]: Remove conditional code.
	* sysdeps/x86_64/fpu/multiarch/e_log.c [HAVE_FMA4_SUPPORT]: Make
	code unconditional.
	[!HAVE_FMA4_SUPPORT]: Remove conditional code.
	* sysdeps/x86_64/fpu/multiarch/e_pow.c [HAVE_FMA4_SUPPORT]: Make
	code unconditional.
	* sysdeps/x86_64/fpu/multiarch/s_atan.c [HAVE_FMA4_SUPPORT]: Make
	code unconditional.
	[!HAVE_FMA4_SUPPORT]: Remove conditional code.
	* sysdeps/x86_64/fpu/multiarch/s_fma.c [HAVE_FMA4_SUPPORT]: Make
	code unconditional.
	[!HAVE_FMA4_SUPPORT]: Remove conditional code.
	* sysdeps/x86_64/fpu/multiarch/s_fmaf.c [HAVE_FMA4_SUPPORT]: Make
	code unconditional.
	[!HAVE_FMA4_SUPPORT]: Remove conditional code.
	* sysdeps/x86_64/fpu/multiarch/s_sin.c [HAVE_FMA4_SUPPORT]: Make
	code unconditional.
	[!HAVE_FMA4_SUPPORT]: Remove conditional code.
	* sysdeps/x86_64/fpu/multiarch/s_tan.c [HAVE_FMA4_SUPPORT]: Make
	code unconditional.
	[!HAVE_FMA4_SUPPORT]: Remove conditional code.
	* config.h.in (HAVE_FMA4_SUPPORT): Remove #undef.
2015-10-09 16:02:54 +00:00
Joseph Myers
0e069029a8 Fix dbl-64 lrint for 64-bit long (bug 19095).
The dbl-64 implementation of lrint produces incorrect results for some
arguments with 64-bit long because a 32-bit (unsigned) low part of the
mantissa is shifted left, losing high bits in the process.  This patch
fixes this by casting to long int before shifting, as in lround (as
this case only applies for 64-bit long, there are no issues with
sign-extension).

Tested for mips64 (n64).

	[BZ #19095]
	* sysdeps/ieee754/dbl-64/s_lrint.c (__lrint): Cast low part of
	mantissa to long int before shifting left.
2015-10-09 00:32:14 +00:00