platform/upstream/glibc.git
8 years agoFix c++-types-check conditionalization.
Roland McGrath [Fri, 4 Mar 2016 21:22:00 +0000 (13:22 -0800)]
Fix c++-types-check conditionalization.

8 years agoAdd a comment in sysdeps/x86_64/Makefile
H.J. Lu [Fri, 4 Mar 2016 16:44:43 +0000 (08:44 -0800)]
Add a comment in sysdeps/x86_64/Makefile

Mention recursive calls when ENTRY is used in _mcount.S.

* sysdeps/x86_64/Makefile (sysdep_noprof): Add a comment.

8 years agox86-64: Fix memcpy IFUNC selection
H.J. Lu [Fri, 4 Mar 2016 16:37:40 +0000 (08:37 -0800)]
x86-64: Fix memcpy IFUNC selection

Chek Fast_Unaligned_Load, instead of Slow_BSF, and also check for
Fast_Copy_Backward to enable __memcpy_ssse3_back.  Existing selection
order is updated with following selection order:

1. __memcpy_avx_unaligned if AVX_Fast_Unaligned_Load bit is set.
2. __memcpy_sse2_unaligned if Fast_Unaligned_Load bit is set.
3. __memcpy_sse2 if SSSE3 isn't available.
4. __memcpy_ssse3_back if Fast_Copy_Backward bit it set.
5. __memcpy_ssse3

