]> sourceware.org Git - glibc.git/log
glibc.git
8 years agoSuppress GCC 6 warning about ambiguous 'else' with -Wparentheses release/2.21/master
Yvan Roux [Fri, 15 Apr 2016 11:29:26 +0000 (13:29 +0200)]
Suppress GCC 6 warning about ambiguous 'else' with -Wparentheses

Backport of df1cf48777fe4cd81ad7fb09ecbe5b31432b7c1c.

* stdlib/setenv.c (unsetenv): Fix ambiguous 'else'.
* nis/nis_call.c (nis_server_cache_add): Likewise.

8 years agoS390: Fix "backtrace() returns infinitely deep stack frames with makecontext()" ...
Stefan Liebler [Thu, 28 Apr 2016 08:30:09 +0000 (10:30 +0200)]
S390: Fix "backtrace() returns infinitely deep stack frames with makecontext()" [BZ #18508].

On s390/s390x backtrace(buffer, size) returns the series of called functions until
"makecontext_ret" and additional entries (up to "size") with "makecontext_ret".
GDB-backtrace is also warning:
"Backtrace stopped: previous frame identical to this frame (corrupt stack?)"

To reproduce this scenario you have to setup a new context with makecontext()
and activate it with setcontext(). See e.g. cf() function in testcase stdlib/tst-makecontext.c.
Or see bug in libgo "Bug 66303 - runtime.Caller() returns infinitely deep stack frames
on s390x " (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66303).

This patch omits the cfi_startproc/cfi_endproc directives in ENTRY/END macro of
__makecontext_ret. Thus no frame information is generated in .eh_frame and backtrace
stops after __makecontext_ret. There is also no .eh_frame info for _start or
thread_start functions.

ChangeLog:

[BZ #18508]
* stdlib/Makefile ($(objpfx)tst-makecontext3):
Depend on $(libdl).
* stdlib/tst-makecontext.c (cf): Test if _Unwind_Backtrace
is not called infinitely times.
(backtrace_helper): New function.
(trace_arg): New struct.
(st1): Enlarge stack size.
* sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S:
(__makecontext_ret): Omit cfi_startproc and cfi_endproc.
* sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S:
Likewise.

(cherry picked from commit 890b7a4b33d482b5c768ab47d70758b80227e9bc)

8 years agoS/390: Fix setcontext/swapcontext which are not restoring sigmask.
Stefan Liebler [Thu, 28 Apr 2016 08:29:07 +0000 (10:29 +0200)]
S/390: Fix setcontext/swapcontext which are not restoring sigmask.

This patch uses sigprocmask(SIG_SETMASK) instead of SIG_BLOCK
in setcontext, swapcontext.

(cherry picked from commit 2e807f29595eb5b1e5d0decc6e356a3562ecc58e)

8 years agoconfigure: fix `test ==` usage
Mike Frysinger [Sun, 10 Apr 2016 00:02:48 +0000 (20:02 -0400)]
configure: fix `test ==` usage

POSIX defines the = operator, but not ==.  Fix the few places where we
incorrectly used ==.

(cherry picked from commit b2d4456b333970ab4cb01ed8045b9a8d2c4832f3)

8 years agoS390: Extend structs La_s390_regs / La_s390_retval with vector-registers.
Stefan Liebler [Mon, 4 Apr 2016 11:19:57 +0000 (13:19 +0200)]
S390: Extend structs La_s390_regs / La_s390_retval with vector-registers.

Starting with z13, vector registers can also occur as argument registers.
Thus the passed input/output register structs for
la_s390_[32|64]_gnu_plt[enter|exit] functions should reflect those new
registers. This patch extends these structs La_s390_regs and La_s390_retval
and adjusts _dl_runtime_profile() to handle those fields in case of
running on a z13 machine.

ChangeLog:

* sysdeps/s390/bits/link.h: (La_s390_vr) New typedef.
(La_s390_32_regs): Append vector register lr_v24-lr_v31.
(La_s390_64_regs): Likewise.
(La_s390_32_retval): Append vector register lrv_v24.
(La_s390_64_retval): Likeweise.
* sysdeps/s390/s390-32/dl-trampoline.h (_dl_runtime_profile):
Handle extended structs La_s390_32_regs and La_s390_32_retval.
* sysdeps/s390/s390-64/dl-trampoline.h (_dl_runtime_profile):
Handle extended structs La_s390_64_regs and La_s390_64_retval.

(cherry picked from commit 5cdd1989d1d2f135d02e66250f37ba8e767f9772)

8 years agoS390: Save and restore fprs/vrs while resolving symbols.
Stefan Liebler [Mon, 4 Apr 2016 11:19:57 +0000 (13:19 +0200)]
S390: Save and restore fprs/vrs while resolving symbols.

On s390, no fpr/vrs were saved while resolving a symbol
via _dl_runtime_resolve/_dl_runtime_profile.

According to the abi, the fpr-arguments are defined as call clobbered.
In leaf-functions, gcc 4.9 and newer can use fprs for saving/restoring gprs
instead of saving them to the stack.
If gcc do this in one of the resolver-functions, then the floating point
arguments of a library-function are invalid for the first library-function-call.
Thus, this patch saves/restores the fprs around the resolving code.

The same could occur for vector registers. Furthermore an ifunc-resolver
could also clobber the vector/floating point argument registers.
Thus this patch provides the further variants _dl_runtime_resolve_vx/
_dl_runtime_profile_vx, which are used if the kernel claims, that
we run on a machine with vector registers.

Furthermore, if _dl_runtime_profile calls _dl_call_pltexit,
the pointers to inregs-/outregs-structs were setup invalid.
Now they point to the correct location in the stack-frame.
Before branching back to the caller, the return values are now
restored instead of containing the return values of the
_dl_call_pltexit() call.
On s390-32, an endless loop occurs if _dl_call_pltexit() should be called.
Now, this code-path branches to this function instead of just after the
preceding basr-instruction.

ChangeLog:

* sysdeps/s390/s390-32/dl-trampoline.S: Include dl-trampoline.h twice
to create a non-vector/vector version for _dl_runtime_resolve and
_dl_runtime_profile. Move implementation to ...
* sysdeps/s390/s390-32/dl-trampoline.h: ... here.
(_dl_runtime_resolve) Save and restore fpr/vrs.
(_dl_runtime_profile) Save and restore vrs and fix some issues
if _dl_call_pltexit is called.
* sysdeps/s390/s390-32/dl-machine.h (elf_machine_runtime_setup):
Choose the correct resolver function if running on a machine with vx.
* sysdeps/s390/s390-64/dl-trampoline.S: Include dl-trampoline.h twice
to create a non-vector/vector version for _dl_runtime_resolve and
_dl_runtime_profile. Move implementation to ...
* sysdeps/s390/s390-64/dl-trampoline.h: ... here.
(_dl_runtime_resolve) Save and restore fpr/vrs.
(_dl_runtime_profile) Save and restore vrs and fix some issues
* sysdeps/s390/s390-64/dl-machine.h: (elf_machine_runtime_setup):
Choose the correct resolver function if running on a machine with vx.

(cherry picked from commit 4603c51ef7989d7eb800cdd6f42aab206f891077
and commit d8a012c5c9e4bfc1b8db2bc6deacb85b44a2e1eb)

8 years agoS390: configure check for vector instruction support in assembler.
Stefan Liebler [Mon, 4 Apr 2016 11:19:57 +0000 (13:19 +0200)]
S390: configure check for vector instruction support in assembler.

The S390 specific test checks if the assembler has support for the new z13
vector instructions by compiling a vector instruction. The .machine and
.machinemode directives are needed to compile the vector instruction without
-march=z13 option on 31/64 bit.
On success the macro HAVE_S390_VX_ASM_SUPPORT is defined. This macro is used
to determine if the optimized functions can be build without compile errors.
If the used assembler lacks vector support, then a warning is dumped while
configuring and only the common code functions are build.

The z13 instruction support was introduced in
"[Committed] S/390: Add support for IBM z13."
(https://sourceware.org/ml/binutils/2015-01/msg00197.html)

ChangeLog:

* config.h.in (HAVE_S390_VX_ASM_SUPPORT): New macro undefine.
* sysdeps/s390/configure.ac: Add test for S390 vector instruction
assembler support.
* sysdeps/s390/configure: Regenerated.

(cherry picked from commit 4f0a1cea34c05fb2acc16f1a2d291f53230eb4fb)

8 years agoS390: Add new s390 platform.
Stefan Liebler [Mon, 4 Apr 2016 11:19:57 +0000 (13:19 +0200)]
S390: Add new s390 platform.

The new IBM z13 is added to platform string array.
The macro _DL_PLATFORMS_COUNT is incremented to 8,
because it was not incremented by commit
"S/390: Sync AUXV capabilities and archs with kernel".

ChangeLog:

* sysdeps/s390/dl-procinfo.c (_dl_s390_cap_flags): Add z13.
* sysdeps/s390/dl-procinfo.h (_DL_PLATFORMS_COUNT): Increased.

(cherry picked from commit a1b0488fc9df3d895a2e5eefbcd348d3f7fe0e52)

8 years agoS390: Add hwcaps value for vector facility.
Stefan Liebler [Mon, 4 Apr 2016 11:19:57 +0000 (13:19 +0200)]
S390: Add hwcaps value for vector facility.

The HWCAP_S390_VX flag in hwcap field of auxiliary vector indicates
if the vector facility is available and the kernel is aware of it.
This can be tested with LD_SHOW_AUXV=1 <prog>.
Currently it does not show te, because it was not incremented
by commit "S/390: Add hwcap value for transactional execution.".
Thus _DL_HWCAP_COUNT is incremented by two.

ChangeLog:

* sysdeps/s390/dl-procinfo.c (_dl_s390_platforms): Add vector flag.
* sysdeps/s390/dl-procinfo.h: Add vector capability.
* sysdeps/unix/sysv/linux/s390/bits/hwcap.h (HWCAP_S390_VX): Define.

(cherry picked from commit 4e28fa80886c71e6aaf85016b82ce981c0f12e6d)

8 years agosln: use stat64
Hongjiu Zhang [Mon, 7 Mar 2016 01:18:21 +0000 (20:18 -0500)]
sln: use stat64

When using sln on some filesystems which return 64-bit inodes,
the stat call might fail during install like so:
.../elf/sln .../elf/symlink.list
/lib32/libc.so.6: invalid destination: Value too large for defined data type
/lib32/ld-linux.so.2: invalid destination: Value too large for defined data type
Makefile:104: recipe for target 'install-symbolic-link' failed

Switch to using stat64 all the time to avoid this.

URL: https://bugs.gentoo.org/576396
(cherry picked from commit f5e753c8c3a18a1e3c715dd11bf4dc341b5c481f)

8 years agoS390: Do not use direct socket syscalls if build on kernels >= 4.3. [BZ #19682]
Stefan Liebler [Thu, 3 Mar 2016 07:22:43 +0000 (08:22 +0100)]
S390: Do not use direct socket syscalls if build on kernels >= 4.3. [BZ #19682]

Beginning with Linux 4.3, the kernel headers contain direct
system call numbers __NR_socket etc. on s390x. On older kernels,
the socket-multiplexer syscall __NR_socketcall was used.

To enable these new syscalls, the patch
"S390: Call direct system calls for socket operations."
(https://sourceware.org/git/?p=glibc.git;a=commit;h=016495b818cb61df7d0d10e6db54074271b3e3a5)
was applied upstream.

If glibc 2.23 is configured with --enable-kernel=4.3 and newer,
the direct socket syscalls are used.
For older kernels, the socket-multiplexer syscall is used instead.

In glibc 2.22 and earlier, this patch is not applied.
If you build glibc on a kernel < 4.3, the socket-multiplexer
syscall is used. But if you build glibc on kernel >= 4.3, the
direct socket-syscalls are used. If you install this glibc on a
kernel < 4.3, all socket operations will fail.
See "Bug 19682 - s390x: Incorrect syscall definitions cause
breakage with Linux 4.3 headers"
(https://sourceware.org/bugzilla/show_bug.cgi?id=19682)
The configure switch --enable-kernel does not influence this
behaviour on older glibc-releases.

The solution is to remove the direct socket-syscalls in
sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
(this patch) on older glibc-releases as it was done by the
upstream patch, too. These entries were never used on s390x,
but the c-files in sysdeps/unix/sysv/linux/.
After this removal, the behaviour of the socket functions are
not changed compared to the original glibc release version
and the socket-multiplexer-syscall is always used.

8 years agoCVE-2015-7547: getaddrinfo() stack-based buffer overflow (Bug 18665).
Carlos O'Donell [Wed, 17 Feb 2016 02:26:37 +0000 (21:26 -0500)]
CVE-2015-7547: getaddrinfo() stack-based buffer overflow (Bug 18665).

* A stack-based buffer overflow was found in libresolv when invoked from
  libnss_dns, allowing specially crafted DNS responses to seize control
  of execution flow in the DNS client.  The buffer overflow occurs in
  the functions send_dg (send datagram) and send_vc (send TCP) for the
  NSS module libnss_dns.so.2 when calling getaddrinfo with AF_UNSPEC
  family.  The use of AF_UNSPEC triggers the low-level resolver code to
  send out two parallel queries for A and AAAA.  A mismanagement of the
  buffers used for those queries could result in the response of a query
  writing beyond the alloca allocated buffer created by
  _nss_dns_gethostbyname4_r.  Buffer management is simplified to remove
  the overflow.  Thanks to the Google Security Team and Red Hat for
  reporting the security impact of this issue, and Robert Holiday of
  Ciena for reporting the related bug 18665. (CVE-2015-7547)

See also:
https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html
https://sourceware.org/ml/libc-alpha/2016-02/msg00418.html

(cherry picked from commit e9db92d3acfe1822d56d11abcea5bfc4c41cf6ca)

8 years agohsearch_r: Apply VM size limit in test case
Florian Weimer [Fri, 12 Feb 2016 11:57:40 +0000 (12:57 +0100)]
hsearch_r: Apply VM size limit in test case

(cherry picked from commit f34f146e682d8d529dcf64b3c2781bf3f2f05f6c)

8 years agoImprove check against integer wraparound in hcreate_r [BZ #18240]
Florian Weimer [Thu, 28 Jan 2016 12:59:11 +0000 (13:59 +0100)]
Improve check against integer wraparound in hcreate_r [BZ #18240]

(cherry picked from commit bae7c7c764413b23e61cb099ce33be4c4ee259bb)

8 years agoHandle overflow in __hcreate_r
Ondřej Bílka [Sat, 11 Jul 2015 15:44:10 +0000 (17:44 +0200)]
Handle overflow in __hcreate_r

Hi,

As in bugzilla entry there is overflow in hsearch when looking for prime
number as SIZE_MAX - 1 is divisible by 5. We fix that by rejecting large
inputs before looking for prime.

* misc/hsearch_r.c (__hcreate_r): Handle overflow.

(cherry picked from commit 2f5c1750558fe64bac361f52d6827ab1bcfe52bc)

8 years agoFix BZ #18985 -- out of range data to strftime() causes a segfault
Paul Pluzhnikov [Sat, 26 Sep 2015 20:27:48 +0000 (13:27 -0700)]
Fix BZ #18985 -- out of range data to strftime() causes a segfault

(cherry picked from commit d36c75fc0d44deec29635dd239b0fbd206ca49b7)

8 years agoFix trailing space.
Paul Pluzhnikov [Sat, 8 Aug 2015 22:54:40 +0000 (15:54 -0700)]
Fix trailing space.

(cherry picked from commit 7565d2a862683a3c26ffb1f32351b8c5ab9f7b31)

8 years agoFix BZ #17905
Paul Pluzhnikov [Sat, 8 Aug 2015 22:53:03 +0000 (15:53 -0700)]
Fix BZ #17905

(cherry picked from commit 0f58539030e436449f79189b6edab17d7479796e)

8 years ago[AArch64] Fix the big endian loader name.
Szabolcs Nagy [Fri, 1 May 2015 12:58:55 +0000 (13:58 +0100)]
[AArch64] Fix the big endian loader name.

(cherry picked from commit 44cb254f9a024db33ba549e59dc9d90355b797c9)

8 years agonscd: drop selinux/flask.h include
Mike Frysinger [Sat, 30 May 2015 18:55:16 +0000 (14:55 -0400)]
nscd: drop selinux/flask.h include

Building nscd w/selinux enabled yields a warning which yields an error:
In file included from selinux.c:32:0:
/usr/include/selinux/flask.h:5:2: error:
 #warning "Please remove any #include's of this header in your source code."

I've done just that and it builds cleanly with libselinux-2.4.

(cherry picked from commit 808696696837b8b8fc858f2e6f8d4e40e26e1308)

9 years agoFix parallel build error
Andreas Schwab [Mon, 2 Mar 2015 14:47:56 +0000 (15:47 +0100)]
Fix parallel build error

(cherry picked from commit e8b6be0016f131c2ac72bf3213eabdb59800e63b)

9 years agoCVE-2014-8121: Do not close NSS files database during iteration [BZ #18007]
Florian Weimer [Wed, 29 Apr 2015 12:41:25 +0000 (14:41 +0200)]
CVE-2014-8121: Do not close NSS files database during iteration [BZ #18007]

Robin Hack discovered Samba would enter an infinite loop processing
certain quota-related requests.  We eventually tracked this down to a
glibc issue.

Running a (simplified) test case under strace shows that /etc/passwd
is continuously opened and closed:


open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
lseek(3, 0, SEEK_CUR)                   = 0
read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 2717
lseek(3, 2717, SEEK_SET)                = 2717
close(3)                                = 0
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
lseek(3, 0, SEEK_CUR)                   = 0
lseek(3, 0, SEEK_SET)                   = 0
read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 2717
lseek(3, 2717, SEEK_SET)                = 2717
close(3)                                = 0
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
lseek(3, 0, SEEK_CUR)                   = 0


The lookup function implementation in
nss/nss_files/files-XXX.c:DB_LOOKUP has code to prevent that.  It is
supposed skip closing the input file if it was already open.

  /* Reset file pointer to beginning or open file.  */       \
  status = internal_setent (keep_stream);       \
      \
  if (status == NSS_STATUS_SUCCESS)       \
    {       \
      /* Tell getent function that we have repositioned the file pointer.  */ \
      last_use = getby;       \
      \
      while ((status = internal_getent (result, buffer, buflen, errnop       \
H_ERRNO_ARG EXTRA_ARGS_VALUE))       \
     == NSS_STATUS_SUCCESS)       \
{ break_if_match }       \
      \
      if (! keep_stream)       \
internal_endent ();       \
    }       \

keep_stream is initialized from the stayopen flag in internal_setent.
internal_setent is called from the set*ent implementation as:

  status = internal_setent (stayopen);

However, for non-host database, this flag is always 0, per the
STAYOPEN magic in nss/getXXent_r.c.

Thus, the fix is this:

-  status = internal_setent (stayopen);
+  status = internal_setent (1);

This is not a behavioral change even for the hosts database (where the
application can specify the stayopen flag) because with a call to
sethostent(0), the file handle is still not closed in the
implementation of gethostent.

(cherry picked from commit 03d2730b44cc2236318fd978afa2651753666c55)

Conflicts:
ChangeLog
NEWS

9 years agogetmntent: fix memory corruption w/blank lines [BZ #18887]
Mike Frysinger [Fri, 28 Aug 2015 21:08:49 +0000 (17:08 -0400)]
getmntent: fix memory corruption w/blank lines [BZ #18887]

The fix for BZ #17273 introduced a single byte of memory corruption when
the line is entirely blank.  It would walk back past the start of the
buffer if the heap happened to be 0x20 or 0x09 and then write a NUL byte.
buffer = '\n';
end_ptr = buffer;
while (end_ptr[-1] == ' ' || end_ptr[-1] == '\t')
end_ptr--;
*end_ptr = '\0';

Fix that and rework the tests.  Adding the testcase for BZ #17273 to the
existing \040 parser does not really make sense as it's unrelated, and
leads to confusing behavior: it implicitly relies on the new entry being
longer than the previous entry (since it just rewinds the FILE*).  Split
it out into its own dedicated testcase instead.

(cherry picked from commit b0e805fa0d6fea33745952df7b7f5442ca4c374f)

9 years agoia64: atomic.h: fix atomic_exchange_and_add 64bit handling
Mike Frysinger [Tue, 28 Jul 2015 06:19:49 +0000 (02:19 -0400)]
ia64: atomic.h: fix atomic_exchange_and_add 64bit handling

Way back in 2005 the atomic_exchange_and_add function was cleaned up to
avoid the explicit size checking and instead let gcc handle things itself.
Unfortunately that change ended up leaving beyond a cast to int, even when
the incoming value was a long.  This has flown under the radar for a long
time due to the function not being heavily used in the tree (especially as
a full 64bit field), but a recent change to semaphores made some nptl tests
fail reliably.  This is due to the code packing two 32bit values into one
64bit variable (where the high 32bits contained the number of waiters), and
then the whole variable being atomically updated between threads.  On ia64,
that meant we never atomically updated the count, so sometimes the sem_post
would not wake up the waiters.

(cherry picked from commit cf31a2c79957936b60de34ea1e718e892baf669c)

9 years agoFix BZ #17269 -- _IO_wstr_overflow integer overflow
Paul Pluzhnikov [Sun, 22 Feb 2015 20:01:47 +0000 (12:01 -0800)]
Fix BZ #17269 -- _IO_wstr_overflow integer overflow

(cherry picked from commit bdf1ff052a8e23d637f2c838fa5642d78fcedc33)

9 years agoFix read past end of pattern in fnmatch (bug 18032)
Andreas Schwab [Thu, 26 Feb 2015 13:55:24 +0000 (14:55 +0100)]
Fix read past end of pattern in fnmatch (bug 18032)

(cherry picked from commit 4a28f4d55a6cc33474c0792fe93b5942d81bf185)

9 years agosparc: fix sigaction for 32bit builds [BZ #18694]
Mike Frysinger [Mon, 20 Jul 2015 11:29:15 +0000 (07:29 -0400)]
sparc: fix sigaction for 32bit builds [BZ #18694]

Commit a059d359d86130b5fa74e04a978c8523a0293f77 changed the sigaction
struct to pass conform tests, but it ended up also changing the ABI for
32 bit builds.  For 64 bit builds, changing the long to two ints works,
but for 32 bit builds, it inserts 4 extra bytes.  This leads to many
packages randomly failing like bash that spews things like:
configure: line 471: wait_for: No record of process 0

Bracket the new member by a wordsize check to fix the ABI for 32bit.

(cherry picked from commit 7fde904c73c57faea48c9679bbdc0932d81b3a2f)

9 years agoCVE-2015-1781: resolv/nss_dns/dns-host.c buffer overflow [BZ#18287]
Arjun Shankar [Tue, 21 Apr 2015 12:06:31 +0000 (14:06 +0200)]
CVE-2015-1781: resolv/nss_dns/dns-host.c buffer overflow [BZ#18287]

(cherry picked from commit 2959eda9272a033863c271aff62095abd01bd4e3)

9 years agoFix __memcpy_chk on non-SSE2 CPUs
Evangelos Foutras [Tue, 10 Feb 2015 03:22:58 +0000 (03:22 +0000)]
Fix __memcpy_chk on non-SSE2 CPUs

In commit 8b4416d, the 1: jump label in __mempcpy_chk was accidentally
moved.  This resulted in failures of mempcpy on CPU without SSE2.

(cherry picked from commit 132a1328eccd20621b77f7810eebbeec0a1af187)

9 years agoNEWS: Also mention CVE-2015-1473
Florian Weimer [Fri, 6 Feb 2015 15:30:15 +0000 (16:30 +0100)]
NEWS: Also mention CVE-2015-1473

9 years agoFix missing ChangeLog attribution.
Carlos O'Donell [Fri, 6 Feb 2015 06:59:42 +0000 (01:59 -0500)]
Fix missing ChangeLog attribution.

9 years agoUpdate version.h and include/features.h for 2.21 release glibc-2.21
Carlos O'Donell [Fri, 6 Feb 2015 06:19:42 +0000 (01:19 -0500)]
Update version.h and include/features.h for 2.21 release

9 years agohppa: Sync with pthread.h.
Carlos O'Donell [Fri, 6 Feb 2015 06:56:35 +0000 (01:56 -0500)]
hppa: Sync with pthread.h.

This reverts part of the previous commit to refactor pthread.h.
The refactoring must be done by having pthread.h include arch
bits headers, not the other way around. Then hppa provides the
arch bits header. For now we synchronzie again with pthread.h
and include the entire contents in the hppa copy.

9 years agoCVE-2015-1472: wscanf allocates too little memory
Paul Pluzhnikov [Fri, 6 Feb 2015 05:30:42 +0000 (00:30 -0500)]
CVE-2015-1472: wscanf allocates too little memory

BZ #16618

Under certain conditions wscanf can allocate too little memory for the
to-be-scanned arguments and overflow the allocated buffer.  The
implementation now correctly computes the required buffer size when
using malloc.

A regression test was added to tst-sscanf.

9 years agoglibc 2.21 pre-release update.
Carlos O'Donell [Fri, 6 Feb 2015 03:56:00 +0000 (22:56 -0500)]
glibc 2.21 pre-release update.

Update all translations.

Update contributions in the manual.

Update installation notes with information about newest working tools.

Reconfigure using exactly autoconf 2.69.

Regenerate INSTALL.

9 years agohppa: Remove warnings and fix conformance errors.
Carlos O'Donell [Fri, 6 Feb 2015 02:33:03 +0000 (21:33 -0500)]
hppa: Remove warnings and fix conformance errors.

(1) Fix warnings.

This is a bulk update to fix all the warnings that were causing
build failures with -Werror on hppa.

The most egregious problems are in dl-fptr.c which needs to be
entirely rewritten, thus I've used -Wno-error for that.

(2) Fix conformance errors.

The sysdep.c file had __syscall_error and syscall in one file
which caused conformance issues by including syscall when
__syscall_error was linked to. The fix is obviously to split
the file and use syscall.c to implement syscall.

9 years agoFunction name typo error in non-PIC case, fixed in this patch.
Chung-Lin Tang [Thu, 5 Feb 2015 14:19:36 +0000 (06:19 -0800)]
Function name typo error in non-PIC case, fixed in this patch.

9 years agoFix two bugs in sparc atomics.
David S. Miller [Sun, 1 Feb 2015 03:07:28 +0000 (19:07 -0800)]
Fix two bugs in sparc atomics.

* sysdeps/sparc/sparc32/bits/atomic.h
(__sparc32_atomic_do_unlock24): Put the memory barrier before the
unlock not after it.
(__v9_compare_and_exchange_val_32_acq): Use unions to avoid getting
volatile register usage warnings from the compiler.

9 years agoFix sparc semaphore implementation after recent changes.
David S. Miller [Sun, 1 Feb 2015 02:59:40 +0000 (18:59 -0800)]
Fix sparc semaphore implementation after recent changes.

* sysdeps/sparc/nptl/sem_init.c: Delete.
* sysdeps/sparc/nptl/sem_post.c: Delete.
* sysdeps/sparc/nptl/sem_timedwait.c: Delete.
* sysdeps/sparc/nptl/sem_wait.c: Delete.
* sysdeps/sparc/sparc32/sem_init.c: New file.
* sysdeps/sparc/sparc32/sem_waitcommon.c: New file.
* sysdeps/sparc/sparc32/sem_open.c: Generic nptl version with
padding explicitly initialized.
* sysdeps/sparc/sparc32/sem_post.c: Generic nptl version using
padding for in-semaphore spinlock.
* sysdeps/sparc/sparc32/sem_wait.c: Likewise.
* sysdeps/sparc/sparc32/sem_trywait.c: Delete.
* sysdeps/sparc/sparc32/sem_timedwait.c: Delete.
* sysdeps/sparc/sparc32/sparcv9/sem_init.c: New file.
* sysdeps/sparc/sparc32/sparcv9/sem_open.c: New file.
* sysdeps/sparc/sparc32/sparcv9/sem_post.c: New file.
* sysdeps/sparc/sparc32/sparcv9/sem_waitcommon.c: New file.
* sysdeps/sparc/sparc32/sparcv9/sem_wait.c: Redirect to nptl
version.
* sysdeps/sparc/sparc32/sparcv9/sem_timedwait.c: Delete.
* sysdeps/sparc/sparc32/sparcv9/sem_trywait.c: Delete.

9 years agoUse AVX unaligned memcpy only if AVX2 is available
H.J. Lu [Fri, 30 Jan 2015 14:50:20 +0000 (06:50 -0800)]
Use AVX unaligned memcpy only if AVX2 is available

memcpy with unaligned 256-bit AVX register loads/stores are slow on older
processorsl like Sandy Bridge.  This patch adds bit_AVX_Fast_Unaligned_Load
and sets it only when AVX2 is available.

[BZ #17801]
* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features):
Set the bit_AVX_Fast_Unaligned_Load bit for AVX2.
* sysdeps/x86_64/multiarch/init-arch.h (bit_AVX_Fast_Unaligned_Load):
New.
(index_AVX_Fast_Unaligned_Load): Likewise.
(HAS_AVX_FAST_UNALIGNED_LOAD): Likewise.
* sysdeps/x86_64/multiarch/memcpy.S (__new_memcpy): Check the
bit_AVX_Fast_Unaligned_Load bit instead of the bit_AVX_Usable bit.
* sysdeps/x86_64/multiarch/memcpy_chk.S (__memcpy_chk): Likewise.
* sysdeps/x86_64/multiarch/mempcpy.S (__mempcpy): Likewise.
* sysdeps/x86_64/multiarch/mempcpy_chk.S (__mempcpy_chk): Likewise.
* sysdeps/x86_64/multiarch/memmove.c (__libc_memmove): Replace
HAS_AVX with HAS_AVX_FAST_UNALIGNED_LOAD.
* sysdeps/x86_64/multiarch/memmove_chk.c (__memmove_chk): Likewise.

9 years agoInclude <signal.h> in sysdeps/nptl/allocrtsig.c
Andreas Schwab [Sun, 25 Jan 2015 10:05:53 +0000 (11:05 +0100)]
Include <signal.h> in sysdeps/nptl/allocrtsig.c

Architectures which don't use hp-timing-common.h don't include <signal.h>
via <sys/param.h>.

9 years agoFix up ChangeLog formatting
Siddhesh Poyarekar [Thu, 29 Jan 2015 05:01:10 +0000 (10:31 +0530)]
Fix up ChangeLog formatting

9 years agoInitialize nscd stats data [BZ #17892]
Siddhesh Poyarekar [Thu, 29 Jan 2015 05:00:09 +0000 (10:30 +0530)]
Initialize nscd stats data [BZ #17892]

The padding bytes in the statsdata struct are not initialized, due to
which valgrind throws a warning:

==11384== Memcheck, a memory error detector
==11384== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==11384== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==11384== Command: nscd -d
==11384==
Fri 25 Apr 2014 10:34:53 AM CEST - 11384: handle_request: request received (Version = 2) from PID 11396
Fri 25 Apr 2014 10:34:53 AM CEST - 11384:       GETSTAT
==11384== Thread 6:
==11384== Syscall param socketcall.sendto(msg) points to uninitialised byte(s)
==11384==    at 0x4E4ACDC: send (in /lib64/libpthread-2.12.so)
==11384==    by 0x11AF6B: send_stats (in /usr/sbin/nscd)
==11384==    by 0x112F75: nscd_run_worker (in /usr/sbin/nscd)
==11384==    by 0x4E439D0: start_thread (in /lib64/libpthread-2.12.so)
==11384==    by 0x599AB6C: clone (in /lib64/libc-2.12.so)
==11384==  Address 0x15708395 is on thread 6's stack

Fix the warning by initializing the structure.

9 years agoClarify math/README.libm-test. Add "How to read the test output."
Martin Sebor [Thu, 29 Jan 2015 04:07:01 +0000 (21:07 -0700)]
Clarify math/README.libm-test. Add "How to read the test output."

9 years agotilegx32: set __HAVE_64B_ATOMICS to 0
Chris Metcalf [Wed, 28 Jan 2015 19:51:21 +0000 (14:51 -0500)]
tilegx32: set __HAVE_64B_ATOMICS to 0

This is because of alignment issues in the sem_t support.
tilegx32 does in fact support 64-bit atomics and we will need
to revisit this after the 2.21 freeze.

9 years agoDisable 64-bit atomics for MIPS n32.
Joseph Myers [Wed, 28 Jan 2015 18:40:35 +0000 (18:40 +0000)]
Disable 64-bit atomics for MIPS n32.

This patch disables use of 64-bit atomics for MIPS n32 to fix the
problems with unaligned semaphores.

Before 64-bit atomics are used for anything for which such alignment
issues do not arise, and before the addition of any new ILP32 ports
with 64-bit semaphores for which the ABI can be set to have the
greater alignment (AARCH64?), a better approach will need to be
established that allows architectures to declare their 64-bit atomics
availability accurately, without doing so causing inappropriate use of
such atomics on unaligned semaphores.

Tested for MIPS n32 that this fixes the nptl/tst-sem3 failure.

* sysdeps/mips/bits/atomic.h [_MIPS_SIM == _ABIN32]
(__HAVE_64B_ATOMICS): Define to 0.

9 years agopowerpc: Fix fesetexceptflag [BZ#17885]
Adhemerval Zanella [Tue, 27 Jan 2015 12:37:10 +0000 (06:37 -0600)]
powerpc: Fix fesetexceptflag [BZ#17885]

This patch fixes a bug introduced by 18f2945ae9216cfc, where it optimizes
the FPSCR set by just issuing a mtfs instruction if new flag is different
from older one.  The issue is a typo, where the new flag should the the
new value, instead of the old one.

It fixes BZ#17885.

9 years agopowerpc: Fix fsqrt build in libm [BZ#16576]
Adhemerval Zanella [Tue, 27 Jan 2015 18:16:39 +0000 (13:16 -0500)]
powerpc: Fix fsqrt build in libm [BZ#16576]

Some powerpc64 processors (e5500 core for instance) does not provide the
fsqrt instruction, however current check to use in math_private.h is
__WORDSIZE and _ARCH_PWR4 (ISA 2.02).  This is patch change it to use
the compiler flag _ARCH_PPCSQ (which is the same condition GCC uses to
decide whether to generate fsqrt instruction).

It fixes BZ#16576.

9 years agoiconv: Suppress array out of bounds warning.
Andreas Krebbel [Tue, 27 Jan 2015 08:37:04 +0000 (09:37 +0100)]
iconv: Suppress array out of bounds warning.

9 years agoia64: avoid set-but-not-used warning
Andreas Schwab [Sun, 25 Jan 2015 21:31:29 +0000 (22:31 +0100)]
ia64: avoid set-but-not-used warning

9 years agom68k/coldfire: avoid warning about volatile register variables
Andreas Schwab [Sun, 25 Jan 2015 21:09:05 +0000 (22:09 +0100)]
m68k/coldfire: avoid warning about volatile register variables

9 years agom68k: fix missing definition of __feraiseexcept
Andreas Schwab [Sun, 25 Jan 2015 10:49:50 +0000 (11:49 +0100)]
m68k: fix missing definition of __feraiseexcept

9 years agom68k: force inlining bswap functions
Andreas Schwab [Sun, 25 Jan 2015 09:08:04 +0000 (10:08 +0100)]
m68k: force inlining bswap functions

9 years agoFix segmentation fault when LD_LIBRARY_PATH contains only non-existings paths
Bram [Thu, 18 Apr 2013 14:50:49 +0000 (16:50 +0200)]
Fix segmentation fault when LD_LIBRARY_PATH contains only non-existings paths

9 years agopowerpc: Fix powerpc64 build failure with binutils 2.22
Adhemerval Zanella [Fri, 23 Jan 2015 16:31:49 +0000 (11:31 -0500)]
powerpc: Fix powerpc64 build failure with binutils 2.22

GLIBC memset optimization for POWER8 uses the '.machine power8'
directive, which is only supported officially on binutils 2.24+.  This
causes a build failure on older binutils.

Since the requirement of .machine power8 is to correctly assembly the
'mtvsrd' instruction and it is already handled by the MTVSRD_V1_R4
macro, there is no really needed of using it.

The patch replaces the power8 with power7 for .machine directive.

It fixes BZ#17869.

9 years agopowerpc: Fix ifuncmain6pie failure with GCC 4.9
Adhemerval Zanella [Fri, 23 Jan 2015 16:16:49 +0000 (11:16 -0500)]
powerpc: Fix ifuncmain6pie failure with GCC 4.9

This patch fix the elf/ifuncmain6pie failure when building with GCC
4.9+.  For some reason, the compiler removes the branch taken code at
resolve_ifunc (sysdeps/powerpc/powerpc64/dl-machine.h) as dead-code
and thus the testcase fails because the ifunc resolves branches to an
invalid memory location.  It fixes by explicit adding a dependency of
value based on odp variable to avoid compiler optimization.

It fixes BZ#17868.

9 years agoAlso treat model numbers 0x5a/0x5d as Silvermont
H.J. Lu [Sat, 24 Jan 2015 02:52:45 +0000 (18:52 -0800)]
Also treat model numbers 0x5a/0x5d as Silvermont

9 years agoTreat model numbers 0x4a/0x4d as Silvermont
H.J. Lu [Sat, 24 Jan 2015 01:27:09 +0000 (17:27 -0800)]
Treat model numbers 0x4a/0x4d as Silvermont

* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features):
Treat model numbers 0x4a/0x4d as Intel Silvermont architecture.

9 years agoAlso use uint64_t in __new_sem_wait_fast
H.J. Lu [Sat, 24 Jan 2015 00:21:07 +0000 (16:21 -0800)]
Also use uint64_t in __new_sem_wait_fast

9 years agoUse uint64_t and (uint64_t) 1 for 64-bit int
H.J. Lu [Fri, 23 Jan 2015 22:48:40 +0000 (14:48 -0800)]
Use uint64_t and (uint64_t) 1 for 64-bit int

This patch replaces unsigned long int and 1UL with uint64_t and
(uint64_t) 1 to support ILP32 targets like x32.

[BZ #17870]
* nptl/sem_post.c (__new_sem_post): Replace unsigned long int
with uint64_t.
* nptl/sem_waitcommon.c (__sem_wait_cleanup): Replace 1UL with
(uint64_t) 1.
(__new_sem_wait_slow): Replace unsigned long int with uint64_t.
Replace 1UL with (uint64_t) 1.
* sysdeps/nptl/internaltypes.h (new_sem): Replace unsigned long
int with uint64_t.

9 years agoAdd missing libc_hidden_weak to stub if_nameindex, if_freenameindex.
Roland McGrath [Fri, 23 Jan 2015 19:29:02 +0000 (11:29 -0800)]
Add missing libc_hidden_weak to stub if_nameindex, if_freenameindex.

9 years agoAdd missing libc_hidden_def to stub getrlimit64.
Roland McGrath [Fri, 23 Jan 2015 18:41:37 +0000 (10:41 -0800)]
Add missing libc_hidden_def to stub getrlimit64.

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
8d2c0a54b45943, 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>
This page took 0.084596 seconds and 5 git commands to generate.