platform/upstream/glibc.git
9 years agosoft-fp: Use __label__ for all labels within macros.
Joseph Myers [Thu, 22 Jan 2015 22:39:26 +0000 (22:39 +0000)]
soft-fp: Use __label__ for all labels within macros.

soft-fp has various macros containing labels and goto statements.
Because label names are function-scoped, this is problematic for using
the same macro more than once within a function, which some
architectures do in the Linux kernel (the soft-fp version there
predates the addition of any of these labels and gotos).  This patch
fixes this by using __label__ to make the labels local to the block
with the __label__ declaration.

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

* soft-fp/op-common.h (_FP_ADD_INTERNAL): Declare labels with
__label__.
(_FP_FMA): Likewise.
(_FP_TO_INT_ROUND): Likewise.
(_FP_FROM_INT): Likewise.

9 years agoBZ #16418: Fix powerpc get_clockfreq raciness
Adhemerval Zanella [Mon, 24 Nov 2014 21:18:26 +0000 (16:18 -0500)]
BZ #16418: Fix powerpc get_clockfreq raciness

This patch fix powerpc __get_clockfreq racy and cancel-safe issues by
dropping internal static cache and by using nocancel file operations.
The vDSO failure check is also removed, since kernel code does not
return an error (it cleans cr0.so bit on function return) and the static
code (to read value /proc) now uses non-cancellable calls.

9 years agoUpdate copyright year to 2015 for new files.
Carlos O'Donell [Wed, 21 Jan 2015 15:35:31 +0000 (10:35 -0500)]
Update copyright year to 2015 for new files.

9 years agotst-getpw: Rewrite.
Carlos O'Donell [Wed, 21 Jan 2015 15:08:18 +0000 (10:08 -0500)]
tst-getpw: Rewrite.

The test is rewritten to look for the testable conditions and
exit once they are all detected. This prevents the test from
iterating over 2000 UIDs and looking up each one. It speeds up
the test and prevents it from failing if the system under test
has an NSS-based passwd that is slower than the test timeout.

See:
https://sourceware.org/ml/libc-alpha/2015-01/msg00394.html

9 years agoFix tst_wcscpy.c test.
Marek Polacek [Wed, 21 Jan 2015 11:30:42 +0000 (12:30 +0100)]
Fix tst_wcscpy.c test.

9 years agoFix recursive dlopen.
Carlos O'Donell [Wed, 21 Jan 2015 06:51:10 +0000 (01:51 -0500)]
Fix recursive dlopen.

The ability to recursively call dlopen is useful for malloc
implementations that wish to load other dynamic modules that
implement reentrant/AS-safe functions to use in their own
implementation.

Given that a user malloc implementation may be called by an
ongoing dlopen to allocate memory the user malloc
implementation interrupts dlopen and if it calls dlopen again
that's a reentrant call.

This patch fixes the issues with the ld.so.cache mapping
and the _r_debug assertion which prevent this from working
as expected.

See:
https://sourceware.org/ml/libc-alpha/2014-12/msg00446.html

9 years agoFix semaphore destruction (bug 12674).
Carlos O'Donell [Wed, 21 Jan 2015 05:46:16 +0000 (00:46 -0500)]
Fix semaphore destruction (bug 12674).

This commit fixes semaphore destruction by either using 64b atomic
operations (where available), or by using two separate fields when only
32b atomic operations are available.  In the latter case, we keep a
conservative estimate of whether there are any waiting threads in one
bit of the field that counts the number of available tokens, thus
allowing sem_post to atomically both add a token and determine whether
it needs to call futex_wake.

See:
https://sourceware.org/ml/libc-alpha/2014-12/msg00155.html

9 years agoRegenerate INSTALL.
Carlos O'Donell [Wed, 21 Jan 2015 03:25:38 +0000 (22:25 -0500)]
Regenerate INSTALL.

9 years agoUpdate libc.pot:
Carlos O'Donell [Wed, 21 Jan 2015 03:18:11 +0000 (22:18 -0500)]
Update libc.pot:

In preparation for providing a tarball to the translation project.

        * po/libc.pot: Regenerated.

9 years agoCommit nios2 port to master.
Chung-Lin Tang [Sun, 18 Jan 2015 06:29:12 +0000 (22:29 -0800)]
Commit nios2 port to master.

9 years agoS390: Get rid of linknamespace failures for utmp functions.
Stefan Liebler [Fri, 16 Jan 2015 08:18:58 +0000 (09:18 +0100)]
S390: Get rid of linknamespace failures for utmp functions.

9 years agoS390: Get rid of linknamespace failures for string functions.
Stefan Liebler [Fri, 16 Jan 2015 08:17:32 +0000 (09:17 +0100)]
S390: Get rid of linknamespace failures for string functions.

9 years agoFix powerpc-nofpu fesetenv namespace (bug 17748).
Joseph Myers [Wed, 14 Jan 2015 21:35:40 +0000 (21:35 +0000)]
Fix powerpc-nofpu fesetenv namespace (bug 17748).

When fixing namespace issues for <fenv.h> functions I missed one call
to fesetenv for powerpc-nofpu.  This patch changes this to a call to
__fesetenv.

Tested for powerpc-nofpu; it fixes the previously observed math.h
linknamespace test failures.