[BZ #18880]
* sysdeps/x86_64/multiarch/memcpy.S: Check Fast_Unaligned_Load,
instead of Slow_BSF, and also check for Fast_Copy_Backward to
enable __memcpy_ssse3_back.

8 years agoGratuitous change to poke buildbot.
Roland McGrath [Fri, 4 Mar 2016 00:48:09 +0000 (16:48 -0800)]
Gratuitous change to poke buildbot.

8 years agoOr bit_Prefer_MAP_32BIT_EXEC in EXTRA_LD_ENVVARS
H.J. Lu [Thu, 3 Mar 2016 22:51:40 +0000 (14:51 -0800)]
Or bit_Prefer_MAP_32BIT_EXEC in EXTRA_LD_ENVVARS

We should turn on bit_Prefer_MAP_32BIT_EXEC in EXTRA_LD_ENVVARS without
overriding other bits.

[BZ #19758]
* sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
(EXTRA_LD_ENVVARS): Or bit_Prefer_MAP_32BIT_EXEC.

8 years agoTypo fixes.
Roland McGrath [Thu, 3 Mar 2016 21:48:07 +0000 (13:48 -0800)]
Typo fixes.

8 years ago2016-03-03 Paul Pluzhnikov <ppluzhnikov@google.com>
Paul Pluzhnikov [Thu, 3 Mar 2016 17:53:49 +0000 (09:53 -0800)]
2016-03-03  Paul Pluzhnikov  <ppluzhnikov@google.com>

[BZ #19490]
* sysdeps/x86_64/_mcount.S (_mcount): Add unwind descriptor.
(__fentry__): Likewise

8 years agoCopy x86_64 _mcount.op from _mcount.o
H.J. Lu [Thu, 3 Mar 2016 14:55:59 +0000 (06:55 -0800)]
Copy x86_64 _mcount.op from _mcount.o

No need to compile x86_64 _mcount.S with -pg.  We can just copy the
normal static object.

* gmon/Makefile (noprof): Add $(sysdep_noprof).
* sysdeps/x86_64/Makefile (sysdep_noprof): Add _mcount.

8 years agoCall x86-64 __mcount_internal/__sigjmp_save directly
H.J. Lu [Wed, 2 Mar 2016 00:58:07 +0000 (16:58 -0800)]
Call x86-64 __mcount_internal/__sigjmp_save directly

Since __mcount_internal and __sigjmp_save are internal to x86-64 libc.so:

3532: 0000000000104530   289 FUNC    LOCAL  DEFAULT   13 __mcount_internal
3391: 0000000000034170    38 FUNC    LOCAL  DEFAULT   13 __sigjmp_save

they can be called directly without PLT.

* sysdeps/x86_64/_mcount.S (C_LABEL(_mcount)): Call
__mcount_internal directly.
(C_LABEL(__fentry__)): Likewise.
* sysdeps/x86_64/setjmp.S __sigsetjmp): Call __sigjmp_save
directly.

8 years agoCall x86-64 __setcontext directly
H.J. Lu [Wed, 2 Mar 2016 00:55:36 +0000 (16:55 -0800)]
Call x86-64 __setcontext directly

Since x86-64 __start_context calls the internal __setcontext:

5089: 00000000000417e0   145 FUNC    LOCAL  DEFAULT   13 __setcontext

it should call __setcontext directly.

* sysdeps/unix/sysv/linux/x86_64/__start_context.S
(__start_context): Call __setcontext directly.

8 years agolocaledata: es_PR: change LC_MEASUREMENT to metric
Mike Frysinger [Tue, 9 Feb 2016 20:39:03 +0000 (15:39 -0500)]
localedata: es_PR: change LC_MEASUREMENT to metric

Puerto Rico uses the metric system and has for a long time.
https://en.wikipedia.org/wiki/Puerto_Rican_units_of_measurement

8 years agolocaledata: an_ES: fix lang_ab value
Mike Frysinger [Sat, 20 Feb 2016 04:25:03 +0000 (23:25 -0500)]
localedata: an_ES: fix lang_ab value

Aragonese is classified as "an" so set it.

8 years agoRemove kernel-features.h conditionals on pre-3.2 kernels.
Joseph Myers [Fri, 26 Feb 2016 16:17:25 +0000 (16:17 +0000)]
Remove kernel-features.h conditionals on pre-3.2 kernels.

This patch follows up on the increase in minimum kernel version by
removing conditionals in non-x86, non-x86_64 kernel-features.h headers
that are now constant for all supported kernel versions.

* sysdeps/unix/sysv/linux/alpha/kernel-features.h
[__LINUX_KERNEL_VERSION >= 0x020621]: Make code unconditional.
[__LINUX_KERNEL_VERSION >= 0x030200]: Likewise.
[__LINUX_KERNEL_VERSION < 0x020621]: Remove conditional code.
* sysdeps/unix/sysv/linux/arm/kernel-features.h
[__LINUX_KERNEL_VERSION >= 0x020621]: Make code unconditional.
[__LINUX_KERNEL_VERSION >= 0x020624]: Likewise.
[__LINUX_KERNEL_VERSION >= 0x030000]: Likewise.
* sysdeps/unix/sysv/linux/hppa/kernel-features.h
[__LINUX_KERNEL_VERSION >= 0x020622]: Likewise.
[__LINUX_KERNEL_VERSION >= 0x030100]: Likewise.
[__LINUX_KERNEL_VERSION < 0x020625]: Remove conditional code.
* sysdeps/unix/sysv/linux/ia64/kernel-features.h
[__LINUX_KERNEL_VERSION >= 0x020621]: Make code unconditional.
[__LINUX_KERNEL_VERSION >= 0x030000]: Likewise.
* sysdeps/unix/sysv/linux/m68k/kernel-features.h
[__LINUX_KERNEL_VERSION < 0x030000]: Remove conditional code.
* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
[__LINUX_KERNEL_VERSION >= 0x020621]: Make code unconditional.
[__LINUX_KERNEL_VERSION < 0x020621]: Remove conditional code.
[__LINUX_KERNEL_VERSION < 0x020625]: Likewise.
* sysdeps/unix/sysv/linux/mips/kernel-features.h
[__LINUX_KERNEL_VERSION >= 0x020621]: Make code unconditional.
[__LINUX_KERNEL_VERSION >= 0x030100]: Likewise.
[_MIPS_SIM == _ABIN32 && __LINUX_KERNEL_VERSION < 0x020623]:
Remove conditional code.
* sysdeps/unix/sysv/linux/powerpc/kernel-features.h
[__LINUX_KERNEL_VERSION >= 0x020625]: Make code unconditional.
[__LINUX_KERNEL_VERSION >= 0x030000]: Likewise.
* sysdeps/unix/sysv/linux/sh/kernel-features.h
[__LINUX_KERNEL_VERSION >= 0x020625]: Likewise.
[__LINUX_KERNEL_VERSION >= 0x030000]: Likewise.
[__LINUX_KERNEL_VERSION < 0x020625]: Remove conditional code.
* sysdeps/unix/sysv/linux/sparc/kernel-features.h
[__LINUX_KERNEL_VERSION >= 0x020621]: Make code unconditional.
[__LINUX_KERNEL_VERSION >= 0x030000]: Likewise.
* sysdeps/unix/sysv/linux/tile/kernel-features.h
[__LINUX_KERNEL_VERSION >= 0x030000]: Likewise.

8 years agoNEWS (2.23): Fix typo in bug 19048 text.
Carlos O'Donell [Thu, 25 Feb 2016 03:04:13 +0000 (22:04 -0500)]
NEWS (2.23): Fix typo in bug 19048 text.

8 years agoEnable --localedir to set message catalog directory (Bug 14259)
Carlos O'Donell [Thu, 25 Feb 2016 01:06:04 +0000 (20:06 -0500)]
Enable --localedir to set message catalog directory (Bug 14259)

In 1999 the project split "localedir" into "localedir" (path to compiled
locale archives) and "msgcatdir" (path to message catalogs). This
predates the 2002 change in the GNU Coding Standard to document the use
of "localedir" for the path to the message catalogs. It appears that
newlib, gcc, and several other projects also used "msgcatdir" at one
point or another in the past, and so it is in line with historical
precedent that glibc would also use "msgcatdir." However, given that the
GNU Coding Standard uses "localedir", we will switch to that for
consistency as a GNU project. Previous uses of --localdir didn't work
anyway (see bug 14259).

I am committing this patch in the understanding that nobody would object
to fixing #14259 as part of aligning our variable usage to the GNU
Coding Standard.

Given that previous "localedir" uses were converted to "complocaledir"
by [1], we can now convert "msgcatdir" to "localedir" and complete the
transition. With an addition to config.make.in we also fix bug 14259 and
allow users to specify the locale dependent data directory with
"--localedir" at configure time. There is still no way to control at
configure time the location of the *compiled* locale directory.

Tested on x86_64 with no regressions.

Tested using "--localedir" to specify alternate locale dependent data
directory and verified with "make install DESTDIR=/tmp/glibc".

[1] 90fe682d3067163aa773feecf497ef599429457a

8 years agoGB 18030-2005: Document non-rountrip and PUA mappings (bug 19575).
Carlos O'Donell [Wed, 24 Feb 2016 19:31:35 +0000 (14:31 -0500)]
GB 18030-2005: Document non-rountrip and PUA mappings (bug 19575).

8 years agoRemove linux/fanotify.h configure test.
Joseph Myers [Wed, 24 Feb 2016 18:44:10 +0000 (18:44 +0000)]
Remove linux/fanotify.h configure test.

Now we require Linux 3.2 or later kernel headers everywhere, the
configure test for <linux/fanotify.h> is obsolete; this patch removes
it.

Tested for x86_64.

* sysdeps/unix/sysv/linux/configure.ac (linux/fanotify.h): Do not
test for header.
* sysdeps/unix/sysv/linux/configure: Regenerated.
* config.h.in (HAVE_LINUX_FANOTIFY_H): Remove #undef.
* sysdeps/unix/sysv/linux/tst-fanotify.c [!HAVE_LINUX_FANOTIFY_H]:
Remove conditional code.
[HAVE_LINUX_FANOTIFY_H]: Make code unconditional.

8 years agoRequire Linux 3.2 except on x86 / x86_64, 3.2 headers everywhere.
Joseph Myers [Wed, 24 Feb 2016 17:15:12 +0000 (17:15 +0000)]
Require Linux 3.2 except on x86 / x86_64, 3.2 headers everywhere.

In <https://sourceware.org/ml/libc-alpha/2016-01/msg00885.html> I
proposed a minimum Linux kernel version of 3.2 for glibc 2.24, since
Linux 2.6.32 has reached EOL.

In the discussion in February, some concerns were expressed about
compatibility with OpenVZ containers.  It's not clear that these are
real issues, given OpenVZ backporting kernel features and faking the
kernel version for guest software, as discussed in
<https://sourceware.org/ml/libc-alpha/2016-02/msg00278.html>.  It's
also not clear that supporting running GNU/Linux distributions from
late 2016 (at the earliest) on a kernel series from 2009 is a sensible
expectation.  However, as an interim step, this patch increases the
requirement everywhere except x86 / x86_64 (since the controversy was
only about those architectures); the special caveats and settings can
easily be removed later when we're ready to increase the requirements
on x86 / x86_64 (and if someone would like to raise the issue on LWN
as suggested in the previous discussion, that would be welcome).  3.2
kernel headers are required everywhere by this patch.

(x32 already requires 3.4 or later, so is unaffected by this patch.)

As usual for such a change, this patch only changes the configure
scripts and associated documentation.  The intent is to follow up with
removal of dead __LINUX_KERNEL_VERSION conditionals.  Each __ASSUME_*
or other macro that becomes dead can then be removed independently.

Tested for x86_64 and x86.

* sysdeps/unix/sysv/linux/configure.ac (LIBC_LINUX_VERSION):
Define to 3.2.0.
(arch_minimum_kernel): Likewise.
* sysdeps/unix/sysv/linux/configure: Regenerated.
* sysdeps/unix/sysv/linux/i386/configure.ac (arch_minimum_kernel):
Define to 2.6.32.
* sysdeps/unix/sysv/linux/i386/configure: Regenerated.
* sysdeps/unix/sysv/linux/x86_64/64/configure.ac
(arch_minimum_kernel): Define to 2.6.32.
* sysdeps/unix/sysv/linux/x86_64/64/configure: Regenerated.
* README: Document Linux 3.2 requirement.
* manual/install.texi (Linux): Document Linux 3.2 headers
requirement.
* INSTALL: Regenerated.

8 years agoDon't use long double math functions if NO_LONG_DOUBLE
Andreas Schwab [Tue, 23 Feb 2016 15:27:56 +0000 (16:27 +0100)]
Don't use long double math functions if NO_LONG_DOUBLE

8 years agoAdd fts64_* to sysdeps/arm/nacl/libc.abilist
Roland McGrath [Mon, 22 Feb 2016 23:19:56 +0000 (15:19 -0800)]
Add fts64_* to sysdeps/arm/nacl/libc.abilist

8 years agointl: reintroduce unintentionally disabled optimization
Dmitry V. Levin [Sat, 23 Jan 2016 23:48:10 +0000 (23:48 +0000)]
intl: reintroduce unintentionally disabled optimization

HAVE_BUILTIN_EXPECT macro was removed by commit glibc-2.14-280-g3ce1f29,
but then its use was unintentionally reintroduced during merge with GNU
gettext 0.19.3 by commit glibc-2.20-324-g6d24885, effectively disabling
all optimization based on __builtin_expect.  As intl files are also part
of GNU gettext, HAVE_BUILTIN_EXPECT macro cannot be removed, so define
it unconditionally in config.h.in instead.

[BZ #19512]
* config.h.in (HAVE_BUILTIN_EXPECT): New macro.

8 years agoAdd missing inclusion of libc-internal.h.
Stefan Liebler [Mon, 22 Feb 2016 16:44:41 +0000 (17:44 +0100)]
Add missing inclusion of libc-internal.h.

The build of posix/tst-dir.c fails due to undefined DIAG_* macros.
The usage of the macros were introduced in recent commit
7584a3f96de88d5eefe5d6c634515278cbfbf052
"Deprecate readdir_r, readdir64_r [BZ #19056]".
This patch adds the missing header libc-internal.h.

8 years agoDeprecate readdir_r, readdir64_r [BZ #19056]
Florian Weimer [Sat, 20 Feb 2016 11:56:55 +0000 (12:56 +0100)]
Deprecate readdir_r, readdir64_r [BZ #19056]

8 years ago[x86_64] Set DL_RUNTIME_UNALIGNED_VEC_SIZE to 8
H.J. Lu [Fri, 19 Feb 2016 23:43:45 +0000 (15:43 -0800)]
[x86_64] Set DL_RUNTIME_UNALIGNED_VEC_SIZE to 8

Due to GCC bug:

   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58066

__tls_get_addr may be called with 8-byte stack alignment.  Although
this bug has been fixed in GCC 4.9.4, 5.3 and 6, we can't assume
that stack will be always aligned at 16 bytes.  Since SSE optimized
memory/string functions with aligned SSE register load and store are
used in the dynamic linker, we must set DL_RUNTIME_UNALIGNED_VEC_SIZE
to 8 so that _dl_runtime_resolve_sse will align the stack before
calling _dl_fixup:

Dump of assembler code for function _dl_runtime_resolve_sse:
   0x00007ffff7deea90 <+0>: push   %rbx
   0x00007ffff7deea91 <+1>: mov    %rsp,%rbx
   0x00007ffff7deea94 <+4>: and    $0xfffffffffffffff0,%rsp
                                ^^^^^^^^^^^ Align stack to 16 bytes
   0x00007ffff7deea98 <+8>: sub    $0x100,%rsp
   0x00007ffff7deea9f <+15>: mov    %rax,0xc0(%rsp)
   0x00007ffff7deeaa7 <+23>: mov    %rcx,0xc8(%rsp)
   0x00007ffff7deeaaf <+31>: mov    %rdx,0xd0(%rsp)
   0x00007ffff7deeab7 <+39>: mov    %rsi,0xd8(%rsp)
   0x00007ffff7deeabf <+47>: mov    %rdi,0xe0(%rsp)
   0x00007ffff7deeac7 <+55>: mov    %r8,0xe8(%rsp)
   0x00007ffff7deeacf <+63>: mov    %r9,0xf0(%rsp)
   0x00007ffff7deead7 <+71>: movaps %xmm0,(%rsp)
   0x00007ffff7deeadb <+75>: movaps %xmm1,0x10(%rsp)
   0x00007ffff7deeae0 <+80>: movaps %xmm2,0x20(%rsp)
   0x00007ffff7deeae5 <+85>: movaps %xmm3,0x30(%rsp)
   0x00007ffff7deeaea <+90>: movaps %xmm4,0x40(%rsp)
   0x00007ffff7deeaef <+95>: movaps %xmm5,0x50(%rsp)
   0x00007ffff7deeaf4 <+100>: movaps %xmm6,0x60(%rsp)
   0x00007ffff7deeaf9 <+105>: movaps %xmm7,0x70(%rsp)

[BZ #19679]
* sysdeps/x86_64/dl-trampoline.S (DL_RUNIME_UNALIGNED_VEC_SIZE):
Renamed to ...
(DL_RUNTIME_UNALIGNED_VEC_SIZE): This.  Set to 8.
(DL_RUNIME_RESOLVE_REALIGN_STACK): Renamed to ...
(DL_RUNTIME_RESOLVE_REALIGN_STACK): This.  Updated.
(DL_RUNIME_RESOLVE_REALIGN_STACK): Renamed to ...
(DL_RUNTIME_RESOLVE_REALIGN_STACK): This.
* sysdeps/x86_64/dl-trampoline.h
(DL_RUNIME_RESOLVE_REALIGN_STACK): Renamed to ...
(DL_RUNTIME_RESOLVE_REALIGN_STACK): This.

8 years agoelf.h: Add NT_ARM_SYSTEM_CALL constant.
Mark Wielaard [Fri, 12 Feb 2016 16:54:38 +0000 (17:54 +0100)]
elf.h: Add NT_ARM_SYSTEM_CALL constant.

Linux kernel 3.18 added the NT_ARM_SYSTEM_CALL regset for aarch64.

* elf/elf.h: Add NT_ARM_SYSTEM_CALL.

8 years agoelf/elf.h: Add new 386 and X86_64 relocations from binutils.
Mark Wielaard [Fri, 29 Jan 2016 08:49:01 +0000 (09:49 +0100)]
elf/elf.h: Add new 386 and X86_64 relocations from binutils.

The following new 386 and X86_64 were added to binutils. They are
non-dynamic relocations, so don't need direct handling in glibc.
But other programs, like elfutils, use the glibc elf.h definitions
for the names and numbers when inspecting ET_REL files.

R_386_GOT32X was proposed in
https://groups.google.com/forum/#!topic/ia32-abi/GbJJskkid4I

X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX were proposed in
https://groups.google.com/forum/#!topic/x86-64-abi/n9AWHogmVY0

There also used to be R_X86_64_PC32_BND and R_X86_64_PLT32_BND
but those already got deprecated in
https://groups.google.com/d/msg/x86-64-abi/-hdQyMixt8Y/XFDOvioG85cJ

* elf/elf.h (R_386_GOT32X): New.
(R_386_NUM): Update.
(R_X86_64_GOTPCRELX: New.
(R_X86_64_REX_GOTPCRELX): New.
(R_X86_64_NUM): Update.

8 years agotest-skeleton: increase default TIMEOUT to 20 seconds
Mike Frysinger [Tue, 19 Jan 2016 14:18:00 +0000 (09:18 -0500)]
test-skeleton: increase default TIMEOUT to 20 seconds

The vast majority of timeouts I've seen w/glibc tests are due to:
 - slow system (e.g. <1 GHz cpu)
 - loaded system (e.g. lots of parallelism)
Even then, I've seen timeouts on system I don't generally consider
slow, or even loaded, and considering TIMEOUT is set to <=10 in ~60
tests (and <=20 in ~75 tests), it seems I'm not alone.  I've just
gotten in the habit of doing `export TIMEOUTFACTOR=10` on all my
setups.

In the edge case where there is a bug in the test and the timeout is
hit, I think we all agree that's either a problem with the test or a
real bug in the library somewhere.  In either case, the incident rate
should be low, so catering to that seems like the wrong trade-off.

Other developers too usually set large timeout factors.  Increase the
default to 20 seconds to match reality.

8 years agolocales: pap_AN: delete old/deprecated locale [BZ #16003]
Mike Frysinger [Fri, 19 Feb 2016 06:49:29 +0000 (01:49 -0500)]
locales: pap_AN: delete old/deprecated locale [BZ #16003]

From the bug:
Netherlands Antilles was dissolved, and "AN" is not a part of ISO 3166
anymore.  According to setlocale(3), "territory is an ISO 3166 country
code".  We now have pap_AW and pap_CW.

Reported-by: Chris Leonard <cjlhomeaddress@gmail.com>
8 years agolocaledata: CLDRv28: update LC_TELEPHONE.int_prefix
Mike Frysinger [Tue, 9 Feb 2016 05:06:52 +0000 (00:06 -0500)]
localedata: CLDRv28: update LC_TELEPHONE.int_prefix

This updates a bunch of locales based on CLDR v28 data:
  ar_SS: int_prefix: changing 249 to 211
  bn_BD: int_prefix: changing 88 to 880
  dz_BT: int_prefix: changing 66 to 975
  en_HK: int_prefix: changing  to 852
  en_PH: int_prefix: changing  to 63
  en_SG: int_prefix: changing  to 65
  es_DO: int_prefix: changing 1809 to 1
  es_PA: int_prefix: changing 502 to 507
  es_PR: int_prefix: changing 1787 to 1
  km_KH: int_prefix: changing 856 to 855
  mt_MT: int_prefix: changing  to 356
  ne_NP: int_prefix: changing 91 to 977
  pap_AW: int_prefix: changing 599 to 297
  the_NP: int_prefix: changing 91 to 977
  tk_TM: int_prefix: changing  to 993
  uz_UZ: int_prefix: changing 27 to 998
  zh_SG: int_prefix: changing  to 65

I've also checked these against https://countrycode.org/.

Note: the Dominican Republic (DO) and Puerto Rico (PR) updates are
correct: they both use +1.  Historically, DO had one area code of
809 and PR of 787 which is why they were listed as such, but they
have both expanded into 829 and 989 respectively, so using the four
digit value is def incorrect now.

8 years agonptl: support thread stacks that grow up
Carlos O'Donell [Sun, 9 Aug 2015 08:17:17 +0000 (04:17 -0400)]
nptl: support thread stacks that grow up

Gentoo has been carrying this for all arches since 2.17.

URL: http://bugs.gentoo.org/301642

8 years agoUpdate NEWS with 2.24 template
Adhemerval Zanella [Fri, 19 Feb 2016 17:29:53 +0000 (15:29 -0200)]
Update NEWS with 2.24 template

8 years agoFix ldbl-128ibm nextafterl, nexttowardl sign of zero result (bug 19678).
Joseph Myers [Fri, 19 Feb 2016 17:19:53 +0000 (17:19 +0000)]
Fix ldbl-128ibm nextafterl, nexttowardl sign of zero result (bug 19678).

The ldbl-128ibm implementation of nextafterl / nexttowardl returns -0
in FE_DOWNWARD mode when taking the next value below the least
positive subnormal, when it should return +0.  This patch fixes it to
check explicitly for this case.

Tested for powerpc.

[BZ #19678]
* sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c (__nextafterl):
Ensure +0.0 is returned when taking the next value below the least
positive value.

8 years agomalloc: Remove NO_THREADS
Florian Weimer [Fri, 19 Feb 2016 16:07:45 +0000 (17:07 +0100)]
malloc: Remove NO_THREADS

No functional change.  It was not possible to build without
threading support before.

8 years agomalloc: Remove max_total_mem member form struct malloc_par
Florian Weimer [Fri, 19 Feb 2016 16:07:04 +0000 (17:07 +0100)]
malloc: Remove max_total_mem member form struct malloc_par

Also note that sumblks in struct mallinfo is always 0.
No functional change.

8 years agomalloc: Remove arena_mem variable
Florian Weimer [Fri, 19 Feb 2016 16:06:33 +0000 (17:06 +0100)]
malloc: Remove arena_mem variable

The computed value is never used.  The accesses were data races.

8 years agores_ninit: Update comment
Florian Weimer [Fri, 19 Feb 2016 16:00:47 +0000 (17:00 +0100)]
res_ninit: Update comment

Since commit e66e7419a6f58200eec6941b14e2dcff9875cc6c (Actually make
it possible to user the default name server.), the default is
INADDR_LOOPBACK, not INADDR_ANY.

8 years agoImprove file descriptor checks for posix_spawn actions [BZ #19505]
Florian Weimer [Fri, 19 Feb 2016 13:49:38 +0000 (14:49 +0100)]
Improve file descriptor checks for posix_spawn actions [BZ #19505]

8 years agoRemove trailing newline from date_fmt in Serbian locales [BZ #19581]
Florian Weimer [Fri, 19 Feb 2016 13:21:34 +0000 (14:21 +0100)]
Remove trailing newline from date_fmt in Serbian locales [BZ #19581]

8 years agotst-malloc-thread-exit: Use fewer system resources
Florian Weimer [Fri, 19 Feb 2016 13:11:32 +0000 (14:11 +0100)]
tst-malloc-thread-exit: Use fewer system resources

8 years agolocaledata: dz_BT/ps_AF: reformat data
Mike Frysinger [Tue, 9 Feb 2016 20:52:25 +0000 (15:52 -0500)]
localedata: dz_BT/ps_AF: reformat data

ps_AF is the only file that indents fields with tabs.  Kill them.

dz_BT is the only file with a slightly indented field.  Kill that.

8 years agolocledata: trim trailing blank lines/comments
Mike Frysinger [Tue, 9 Feb 2016 04:51:24 +0000 (23:51 -0500)]
locledata: trim trailing blank lines/comments

No functional changes, just trying to standardize the format a bit.

8 years agoFix ldbl-128ibm powl overflow handling (bug 19674).
Joseph Myers [Fri, 19 Feb 2016 01:07:40 +0000 (01:07 +0000)]
Fix ldbl-128ibm powl overflow handling (bug 19674).

The ldbl-128ibm implementation of powl has some problems in the case
of overflow or underflow, which are mainly visible in non-default
rounding modes.

* When overflow or underflow is detected early, the correct sign of an
  overflowing or underflowing result is not allowed for.  This is
  mostly hidden in the default rounding mode by the errno-setting
  wrappers recomputing the result (except in non-default
  error-handling modes such as -lieee), but visible in other rounding
  modes where a result that is not zero or infinity causes the
  wrappers not to do the recomputation.

* The final scaling is done before the sign is incorporated in the
  result, but should be done afterwards for correct overflowing and
  underflowing results in directed rounding modes.

This patch fixes those problems.  Tested for powerpc.

[BZ #19674]
* sysdeps/ieee754/ldbl-128ibm/e_powl.c (__ieee754_powl): Include
sign in overflowing and underflowing results when overflow or
underflow is detected early.  Include sign in result before rather
than after scaling.

8 years agoFix ldbl-128ibm remainderl, remquol equality tests (bug 19603).
Joseph Myers [Fri, 19 Feb 2016 00:55:46 +0000 (00:55 +0000)]
Fix ldbl-128ibm remainderl, remquol equality tests (bug 19603).

The ldbl-128ibm implementations of remainderl and remquol have logic
resulting in incorrect tests for equality of the absolute values of
the arguments.  Equality is tested based on the integer
representations of the high and low parts, with the sign bit masked
off the high part - but when this changes the sign of the high part,
the sign of the low part needs to be changed as well, and failure to
do this means arguments are wrongly treated as equal when they are
not.

This patch fixes the logic to adjust signs of low parts as needed.
Tested for powerpc.

[BZ #19603]
* sysdeps/ieee754/ldbl-128ibm/e_remainderl.c
(__ieee754_remainderl): Adjust sign of integer version of low part
when taking absolute value of high part.
* sysdeps/ieee754/ldbl-128ibm/s_remquol.c (__remquol): Likewise.
* math/libm-test.inc (remainder_test_data): Add another test.
(remquo_test_data): Likewise.

8 years agoFix ldbl-128ibm fmodl handling of equal arguments with low part zero (bug 19602).
Joseph Myers [Thu, 18 Feb 2016 22:54:07 +0000 (22:54 +0000)]
Fix ldbl-128ibm fmodl handling of equal arguments with low part zero (bug 19602).

The ldbl-128ibm implementation of fmodl has logic to detect when the
first argument has absolute value less than or equal to the second.
This logic is only correct for nonzero low parts; if the high parts
are equal and the low parts are zero, then the signs of the low parts
(which have no semantic effect on the value of the long double number)
can result in equal values being wrongly treated as unequal, and an
incorrect result being returned from fmodl.  This patch fixes this by
checking for the case of zero low parts.

Although this does show up in tests from libm-test.inc (both tests of
fmodl, and, indirectly, of remainderl / dreml), the dependence on
non-semantic zero low parts means that test shouldn't be expected to
reproduce it reliably; thus, this patch adds a standalone test that
sets up affected values using unions.

Tested for powerpc.

[BZ #19602]
* sysdeps/ieee754/ldbl-128ibm/e_fmodl.c (__ieee754_fmodl): Handle
equal high parts and both low parts zero specially.
* sysdeps/ieee754/ldbl-128ibm/test-fmodl-ldbl-128ibm.c: New test.
* sysdeps/ieee754/ldbl-128ibm/Makefile [$(subdir) = math] (tests):
Add test-fmodl-ldbl-128ibm.

8 years agoFix ldbl-128ibm fmodl handling of subnormal results (bug 19595).
Joseph Myers [Thu, 18 Feb 2016 22:42:06 +0000 (22:42 +0000)]
Fix ldbl-128ibm fmodl handling of subnormal results (bug 19595).

The ldbl-128ibm implementation of fmodl has completely bogus logic for
subnormal results (in this context, that means results for which the
result is in the subnormal range for double, not results with absolute
value below LDBL_MIN), based on code used for ldbl-128 that is correct
in that case but incorrect in the ldbl-128ibm use.  This patch fixes
it to convert the mantissa into the correct form expected by
ldbl_insert_mantissa, removing the other cases of the code that were
incorrect and in one case unreachable for ldbl-128ibm.  A correct
exponent value is then passed to ldbl_insert_mantissa to reflect the
shifted result.

Tested for powerpc.

[BZ #19595]
* sysdeps/ieee754/ldbl-128ibm/e_fmodl.c (__ieee754_fmodl): Use
common logic for all cases of shifting subnormal results.  Do not
insert sign bit in shifted mantissa.  Always pass -1023 as biased
exponent to ldbl_insert_mantissa in subnormal case.

8 years agoFix ldbl-128ibm roundl for non-default rounding modes (bug 19594).
Joseph Myers [Thu, 18 Feb 2016 22:24:32 +0000 (22:24 +0000)]
Fix ldbl-128ibm roundl for non-default rounding modes (bug 19594).

The ldbl-128ibm implementation of roundl is only correct in
round-to-nearest mode (in other modes, there are incorrect results and
overflow exceptions in some cases).  This patch reimplements it along
the lines used for floorl, ceill and truncl, using __round on the high
part, and on the low part if the high part is an integer, and then
adjusting in the cases where this is incorrect.

Tested for powerpc.

[BZ #19594]
* sysdeps/ieee754/ldbl-128ibm/s_roundl.c (__roundl): Use __round
on high and low parts then adjust result and use
ldbl_canonicalize_int if needed.

8 years agoFix ldbl-128ibm truncl for non-default rounding modes (bug 19593).
Joseph Myers [Thu, 18 Feb 2016 21:52:07 +0000 (21:52 +0000)]
Fix ldbl-128ibm truncl for non-default rounding modes (bug 19593).

The ldbl-128ibm implementation of truncl is only correct in
round-to-nearest mode (in other modes, there are incorrect results and
overflow exceptions in some cases).  It is also unnecessarily
complicated, rounding both high and low parts to the nearest integer
and then adjusting for the semantics of trunc, when it seems more
natural to take the truncation of the high part (__trunc optimized
inline versions can be used), and the floor or ceiling of the low part
(depending on the sign of the high part) if the high part is an
integer, as was done for floorl and ceill.  This patch makes it use
that simpler approach.

Tested for powerpc.

[BZ #19593]
* sysdeps/ieee754/ldbl-128ibm/s_truncl.c (__truncl): Use __trunc
on high part and __floor or __ceil on low part then use
ldbl_canonicalize_int if needed.

8 years agoFix ldbl-128ibm ceill for non-default rounding modes (bug 19592).
Joseph Myers [Thu, 18 Feb 2016 21:40:39 +0000 (21:40 +0000)]
Fix ldbl-128ibm ceill for non-default rounding modes (bug 19592).

The ldbl-128ibm implementation of ceill is only correct in
round-to-nearest mode (in other modes, there are incorrect results and
overflow exceptions in some cases).  It is also unnecessarily
complicated, rounding both high and low parts to the nearest integer
and then adjusting for the semantics of ceil, when it seems more
natural to take the ceiling of the high part (__ceil optimized inline
versions can be used), and that of the low part if the high part is an
integer, as was done for floorl.  This patch makes it use that simpler
approach.

Tested for powerpc.

[BZ #19592]
* sysdeps/ieee754/ldbl-128ibm/s_ceill.c (__ceill): Use __ceil on
high and low parts then use ldbl_canonicalize_int if needed.

8 years agoFix ldbl-128ibm floorl for non-default rounding modes (bug 17899).
Joseph Myers [Thu, 18 Feb 2016 21:31:10 +0000 (21:31 +0000)]
Fix ldbl-128ibm floorl for non-default rounding modes (bug 17899).

The ldbl-128ibm implementation of floorl is only correct in
round-to-nearest mode (in other modes, there are incorrect results and
overflow exceptions in some cases going beyond the incorrect signs of
zero results noted in bug 17899).  It is also unnecessarily
complicated, rounding both high and low parts to the nearest integer
and then adjusting for the semantics of floor, when it seems more
natural to take the floor of the high part (__floor optimized inline
versions can be used), and that of the low part if the high part is an
integer.  This patch makes it use that simpler approach, with a
canonicalization that works in all rounding modes (given that the only
way the result can be noncanonical is if taking the floor of a
negative noninteger low part increased its exponent).

Tested for powerpc, where over a thousand failures are removed from
test-ldouble.out (floorl problems affect many powl tests).

[BZ #17899]
* sysdeps/ieee754/ldbl-128ibm/math_ldbl.h (ldbl_canonicalize_int):
New function.
* sysdeps/ieee754/ldbl-128ibm/s_floorl.c (__floorl): Use __floor
on high and low parts then use ldbl_canonicalize_int if needed.

8 years agoRegenerated configure scripts.
Adhemerval Zanella [Thu, 18 Feb 2016 20:31:04 +0000 (18:31 -0200)]
Regenerated configure scripts.

8 years agoRegenerate libc.pot for 2.23.
Adhemerval Zanella [Thu, 18 Feb 2016 19:27:26 +0000 (17:27 -0200)]
Regenerate libc.pot for 2.23.

8 years agoUpdated translations for 2.23.
Adhemerval Zanella [Thu, 18 Feb 2016 19:23:47 +0000 (17:23 -0200)]
Updated translations for 2.23.

8 years agoOpen development for 2.24.
Adhemerval Zanella [Thu, 18 Feb 2016 18:11:58 +0000 (16:11 -0200)]
Open development for 2.24.

8 years agoUpdate version.h and include/features.h for 2.23 release
Adhemerval Zanella [Thu, 18 Feb 2016 17:54:00 +0000 (15:54 -0200)]
Update version.h and include/features.h for 2.23 release

8 years agoUpdate NEWS with fixed bugs for 2.23 release
Adhemerval Zanella [Thu, 18 Feb 2016 17:51:45 +0000 (15:51 -0200)]
Update NEWS with fixed bugs for 2.23 release

8 years agoAdd _STRING_INLINE_unaligned and string_private.h
H.J. Lu [Thu, 18 Feb 2016 13:00:33 +0000 (11:00 -0200)]
Add _STRING_INLINE_unaligned and string_private.h

As discussed in

https://sourceware.org/ml/libc-alpha/2015-10/msg00403.html

the setting of _STRING_ARCH_unaligned currently controls the external
GLIBC ABI as well as selecting the use of unaligned accesses withing
GLIBC.

Since _STRING_ARCH_unaligned was recently changed for AArch64, this
would potentially break the ABI in GLIBC 2.23, so split the uses and add
_STRING_INLINE_unaligned to select the string ABI. This setting must be
fixed for each target, while _STRING_ARCH_unaligned may be changed from
release to release.  _STRING_ARCH_unaligned is used unconditionally in
glibc.  But <bits/string.h>, which defines _STRING_ARCH_unaligned, isn't
included with -Os.  Since _STRING_ARCH_unaligned is internal to glibc and
may change between glibc releases, it should be made private to glibc.
_STRING_ARCH_unaligned should defined in the new string_private.h heade
file which is included unconditionally from internal <string.h> for glibc
build.

[BZ #19462]
* bits/string.h (_STRING_ARCH_unaligned): Renamed to ...
(_STRING_INLINE_unaligned): This.
* include/string.h: Include <string_private.h>.
* string/bits/string2.h: Replace _STRING_ARCH_unaligned with
_STRING_INLINE_unaligned.
* sysdeps/aarch64/bits/string.h (_STRING_ARCH_unaligned): Removed.
(_STRING_INLINE_unaligned): New.
* sysdeps/aarch64/string_private.h: New file.
* sysdeps/generic/string_private.h: Likewise.
* sysdeps/m68k/m680x0/m68020/string_private.h: Likewise.
* sysdeps/s390/string_private.h: Likewise.
* sysdeps/x86/string_private.h: Likewise.
* sysdeps/m68k/m680x0/m68020/bits/string.h
(_STRING_ARCH_unaligned): Renamed to ...
(_STRING_INLINE_unaligned): This.
* sysdeps/s390/bits/string.h (_STRING_ARCH_unaligned): Renamed
to ...
(_STRING_INLINE_unaligned): This.
* sysdeps/sparc/bits/string.h (_STRING_ARCH_unaligned): Renamed
to ...
(_STRING_INLINE_unaligned): This.
* sysdeps/x86/bits/string.h (_STRING_ARCH_unaligned): Renamed
to ...
(_STRING_INLINE_unaligned): This.

8 years agoNEWS: List additional fixed security bugs
Florian Weimer [Thu, 18 Feb 2016 14:10:11 +0000 (15:10 +0100)]
NEWS: List additional fixed security bugs

8 years agoUse PIC relocation in ALIAS_IMPL
Andrew Senkevich [Wed, 17 Feb 2016 22:23:32 +0000 (14:23 -0800)]
Use PIC relocation in ALIAS_IMPL

Since libmvec_nonshared.a may be linked into shared objects, ALIAS_IMPL
should use PIC relocation.

[BZ #19590]
* sysdeps/x86_64/fpu/svml_finite_alias.S (ALIAS_IMPL): Use PIC
relocation.

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

8 years agoUpdate INSTALL with latest versions tested to work.
Carlos O'Donell [Mon, 15 Feb 2016 01:54:29 +0000 (20:54 -0500)]
Update INSTALL with latest versions tested to work.

8 years agoEnsure isinff, isinfl, isnanf, and isnanl are defined (Bug 19439)
Carlos O'Donell [Mon, 15 Feb 2016 00:27:06 +0000 (19:27 -0500)]
Ensure isinff, isinfl, isnanf, and isnanl are defined (Bug 19439)

In ICO C++11 mode ensure that isinff, isinfl, isnanf, and isnanl
are defined.  These functions were accidentally removed from the
header as part of commit d9b965fa56350d6eea9f7f438a0714c7ffbb183f,
but being GNU extensions, they should have been left in place.

8 years agoRevert "ChangeLogs: convert to utf-8"
Mike Frysinger [Fri, 12 Feb 2016 21:34:16 +0000 (16:34 -0500)]
Revert "ChangeLogs: convert to utf-8"

This reverts commit d2bb040b2a2f58b1ef80f01292bd722fce01d36a.

It seems some files (like tst-regex) directly parse these and rely on
some of its content *not* being UTF-8.  Until we can fix thoses tests
(and isolate them from ChangeLog updates), back out this change.

It also shouldn't really have landed during the freeze.

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

8 years ago[ARM] add missing -funwind-tables to test case (bug 19529)
Szabolcs Nagy [Thu, 11 Feb 2016 17:17:38 +0000 (17:17 +0000)]
[ARM] add missing -funwind-tables to test case (bug 19529)

stdlib/tst-makecontext test failed on arm because it used backtrace
without -funwind-tables.

8 years agoChangeLogs: convert to utf-8
Paul Eggert [Fri, 22 May 2015 21:42:12 +0000 (14:42 -0700)]
ChangeLogs: convert to utf-8

8 years agolocaledata: convert all files to utf-8
Mike Frysinger [Mon, 8 Feb 2016 22:17:23 +0000 (17:17 -0500)]
localedata: convert all files to utf-8

The comments were using various encodings like ISO-8859-1.
Convert them all over to UTF-8.

8 years agopowerpc: Regenerate libm-test-ulps
Rajalakshmi Srinivasaraghavan [Thu, 28 Jan 2016 07:26:59 +0000 (01:26 -0600)]
powerpc: Regenerate libm-test-ulps

8 years agoFix MIPS mmap negative offset handling for consistency (bug 19550).
Joseph Myers [Mon, 1 Feb 2016 18:20:21 +0000 (18:20 +0000)]
Fix MIPS mmap negative offset handling for consistency (bug 19550).

The handling of negative offsets in MIPS mmap is inconsistent with
other architectures, as shown by failure of the test
posix/tst-mmap-offset for o32 and n32.  The MIPS mmap syscall uses a
signed argument and does a signed arithmetic shift on it, whereas the
glibc semantics expected by that test are for the offset to be
considered as a large positive offset.  This patch makes MIPS
consistent with other architectures as far as possible by using the
mmap2 syscall on o32 (#including the generic implementation), and
making mmap not an alias for mmap64 for n32, with a custom
implementation for n32 that zero-extends the offset argument to 64-bit
before calling the mmap syscall.

Tested for MIPS64 (o32, n32, n64).

[BZ #19550]
* sysdeps/unix/sysv/linux/mips/mips32/mmap.c: New file.
* sysdeps/unix/sysv/linux/mips/mips64/mmap64.c: Move to ....
* sysdeps/unix/sysv/linux/mips/mips64/n64/mmap64.c: ... here.
* sysdeps/unix/sysv/linux/mips/mips64/n32/mmap.c: New file.
* sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list (mmap64):
New syscall entry.
* sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list (mmap):
New syscall entry.
* sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (mmap): Remove
syscall entry.

8 years agoRevert "elf/elf.h: Add new 386 and X86_64 relocations from binutils."
Mark Wielaard [Sun, 31 Jan 2016 17:34:27 +0000 (18:34 +0100)]
Revert "elf/elf.h: Add new 386 and X86_64 relocations from binutils."

This reverts commit 3da75f08818fa3d217e5d566477c7001cb774792.

glibc 2.23 hard freeze doesn't allow this change at this time.

8 years agoelf/elf.h: Add new 386 and X86_64 relocations from binutils.
Mark Wielaard [Fri, 29 Jan 2016 08:49:01 +0000 (09:49 +0100)]
elf/elf.h: Add new 386 and X86_64 relocations from binutils.

The following new 386 and X86_64 were added to binutils. They are
non-dynamic relocations, so don't need direct handling in glibc.
But other programs, like elfutils, use the glibc elf.h definitions
for the names and numbers when inspecting ET_REL files.

R_386_GOT32X was proposed in
https://groups.google.com/forum/#!topic/ia32-abi/GbJJskkid4I

X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX were proposed in
https://groups.google.com/forum/#!topic/x86-64-abi/n9AWHogmVY0

There also used to be R_X86_64_PC32_BND and R_X86_64_PLT32_BND
but those already got deprecated in
https://groups.google.com/d/msg/x86-64-abi/-hdQyMixt8Y/XFDOvioG85cJ

* elf/elf.h (R_386_GOT32X): New.
(R_386_NUM): Update.
(R_X86_64_GOTPCRELX: New.
(R_X86_64_REX_GOTPCRELX): New.
(R_X86_64_NUM): Update.

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]

8 years agoFix MIPS64 memcpy regression.
Steve Ellcey [Thu, 28 Jan 2016 01:52:05 +0000 (01:52 +0000)]
Fix MIPS64 memcpy regression.

The MIPS memcpy optimizations at
<https://sourceware.org/ml/libc-alpha/2015-10/msg00597.html>
introduced a bug causing many string function tests to fail with
segfaults for n32 and n64:

FAIL: string/stratcliff
FAIL: string/test-bcopy
FAIL: string/test-memccpy
FAIL: string/test-memcmp
FAIL: string/test-memcpy
FAIL: string/test-memmove
FAIL: string/test-mempcpy
FAIL: string/test-stpncpy
FAIL: string/test-strncmp
FAIL: string/test-strncpy

(Some failures in other directories could also be caused by this bug.)

The problem is that after the check for whether a word of input is
left that can be copied as a word before moving to byte copies, a load
can occur in the branch delay slot, resulting in a segfault if we are
at the end of a page and the following page is unmapped.  I don't see
how this would have passed the tests as reported in the original patch
posting (different kernel configurations affecting the code setting up
unmapped pages, maybe?), since the tests in question don't appear to
have changed recently.

This patch moves a later instruction into the delay slot, as suggested
at <https://sourceware.org/ml/libc-alpha/2016-01/msg00584.html>.

Tested for n32 and n64.

2016-01-28  Steve Ellcey  <sellcey@imgtec.com>
            Joseph Myers  <joseph@codesourcery.com>

* sysdeps/mips/memcpy.S (MEMCPY_NAME) [USE_DOUBLE]: Avoid word
load in branch delay slot when less than a word of input left.

8 years agoRemove unused variables
Andreas Schwab [Mon, 25 Jan 2016 16:07:07 +0000 (17:07 +0100)]
Remove unused variables

They are flagged by -Wunused-const-variable.

8 years agoUpdate localplt.data for 32-bit sparc.
David S. Miller [Wed, 27 Jan 2016 00:16:38 +0000 (16:16 -0800)]
Update localplt.data for 32-bit sparc.

* sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data: Add _Q_cmp.

8 years agoDefine __sqrtl_finite on sparc 32-bit with correct symbol version.
David S. Miller [Tue, 26 Jan 2016 00:07:15 +0000 (16:07 -0800)]
Define __sqrtl_finite on sparc 32-bit with correct symbol version.

* sysdeps/sparc/sparc32/Versions (GLIBC_2.23): Add entry for __sqrtl_finite.
* sysdeps/sparc/sparc32/fpu/e_sqrtl.c (__sqrtl_finite): Define instead using
versioned_symbol.
* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Fix ordering of entries.

8 years agoAdjust sparc 32-bit __sqrtl_finite version tag.
David S. Miller [Mon, 25 Jan 2016 18:41:05 +0000 (10:41 -0800)]
Adjust sparc 32-bit __sqrtl_finite version tag.

* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Move
__sqrtl_finite to GLIBC_2.23

8 years agoUpdate Alpha libm-test-ulps
Richard Henderson [Mon, 25 Jan 2016 18:43:41 +0000 (10:43 -0800)]
Update Alpha libm-test-ulps

8 years agoDon't do lock elision on an error checking mutex (bug 17514)
Andreas Schwab [Wed, 13 Jan 2016 15:04:42 +0000 (16:04 +0100)]
Don't do lock elision on an error checking mutex (bug 17514)

Error checking mutexes are not supposed to be subject to lock elision.
That would defeat the error checking nature of the mutex because lock
elision doesn't record ownership.

8 years agoCleanup ppc bits/ipc.h
Paul E. Murphy [Tue, 19 Jan 2016 17:05:41 +0000 (11:05 -0600)]
Cleanup ppc bits/ipc.h

Ages ago (commit e9dcb08) the ipc syscalls were inlined and
eventually abstracted away any need for direct __ipc calls.

8 years agoS390: Fix build failure in test string/tst-endian.c with gcc 6.
Stefan Liebler [Mon, 25 Jan 2016 11:44:46 +0000 (12:44 +0100)]
S390: Fix build failure in test string/tst-endian.c with gcc 6.

Building string/tst-endian.c with gcc 6 produces an build warning/error on s390 (big endian machine):
gcc tst-endian.c -c -std=gnu11 -fgnu89-inline  -O2 or -O3 ...
tst-endian.c: In function ‘do_test’:
tst-endian.c:16:30: error: self-comparison always evaluates to false [-Werror=tautological-compare]
    if (htobe16 (be16toh (i)) != i)
                              ^~
...

See definitions of htobexx, bexxtoh in string/endian.h:
...

This patch silences these warnings with DIAG_* macros if build with gcc 6
and newer.

The same warnings occur on little endian machines with the
"htoleXX (leXXtoh (i)) != i" if-statements.

ChangeLog:

* string/tst-endian.c: Include <libc-internal.h>.
(do_test): Ignore tautological-compare warnings around
"htobeXX (beXXtoh (i)) != i" and
"htoleXX (leXXtoh (i)) != i" if-statements.

8 years agoFix missing __sqrtl_finite symbol in libm on sparc 32-bit.
David S. Miller [Mon, 25 Jan 2016 05:14:12 +0000 (21:14 -0800)]
Fix missing __sqrtl_finite symbol in libm on sparc 32-bit.

* sysdeps/sparc/sparc32/fpu/e_sqrtl.c: New file.
* sysdeps/sparc/sparc32/soft-fp/q_sqrt.c (__ieee754_sqrtl): Remove alias.
* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Add __sqrtl_finite.

8 years agoUpdate sparc ULPS.
David S. Miller [Mon, 25 Jan 2016 05:12:58 +0000 (21:12 -0800)]
Update sparc ULPS.

* sysdeps/sparc/fpu/libm-test-ulps: Update.

8 years agoMIPS: Set the required Linux kernel version to 4.5.0 for 2008 NaN
Maciej W. Rozycki [Mon, 25 Jan 2016 00:19:27 +0000 (00:19 +0000)]
MIPS: Set the required Linux kernel version to 4.5.0 for 2008 NaN

Complement the addition of the required kernel support, present upstream
as from commit 2b5e869ecfcb3112f7e1267cb0328f3ff6d49b18 ("MIPS: ELF:
Interpret the NAN2008 file header flag") and released with Linux 4.5-rc1
on Jan 24th, 2016.

* sysdeps/unix/sysv/linux/mips/configure.ac: Set
`arch_minimum_kernel' to 4.5.0 if 2008 NaN encoding is used.
* sysdeps/unix/sysv/linux/mips/configure: Regenerate.

8 years agoFix nptl/tst-setuid3.c
Paul E. Murphy [Tue, 19 Jan 2016 19:42:44 +0000 (13:42 -0600)]
Fix nptl/tst-setuid3.c

pthread_barrier_wait can return either PTHREAD_BARRIER_SERIAL_THREAD
or 0.  Posix makes no guarantees about which thread return the unique
value.

Additionally, pthread_join was not called despite seemingly checking
for the error.

8 years agopowerpc: Fix macro usage of htm builtins
Paul E. Murphy [Wed, 20 Jan 2016 16:33:19 +0000 (10:33 -0600)]
powerpc: Fix macro usage of htm builtins

Some extraneous semicolons were included in a
recent patch which causes a build failure with
newer compilers.

8 years agoMaintainence patch for nios2: update ULPS file and localplt.data changes.
Chung-Lin Tang [Fri, 22 Jan 2016 06:58:03 +0000 (22:58 -0800)]
Maintainence patch for nios2: update ULPS file and localplt.data changes.

8 years agoSilence some false positive warnings for gcc 4.7
Chris Metcalf [Wed, 20 Jan 2016 22:07:51 +0000 (17:07 -0500)]
Silence some false positive warnings for gcc 4.7

8 years agoNaCl: Fix unused variable errors in lowlevellock-futex.h macros.
Roland McGrath [Wed, 20 Jan 2016 21:57:14 +0000 (13:57 -0800)]
NaCl: Fix unused variable errors in lowlevellock-futex.h macros.

8 years ago2016-01-20 Paul Pluzhnikov <ppluzhnikov@google.com>
Paul Pluzhnikov [Wed, 20 Jan 2016 21:39:20 +0000 (13:39 -0800)]
2016-01-20  Paul Pluzhnikov  <ppluzhnikov@google.com>

[BZ #19490]
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S (pthread_cond_broadcast): Use ENTRY/END
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S (pthread_cond_signal): Likewise
* sysdeps/x86_64/nptl/pthread_spin_lock.S (pthread_spin_lock): Likewise
* sysdeps/x86_64/nptl/pthread_spin_trylock.S (pthread_spin_trylock): Likewise
* sysdeps/x86_64/nptl/pthread_spin_unlock.S (pthread_spin_unlock): Likewise

8 years agoFix __finitel libm compat symbol version.
Joseph Myers [Wed, 20 Jan 2016 19:04:43 +0000 (19:04 +0000)]
Fix __finitel libm compat symbol version.

The changes to restrict implementation-namespace symbol aliases such
as __finitel to compat symbols used code for __finitel in libm
analogous to that for __finitel in libc.  However, the versions for
the two symbols are actually different, GLIBC_2.0 in libc and
GLIBC_2.1 in libm.  This patch fixes the handling of the libm compat
symbol.

Tested for mips (o32), where it fixes an ABI test failure.

* sysdeps/ieee754/dbl-64/s_finite.c
[NO_LONG_DOUBLE && LDBL_CLASSIFY_COMPAT] (__finitel): Define
compat symbol at version GLIBC_2_1 and use GLIBC_2_1 in
SHLIB_COMPAT condition for libm, not GLIBC_2_0.
* sysdeps/ieee754/dbl-64/wordsize-64/s_finite.c
[NO_LONG_DOUBLE && LDBL_CLASSIFY_COMPAT] (__finitel): Likewise.

8 years agoUpdate localplt.data for powerpc-nofpu.
Joseph Myers [Wed, 20 Jan 2016 18:19:10 +0000 (18:19 +0000)]
Update localplt.data for powerpc-nofpu.

Testing for powerpc-nofpu showed that localplt.data was out of date.
Two new soft-fp functions showed up in the list: __gtsf2 and
__unordsf2; this patch adds these as optional.  __signbit and
__signbitl no longer appear as local PLT entries; given the move to
__builtin_signbit* for all GCC versions supported for building glibc
(and given the use of the type-generic signbit macro within glibc),
those can safely be removed from the list, which this patch does.

Tested for powerpc-nofpu.

* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data
(__gtsf2): Add as optional for libc.so.
(__unordsf2): Likewise.
(__signbit): Remove for libc.so.
(__signbitl): Likewise.

8 years agoS390: Fix build error in iconvdata/bug-iconv11.c.
Stefan Liebler [Wed, 20 Jan 2016 07:32:37 +0000 (08:32 +0100)]
S390: Fix build error in iconvdata/bug-iconv11.c.

This fixes the following build error on S390 31bit while building the test
iconvdata/bug-iconv11.c with gcc 5.3:
bug-iconv11.c: In function ‘test_ibm93x’:
bug-iconv11.c:59:11: error: format ‘%td’ expects argument of type ‘ptrdiff_t’, but argument 2 has type ‘size_t {aka long unsigned int}’ [-Werror=format=]
   printf ("  ==> %td: %s\n"
           ^
cc1: all warnings being treated as errors

This patch uses %zu format specifier for argument size_t ret instead of %td.

ChangeLog:

* iconvdata/bug-iconv11.c (test_ibm93x):
Use %zu printf format specifier for size_t argument.

8 years agoFix ulps regeneration for *-finite tests.
Joseph Myers [Tue, 19 Jan 2016 21:42:58 +0000 (21:42 +0000)]
Fix ulps regeneration for *-finite tests.

On running tests after from-scratch ulps regeneration, I found that
some libm tests failed with ulps in excess of those recorded in the
from-scratch regeneration, which should never happen unless those ulps
exceed the limit on ulps that can go in libm-test-ulps files.

Failure: Test: atan2_upward (inf, -inf)
Result:
 is:          2.35619498e+00   0x1.2d97ccp+1
 should be:   2.35619450e+00   0x1.2d97c8p+1
 difference:  4.76837159e-07   0x1.000000p-21
 ulp       :  2.0000
 max.ulp   :  1.0000
Maximal error of `atan2_upward'
 is      : 2 ulp
 accepted: 1 ulp
Failure: Test: carg_upward (-inf + inf i)
Result:
 is:          2.35619498e+00   0x1.2d97ccp+1
 should be:   2.35619450e+00   0x1.2d97c8p+1
 difference:  4.76837159e-07   0x1.000000p-21
 ulp       :  2.0000
 max.ulp   :  1.0000
Maximal error of `carg_upward'
 is      : 2 ulp
 accepted: 1 ulp

The problem comes from the addition of tests for the finite-math-only
versions of libm functions.  Those tests share ulps with the default
function variants.  make regen-ulps runs the default tests before the
finite-math-only tests, concatenating the resulting ulps before
feeding them to gen-libm-test.pl to generate a new libm-test-ulps
file.  But gen-libm-test.pl always takes the last ulps value given for
any (function, type) pair.  So, if the largest ulps for a function
come from non-finite inputs, a from-scratch regeneration loses those
ulps.

This patch fixes gen-libm-test.pl, in the case where there are
multiple ulps values for a (function, type) pair - which can only
happen as part of a regeneration - to take the largest ulps value
rather than the last one.

Tested for ARM / MIPS / powerpc-nofpu.

* math/gen-libm-test.pl (parse_ulps): Do not reduce
already-recorded ulps.
* sysdeps/arm/libm-test-ulps: Regenerated.
* sysdeps/mips/mips32/libm-test-ulps: Likewise.
* sysdeps/mips/mips64/libm-test-ulps: Likewise.
* sysdeps/powerpc/nofpu/libm-test-ulps: Likewise.

8 years agoFixed build with assembler w/o AVX-512 support.
Andrew Senkevich [Tue, 19 Jan 2016 11:34:53 +0000 (14:34 +0300)]
Fixed build with assembler w/o AVX-512 support.

    * sysdeps/x86_64/multiarch/ifunc-impl-list.c: Fixed build with
    assembler not supporting AVX-512.

8 years agoS390: Regenerate ULPs
Stefan Liebler [Tue, 19 Jan 2016 09:00:52 +0000 (10:00 +0100)]
S390: Regenerate ULPs

I've regenerated ulps from scratch for s390/s390x.
All math testcases are passing afterwards.

ChangeLog:

* sysdeps/s390/fpu/libm-test-ulps: Regenerated.

8 years agoRegenerate MIPS libm-test-ulps.
Joseph Myers [Mon, 18 Jan 2016 23:32:40 +0000 (23:32 +0000)]
Regenerate MIPS libm-test-ulps.

* sysdeps/mips/mips32/libm-test-ulps: Regenerated.
* sysdeps/mips/mips64/libm-test-ulps: Likewise.

8 years agoRegenerate powerpc-nofpu libm-test-ulps.
Joseph Myers [Mon, 18 Jan 2016 23:02:03 +0000 (23:02 +0000)]
Regenerate powerpc-nofpu libm-test-ulps.

* sysdeps/powerpc/nofpu/libm-test-ulps: Regenerated.

8 years agoRegenerate ARM libm-test-ulps.
Joseph Myers [Mon, 18 Jan 2016 22:55:47 +0000 (22:55 +0000)]
Regenerate ARM libm-test-ulps.

* sysdeps/arm/libm-test-ulps: Regenerated.

8 years ago[BZ #19451]
Paul Pluzhnikov [Mon, 18 Jan 2016 22:36:28 +0000 (14:36 -0800)]
[BZ #19451]
* math/Makefile (libm-vec-tests): Move libraries after wrappers.o to fix
"make check" link failure on Ubuntu.

8 years agoS/390: Do not raise inexact exception in lrint/lround. [BZ #19486]
Stefan Liebler [Mon, 18 Jan 2016 11:48:06 +0000 (12:48 +0100)]
S/390: Do not raise inexact exception in lrint/lround. [BZ #19486]

I get some math test-failures on s390 for float/double/ldouble for
various lrint/lround functions like:
lrint (0x1p64): Exception "Inexact" set
lrint (-0x1p64): Exception "Inexact" set
lround (0x1p64): Exception "Inexact" set
lround (-0x1p64): Exception "Inexact" set
...

GCC emits "convert to fixed" instructions for casting floating point
values to integer values. These instructions raise invalid and inexact
exceptions if the floating point value exceeds the integer type ranges.

This patch enables the various FIX_DBL_LONG_CONVERT_OVERFLOW macros in
order to avoid a cast from floating point to integer type and raise the
invalid exception with feraiseexcept.
The ldbl-128 rint/round functions are now using the same logic.

ChangeLog:

[BZ #19486]
* sysdeps/s390/fix-fp-int-convert-overflow.h: New File.
* sysdeps/generic/fix-fp-int-convert-overflow.h
(FIX_LDBL_LONG_CONVERT_OVERFLOW,
FIX_LDBL_LLONG_CONVERT_OVERFLOW): New define.
* sysdeps/arm/fix-fp-int-convert-overflow.h: Likewise.
* sysdeps/mips/mips32/fpu/fix-fp-int-convert-overflow.h:
Likewise.
* sysdeps/ieee754/ldbl-128/s_lrintl.c (__lrintl):
Avoid conversions to long int where inexact exceptions
could be raised.
* sysdeps/ieee754/ldbl-128/s_lroundl.c (__lroundl):
Likewise.
* sysdeps/ieee754/ldbl-128/s_llrintl.c (__llrintl):
Avoid conversions to long long int where inexact exceptions
could be raised.
* sysdeps/ieee754/ldbl-128/s_llroundl.c (__llroundl):
Likewise.