[BZ #17748]
* sysdeps/powerpc/nofpu/feholdexcpt.c (__feholdexcept): Call
__fesetenv instead of fesetenv.

9 years ago[s390] Define a __tls_get_addr macro to avoid declaring it again
Siddhesh Poyarekar [Wed, 14 Jan 2015 15:56:50 +0000 (21:26 +0530)]
[s390] Define a __tls_get_addr macro to avoid declaring it again

commit 050f7298e1ecc39887c329037575ccd972071255 added an extern
declaration for __tls_get_addr that conflicts with the one in s390
dl-tls.h, based on whether __tls_get_addr is defined as a macro.  The
rationale seems to be based on the assumption that __tls_get_addr is
exported for every architecture and hence an internal non-plt alias is
needed.  This is not true for s390 though, since it exports
__tls_get_offset and not __tls_get_addr.  This results in tst-audit9
being stuck in an infinite loop.

This patch fixes this by defining a __tls_get_addr macro to itself so
as to not use the conflicting declaration.

9 years agopowerpc: Fix POWER7/PPC64 performance regression on LE
Adhemerval Zanella [Mon, 12 Jan 2015 01:33:17 +0000 (19:33 -0600)]
powerpc: Fix POWER7/PPC64 performance regression on LE

This patch fixes a performance regression on the POWER7/PPC64 memcmp
porting for Little Endian.  The LE code uses 'ldbrx' instruction to read
the memory on byte reversed form, however ISA 2.06 just provide the indexed
form which uses a register value as additional index, instead of a fixed value
enconded in the instruction.

And the port strategy for LE uses r0 index value and update the address
value on each compare loop interation.  For large compare size values,
it adds 8 more instructions plus some more depending of trailing
size.  This patch fixes it by adding pre-calculate indexes to remove the
address update on loops and tailing sizes.

For large sizes it shows a considerable gain, with double performance
pairing with BE.

9 years agopowerpc: Optimized strncmp for POWER8/PPC64
Adhemerval Zanella [Fri, 9 Jan 2015 21:04:26 +0000 (16:04 -0500)]
powerpc: Optimized strncmp for POWER8/PPC64

This patch adds an optimized POWER8 strncmp.  The implementation focus
on speeding up unaligned cases follwing the ideas of power8 strcmp.

The algorithm first check the initial 16 bytes, then align the first
function source and uses unaligned loads on second argument only.
Aditional checks for page boundaries are done for unaligned cases
(where sources alignment are different).

9 years agopowerpc: Optimize POWER7 strcmp trailing checks
Rajalakshmi Srinivasaraghavan [Fri, 9 Jan 2015 16:56:35 +0000 (11:56 -0500)]
powerpc: Optimize POWER7 strcmp trailing checks

This patch optimized the POWER7 trailing check by avoiding using byte
read operations and instead use the doubleword already readed with
bitwise operations.

9 years agoFix scanf15.c testsuite build on sparc.
David S. Miller [Tue, 13 Jan 2015 19:28:17 +0000 (11:28 -0800)]
Fix scanf15.c testsuite build on sparc.

* include/signal.h (__sigreturn): Guard with __USE_MISC.

9 years agoRemove some references to bcopy/bcmp/bzero.
Roland McGrath [Tue, 13 Jan 2015 19:12:55 +0000 (11:12 -0800)]
Remove some references to bcopy/bcmp/bzero.

9 years agopowerpc: Optimized strcmp for POWER8/PPC64
Adhemerval Zanella [Wed, 7 Jan 2015 12:18:30 +0000 (07:18 -0500)]
powerpc: Optimized strcmp for POWER8/PPC64

This patch adds an optimized POWER8 strcmp using unaligned accesses.
The algorithm first check the initial 16 bytes, then align the first
function source and uses unaligned loads on second argument only.
Aditional checks for page boundaries are done for unaligned cases

9 years agopowerpc: Optimized st{r,p}ncpy for POWER8/PPC64
Adhemerval Zanella [Wed, 31 Dec 2014 16:47:41 +0000 (11:47 -0500)]
powerpc: Optimized st{r,p}ncpy for POWER8/PPC64

This patch adds an optimized POWER8 st{r,p}ncpy using unaligned accesses.
It shows 10%-80% improvement over the optimized POWER7 one that uses
only aligned accesses, specially on unaligned inputs.

The algorithm first read and check 16 bytes (if inputs do not cross a 4K
page size).  The it realign source to 16-bytes and issue a 16 bytes read
and compare loop to speedup null byte checks for large strings.  Also,
different from POWER7 optimization, the null pad is done inline in the
implementation using possible unaligned accesses, instead of realying on
a memset call.  Special case is added for page cross reads.

9 years agopowerpc: Optimized strncat for POWER7/PPC64
Adhemerval Zanella [Tue, 23 Dec 2014 18:39:23 +0000 (13:39 -0500)]
powerpc: Optimized strncat for POWER7/PPC64

With 3eb38795dbbbd816 (Simplify strncat) the generic algorithms uses
strlen, strnlen, and memcpy.  This is faster than POWER7 current
implementation, especially for unaligned strings (where POWER7 code
uses byte-byte operations).

This patch removes the assembly implementation and uses a multiarch
specialization based on default algorithm calling optimized POWER7
symbols.

9 years agopowerpc: Optimized strcat for POWER8/PPC64
Adhemerval Zanella [Tue, 23 Dec 2014 18:36:34 +0000 (13:36 -0500)]
powerpc: Optimized strcat for POWER8/PPC64

With new optimized strcpy for POWER8, this patch adds an optimized
strcat which uses it along with default implementation at strings/.

9 years agopowerpc: Optimized st{r,p}cpy for POWER8/PPC64
Adhemerval Zanella [Tue, 23 Dec 2014 11:59:44 +0000 (05:59 -0600)]
powerpc: Optimized st{r,p}cpy for POWER8/PPC64

This patch adds an optimized POWER8 strcpy using unaligned accesses.
For strings up to 16 bytes the implementation first calculate the
string size, like strlen, and issues a memcpy.  For larger strings,
source is first aligned to 16 bytes and then tested over a loop that
reads 16 bytes am combine the cmpb results for speedup.  Special case is
added for page cross reads.

It shows 30%-60% improvement over the optimized POWER7 one that uses
only aligned accesses.

9 years agoFix memory handling in strxfrm_l [BZ #16009]
Leonhard Holz [Tue, 13 Jan 2015 06:03:56 +0000 (11:33 +0530)]
Fix memory handling in strxfrm_l [BZ #16009]

[Modified from the original email by Siddhesh Poyarekar]

This patch solves bug #16009 by implementing an additional path in
strxfrm that does not depend on caching the weight and rule indices.

In detail the following changed:

* The old main loop was factored out of strxfrm_l into the function
do_xfrm_cached to be able to alternativly use the non-caching version
do_xfrm.

* strxfrm_l allocates a a fixed size array on the stack. If this is not
sufficiant to store the weight and rule indices, the non-caching path is
taken. As the cache size is not dependent on the input there can be no
problems with integer overflows or stack allocations greater than
__MAX_ALLOCA_CUTOFF. Note that malloc-ing is not possible because the
definition of strxfrm does not allow an oom errorhandling.

* The uncached path determines the weight and rule index for every char
and for every pass again.

* Passing all the locale data array by array resulted in very long
parameter lists, so I introduced a structure that holds them.

* Checking for zero src string has been moved a bit upwards, it is
before the locale data initialization now.

* To verify that the non-caching path works correct I added a test run
to localedata/sort-test.sh & localedata/xfrm-test.c where all strings
are patched up with spaces so that they are too large for the caching path.

9 years agoFix wake-up in sysdeps/nptl/fork.c.
Torvald Riegel [Tue, 13 Jan 2015 00:09:29 +0000 (01:09 +0100)]
Fix wake-up in sysdeps/nptl/fork.c.

9 years agoFix ldbl-96 scalblnl underflowing results (bug 17803).
Joseph Myers [Mon, 12 Jan 2015 23:02:14 +0000 (23:02 +0000)]
Fix ldbl-96 scalblnl underflowing results (bug 17803).

The ldbl-96 implementation of scalblnl (used for x86_64 and ia64) uses
a condition k <= -63 to determine when a standard underflowing result
tiny*__copysignl(tiny,x) should be returned.  However, that condition
corresponds to values with exponent -16446 or less, and in the case of
-16446, the correct result for round-to-nearest depends on whether the
value is exactly 0x1p-16446 (half the least subnormal) or more than
that.  This patch fixes the bug by changing the condition to k <= -64
and accordingly adjusting the exponent by 64 not 63 when converting to
a normal value.

Tested for x86_64.

[BZ #17803]
* sysdeps/ieee754/ldbl-96/s_scalblnl.c (twom63): Rename to
twom64.  Adjust value to 0x1p-64L.
(__scalblnl): Only return standard underflowing result for K <=
-64 not K <= -63; adjust exponent for underflowing result by 64
not 63.
* math/libm-test.inc (scalbn_test_data): Add more tests.
(scalbln_test_data): Likewise.

9 years agoFix ldbl-96 scalblnl for subnormal arguments (bug 17834).
Joseph Myers [Mon, 12 Jan 2015 22:34:58 +0000 (22:34 +0000)]
Fix ldbl-96 scalblnl for subnormal arguments (bug 17834).

The ldbl-96 implementation of scalblnl (used for x86_64 and ia64) is
incorrect for subnormal arguments (this is a separate bug from bug
17803, which is about underflowing results).  There are two problems
with the adjustments of subnormal arguments: the "two63" variable
multiplied by is actually 0x1p52L not 0x1p63L, so is insufficient to
make values normal, and then GET_LDOUBLE_EXP(es,x), used to extract
the new exponent, extracts it into a variable that isn't used, while
the value taken to by the new exponent is wrongly taken from the high
part of the mantissa before the adjustment (hx).  This patch fixes
both those problems and adds appropriate tests.

Tested for x86_64.

[BZ #17834]
* sysdeps/ieee754/ldbl-96/s_scalblnl.c (two63): Change value to
0x1p63L.
(__scalblnl): Get new exponent of adjusted subnormal value from ES
not HX.
* math/libm-test.inc (scalbn_test_data): Add more tests.
(scalbln_test_data): Likewise.

9 years agoAdd x86 32 bit vDSO time function support
Adhemerval Zanella [Fri, 27 Jun 2014 21:00:18 +0000 (14:00 -0700)]
Add x86 32 bit vDSO time function support

Linux 3.15 adds support for clock_gettime, gettimeofday, and time vDSO
(commit id 37c975545ec63320789962bf307f000f08fabd48).  This patch adds
GLIBC supports to use such symbol when they are avaiable.

Along with x86 vDSO support, this patch cleanup x86_64 code by moving
all common code to x86 common folder.  Only init-first.c is different
between implementations.

9 years agopowerpc: Fix Copyright dates and CL entry
Adhemerval Zanella [Mon, 12 Jan 2015 17:58:34 +0000 (12:58 -0500)]
powerpc: Fix Copyright dates and CL entry

This patch fixes the copyright dates from files created by commit
8d2c0a5, 4b45943, and 56cf276.

9 years agopowerpc: abort transaction in syscalls
Adhemerval Zanella [Fri, 7 Nov 2014 17:34:52 +0000 (12:34 -0500)]
powerpc: abort transaction in syscalls

Linux kernel powerpc documentation states issuing a syscall inside a
transaction is not recommended and may lead to undefined behavior. It
also states syscalls does not abort transactoin neither they run in
transactional state.

To avoid side-effects being visible outside transactions, GLIBC with
lock elision enabled will issue a transaction abort instruction just
before all syscalls if hardware supports hardware transactions.

9 years agopowerpc: Add adaptive elision to rwlocks
Adhemerval Zanella [Fri, 7 Nov 2014 17:30:56 +0000 (12:30 -0500)]
powerpc: Add adaptive elision to rwlocks

This patch adds support for lock elision using ISA 2.07 hardware
transactional memory for rwlocks.  The logic is similar to the
one presented in pthread_mutex lock elision.

9 years agopowerpc: Add the lock elision using HTM
Adhemerval Zanella [Fri, 7 Nov 2014 17:25:32 +0000 (12:25 -0500)]
powerpc: Add the lock elision using HTM

This patch adds support for lock elision using ISA 2.07 hardware
transactional memory instructions for pthread_mutex primitives.
Similar to s390 version, the for elision logic defined in
'force-elision.h' is only enabled if ENABLE_LOCK_ELISION is defined.

Also, the lock elision code should be able to be built even with
a compiler that does not provide HTM support with builtins.
However I have noted the performance is sub-optimal due scheduling
pressures.

9 years agoRemove 17581 from NEWS
Andreas Schwab [Mon, 12 Jan 2015 09:26:16 +0000 (10:26 +0100)]
Remove 17581 from NEWS

9 years agoFix shm-directory.h #include.
Roland McGrath [Sat, 10 Jan 2015 00:08:14 +0000 (16:08 -0800)]
Fix shm-directory.h #include.

9 years agoRemove divide from _ELF_DYNAMIC_DO_RELOC in elf/dynamic-link.h.
Chung-Lin Tang [Fri, 9 Jan 2015 17:40:29 +0000 (09:40 -0800)]
Remove divide from _ELF_DYNAMIC_DO_RELOC in elf/dynamic-link.h.

9 years agoMicroBlaze: Fix BZ17791 - Remove fixed page size macros and others
Matthew Fortune [Mon, 5 Jan 2015 15:12:45 +0000 (15:12 +0000)]
MicroBlaze: Fix BZ17791 - Remove fixed page size macros and others

Microblaze apparently has a variable page size (see thread below) and
should not hard-code any page-size related macros.
Also remove macros that are only used for BFD's trad-core support
which is not relavant for microblaze also according to the thread
starting here:

https://sourceware.org/ml/libc-ports/2013-11/msg00028.html

This patch is neither built nor tested but mirrors a MIPS patch that
fixes the same issue.

Thanks,
Matthew

     * sysdepsysdeps/unix/sysv/linux/microblaze/sys/user.h
     (PAGE_SHIFT, PAGE_SIZE, PAGE_MASK, NBPG, UPAGES): Remove.
     (HOST_TEXT_START_ADDR, HOST_STACK_END_ADDR): Remove.

Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
9 years agoMicroBlaze: Remove custom lowlevellock.h.
Torvald Riegel [Wed, 17 Dec 2014 22:07:50 +0000 (23:07 +0100)]
MicroBlaze: Remove custom lowlevellock.h.

2015-01-06  Torvald Riegel <triegel@redhat.com>

  * sysdeps/unix/sysv/linux/microblaze/lowlevellock.h: Delete file.

Signed-off-by: Torvald Riegel <triegel@redhat.com>
Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
9 years agoMicroBlaze: Remove custom pthread_once implementation on microblaze.
Torvald Riegel [Mon, 8 Dec 2014 17:30:33 +0000 (18:30 +0100)]
MicroBlaze: Remove custom pthread_once implementation on microblaze.

2015-01-06  Torvald Riegel <triegel@redhat.com>

  * sysdeps/unix/sysv/linux/microblaze/pthread_once.c: Delete file.

Signed-off-by: Torvald Riegel <triegel@redhat.com>
Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
9 years agoMicroBlaze: Avoid pointer to integer conversion warning
David Holsgrove [Mon, 29 Dec 2014 03:54:19 +0000 (13:54 +1000)]
MicroBlaze: Avoid pointer to integer conversion warning

2015-01-06  David Holsgrove <david.holsgrove@xilinx.com>

  * sysdeps/microblaze/jmpbuf-unwind.h (_jmpbuf_sp): Declare SP as void
    pointer and cast to uintptr_t.

Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
9 years agoMicroBlaze: Fix volatile-register-var warning in READ_THREAD_POINTER
David Holsgrove [Mon, 29 Dec 2014 02:22:26 +0000 (12:22 +1000)]
MicroBlaze: Fix volatile-register-var warning in READ_THREAD_POINTER

Resolves warning: 'optimization may eliminate reads and/or writes to
register variables'

2015-01-06  David Holsgrove <david.holsgrove@xilinx.com>

  * sysdeps/microblaze/nptl/tls.h: Remove inline
    __microblaze_get_thread_area and update READ_THREAD_POINTER.

Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
9 years agoMicroBlaze: Fix integer-pointer conversion warning
David Holsgrove [Wed, 24 Dec 2014 01:55:49 +0000 (11:55 +1000)]
MicroBlaze: Fix integer-pointer conversion warning

2015-01-06  David Holsgrove <david.holsgrove@xilinx.com>

    * sysdeps/microblaze/nptl/tls.h (TLS_INIT_TP): Use NULL instead
      of 0.

Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
9 years agoSome #include cleanup in aio/timer code.
Roland McGrath [Thu, 8 Jan 2015 23:38:15 +0000 (15:38 -0800)]
Some #include cleanup in aio/timer code.

9 years agoClean up allocrtsig code.
Roland McGrath [Thu, 8 Jan 2015 23:31:15 +0000 (15:31 -0800)]
Clean up allocrtsig code.

9 years agoFix copyright year on new stub sys/procfs.h file.
Roland McGrath [Thu, 8 Jan 2015 22:29:45 +0000 (14:29 -0800)]
Fix copyright year on new stub sys/procfs.h file.

9 years agoNPTL: Fix generic pthread_sigmask.
Roland McGrath [Thu, 8 Jan 2015 22:26:51 +0000 (14:26 -0800)]
NPTL: Fix generic pthread_sigmask.

9 years agoNPTL: Fixed missed conditionalization of setxid hooey.
Roland McGrath [Thu, 8 Jan 2015 21:41:14 +0000 (13:41 -0800)]
NPTL: Fixed missed conditionalization of setxid hooey.

9 years agoAdd stub sys/procfs.h file
Roland McGrath [Thu, 8 Jan 2015 21:24:56 +0000 (13:24 -0800)]
Add stub sys/procfs.h file

9 years agoNPTL: Refactor cpu_set_t validation to be sysdeps-controlled
Roland McGrath [Thu, 8 Jan 2015 18:49:40 +0000 (10:49 -0800)]
NPTL: Refactor cpu_set_t validation to be sysdeps-controlled

This removes Linuxisms related to cpu_set_t validation from the
generic NPTL code and puts them into a new sysdeps header file.

9 years agoAdd -Wno-trampolines as needed
Richard Henderson [Thu, 8 Jan 2015 16:32:06 +0000 (08:32 -0800)]
Add -Wno-trampolines as needed

9 years agoAdd Nios II definitions to elf/elf.h.
Chung-Lin Tang [Thu, 8 Jan 2015 16:02:43 +0000 (08:02 -0800)]
Add Nios II definitions to elf/elf.h.

9 years agopowerpc: Fix compiler warning on some syscalls
Adhemerval Zanella [Tue, 6 Jan 2015 12:59:04 +0000 (07:59 -0500)]
powerpc: Fix compiler warning on some syscalls

GCC 5.0 emits an warning when using sizeof on array function parameters
and powerpc internal syscall macros add a check for such cases.  More
specifically, on powerpc64 and powerpc32 sysdep.h:

  if (__builtin_classify_type (__arg3) != 5 && sizeof (__arg3) > 8) \
          __illegally_sized_syscall_arg3 (); \

And for sysdeps/unix/sysv/linux/utimensat.c build GCC emits:

error: â€˜sizeof’ on array function parameter â€˜tsp’ will return size of
‘const struct timespec *’

This patch uses the address of first struct member instead of the struct
itself in syscall macro.

9 years agoNEWS for MIPS ABIs
Matthew Fortune [Tue, 6 Jan 2015 15:06:14 +0000 (15:06 +0000)]
NEWS for MIPS ABIs

* NEWS: Announce support for new MIPS ABI extensions.

9 years agoFix libm feupdateenv namespace (bug 17748).
Joseph Myers [Wed, 7 Jan 2015 19:01:20 +0000 (19:01 +0000)]
Fix libm feupdateenv namespace (bug 17748).

Concluding the fixes for C90 libm functions calling C99 fe* functions,
this patch fixes the case of feupdateenv by making it a weak alias for
__feupdateenv and making the affected code call __feupdateenv.

Tested for x86_64 (testsuite, and that installed stripped shared
libraries are unchanged by the patch).  Also tested for ARM
(soft-float) that the math.h linknamespace tests now pass.

[BZ #17748]
* include/fenv.h (__feupdateenv): Use libm_hidden_proto.
* math/feupdateenv.c (__feupdateenv): Use libm_hidden_def.
* sysdeps/aarch64/fpu/feupdateenv.c (feupdateenv): Rename to
__feupdateenv and define as weak alias of __feupdateenv.  Use
libm_hidden_weak.
* sysdeps/alpha/fpu/feupdateenv.c (__feupdateenv): Use
libm_hidden_def.
* sysdeps/arm/feupdateenv.c (feupdateenv): Rename to __feupdateenv
and define as weak alias of __feupdateenv.  Use libm_hidden_weak.
* sysdeps/hppa/fpu/feupdateenv.c (feupdateenv): Likewise.
* sysdeps/i386/fpu/feupdateenv.c (__feupdateenv): Use
libm_hidden_def.
* sysdeps/ia64/fpu/feupdateenv.c (feupdateenv): Rename to
__feupdateenv and define as weak alias of __feupdateenv.  Use
libm_hidden_weak.
* sysdeps/m68k/fpu/feupdateenv.c (__feupdateenv): Use
libm_hidden_def.
* sysdeps/mips/fpu/feupdateenv.c (feupdateenv): Rename to
__feupdateenv and define as weak alias of __feupdateenv.  Use
libm_hidden_weak.
* sysdeps/powerpc/fpu/feupdateenv.c (__feupdateenv): Use
libm_hidden_def.
* sysdeps/powerpc/nofpu/feupdateenv.c (__feupdateenv): Likewise.
* sysdeps/powerpc/powerpc32/e500/nofpu/feupdateenv.c
(__feupdateenv): Likewise.
* sysdeps/s390/fpu/feupdateenv.c (feupdateenv): Rename to
__feupdateenv and define as weak alias of __feupdateenv.  Use
libm_hidden_weak.
* sysdeps/sh/sh4/fpu/feupdateenv.c (feupdateenv): Likewise.
* sysdeps/sparc/fpu/feupdateenv.c (__feupdateenv): Use
libm_hidden_def.
* sysdeps/tile/math_private.h (__feupdateenv): New inline
function.
* sysdeps/x86_64/fpu/feupdateenv.c (__feupdateenv): Use
libm_hidden_def.
* sysdeps/generic/math_private.h (default_libc_feupdateenv): Call
__feupdateenv instead of feupdateenv.
(default_libc_feupdateenv_test): Likewise.
(libc_feresetround_ctx): Likewise.

9 years agomips: Fix __libc_pread prototype
Adhemerval Zanella [Wed, 7 Jan 2015 18:26:26 +0000 (16:26 -0200)]
mips: Fix __libc_pread prototype

This patch fixes the __libc_pread prototype change from
14bb4e57c094849228ad8524693ab9432c38396c.

9 years agoposix/regcomp: initialize union structure tag to avoid warning
Chris Metcalf [Wed, 7 Jan 2015 17:29:26 +0000 (12:29 -0500)]
posix/regcomp: initialize union structure tag to avoid warning

We see some surprising warnings on tilegx with gcc 4.8.2:

In file included from regex.c:66:0:
regcomp.c: In function â€˜parse_expression’:
regcomp.c:2849:15: error: â€˜end_elem’ may be used uninitialized in this
function [-Werror=maybe-uninitialized]
       else if (br_elem->type == COLL_SYM)
               ^
regcomp.c:3109:34: note: â€˜end_elem’ was declared here
       bracket_elem_t start_elem, end_elem;
                                  ^
regcomp.c:3109:22: error: â€˜start_elem’ may be used uninitialized in
this function [-Werror=maybe-uninitialized]
       bracket_elem_t start_elem, end_elem;
                      ^

These warnings are not seen on x86, and in fact if I compile the
preprocessed tile sources with the x86 gcc 4.8.2, I don't see the
warnings.  I do see eqiuvalent warnings if I compile the
x86-preprocessed source code with tilegx gcc 4.8.2.

The fix here is to initialize the union type field appropriately in
a couple of places where we pass a union pointer to a subroutine that
"knows" what type the union is.  Setting the type explicitly seems like
a more robust way to manage such a data structure in any case.

9 years agoAArch64: Optimized implementations of strcpy and stpcpy.
Richard Earnshaw [Wed, 7 Jan 2015 11:31:10 +0000 (11:31 +0000)]
AArch64: Optimized implementations of strcpy and stpcpy.

9 years agoAArch64 optimized implementation of strrchr.
Richard Earnshaw [Wed, 7 Jan 2015 11:26:13 +0000 (11:26 +0000)]
AArch64 optimized implementation of strrchr.

9 years agoFix typo in ChangeLog
Siddhesh Poyarekar [Wed, 7 Jan 2015 10:45:24 +0000 (16:15 +0530)]
Fix typo in ChangeLog

9 years agosetenv fix memory leak when setting large, duplicate string (BZ #17658)
Eric Biggers [Wed, 7 Jan 2015 06:40:52 +0000 (12:10 +0530)]
setenv fix memory leak when setting large, duplicate string (BZ #17658)

glibc maintains a binary tree of environment strings it malloc()ed
itself.  However, it's possible for it to malloc() a string, then find
that an identical string is already in the tree.  In this case, the
memory is leaked and is not freed if the application later calls
__libc_freeres().  Fix this by freeing 'new_value' when it's unneeded.

Test case:
#include <stdlib.h>
#include <string.h>

int main()
{
char *p = calloc(100000, 1);
memset(p, 'A', 99999);
setenv("TESTVAR", p, 1);
setenv("TESTVAR", p, 1);
free(p);
}

Leak that was reported by valgrind:
100,008 bytes in 1 blocks are definitely lost in loss record 1 of 1
   at 0x4C29F90: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x4E6B3D4: __add_to_environ (setenv.c:176)
   by 0x4C31B8F: setenv (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x400642: main (in /mnt/tmpfs/a.out)

9 years agoFix incorrect mount table entry parsing in __getmntent_r
Vladimir A. Nazarenko [Wed, 7 Jan 2015 03:19:44 +0000 (19:19 -0800)]
Fix incorrect mount table entry parsing in __getmntent_r

When mount entry contains only four fields and have more then one space or
tab at the and, mp.mnt_freq and mp.mnt_passno will be set to some specific
values as side effect from parsing of previus mount entry. It is because
sscanf(""," %d %d ", &a, &b) returns -1, but this case is unprocessed.
Values of mp.mnt_freq and  mp.mnt_passno stays unchanged. This patch is
attempt to fix described issue by removing trailing tabs and spaces.

9 years agoFix libm fesetround namespace (bug 17748).
Joseph Myers [Wed, 7 Jan 2015 00:41:23 +0000 (00:41 +0000)]
Fix libm fesetround namespace (bug 17748).

Continuing the fixes for C90 libm functions calling C99 fe* functions,
this patch fixes the case of fesetround by making it a weak alias of
__fesetround and making the affected code call __fesetround.  An
existing __fesetround function in fenv_libc.h for powerpc is renamed
to __fesetround_inline.

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by the patch).  Also tested for ARM
(soft-float) that fesetround failures disappear from the linknamespace
test results (feupdateenv remains to be addressed to complete fixing
bug 17748).

[BZ #17748]
* include/fenv.h (__fesetround): Declare.  Use libm_hidden_proto.
* math/fesetround.c (fesetround): Rename to __fesetround and
define as weak alias of __fesetround.  Use libm_hidden_weak.
* sysdeps/aarch64/fpu/fesetround.c (fesetround): Likewise.
* sysdeps/alpha/fpu/fesetround.c (fesetround): Likewise.
* sysdeps/arm/fesetround.c (fesetround): Likewise.
* sysdeps/hppa/fpu/fesetround.c (fesetround): Likewise.
* sysdeps/i386/fpu/fesetround.c (fesetround): Likewise.
* sysdeps/ia64/fpu/fesetround.c (fesetround): Likewise.
* sysdeps/m68k/fpu/fesetround.c (fesetround): Likewise.
* sysdeps/mips/fpu/fesetround.c (fesetround): Likewise.
* sysdeps/powerpc/fpu/fenv_libc.h (__fesetround): Rename to
__fesetround_inline.
* sysdeps/powerpc/fpu/fenv_private.h (libc_fesetround_ppc): Call
__fesetround_inline instead of __fesetround.
* sysdeps/powerpc/fpu/fesetround.c (fesetround): Rename to
__fesetround and define as weak alias of __fesetround.  Use
libm_hidden_weak.  Call __fesetround_inline instead of
__fesetround.
* sysdeps/powerpc/nofpu/fesetround.c (fesetround): Rename to
__fesetround and define as weak alias of __fesetround.  Use
libm_hidden_weak.
* sysdeps/powerpc/powerpc32/e500/nofpu/fesetround.c (fesetround):
Likewise.
* sysdeps/s390/fpu/fesetround.c (fesetround): Likewise.
* sysdeps/sh/sh4/fpu/fesetround.c (fesetround): Likewise.
* sysdeps/sparc/fpu/fesetround.c (fesetround): Likewise.
* sysdeps/tile/math_private.h (__fesetround): New inline function.
* sysdeps/x86_64/fpu/fesetround.c (fesetround): Rename to
__fesetround and define as weak alias of __fesetround.  Use
libm_hidden_weak.
* sysdeps/generic/math_private.h (default_libc_fesetround): Call
__fesetround instead of fesetround.
(default_libc_feholdexcept_setround): Likewise.
(libc_feholdsetround_ctx): Likewise.
(libc_feholdsetround_noex_ctx): Likewise.

9 years agoFix libm fesetenv namespace (bug 17748).
Joseph Myers [Tue, 6 Jan 2015 23:36:20 +0000 (23:36 +0000)]
Fix libm fesetenv namespace (bug 17748).

Continuing the fixes for C90 libm functions calling C99 fe* functions,
this patch fixes the case of fesetenv by making it a weak alias of
__fesetenv and making the affected code (including various copies of
feupdateenv which also gets called from C90 functions) call
__fesetenv.

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by the patch).  Also tested for ARM
(soft-float) that fesetenv failures disappear from the linknamespace
test results (fsetround and feupdateenv remain to be addressed to
complete fixing bug 17748).

[BZ #17748]
* include/fenv.h (__fesetenv): Use libm_hidden_proto.
* math/fesetenv.c (__fesetenv): Use libm_hidden_def.
* sysdeps/aarch64/fpu/fesetenv.c (fesetenv): Rename to __fesetenv
and define as weak alias of __fesetenv.  Use libm_hidden_weak.
* sysdeps/alpha/fpu/fesetenv.c (__fesetenv): Use libm_hidden_def.
* sysdeps/arm/fesetenv.c (fesetenv): Rename to __fesetenv and
define as weak alias of __fesetenv.  Use libm_hidden_weak.
* sysdeps/hppa/fpu/fesetenv.c (fesetenv): Likewise.
* sysdeps/i386/fpu/fesetenv.c (__fesetenv): Use libm_hidden_def.
* sysdeps/ia64/fpu/fesetenv.c (fesetenv): Rename to __fesetenv and
define as weak alias of __fesetenv.  Use libm_hidden_weak.
* sysdeps/m68k/fpu/fesetenv.c (__fesetenv): Use libm_hidden_def.
* sysdeps/mips/fpu/fesetenv.c (fesetenv): Rename to __fesetenv and
define as weak alias of __fesetenv.  Use libm_hidden_weak.
* sysdeps/powerpc/fpu/fesetenv.c (__fesetenv): Use
libm_hidden_def.
* sysdeps/powerpc/nofpu/fesetenv.c (__fesetenv): Likewise.
* sysdeps/powerpc/powerpc32/e500/nofpu/fesetenv.c (__fesetenv):
Likewise.
* sysdeps/s390/fpu/fesetenv.c (fesetenv): Rename to __fesetenv and
define as weak alias of __fesetenv.  Use libm_hidden_weak.
* sysdeps/sh/sh4/fpu/fesetenv.c (fesetenv): Likewise.
* sysdeps/sparc/fpu/fesetenv.c (__fesetenv): Use libm_hidden_def.
* sysdeps/tile/math_private.h (__fesetenv): New inline function.
* sysdeps/x86_64/fpu/fesetenv.c (fesetenv): Rename to __fesetenv
and define as weak alias of __fesetenv.  Use libm_hidden_weak.
* sysdeps/generic/math_private.h (default_libc_fesetenv): Use
__fesetenv instead of fesetenv.
(libc_feresetround_noex_ctx): Likewise.
* sysdeps/alpha/fpu/feupdateenv.c (__feupdateenv): Likewise.
* sysdeps/hppa/fpu/feupdateenv.c (feupdateenv): Likewise.
* sysdeps/i386/fpu/feupdateenv.c (__feupdateenv): Likewise.
* sysdeps/ia64/fpu/feupdateenv.c (feupdateenv): Likewise.
* sysdeps/m68k/fpu/feupdateenv.c (__feupdateenv): Likewise.
* sysdeps/mips/fpu/feupdateenv.c (feupdateenv): Likewise.
* sysdeps/powerpc/nofpu/feupdateenv.c (__feupdateenv): Likewise.
* sysdeps/powerpc/powerpc32/e500/nofpu/feupdateenv.c
(__feupdateenv): Likewise.
* sysdeps/s390/fpu/feupdateenv.c (feupdateenv): Likewise.
* sysdeps/sh/sh4/fpu/feupdateenv.c (feupdateenv): Likewise.
* sysdeps/sparc/fpu/feupdateenv.c (__feupdateenv): Likewise.
* sysdeps/x86_64/fpu/feupdateenv.c (__feupdateenv): Likewise.

9 years agoRevert "Suppress warning in string/tester.c for gcc 4.9"
Ondřej Bílka [Tue, 6 Jan 2015 17:43:28 +0000 (18:43 +0100)]
Revert "Suppress warning in string/tester.c for gcc 4.9"

This reverts commit 9300797ee93422a87f443d5ba7e1411167e7a837.

9 years agoMention bug fix for BZ #17806
H.J. Lu [Tue, 6 Jan 2015 17:32:41 +0000 (09:32 -0800)]
Mention bug fix for BZ #17806

9 years agoresolv: fix rotate option
Aurelien Jarno [Tue, 6 Jan 2015 16:50:23 +0000 (08:50 -0800)]
resolv: fix rotate option

The rotate option doesn't work correctly, and only send the query to the
same server (the second in the list). The rotation code in itself is not
broken, but the nsaddrs structure is reinitialized each time at the
beginning of __libc_res_nsend unless RES_STAYOPEN is enabled.

This is due to a call to __res_iclose from the end of __libc_res_nsend
when answers from the name server have been received. This function
closes all the sockets, but doesn't free the addresses (it can do that,
but in that case the second argument is false).

This patch change the code of __res_iclose to clear statp->_u._ext.nsinit
 only when the addresses are actually freed.

* resolv/res_init.c (__res_iclose): Only clear nsinit if the
addresses have been freed.

9 years agoresolv: improve comments about nserv and nservall
Aurelien Jarno [Tue, 6 Jan 2015 16:33:43 +0000 (08:33 -0800)]
resolv: improve comments about nserv and nservall

The current comments concerning nserv and nservall are not really clear
and lead to confusion when reviewing an already complex code. Improve
them, there real meaning have been confirmed by a code analysis.

* resolv/res_init.c (__res_vinit): Improve comments about nserv
and nservall.

9 years agoSuppress warning in string/tester.c for gcc 4.9
Ondřej Bílka [Tue, 6 Jan 2015 16:43:09 +0000 (17:43 +0100)]
Suppress warning in string/tester.c for gcc 4.9

9 years agoAdd changelog
Ondřej Bílka [Tue, 6 Jan 2015 16:35:24 +0000 (17:35 +0100)]
Add changelog

9 years agoClean up check_pf allocation pattern. addresses
Ondřej Bílka [Tue, 6 Jan 2015 16:26:44 +0000 (17:26 +0100)]
Clean up check_pf allocation pattern. addresses

We simplify allocation strategy there so instead of using temporary linked list
and then copying entries to output array we keep them in resizable
array.

9 years agoFunction declaration cleanup
Adhemerval Zanella [Tue, 6 Jan 2015 16:22:41 +0000 (08:22 -0800)]
Function declaration cleanup

This patch changes the some function declaration from K&R style to
default ANSI C.

* nptl/pthread_cancel.c (pthread_cancel): Use ANSI prototype.
* nptl/pthread_cond_timedwait.c (__pthread_cond_timedwait): Likewise.
* nptl/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
* nptl/pthread_exit.c (__pthread_exit): Likewise.
* nptl/pthread_join.c (pthread_join): Likewise.
* nptl/pthread_timedjoin.c (pthread_timedjoin_np): Likewise.
* sysdeps/posix/waitid.c (__waitid): Likewise.
* sysdeps/unix/sysv/linux/arm/pread.c (__libc_pread): Likewise.
* sysdeps/unix/sysv/linux/arm/pread64.c (__libc_pread64): Likewise.
* sysdeps/unix/sysv/linux/arm/pwrite.c (__libc_pwrite): Likewise.
* sysdeps/unix/sysv/linux/arm/pwrite64.c (__libc_pwrite64): Likewise.
* sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c (__libc_pread):
Likewise.
* sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c
(__libc_pread64): Likewise.
* sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c
(__libc_pwrite): Likewise.
* sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c
(__libc_pwrite64): Likewsie.
* sysdeps/unix/sysv/linux/mips/pread.c (__libc_pread): Likewise.
* sysdeps/unix/sysv/linux/mips/pread64.c (__libc_pread64): Likewise.
* sysdeps/unix/sysv/linux/mips/pwrite.c (__libc_pwrite): Likewise.
* sysdeps/unix/sysv/linux/mips/pwrite64.c (__libc_pwrite64): Likewise.
* sysdeps/unix/sysv/linux/msgrcv.c (__libc_msgrcv): Likewise.
* sysdeps/unix/sysv/linux/msgsnd.c (__libc_msgsnd): Likewise.
* sysdeps/unix/sysv/linux/openat.c (OPENAT_NOT_CANCEL): Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c (__libc_pread):
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c
(__libc_pread64): Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c (__libc_pwrite):
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c
(__libc_pwrite64): Likewise.
* sysdeps/unix/sysv/linux/pread.c (__libc_pread): Likewise.
* sysdeps/unix/sysv/linux/pread64.c (__libc_pread64): Likewise.
* sysdeps/unix/sysv/linux/preadv.c (PREADV): Likewise.
* sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): Likewise.
* sysdeps/unix/sysv/linux/pwrite.c (__libc_pwrite): Likewise.
* sysdeps/unix/sysv/linux/pwrite64.c (__libc_pwrite64): Likewise.
* sysdeps/unix/sysv/linux/pwritev.c (__libc_pwritev): Likewise.
* sysdeps/unix/sysv/linux/sh/pread.c (__libc_pread): Likewise.
* sysdeps/unix/sysv/linux/sh/pread64.c (__libc_pread64): Likewise.
* sysdeps/unix/sysv/linux/sh/pwrite.c (__libc_pwrite): Likewise.
* sysdeps/unix/sysv/linux/sh/pwrite64.c (__libc_write64): Likewise.
* sysdeps/unix/sysv/linux/sigsuspend.c (__sigsuspend): Likewise.
* sysdeps/unix/sysv/linux/sigtimedwait.c (__sigtimedwait): Likewise.
* sysdeps/unix/sysv/linux/sigwait.c (__sigwait): Likewise.
* sysdeps/unix/sysv/linux/sigwaitinfo.c (__sigwaitinfo): Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c (__libc_msgrcv):
Likewise.

9 years agoRemove duplicated -frounding-math
Andrew Senkevich [Tue, 6 Jan 2015 14:29:23 +0000 (06:29 -0800)]
Remove duplicated -frounding-math

No need to add -frounding-math.  math-flags in Makeconfig includes
-frounding-math.

* math/Makefile (CFLAGS-test-float.c): Remove -frounding-math.
(CFLAGS-test-double.c): Likewise.
(CFLAGS-test-ldouble.c): Likewise.
(CPPFLAGS-test-ifloat.c): Likewise.
(CPPFLAGS-test-idouble.c): Likewise.
(CPPFLAGS-test-ildoubl.c): Likewise.
(CFLAGS-test-test-fenv.c): Remove variable.
(CFLAGS-test-misc.c): Likewise.

9 years agoDefine CLOCKS_PER_SEC type to the type clock_t
H.J. Lu [Tue, 6 Jan 2015 12:59:13 +0000 (04:59 -0800)]
Define CLOCKS_PER_SEC type to the type clock_t

C99 specifies that CLOCKS_PER_SEC is an expression with the type clock_t.
This patch adds a generic <bits/time2.h> to define CLOCKS_PER_SEC and
provides the Linux/x86-64 version of <bits/time2.h> to support x32.

[BZ #17797]
* bits/time.h (CLOCKS_PER_SEC): Changed to ((clock_t) 1000000).
* sysdeps/unix/sysv/linux/bits/time.h (CLOCKS_PER_SEC): Likewise.
* sysdeps/unix/sysv/linux/clock.c (clock): _Static_assert
CLOCKS_PER_SEC == 1000000.
* time/clocktest.c (main): Replace %ld with %jd and cast to
intmax_t.

9 years agoARM: Consolidate with generic unwinder wrapper code
Roland McGrath [Mon, 5 Jan 2015 22:01:49 +0000 (14:01 -0800)]
ARM: Consolidate with generic unwinder wrapper code

9 years agoMerge branch 'master' of ssh://sourceware.org/git/glibc
Steve Ellcey [Mon, 5 Jan 2015 23:07:26 +0000 (15:07 -0800)]
Merge branch 'master' of ssh://sourceware.org/git/glibc

9 years ago2015-01-05 Steve Ellcey <sellcey@imgtec.com>
Steve Ellcey [Mon, 5 Jan 2015 23:06:42 +0000 (15:06 -0800)]
2015-01-05  Steve Ellcey  <sellcey@imgtec.com>

* sysdeps/mips/memset.S (memset): Modify for mips32r6/mips64r6
to avoid using stl/str to align destination.

9 years agoFix libm feholdexcept namespace (bug 17748).
Joseph Myers [Mon, 5 Jan 2015 23:06:14 +0000 (23:06 +0000)]
Fix libm feholdexcept namespace (bug 17748).

Continuing the fixes for C90 libm functions calling C99 fe* functions,
this patch fixes the case of feholdexcept by making it a weak alias of
__feholdexcept and making the affected code call __feholdexcept.

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by the patch).  Also tested for ARM
(soft-float) that feholdexcept failures disappear from the
linknamespace test failures (fesetenv, fsetround and feupdateenv
remain to be addressed to complete fixing bug 17748).

[BZ #17748]
* include/fenv.h (__feholdexcept): Declare.  Use
libm_hidden_proto.
* math/feholdexcpt.c (feholdexcept): Rename to __feholdexcept and
define as weak alias of __feholdexcept.  Use libm_hidden_weak.
* sysdeps/aarch64/fpu/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/alpha/fpu/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/arm/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/hppa/fpu/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/i386/fpu/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/ia64/fpu/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/m68k/fpu/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/mips/fpu/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/powerpc/fpu/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/powerpc/nofpu/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/powerpc/powerpc32/e500/nofpu/feholdexcpt.c
(feholdexcept): Likewise.
* sysdeps/s390/fpu/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/sh/sh4/fpu/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/sparc/fpu/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/x86_64/fpu/feholdexcpt.c (feholdexcept): Likewise.
* sysdeps/generic/math_private.h (default_libc_feholdexcept): Use
__feholdexcept instead of feholdexcept.
(default_libc_feholdexcept_setround): Likewise.

9 years ago2015-01-05 Steve Ellcey <sellcey@imgtec.com>
Steve Ellcey [Mon, 5 Jan 2015 21:28:42 +0000 (13:28 -0800)]
2015-01-05  Steve Ellcey  <sellcey@imgtec.com>

* sysdeps/mips/memcpy.S: Add support for mips32r6/mips64r6.

9 years agoFix MIPS n64 posix_fadvise namespace (bug 17796).
Joseph Myers [Mon, 5 Jan 2015 18:02:31 +0000 (18:02 +0000)]
Fix MIPS n64 posix_fadvise namespace (bug 17796).

sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise.c defines
posix_fadvise64 as a strong alias for posix_fadvise (for
!SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3) - i.e., for static
linking, which is the case when this matters), but it should be a weak
alias.  This patch makes it a weak alias.

Tested for MIPS that this fixes the observed linknamespace test
failures.

[BZ #17796]
* sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise.c
[!SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)] (posix_fadvise64):
Define as weak alias not strong alias.

9 years ago2015-01-05 Steve Ellcey <sellcey@imgtec.com>
Steve Ellcey [Mon, 5 Jan 2015 17:39:33 +0000 (09:39 -0800)]
2015-01-05  Steve Ellcey  <sellcey@imgtec.com>

* sysdeps/mips/dl-machine.h (elf_machine_load_address): Replace
bltzal with addiupc.
(RTLD_START): Ditto.

9 years agotile: check error properly for vDSO calls
Chris Metcalf [Mon, 5 Jan 2015 17:06:15 +0000 (12:06 -0500)]
tile: check error properly for vDSO calls

The tile vDSO vsyscalls were not properly setting the error value.
Conventionally, tile returns the same "non-negative success, negative
errno" value that x86 does (in r0), but it also returns "zero or positive
errno" in r1, which is what the regular syscall code checks.  This change
uses that convention for the vDSO calls as well.

9 years agolround: provide cast for wordsize-64 version if needed
Chris Metcalf [Mon, 5 Jan 2015 16:59:32 +0000 (11:59 -0500)]
lround: provide cast for wordsize-64 version if needed

Platforms with 64-bit registers where 32-bit values need to have the
high 32 bits set in a particular way need to have an explicit cast
when using the 64-bit sysdeps/ieee754/dbl-64/wordsize-64 version
of llround() as lround().  This includes tilegx32, and likely MIPS.
x32 does not need this, and AArch64 ILP32 will not either.  Require
it to be specified in sysdep.h to be explicit.

9 years agoFix ARM posix_fadvise64 namespace (bug 17793).
Joseph Myers [Mon, 5 Jan 2015 16:05:34 +0000 (16:05 +0000)]
Fix ARM posix_fadvise64 namespace (bug 17793).

ARM posix_fadvise calls __posix_fadvise64_l64, to which
posix_fadvise64 is a strong alias, but posix_fadvise is a POSIX
function and posix_fadvise64 isn't.  This patch changes it into a weak
alias.

Tested for ARM that this fixes the corresponding linknamespace test
failures.

[BZ #17793]
* sysdeps/unix/sysv/linux/arm/posix_fadvise64.c (posix_fadvise64):
Define as weak alias not strong alias.

9 years agoFix isblank / isascii / toascii namespace (bug 17635).
Joseph Myers [Mon, 5 Jan 2015 15:06:57 +0000 (15:06 +0000)]
Fix isblank / isascii / toascii namespace (bug 17635).

Use of isblank brings in isascii and toascii, but isblank is a C99
function and the other two aren't; similarly, isascii and toascii are
UNIX98 functions and bring in isblank, which isn't.  (Not a
conformance issue because of the is* and to* reservation, but still
contrary to glibc practice.)  This patch fixes this by splitting
isblank out of ctype-extn.c to a separate ctype-c99.c.  isblank_l is
also moved to a separate file, ctype-c99_l.c (non-XSI POSIX.1-2008 has
isblank_l, but isascii / toascii are marked OB XSI).  (In principle
all these functions could go in separate files - that's optimal for
static linking - but they are also all very small, and splitting them
all out is not needed to fix the present bug.)

Tested for x86_64 (testsuite, and that installed stripped shared
libraries are unchanged by the patch - the ordering in which new and
existing sources are listed in ctype/Makefile is arranged so functions
go in the same order so that this comparison works).

[BZ #17635]
* ctype/ctype-c99.c: New file.  isblank implementation moved from
...
* ctype/ctype-extn.c: ... here.
(__isblank_l): Move to ...
* ctype/ctype-c99_l.c: ... here.  New file.
* ctype/Makefile (routines): Add ctype-c99 and ctype-c99_l.
* conform/Makefile (test-xfail-ISO99/ctype.h/linknamespace):
Remove variable.
(test-xfail-ISO11/ctype.h/linknamespace): Likewise.
(test-xfail-XPG3/ctype.h/linknamespace): Likewise.
(test-xfail-XPG4/ctype.h/linknamespace): Likewise.
(test-xfail-UNIX98/ctype.h/linknamespace): Likewise.
(test-xfail-POSIX2008/ctype.h/linknamespace): Likewise.

9 years agoFix wordsize-64 posix_fadvise64, posix_fallocate64 namespace (bug 17777).
Joseph Myers [Mon, 5 Jan 2015 14:37:07 +0000 (14:37 +0000)]
Fix wordsize-64 posix_fadvise64, posix_fallocate64 namespace (bug 17777).

On systems using sysdeps/unix/sysv/linux/wordsize-64, posix_fadvise64
and posix_fallocate64 (non-POSIX) are strong aliases for posix_fadvise
and posix_fallocate (POSIX), meaning references to the latter wrongly
bring in definitions of the former.  They should be weak aliases; this
patch makes them so.

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

[BZ #17777]
* sysdeps/unix/sysv/linux/wordsize-64/posix_fadvise.c
(posix_fadvise64): Define as weak alias not strong alias.
* sysdeps/unix/sysv/linux/wordsize-64/posix_fallocate.c
(posix_fallocate64): Likewise.
* conform/Makefile (test-xfail-XOPEN2K/fcntl.h/linknamespace):
Remove variable.
(test-xfail-XOPEN2K/mqueue.h/linknamespace): Likewise.
(test-xfail-POSIX2008/fcntl.h/linknamespace): Likewise.
(test-xfail-POSIX2008/mqueue.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/fcntl.h/linknamespace): Likewise.
(test-xfail-XOPEN2K8/mqueue.h/linknamespace): Likewise.

9 years agoFix MIPS variable PAGE_SIZE bug (16191)
Matthew Fortune [Mon, 5 Jan 2015 13:34:41 +0000 (13:34 +0000)]
Fix MIPS variable PAGE_SIZE bug (16191)

MIPS supports a variable page size but glibc defines a constant.
This causes at least two glibc tests to fail when the page size
does not match the hard-coded size:

inet/test-ifaddrs
inet/test_ifindex

[BZ #16191]
* NEWS: Mention bug fix.
* sysdeps/unix/sysv/linux/mips/sys/user.h (PAGE_SHIFT): Remove.
(PAGE_SIZE, PAGE_MASK, NBPG, UPAGES): Likewise.
(HOST_TEXT_START_ADDR, HOST_DATA_START_ADDR): Likewise.
(HOST_STACK_END_ADDR): Likewise.

9 years agoFix libm fegetround namespace (bug 17748).
Joseph Myers [Fri, 2 Jan 2015 20:44:42 +0000 (20:44 +0000)]
Fix libm fegetround namespace (bug 17748).

Continuing the fixes for C90 libm functions calling C99 fe* functions,
this patch fixes the case of fegetround by making it a weak alias of
__fegetround and making the affected code call __fegetround.

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by the patch).  Also tested for ARM
(soft-float) that fegetround failures disappear from the linknamespace
test failures (feholdexcept, fesetenv, fesetround and feupdateenv
remain to be addressed before bug 17748 is fully fixed, although this
patch may suffice to fix the failures in some cases, when the libc_fe*
functions are implemented but there is no architecture-specific sqrt
implementation in use so there were failures from fegetround used by
sqrt but no other such failures).

[BZ #17748]
* include/fenv.h (__fegetround): Declare.  Use libm_hidden_proto.
* math/fegetround.c (fegetround): Rename to __fegetround and
define as weak alias of __fegetround.  Use libm_hidden_weak.
* sysdeps/aarch64/fpu/fegetround.c (fegetround): Likewise.
* sysdeps/alpha/fpu/fegetround.c (fegetround): Likewise.
* sysdeps/arm/fegetround.c (fegetround): Likewise.
* sysdeps/hppa/fpu/fegetround.c (fegetround): Likewise.
* sysdeps/i386/fpu/fegetround.c (fegetround): Likewise.
* sysdeps/ia64/fpu/fegetround.c (fegetround): Likewise.
* sysdeps/m68k/fpu/fegetround.c (fegetround): Likewise.
* sysdeps/mips/fpu/fegetround.c (fegetround): Likewise.
* sysdeps/powerpc/fpu/fegetround.c (fegetround): Likewise.
Undefine after rather than before function definition; use
parentheses around function name in definition.
(__fegetround): Also undefine macro after function definition.
* sysdeps/powerpc/nofpu/fegetround.c (fegetround): Rename to
__fegetround and define as weak alias of __fegetround.  Use
libm_hidden_weak.  Do not undefine as macro.
* sysdeps/powerpc/powerpc32/e500/nofpu/fegetround.c (fegetround):
Likewise.
* sysdeps/s390/fpu/fegetround.c (fegetround): Rename to
__fegetround and define as weak alias of __fegetround.  Use
libm_hidden_weak.
* sysdeps/sh/sh4/fpu/fegetround.c (fegetround): Likewise.
* sysdeps/sparc/fpu/fegetround.c (fegetround): Likewise.
* sysdeps/tile/math_private.h (__fegetround): New inline function.
* sysdeps/x86_64/fpu/fegetround.c (fegetround): Rename to
__fegetround and define as weak alias of __fegetround.  Use
libm_hidden_weak.
* sysdeps/ieee754/dbl-64/e_sqrt.c (__ieee754_sqrt): Use
__fegetround instead of fegetround.

9 years agoFix MIPS TIOCSER_TEMT namespace (bug 17782).
Joseph Myers [Fri, 2 Jan 2015 18:31:41 +0000 (18:31 +0000)]
Fix MIPS TIOCSER_TEMT namespace (bug 17782).

sysdeps/unix/sysv/linux/mips/bits/termios.h defines TIOCSER_TEMT
unconditionally, but it's in the user's namespace.  This patch
conditions it on __USE_MISC, as on powerpc.  I've filed bug 17783 for
the residual inconsistency in conditions on this macro (sparc defines
it for __USE_GNU only).

[BZ #17782]
* sysdeps/unix/sysv/linux/mips/bits/termios.h (TIOCSER_TEMT):
Condition macro definition on [__USE_MISC].

9 years agoFix MIPS sa_flags type (bug 17781).
Joseph Myers [Fri, 2 Jan 2015 18:30:32 +0000 (18:30 +0000)]
Fix MIPS sa_flags type (bug 17781).

sysdeps/unix/sysv/linux/mips/bits/sigaction.h gives sa_flags type
unsigned int, but POSIX says it should be signed int.  This patch
gives it the correct type (the layout is unchanged, so there are no
ABI issues involved).

[BZ #17781]
* sysdeps/unix/sysv/linux/mips/bits/sigaction.h
(struct sigaction): Change type of sa_flags field to int.

9 years agoFix MIPS bits/fcntl.h namespace (bug 17780).
Joseph Myers [Fri, 2 Jan 2015 18:29:24 +0000 (18:29 +0000)]
Fix MIPS bits/fcntl.h namespace (bug 17780).

sysdeps/unix/sysv/linux/mips/bits/fcntl.h has a structure field called
pad, which is in the user's namespace.  This patch changes it to
__glibc_reserved0.

[BZ #17780]
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h (struct flock)
[!__USE_FILE_OFFSET64 && _MIPS_SIM != _ABI64]: Rename pad field to
__glibc_reserved0.

9 years agoUse single year in copyright notice in banner in ntpl/version.c.
Joseph Myers [Fri, 2 Jan 2015 17:45:48 +0000 (17:45 +0000)]
Use single year in copyright notice in banner in ntpl/version.c.

* nptl/version.c (banner): Use single year in copyright notice.

9 years agoUpdate copyright dates not handled by scripts/update-copyrights.
Joseph Myers [Fri, 2 Jan 2015 16:53:06 +0000 (16:53 +0000)]
Update copyright dates not handled by scripts/update-copyrights.

I've updated copyright dates in glibc for 2015.  This is the patch for
the changes not generated by scripts/update-copyrights and subsequent
build / regeneration of generated files.  Apart from the files updated
last time (of which sotruss.ksh had moved to sotruss.sh during the
year) this also updates nptl/version.c (missed from 2006 until
October) and sysdeps/unix/sysv/linux/lddlibc4.c (missed since 2009).

* 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.

9 years agoARM: Remove configure check for binutils 2.21 for ARMv7
Will Newton [Fri, 2 Jan 2015 12:42:13 +0000 (12:42 +0000)]
ARM: Remove configure check for binutils 2.21 for ARMv7

The default required version of binutils has been increased to 2.22
making this check redundant.

ChangeLog:

2015-01-02  Will Newton  <will.newton@linaro.org>

* sysdeps/arm/armv7/configure: Removed.
* sysdeps/arm/armv7/configure.ac: Likewise.

9 years agoUpdate copyright dates with scripts/update-copyrights.
Joseph Myers [Fri, 2 Jan 2015 16:28:19 +0000 (16:28 +0000)]
Update copyright dates with scripts/update-copyrights.

9 years agoRemove uses of sprintf in gen-posix-conf-vars.awk
Siddhesh Poyarekar [Fri, 2 Jan 2015 05:46:35 +0000 (11:16 +0530)]
Remove uses of sprintf in gen-posix-conf-vars.awk

Simply some code by replacing sprintf in the awk script.

9 years agoFix libm fegetenv namespace (bug 17748).
Joseph Myers [Wed, 31 Dec 2014 22:07:52 +0000 (22:07 +0000)]
Fix libm fegetenv namespace (bug 17748).

Some C90 libm functions call fegetenv via libc_feholdsetround*
functions in math_private.h.  This patch makes them call __fegetenv
instead, making fegetenv into a weak alias for __fegetenv as needed.

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by the patch).  Also tested for ARM
(soft-float) that fegetenv failures disappear from the linknamespace
test failures (however, similar fixes will also be needed for
fegetround, feholdexcept, fesetenv, fesetround and feupdateenv before
this set of namespace issues covered by bug 17748 is fully fixed and
those linknamespace tests start passing).

[BZ #17748]
* include/fenv.h (__fegetenv): Use libm_hidden_proto.
* math/fegetenv.c (__fegetenv): Use libm_hidden_def.
* sysdeps/aarch64/fpu/fegetenv.c (fegetenv): Rename to __fegetenv
and define as weak alias of __fegetenv.  Use libm_hidden_weak.
* sysdeps/alpha/fpu/fegetenv.c (__fegetenv): Use libm_hidden_def.
* sysdeps/arm/fegetenv.c (fegetenv): Rename to __fegetenv and
define as weak alias of __fegetenv.  Use libm_hidden_weak.
* sysdeps/hppa/fpu/fegetenv.c (fegetenv): Likewise.
* sysdeps/i386/fpu/fegetenv.c (__fegetenv): Use libm_hidden_def.
* sysdeps/ia64/fpu/fegetenv.c (fegetenv): Rename to __fegetenv and
define as weak alias of __fegetenv.  Use libm_hidden_weak.
* sysdeps/m68k/fpu/fegetenv.c (__fegetenv): Use libm_hidden_def.
* sysdeps/mips/fpu/fegetenv.c (fegetenv): Rename to __fegetenv and
define as weak alias of __fegetenv.  Use libm_hidden_weak.
* sysdeps/powerpc/fpu/fegetenv.c (__fegetenv): Use
libm_hidden_def.
* sysdeps/powerpc/nofpu/fegetenv.c (__fegetenv): Likewise.
* sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c (__fegetenv):
Likewise.
* sysdeps/s390/fpu/fegetenv.c (fegetenv): Rename to __fegetenv and
define as weak alias of __fegetenv.  Use libm_hidden_weak.
* sysdeps/sh/sh4/fpu/fegetenv.c (fegetenv): Likewise.
* sysdeps/sparc/fpu/fegetenv.c (__fegetenv): Use libm_hidden_def.
* sysdeps/tile/math_private.h (__fegetenv): New inline function.
* sysdeps/x86_64/fpu/fegetenv.c (fegetenv): Rename to __fegetenv
and define as weak alias of __fegetenv.  Use libm_hidden_weak.
* sysdeps/generic/math_private.h (libc_feholdsetround_ctx): Use
__fegetenv instead of fegetenv.
(libc_feholdsetround_noex_ctx): Likewise.

9 years agoAdd support for MIPS O32 FPXX and .MIPS.abiflags
Matthew Fortune [Sat, 31 May 2014 23:16:25 +0000 (00:16 +0100)]
Add support for MIPS O32 FPXX and .MIPS.abiflags

* elf/elf.h (PT_MIPS_ABIFLAGS): Define.
(Elf_MIPS_ABIFlags_v0): New structure.
(EF_MIPS_FP64): Define.
(MIPS_AFL_REG_NONE, MIPS_AFL_REG_32, MIPS_AFL_REG_64): Likewise.
(MIPS_AFL_REG_128, MIPS_AFL_ASE_DSP, MIPS_AFL_ASE_DSP64): Likewise.
(MIPS_AFL_ASE_DSPR2, MIPS_AFL_ASE_EVA, MIPS_AFL_ASE_MCU): Likewise.
(MIPS_AFL_ASE_MDMX, MIPS_AFL_ASE_MIPS3D, MIPS_AFL_ASE_MT): Likewise.
(MIPS_AFL_ASE_SMARTMIPS, MIPS_AFL_ASE_VIRT): Likewise.
(MIPS_AFL_ASE_VIRT64, MIPS_AFL_ASE_MSA, MIPS_AFL_ASE_MSA64): Likewise.
(MIPS_AFL_ASE_MIPS16, MIPS_AFL_ASE_MICROMIPS): Likewise.
(MIPS_AFL_ASE_XPA, MIPS_AFL_EXT_XLR, MIPS_AFL_EXT_OCTEON2): Likewise.
(MIPS_AFL_EXT_OCTEONP, MIPS_AFL_EXT_LOONGSON_3A): Likewise.
(MIPS_AFL_EXT_OCTEON, MIPS_AFL_EXT_5900, MIPS_AFL_EXT_4010): Likewise.
(MIPS_AFL_EXT_4100, MIPS_AFL_EXT_3900, MIPS_AFL_EXT_10000): Likewise.
(MIPS_AFL_EXT_SB1, MIPS_AFL_EXT_4111, MIPS_AFL_EXT_4120): Likewise.
(MIPS_AFL_EXT_5400, MIPS_AFL_EXT_5500): Likewise.
(MIPS_AFL_EXT_LOONGSON_2E, MIPS_AFL_EXT_LOONGSON_2F): Likewise.
(Val_GNU_MIPS_ABI_FP_ANY, Val_GNU_MIPS_ABI_FP_DOUBLE): New enum values.
(Val_GNU_MIPS_ABI_FP_SINGLE, Val_GNU_MIPS_ABI_FP_SOFT): Likewise.
(Val_GNU_MIPS_ABI_FP_OLD_64, Val_GNU_MIPS_ABI_FP_XX): Likewise.
(Val_GNU_MIPS_ABI_FP_64, Val_GNU_MIPS_ABI_FP_64A): Likewise.
(Val_GNU_MIPS_ABI_FP_MAX): Likewise.
* sysdeps/mips/Makefile [subdir=elf]: Add tst-abi-interlink,
tst-mode-switch-1, tst-mode-switch-2, tst-mode-switch-3 tests.
* sysdeps/mips/bits/linkmap.h (struct link_map_machine): Add fpmode
field.
* sysdeps/mips/dl-machine.h (elf_machine_matches_host): Reject
EF_MIPS_FP64.
* sysdeps/mips/dl-machine-reject-phdr.h: New file.
* sysdeps/mips/tst-abi-fp32mod.c: Likewise.
* sysdeps/mips/tst-abi-fpxxmod.c: Likewise.
* sysdeps/mips/tst-abi-fpxxomod.c: Likewise.
* sysdeps/mips/tst-abi-fp64mod.c: Likewise.
* sysdeps/mips/tst-abi-fp64amod.c: Likewise.
* sysdeps/mips/tst-abi-interlink.c: Likewise.
* sysdeps/mips/tst-mode-switch-1.c: Likewise.
* sysdeps/mips/tst-mode-switch-2.c: Likewise.
* sysdeps/mips/tst-mode-switch-3.c: Likewise.
* sysdeps/unix/sysv/linux/mips/configure.ac (o32-fpabi): Define to
record the current FP ABI extension.
(mips-mode-switch): Define to show if kernel headers support mode
switching.
* sysdeps/unix/sysv/linux/mips/configure: Regenerate.
* sysdeps/unix/sysv/linux/mips/ldsodefs.h: Increase maximum
supported SYSV ABI version to 3.
* sysdeps/unix/sysv/linux/mips/libc-abis: Add new MIPS_O32_FP64
feature.

9 years agopowerpc: POWER7 strcpy optimization for unaligned strings
Rajalakshmi Srinivasaraghavan [Wed, 31 Dec 2014 19:05:00 +0000 (14:05 -0500)]
powerpc: POWER7 strcpy optimization for unaligned strings

This patch optimizes strcpy for ppc64/power7 for unaligned source or
destination address.  The source or destination address is aligned
to doubleword and data is shifted based on the alignment and
added with the previous loaded data to be written as a doubleword.
For each load, cmpb instruction is used for faster null check.

The word aligned optimization is also removed, since the new unaligned
code path shows better results handling word-aligned strings.

More combination of unaligned inputs is also added in benchtest
to measure the improvement.The new optimization shows 2 to 80% of
performance improvement for longer string though it does not show
big difference on string size less than 16 due to additional checks.

9 years agoClean up powerpc fegetround / __fegetround inlines.
Joseph Myers [Wed, 31 Dec 2014 19:16:34 +0000 (19:16 +0000)]
Clean up powerpc fegetround / __fegetround inlines.

The natural fix for some linknamespace test failures, where C90 libm
functions call C99 <fenv.h> functions, is to make fe* into weak
aliases for __fe* and call __fe* from within libm as needed.

To do this, the __fe* names need to be available for that purpose -
that is, they must not be used for something other than aliases of
fe*.  On powerpc, however, __fegetround is an inline function in
fenv_libc.h, with no corresponding fegetround inline function;
fegetround has an equivalent macro expansion in bits/fenvinline.h, but
that is disabled if __NO_MATH_INLINES (which is defined for building
libm).

I see no need for that disabling; it's not even clear that
__NO_MATH_INLINES should affect <fenv.h>, and the results of
fegetround are completely defined so there is no semantic effect of
that disabling at all outside glibc.  The x86 inline feraiseexcept is
conditioned on __USE_EXTERN_INLINES not __NO_MATH_INLINES (but that's
an inline function rather than a macro).

This patch removes the __NO_MATH_INLINES conditional on that
fegetround macro, so resulting in it being expanded inline inside
glibc.  In turn, this means that direct calls to __fegetround from C99
functions in ldbl-128ibm can be changed to calls to fegetround, so
that nofpu fenv_libc.h files don't need to define __fegetround at all
and, by changing ldbl-128ibm files to use <fenv.h> not <fenv_libc.h>,
non-e500 nofpu no longer needs an fenv_libc.h file.

The other macros in fenvinline.h are left conditional on
__NO_MATH_INLINES, although since the only case where this should make
a difference is one involving undefined behavior (if the argument to
the function is not a valid exception macro).

The out-of-line definition for fegetround uses __fegetround (the
inline function removed by this patch).  So this continues to work,
the fenvinline.h header is made to define __fegetround, and then to
define fegetround to call __fegetround.

Tested for powerpc32 (hard float) that installed stripped shared
libraries are unchanged by this patch; also tested that powerpc-nofpu
build still works.  (This patch does not itself fix any bugs; it
simply cleans things up in preparation for separate bug fixes.)

* sysdeps/powerpc/bits/fenvinline.h (fegetround): Rename macro to
__fegetround and redefine to call __fegetround.  Remove condition
on [!__NO_MATH_INLINES].
* sysdeps/powerpc/fpu/fenv_libc.h (__fegetround): Remove inline
function.
* sysdeps/powerpc/nofpu/fenv_libc.h: Remove file.
* sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h (__fegetround):
Remove macro.
* sysdeps/ieee754/ldbl-128ibm/s_llrintl.c: Include <fenv.h>
instead of <fenv_libc.h>.
(__llrintl): Call fegetround instead of __fegetround.
* sysdeps/ieee754/ldbl-128ibm/s_llroundl.c: Include <fenv.h>
instead of <fenv_libc.h>.
* sysdeps/ieee754/ldbl-128ibm/s_lrintl.c: Likewise.
(__lrintl): Call fegetround instead of __fegetround.
* sysdeps/ieee754/ldbl-128ibm/s_lroundl.c: Include <fenv.h>
instead of <fenv_libc.h>.
* sysdeps/ieee754/ldbl-128ibm/s_rintl.c: Likewise.
(__rintl): Call fegetround instead of __fegetround.

9 years agoUse one-dimension arrays in gen-posix-conf-vars.awk
Siddhesh Poyarekar [Wed, 31 Dec 2014 07:52:58 +0000 (13:22 +0530)]
Use one-dimension arrays in gen-posix-conf-vars.awk

True multi-dimensional arrays were introduced in awk 4.0 and we
support awk versions as early as 3.12.  Use a single subscript of the
form prefix_conf instead of two dimensions to work around this
limitation.  We also need one additional array of just the conf names
subscripted by the prefix_conf to print the names for the
specifications.

* scripts/gen-posix-conf-vars.awk: Don't use multi-dimensional
arrays.