platform/upstream/glibc.git
8 years agomalloc: Adjust header file guard in malloc-internal.h
Florian Weimer [Wed, 4 May 2016 13:25:39 +0000 (15:25 +0200)]
malloc: Adjust header file guard in malloc-internal.h

8 years agoaio: fix newp->running data race
Samuel Thibault [Wed, 4 May 2016 13:14:29 +0000 (15:14 +0200)]
aio: fix newp->running data race

* sysdeps/pthread/aio_misc.c (__aio_enqueue_request): Do not write
`running` field of `newp` when a thread was started to process it,
since that thread will not take `__aio_requests_mutex`, and the field
already has the proper value actually.

8 years agogetnameinfo: Return EAI_OVERFLOW in more cases [BZ #19787]
Florian Weimer [Wed, 4 May 2016 12:45:17 +0000 (14:45 +0200)]
getnameinfo: Return EAI_OVERFLOW in more cases [BZ #19787]

The AF_LOCAL and AF_INET/AF_INET6 non-numerci service conversion
did not return EAI_OVERFLOW if the supplied buffer was too small,
silently returning truncated data.  In the AF_INET/AF_INET6
numeric cases, the snprintf return value checking was incorrect.

8 years agogetnameinfo: Avoid calling strnlen on uninitialized buffer
Florian Weimer [Wed, 4 May 2016 12:35:23 +0000 (14:35 +0200)]
getnameinfo: Avoid calling strnlen on uninitialized buffer

In the numeric AF_INET/AF_INET6 case, if inet_ntop fails
as the result of a short host buffer, we used to call strnlen
on the uninitialized host buffer.

8 years agogetnameinfo: Reduce line length and add missing comments
Florian Weimer [Wed, 4 May 2016 12:35:12 +0000 (14:35 +0200)]
getnameinfo: Reduce line length and add missing comments

8 years agopowerpc: Fix operand prefixes
Gabriel F. T. Gomes [Tue, 12 Apr 2016 16:11:29 +0000 (13:11 -0300)]
powerpc: Fix operand prefixes

The file sysdeps/powerpc/sysdeps.h defines aliases for condition register
operands.  E.g.: 'cr7' means condition register 7.  On the one hand, this
increases readability, as it makes it easier for readers to know whether the
operand is a condition register, a general purpose register or an immediate.
On the other hand, this permits that condition registers be written as if they
were general purpose, and vice-versa, thus reducing the readability of the
code.

This commit removes some of these unintentional misuses.

The changes have no effect on the final code.  Checked with objdump.

8 years agoCVE-2016-1234: glob: Do not copy d_name field of struct dirent [BZ #19779]
Florian Weimer [Wed, 4 May 2016 10:09:35 +0000 (12:09 +0200)]
CVE-2016-1234: glob: Do not copy d_name field of struct dirent [BZ #19779]

Instead, we store the data we need from the return value of
readdir in an object of the new type struct readdir_result.
This type is independent of the layout of struct dirent.

8 years agoFix sys/time.h timespec namespace (bug 20041).
Joseph Myers [Tue, 3 May 2016 23:36:18 +0000 (23:36 +0000)]
Fix sys/time.h timespec namespace (bug 20041).

For UNIX98 and older standards, sys/time.h should not define struct
timespec, but does so via the inclusion of sys/select.h (which is a
new header in the 2001 edition of POSIX, and defines struct timespec
because of the declaration of pselect, a new function in the 2001
edition of POSIX).  In turn, this affects some other headers that
themselves include sys/time.h.

This patch fixes this by conditioning the __need_timespec definition
in sys/select.h on __USE_XOPEN2K, the same condition used there for
the declaration of pselect (this has no effect on direct uses of
sys/select.h with feature test macros for any standard that includes
that header, since such standards result in __USE_XOPEN2K being
defined).

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

[BZ #20041]
* misc/sys/select.h (__need_timespec): Only define if
[__USE_XOPEN2K].
* conform/Makefile (test-xfail-XPG4/sys/time.h/conform): Remove
variable.
(test-xfail-XPG4/utmpx.h/conform): Likewise.
(test-xfail-UNIX98/sys/time.h/conform): Likewise.
(test-xfail-UNIX98/utmpx.h/conform): Likewise.

8 years agopowerpc: Add missing insn in swapcontext [BZ #20004]
Paul E. Murphy [Tue, 3 May 2016 15:45:51 +0000 (10:45 -0500)]
powerpc: Add missing insn in swapcontext [BZ #20004]

A missing instruction was discovered in the compat version of
swapcontext while running the GCC test suite.

8 years agoFix fcntl.h timespec namespace (bug 20023).
Joseph Myers [Mon, 2 May 2016 23:20:33 +0000 (23:20 +0000)]
Fix fcntl.h timespec namespace (bug 20023).

fcntl.h defines struct timespec if __USE_XOPEN || __USE_XOPEN2K8.  But
(a) the subsequent bits/stat.h include only needs it if __USE_XOPEN2K8
and (b) older standards did not allow struct timespec here.  (It's
allowed for newer standards by virtue of the permission to include
symbols from sys/stat.h.  But sys/stat.h is only required to provide
struct timespec from the 2008 edition of POSIX onwards, and permitted
by the 2004 TC to the 2001 edition in anticipation of the addition of
nanosecond timestamp support to struct stat in the 2008 edition.)

This patch limits the timespec definition to the __USE_XOPEN2K8 case,
that being the only case where it is actually needed for the
<bits/stat.h> include.

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

[BZ #20023]
* io/fcntl.h [__USE_XOPEN && !__USE_XOPEN2K8]: Do not include
<time.h>.
* conform/Makefile (test-xfail-UNIX98/fcntl.h/conform): Remove
variable.
(test-xfail-XOPEN2K/fcntl.h/conform): Likewise.

8 years agopowerpc: Fix clone CLONE_VM compare
Adhemerval Zanella [Mon, 2 May 2016 20:44:00 +0000 (17:44 -0300)]
powerpc: Fix clone CLONE_VM compare

This patch fixes the clone CLONE_VM change from 0cb313f (BZ#19957)
where the commit changed the register that contains the save flags
argument to compare with (from r28 to r29).  This patch changes
back to correct register.

Tested on powerpc32 (thanks to Tulio Magno Quites Machado Filho).

* sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S (__clone): Fix
flags CLONE_VM compare.

8 years agohesiod: Avoid heap overflow in get_txt_records [BZ #20031]
Florian Weimer [Mon, 2 May 2016 14:04:32 +0000 (16:04 +0200)]
hesiod: Avoid heap overflow in get_txt_records [BZ #20031]

8 years agohesiod: Always use thread-local resolver state [BZ #19573]
Florian Weimer [Mon, 2 May 2016 13:25:20 +0000 (15:25 +0200)]
hesiod: Always use thread-local resolver state [BZ #19573]

The Hesiod implementation imported into glibc was enhanced
to support caller-supplied resolver states.  But its only
consumer is nss_hesiod, and it supplies the thread-local
resolver state.  Therefore, this commit changes the Hesiod
implementation to use the thread-local resolver state (_res)
directly.  This fixes bug 19573 because the Hesiod
implementation no longer has to initialize and free any
resolver state.

To avoid any risk of interposition of ABI-incompatible Hesiod
function implementations, this commit marks the Hesiod functions
as hidden.  (They were already hidden using a linker version
script.)

8 years agohesiod: Remove DEF_RHS
Florian Weimer [Mon, 2 May 2016 10:10:48 +0000 (12:10 +0200)]
hesiod: Remove DEF_RHS

No functional change because DEF_RHS was already disabled before.

8 years agohesiod: Remove RCS keywords
Florian Weimer [Mon, 2 May 2016 10:07:09 +0000 (12:07 +0200)]
hesiod: Remove RCS keywords

8 years agolocaledata: sgs_LT: new locale [BZ #12450]
Arnas Udovičius [Thu, 21 Apr 2016 14:51:39 +0000 (10:51 -0400)]
localedata: sgs_LT: new locale [BZ #12450]

Need to also update the database to include the new code.

8 years agom68k: use large PIC model for gcrt1.o
Andreas Schwab [Wed, 27 Apr 2016 10:08:38 +0000 (12:08 +0200)]
m68k: use large PIC model for gcrt1.o

8 years agom68k: avoid local labels in symbol table
Andreas Schwab [Fri, 22 Apr 2016 19:33:20 +0000 (21:33 +0200)]
m68k: avoid local labels in symbol table

8 years agoNSS: Implement group merging support.
Stephen Gallagher [Sat, 30 Apr 2016 02:11:09 +0000 (22:11 -0400)]
NSS: Implement group merging support.

https://sourceware.org/glibc/wiki/Proposals/GroupMerging

== Justification ==
It is common today for users to rely on centrally-managed user stores for
handling their user accounts. However, much software existing today does
not have an innate understanding of such accounts. Instead, they commonly
rely on membership in known groups for managing access-control (for
example the "wheel" group on Fedora and RHEL systems or the "adm" group
on Debian-derived systems). In the present incarnation of nsswitch, the
only way to have such groups managed by a remote user store such as
FreeIPA or Active Directory would be to manually remove the groups from
/etc/group on the clients so that nsswitch would then move past nss_files
and into the SSSD, nss-ldap or other remote user database.

== Solution ==
With this patch, a new action is introduced for nsswitch:
NSS_ACTION_MERGE. To take advantage of it, one will add [SUCCESS=merge]
between two database entries in the nsswitch.conf file. When a group is
located in the first of the two group entries, processing will continue
on to the next one. If the group is also found in the next entry (and the
group name and GID are an exact match), the member list of the second
entry will be added to the group object to be returned.

== Implementation ==
After each DL_LOOKUP_FN() returns, the next action is checked. If the
function returned NSS_STATUS_SUCCESS and the next action is
NSS_ACTION_MERGE, a copy of the result buffer is saved for the next pass
through the loop. If on this next pass through the loop the database
returns another instance of a group matching both the group name and GID,
the member list is added to the previous list and it is returned as a
single object. If the following database does not contain the same group,
then the original is copied back into the destination buffer.

This patch implements merge functionality only for the group database.
For other databases, there is a default implementation that will return
the EINVAL errno if a merge is requested. The merge functionality can be
implemented for other databases at a later time if such is needed. Each
database must provide a unique implementation of the deep-copy and merge
functions.

If [SUCCESS=merge] is present in nsswitch.conf for a glibc version that
does not support it, glibc will process results up until that operation,
at which time it will return results if it has found them or else will
simply return an error. In practical terms, this ends up behaving like
the remainder of the nsswitch.conf line does not exist.

== Iterators ==
This feature does not modify the iterator functionality from its current
behavior. If getgrnam() or getgrgid() is called, glibc will iterate
through all entries in the `group` line in nsswitch.conf and display the
list of members without attempting to merge them. This is consistent with
the behavior of nss_files where if two separate lines are specified for
the same group in /etc/groups, getgrnam()/getgrgid() will display both.
Clients are already expected to handle this gracefully.

== No Premature Optimizations ==
The following is a list of places that might be eligible for
optimization, but were not overengineered for this initial contribution:
 * Any situation where a merge may occur will result in one malloc() of
   the same size as the input buffer.
 * Any situation where a merge does occur will result in a second
   malloc() to hold the list of pointers to member name strings.
 * The list of members is simply concatenated together and is not tested
   for uniqueness (which is identical to the behavior for nss_files,
   which will simply return identical values if they both exist on the
   line in the file. This could potentially be optimized to reduce space
   usage in the buffer, but it is both complex and computationally
   expensive to do so.

== Testing ==
I performed testing by running the getent utility against my newly-built
glibc and configuring /etc/nsswitch.conf with the following entry:
group: group:      files [SUCCESS=merge] sss

In /etc/group I included the line:
wheel:x:10:sgallagh

I then configured my local SSSD using the id_provider=local to respond
with:
wheel:*:10:localuser,localuser2

I then ran `getent group wheel` against the newly-built glibc in
multiple situations and received the expected output as described
above:
 * When SSSD was running.
 * When SSSD was configured in nsswitch.conf but the daemon was not
   running.
 * When SSSD was configured in nsswitch.conf but nss_sss.so.2 was not
   installed on the system.
 * When the order of 'sss' and 'files' was reversed.
 * All of the above with the [SUCCESS=merge] removed (to ensure no
   regressions).
 * All of the above with `getent group 10`.
 * All of the above with `getent group` with and without
   `enumerate=true` set in SSSD.
 * All of the above with and without nscd enabled on the system.

8 years agolibio: Fix fmemopen append mode failure (BZ# 20012)
Adhemerval Zanella [Wed, 27 Apr 2016 14:51:01 +0000 (11:51 -0300)]
libio: Fix fmemopen append mode failure (BZ# 20012)

The fmemopen implementation does not account the file position correctly in
append mode. The following example shows the failure:

===
int main ()
{
  char buf[10] = "test";
  FILE *fp = fmemopen (buf, 10, "a+");
  fseek (fp, 0, SEEK_SET);

  int gr;
  if ((gr = getc (fp)) != 't' ||
      (gr = getc (fp)) != 'e' ||
      (gr = getc (fp)) != 's' ||
      (gr = getc (fp)) != 't' ||
      (gr = getc (fp)) != EOF)
    {
      printf ("%s: getc failed returned %i\n", __FUNCTION__, gr);
      return 1;
    }

  return 0;
}
===

This is due both how read and write operation update the buffer position,
taking in consideration buffer lenght instead of maximum position defined
by the open mode.  This patch fixes it and also fixes fseek not returning
EINVAL for invalid whence modes.

Tested on x86_64 and i686.

[BZ #20012]
* libio/fmemopen.c (fmemopen_read): Use buffer maximum position, not
length to calculate the buffer to read.
(fmemopen_write): Set the buffer position based on bytes written.
(fmemopen_seek): Return EINVAL for invalid whence modes.

8 years agoFix clone (CLONE_VM) pid/tid reset (BZ#19957)
Adhemerval Zanella [Fri, 15 Apr 2016 19:42:38 +0000 (16:42 -0300)]
Fix clone (CLONE_VM) pid/tid reset (BZ#19957)

As discussed in libc-alpha [1] current clone with CLONE_VM (without
CLONE_THREAD set) will reset the pthread pid/tid fields to -1.  The
issue is since memory is shared between the parent and child it will
clobber parent's cached pid/tid leading to internal inconsistencies
if the value is not restored.

And even it is restored it may lead to racy conditions when between
set/restore a thread might invoke pthread function that validate the
pthread with INVALID_TD_P/INVALID_NOT_TERMINATED_TD_P and thus get
wrong results.

As stated in BZ19957, previously reports of this behaviour was close
with EWONTFIX due the fact usage of clone outside glibc is tricky
since glibc requires consistent internal pthread, while using clone
directly may not provide it. However since now posix_spawn uses
clone (CLONE_VM) to fixes various issues related to previous vfork
usage this issue requires fixing.

The vfork implementation also does something similar, but instead
it negates and restores only the *pid* field and functions that
might access its value know to handle such case (getpid, raise
and pthread ones that uses INVALID_TD_P/INVALID_NOT_TERMINATED_TD_P
macros that check only *tid* field).  Also vfork does not call
__clone directly, instead calling either __NR_vfork or __NR_clone
directly.

So this patch removes this clone behavior by avoiding setting
the pthread pid/tid field for CLONE_VM. There is no need to
check for CLONE_THREAD, since the minimum supported kernel in all
architecture implies that CLONE_VM must be used with CLONE_THREAD,
otherwise clone returns EINVAL.

Instead of current approach of:

   int clone(int (*fn)(void *), void *child_stack, int flags, ...)
      [...]
      if (flags & CLONE_THREAD)
        goto do_syscall;
      pid_t new_value;
      if (flags & CLONE_VM)
        new_value = -1;
      else
        new_value = getpid ();
      THREAD_SETMEM (THREAD_SELF, pid, new_value);
      THREAD_SETMEM (THREAD_SELF, tid, new_value);

    do_syscall:
      [...]

The new approach uses:

   int clone(int (*fn)(void *), void *child_stack, int flags, ...)
      [...]
      if (flags & CLONE_VM)
        goto do_syscall;
      pid_t new_value = getpid ();
      THREAD_SETMEM (THREAD_SELF, pid, new_value);
      THREAD_SETMEM (THREAD_SELF, tid, new_value);

    do_syscall:
      [...]

It also removes the linux tst-getpid2.c test which expects the previous
behavior and instead add another clone test.

Tested on x86_64, i686, x32, powerpc64le, aarch64, armhf, s390, and
s390x. I also did limited check on mips32 and sparc64 (using the new
added test).

I also got reviews from both m68k, hppa, and tile.  So I presume for
these architecture the patch works.

The fixes for alpha, microblaze, sh, ia64, and nio2 have not been
tested.

[1] https://sourceware.org/ml/libc-alpha/2016-04/msg00307.html

* sysdeps/unix/sysv/linux/Makefile [$(subdir) == nptl] (test): Remove
tst-getpid2.
(test): Add tst-clone2.
* sysdeps/unix/sysv/linux/tst-clone2.c: New file.
* sysdeps/unix/sysv/linux/aarch64/clone.S (__clone): Do not change
pid/tid fields for CLONE_VM.
* sysdeps/unix/sysv/linux/arm/clone.S: Likewise.
* sysdeps/unix/sysv/linux/i386/clone.S: Likewise.
* sysdeps/unix/sysv/linux/mips/clone.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/clone.S: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/clone.S: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise.
* sysdeps/unix/sysv/linux/tst-getpid2.c: Remove file.

8 years agogetnameinfo: Refactor and fix memory leak [BZ #19642]
Florian Weimer [Fri, 29 Apr 2016 15:08:06 +0000 (17:08 +0200)]
getnameinfo: Refactor and fix memory leak [BZ #19642]

Split getnameinfo into separate functions for host and service
lookups, and for different address families.

8 years agopowerpc: Zero pad using memset in strncpy/stpncpy
Gabriel F. T. Gomes [Mon, 25 Jan 2016 15:50:34 +0000 (10:50 -0500)]
powerpc: Zero pad using memset in strncpy/stpncpy

Call __memset_power8 to pad, with zeros, the remaining bytes in the
dest string on __strncpy_power8 and __stpncpy_power8.  This improves
performance when n is larger than the input string, giving ~30% gain for
larger strings without impacting much shorter strings.

8 years agoNEWS entry for CVE-2016-3075
Florian Weimer [Fri, 29 Apr 2016 08:47:40 +0000 (10:47 +0200)]
NEWS entry for CVE-2016-3075

8 years agoCVE-2016-3706: getaddrinfo: stack overflow in hostent conversion [BZ #20010]
Florian Weimer [Fri, 29 Apr 2016 08:35:34 +0000 (10:35 +0200)]
CVE-2016-3706: getaddrinfo: stack overflow in hostent conversion [BZ #20010]

When converting a struct hostent response to struct gaih_addrtuple, the
gethosts macro (which is called from gaih_inet) used alloca, without
malloc fallback for large responses.  This commit changes this code to
use calloc unconditionally.

This commit also consolidated a second hostent-to-gaih_addrtuple
conversion loop (in gaih_inet) to use the new conversion function.

8 years agoglob: Simplify the interface for the GLOB_ALTDIRFUNC callback gl_readdir
Florian Weimer [Fri, 29 Apr 2016 07:33:07 +0000 (09:33 +0200)]
glob: Simplify the interface for the GLOB_ALTDIRFUNC callback gl_readdir

Previously, application code had to set up the d_namlen member if
the target supported it, involving conditional compilation.  After
this change, glob will use the length of the string in d_name instead
of d_namlen to determine the file name length.  All glibc targets
provide the d_type and d_ino members, and setting them as needed for
gl_readdir is straightforward.

Changing the behavior with regards to d_ino is left to a future
cleanup.

8 years agoFix stdio.h namespace for pre-threads POSIX (bug 20014).
Joseph Myers [Thu, 28 Apr 2016 22:01:04 +0000 (22:01 +0000)]
Fix stdio.h namespace for pre-threads POSIX (bug 20014).

stdio.h declares flockfile, ftrylockfile, funlockfile, getc_unlocked,
getchar_unlocked, putc_unlocked and putchar_unlocked if __USE_POSIX,
with comments "These are defined in POSIX.1:1996.".  But __USE_POSIX
is actually POSIX.1:1990, and these functions should not be declared
for 1990 / 1992 / 1993 POSIX, XPG3 or XPG4.  This patch fixes stdio.h
to use __USE_POSIX199506 instead for those conditionals, as that is
the correct conditional for the version of POSIX that introduced
threads, and with threads those functions.

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

[BZ #20014]
* libio/stdio.h (getc_unlocked): Declare if [__USE_POSIX199506],
not [__USE_POSIX].
(getchar_unlocked): Likewise.
(putc_unlocked): Likewise.
(putchar_unlocked): Likewise.
(flockfile): Likewise.
(ftrylockfile): Likewise.
(funlockfile): Likewise.
* conform/Makefile (test-xfail-XPG3/stdio.h/conform): Remove
variable.
(test-xfail-XPG4/stdio.h/conform): Likewise.

8 years agoconformtest: Add langinfo.h expectations for YESSTR, NOSTR.
Joseph Myers [Thu, 28 Apr 2016 17:19:53 +0000 (17:19 +0000)]
conformtest: Add langinfo.h expectations for YESSTR, NOSTR.

The conformtest expectations for langinfo.h fail to include the YESSTR
and NOSTR constants that were present in UNIX98 and earlier XPG
standards.  This patch adds those expectations, so fixing three
XFAILs.

Tested for x86_64 and x86.

* conform/data/langinfo.h-data [XPG3 || XPG4 || UNIX98] (YESSTR):
Expect constant.
[XPG3 || XPG4 || UNIX98] (NOSTR): Likewise.
* conform/Makefile (test-xfail-XPG3/langinfo.h/conform): Remove
variable.
(test-xfail-XPG4/langinfo.h/conform): Likewise.
(test-xfail-UNIX98/langinfo.h/conform): Likewise.

8 years agoAlso define off_t in stdio.h for UNIX98.
Joseph Myers [Thu, 28 Apr 2016 17:00:52 +0000 (17:00 +0000)]
Also define off_t in stdio.h for UNIX98.

Similar to my previous fix for XOPEN2K
<https://sourceware.org/ml/libc-alpha/2016-04/msg00631.html>, now that
bugs in the conformtest expectations for stdio.h for UNIX98 have been
corrected, that case too fails because fseeko and ftello are now
correctly expected, but off_t is not defined.  As in that fix, it
seems appropriate to define off_t in stdio.h for this standard as
well, and this patch does so.

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

* libio/stdio.h (off_t): Also define if [__USE_UNIX98].
[__USE_LARGEFILE64] (off64_t): Likewise.
* conform/Makefile (test-xfail-UNIX98/stdio.h/conform): Remove
variable.

8 years agogetnameinfo: Do not preserve errno
Florian Weimer [Thu, 28 Apr 2016 15:41:49 +0000 (17:41 +0200)]
getnameinfo: Do not preserve errno

POSIX does not require it, the companion getaddrinfo implementation
does not do it, and this behavior is not documented in the manual
page, either.

8 years agoresolv: Reindent preprocessor conditionals following cleanups
Florian Weimer [Thu, 28 Apr 2016 14:53:56 +0000 (16:53 +0200)]
resolv: Reindent preprocessor conditionals following cleanups

8 years agoresolv: Assorted preprocessor cleanups
Florian Weimer [Thu, 28 Apr 2016 11:58:18 +0000 (13:58 +0200)]
resolv: Assorted preprocessor cleanups

8 years agoresolv: Remove SUNSECURITY preprocessor conditionals
Florian Weimer [Thu, 28 Apr 2016 11:20:11 +0000 (13:20 +0200)]
resolv: Remove SUNSECURITY preprocessor conditionals

The macro is never defined.

8 years agoresolv: Remove BSD compatibility conditionals and header
Florian Weimer [Thu, 28 Apr 2016 11:08:53 +0000 (13:08 +0200)]
resolv: Remove BSD compatibility conditionals and header

8 years agoresolv: Remove __BIND_NOSTATIC conditionals
Florian Weimer [Thu, 28 Apr 2016 09:53:00 +0000 (11:53 +0200)]
resolv: Remove __BIND_NOSTATIC conditionals

The macro is never defined.

8 years agoresolv: Remove traces of ULTRIX support
Florian Weimer [Thu, 28 Apr 2016 09:51:02 +0000 (11:51 +0200)]
resolv: Remove traces of ULTRIX support

8 years agoresolv: Remove RFC1535 conditionals
Florian Weimer [Thu, 28 Apr 2016 09:43:41 +0000 (11:43 +0200)]
resolv: Remove RFC1535 conditionals

8 years agoresolv: Remove RESOLVSORT preprocess conditionals
Florian Weimer [Thu, 28 Apr 2016 09:27:49 +0000 (11:27 +0200)]
resolv: Remove RESOLVSORT preprocess conditionals

8 years agoresolv: Remove BIND_UPDATE preprocessor conditionals
Florian Weimer [Thu, 28 Apr 2016 09:23:52 +0000 (11:23 +0200)]
resolv: Remove BIND_UPDATE preprocessor conditionals

8 years agoinet: Remove SCCS keywords
Florian Weimer [Thu, 28 Apr 2016 09:14:10 +0000 (11:14 +0200)]
inet: Remove SCCS keywords

8 years agoresolv: Remove _LIBC conditionals
Florian Weimer [Thu, 28 Apr 2016 09:01:01 +0000 (11:01 +0200)]
resolv: Remove _LIBC conditionals

8 years agoresolv: Remove SCCS and RCS keywords
Florian Weimer [Thu, 28 Apr 2016 08:55:16 +0000 (10:55 +0200)]
resolv: Remove SCCS and RCS keywords

8 years agoFix ChangeLog date to reflect commit date
Florian Weimer [Thu, 28 Apr 2016 09:32:44 +0000 (11:32 +0200)]
Fix ChangeLog date to reflect commit date

8 years agoconformtest: Correct stdio.h expectations for fdopen.
Joseph Myers [Wed, 27 Apr 2016 21:28:58 +0000 (21:28 +0000)]
conformtest: Correct stdio.h expectations for fdopen.

The conform/ test of stdio.h wrongly does not expect fdopen for XPG3
and XPG4.  fdopen is in those standards; this patch corrects the
expectations.

Tested for x86_64 and x86.

* conform/data/stdio.h-data (fdopen): Expect also for
[XPG3 || XPG4].

8 years agoconformtest: Correct some stdio.h expectations for UNIX98.
Joseph Myers [Wed, 27 Apr 2016 21:17:00 +0000 (21:17 +0000)]
conformtest: Correct some stdio.h expectations for UNIX98.

The conform/ test of stdio.h for UNIX98 fails with surious namespace
errors for functions that are correctly declared for that standard.
This patch fixes the expectations to expect those functions also for
UNIX98.  (This does not by itself fix the XFAIL of that test, and is
not based a full review of the header expectations so there could
still be other bugs in the expectations for this header for UNIX98.)

Tested for x86_64 and x86.

* conform/data/stdio.h-data (flockfile): Also expect for [UNIX98].
(fseeko): Likewise.
(ftello): Likewise.
(ftrylockfile): Likewise.
(funlockfile): Likewise.
(getc_unlocked): Likewise.
(getchar_unlocked): Likewise.
(putc_unlocked): Likewise.
(putchar_unlocked): Likewise.

8 years agonss_dns: Skip over non-PTR records in the netent code [BZ #19868]
Florian Weimer [Wed, 27 Apr 2016 15:15:57 +0000 (17:15 +0200)]
nss_dns: Skip over non-PTR records in the netent code [BZ #19868]

This requires additional checks for the RDATA length and the
availability of record metadata.

8 years agonss_dns: Remove custom offsetof macro definition
Florian Weimer [Wed, 27 Apr 2016 14:48:45 +0000 (16:48 +0200)]
nss_dns: Remove custom offsetof macro definition

8 years agonss_dns: Check address length before creating addrinfo result [BZ #19831]
Florian Weimer [Wed, 27 Apr 2016 14:39:12 +0000 (16:39 +0200)]
nss_dns: Check address length before creating addrinfo result [BZ #19831]

Previously, we allocated room in the result space before the check,
leaving uninitialized data there in case the check failed.

This also consolidates the behavior between single (A or AAAA) and
dual (A and AAAA in parallel) queries.  Single queries checked
the record length against the QTYPE, not the RRTYPE.

8 years agoresolv, nss_dns: Remove remaining syslog logging [BZ #19862]
Florian Weimer [Wed, 27 Apr 2016 14:12:32 +0000 (16:12 +0200)]
resolv, nss_dns: Remove remaining syslog logging [BZ #19862]

The fix for bug 14841 only removed part of the logging.

8 years agoconformtest: Correct some signal.h expectations for XOPEN2K.
Joseph Myers [Wed, 27 Apr 2016 14:03:14 +0000 (14:03 +0000)]
conformtest: Correct some signal.h expectations for XOPEN2K.

The conformtest expectations for signal.h have various declarations
that are expected for POSIX (1996) and all later standards, except,
wrongly, for XOPEN2K.  This shows up as failures of tests for two
other headers, which are allowed to make visible symbols from
signal.h, because of an incorrect namespace failure for sigval
(required in signal.h in XOPEN2K, so should be allowed for those other
headers); signal.h tests for various standards fail anyway because of
other problems in the header.  This patch fixes the incorrect
expectations and removes the two XFAILs that this fixes.

Tested for x86_64 and x86.

* conform/data/signal.h-data (union sigval): Expect also if
[XOPEN2K].
(struct sigevent): Likewise.
(SIGEV_NONE): Likewise.
(SIGEV_SIGNAL): Likewise.
(SIGEV_THREAD): Likewise.
(SIGRTMIN): Likewise.
(SIGRTMAX): Likewise.
* conform/Makefile (test-xfail-XOPEN2K/aio.h/conform): Remove
variable.
(test-xfail-XOPEN2K/mqueue.h/conform): Likewise.

8 years agonss_dns: Validate RDATA length against packet length [BZ #19830]
Florian Weimer [Wed, 27 Apr 2016 13:11:41 +0000 (15:11 +0200)]
nss_dns: Validate RDATA length against packet length [BZ #19830]

In _nss_dns_getcanonname_r, a check for the availability of RR metadata
was missing as well.

8 years agoresolv: Always set *resplen2 out parameter in send_vc [BZ #19825]
Florian Weimer [Wed, 27 Apr 2016 12:26:47 +0000 (14:26 +0200)]
resolv: Always set *resplen2 out parameter in send_vc [BZ #19825]

In various error scenarios (for example, if the server closes the
TCP connection before sending the full response), send_vc can return
without resetting the *resplen2 value.  This can pass uninitialized
or unexpected data to the caller.

8 years agoAdd missing iucv related defines.
Stefan Liebler [Wed, 27 Apr 2016 07:08:29 +0000 (09:08 +0200)]
Add missing iucv related defines.

this patch adds the missing SOL_IUCV socket level definition
and socket options SO_IPRMDATA_MSG, SO_MSGLIMIT, SO_MSGSIZE
which can be used with get/setsockopt().
SCM_IUCV_TRGCLS is needed to send/receive ancillary data with send/recvmsg().

The defines are copied from kernel-source:
include/net/iucv/af_iucv.h
include/linux/socket.h

8 years agolocaledata: add more translit entries
Mike Frysinger [Sat, 23 Apr 2016 21:24:39 +0000 (17:24 -0400)]
localedata: add more translit entries

Some of the newer symbols we're using are missing translit entries which
causes troubles when generating the locales with older encodings.

tr_TR: ₺ -> "TL"
uz_UZ: ʻ -> "'"
common:
  ֏ -> "AMD"
  ₪ -> "ILS"
  ₱ -> "PHP"
  ₸ -> "KZT"
  ₾ -> "GEL"

8 years agolibio: Update internal fmemopen position after write (BZ #20005)
Adhemerval Zanella [Tue, 26 Apr 2016 20:40:25 +0000 (17:40 -0300)]
libio: Update internal fmemopen position after write (BZ #20005)

Current GLIBC fmemopen fails with a simple testcase:

  char buffer[500] = "x";
  FILE *stream;
  stream = fmemopen(buffer, 500, "r+");
  fwrite("fish",sizeof(char),5,stream);
  printf("pos-1:%ld\n",ftell(stream));
  fflush(stream);
  printf("pos-2:%ld\n",ftell(stream));

It returns:

  pos-1:5
  pos-2:0

Where it should return:

  pos-1:5
  pos-2:5

This is due the internal write function does not correctly update the internal
object position state and then the seek operation returns a wrong value.  This
patch fixes it.

It fixes both BZ #20005 and BZ #19230 (marked as duplicated). A new test is
added to check for such case.

Tested on x86_64 and i686.

* libio/fmemopen.c (fmemopen_write): Update internal position after
write.
* stdio-common/Makefile (tests): Add tst-fmemopen4.c.
* stdio-common/tst-fmemopen4.c: New file..

8 years agoFix langinfo.h nl_langinfo_l namespace (bug 19996).
Joseph Myers [Tue, 26 Apr 2016 15:02:26 +0000 (15:02 +0000)]
Fix langinfo.h nl_langinfo_l namespace (bug 19996).

langinfo.h declares nl_langinfo_l if __USE_XOPEN2K.  But this function
was new in the 2008 edition of POSIX.  This patch fixes the condition
accordingly.

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

[BZ #19996]
* locale/langinfo.h (nl_langinfo_l): Declare if [__USE_XOPEN2K8],
not [__USE_XOPEN2K].
* conform/Makefile (test-xfail-XOPEN2K/langinfo.h/conform): Remove
variable.

8 years agoconformtest: Correct XOPEN2K stdarg.h expectations.
Joseph Myers [Tue, 26 Apr 2016 13:56:04 +0000 (13:56 +0000)]
conformtest: Correct XOPEN2K stdarg.h expectations.

The conform/ test expectations for stdarg.h were wrongly missing an
expectation of va_copy for XOPEN2K (based on C99, so including that
macro).  This patch fixes this.

Tested for x86_64 and x86.

* conform/data/stdarg.h-data [XOPEN2K] (va_copy): Require macro.
* conform/Makefile (test-xfail-XOPEN2K/stdarg.h/conform): Remove
variable.

8 years agoDefine off_t in stdio.h for XOPEN2K.
Joseph Myers [Tue, 26 Apr 2016 09:55:47 +0000 (09:55 +0000)]
Define off_t in stdio.h for XOPEN2K.

The header conformance test for stdio.h for XOPEN2K fails because the
header does not define the off_t type, used in the expected
declarations for fseeko and ftello.

The absence of this type is not actually strictly a bug (hence no bug
report being filed in Bugzilla), since POSIX didn't require the type
to be declared in this header until the 2008 edition.  However, the
glibc convention in such cases - where the type falls under the
general *_t POSIX reservation, and so it's OK to define it for all
POSIX versions - is to make the headers self-contained in this regard
even for the older POSIX versions not requiring the type to be defined
despite including other declarations depending on the type.  Thus,
this patch adjusts the condition in the header and removes the XFAIL
(rather than adapting the expectation to work when the functions are
declared using __off_t without off_t being defined).

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

* libio/stdio.h (off_t): Define if [__USE_XOPEN2K], not
[__USE_XOPEN2K8].
[__USE_LARGEFILE64] (off64_t): Likewise.
* conform/Makefile (test-xfail-XOPEN2K/stdio.h/conform): Remove
variable.

8 years agoFix stdio.h cuserid namespace (bug 19989).
Joseph Myers [Mon, 25 Apr 2016 19:29:44 +0000 (19:29 +0000)]
Fix stdio.h cuserid namespace (bug 19989).

stdio.h declares cuserid if __USE_XOPEN.  But this was removed in the
2001 edition of POSIX.

The #endif comment "Use X/Open, but not issue 6." reflects the correct
logic, but does not correspond to the #ifdef.  The use of a correct
libc-hacker.  The online archives for libc-hacker in August 2000 are
broken, but the messages can be found in the qmail archives in
/sourceware1/qmail/lists-sourceware/libc-hacker/archive/26 if you have
shell access to sourceware.

The issue showed up in August 2000 because of a warning about a
non-prototype definition in sysdeps/posix/cuserid.c when there was no
previous prototype declaration.  Since we've now eliminated
non-prototype function definitions, that issue does not apply.  The
other points from that discussion were about whether it should be
included in _GNU_SOURCE; whether _GNU_SOURCE should include
"everything"; whether deprecated interfaces such as this should be
excluded from it; and whether, even given exclusion of deprecated
interfaces, it should apply for deprecations in a version of POSIX
that at that time had not been released.

This patch follows the more conservative approach to a fix of keeping
the interface in _GNU_SOURCE.  That matches how L_cuserid is handled.
I think there is a strong case for eliminating this interface from
_GNU_SOURCE (but this may not automatically be the case for every
interface removed in newer POSIX versions), but then L_cuserid should
also be removed from _GNU_SOURCE (in stdio-common/stdio_lim.h.in) at
the same time.

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

[BZ #19989]
* libio/stdio.h (cuserid): Do not declare if
[__USE_XOPEN2K && !__USE_GNU].
* conform/Makefile (test-xfail-XOPEN2K8/stdio.h/conform): Remove
variable.

8 years agopowerpc: Add optimized strcspn for P8
Paul E. Murphy [Mon, 25 Apr 2016 14:11:02 +0000 (09:11 -0500)]
powerpc: Add optimized strcspn for P8

A few minor adjustments to the P8 strspn gives us
an almost equally optimized P8 strcspn.

8 years agovfprintf: Fix memory with large width and precision [BZ #19931]
Florian Weimer [Mon, 25 Apr 2016 12:10:26 +0000 (14:10 +0200)]
vfprintf: Fix memory with large width and precision [BZ #19931]

Free a previously allocated work buffer if it is not large enough.

8 years agoFix stdlib/tst-makecontext regression for Nios II
Chung-Lin Tang [Mon, 25 Apr 2016 07:08:17 +0000 (00:08 -0700)]
Fix stdlib/tst-makecontext regression for Nios II

8 years agonon-linux: Apply RFC3542 obsoletion of RFC2292 macros
Samuel Thibault [Sun, 24 Apr 2016 17:24:36 +0000 (19:24 +0200)]
non-linux: Apply RFC3542 obsoletion of RFC2292 macros

(IPV6_RECVHOPLIMIT, IPV6_HOPLIMIT, IPV6_RECVHOPOPTS, IPV6_HOPOPTS,
IPV6_RTHDRDSTOPTS, IPV6_RECVRTHDR, IPV6_RTHDR, IPV6_RECVDSTOPTS,
IPV6_DSTOPTS, IPV6_RECVPATHMTU, IPV6_PATHMTU, IPV6_DONTFRAG):
New macros.

8 years agonon-linux: Apply RFC3542 obsoletion of RFC2292 macros
Samuel Thibault [Sun, 24 Apr 2016 15:22:57 +0000 (17:22 +0200)]
non-linux: Apply RFC3542 obsoletion of RFC2292 macros

RFC2292 macros were obsoleted by RFC3542, and should not be exposed
any more. Notably since IPV6_PKTINFO has been reintroduced with a
completely different API.

* bits/in.h (IPV6_PKTINFO): Rename to IPV6_2292PKTINFO.
(IPV6_HOPOPTS): Rename to IPV6_2292HOPOPTS.
(IPV6_DSTOPTS): Rename to IPV6_2292DSTOPTS.
(IPV6_RTHDR): Rename to IPV6_2292RTHDR.
(IPV6_PKTOPTIONS): Rename to IPV6_2292PKTOPTIONS.
(IPV6_HOPLIMIT): Rename to IPV6_2292HOPLIMIT.
(IPV6_RECVPKTINFO): New macro.
(IPV6_PKTINFO): New macro.

8 years agotst-fmon/tst-numeric: switch malloc to static stack space [BZ #19671]
Mike Frysinger [Fri, 22 Apr 2016 21:11:09 +0000 (17:11 -0400)]
tst-fmon/tst-numeric: switch malloc to static stack space [BZ #19671]

The current test code doesn't check the return value of malloc.
This should rarely (if ever) cause a problem, but rather than add
some return value checks, just statically allocate the buffer on
the stack.  This will never fail (or if it does, we've got much
bigger problems that don't matter to the test).

8 years agotst-langinfo: update yesexpr/noexpr baselines
Mike Frysinger [Sat, 23 Apr 2016 18:14:55 +0000 (14:14 -0400)]
tst-langinfo: update yesexpr/noexpr baselines

8 years agoReduce number of mmap calls from __libc_memalign in ld.so
H.J. Lu [Sat, 23 Apr 2016 13:05:01 +0000 (06:05 -0700)]
Reduce number of mmap calls from __libc_memalign in ld.so

__libc_memalign in ld.so allocates one page at a time and tries to
optimize consecutive __libc_memalign calls by hoping that the next
mmap is after the current memory allocation.

However, the kernel hands out mmap addresses in top-down order, so
this optimization in practice never happens, with the result that we
have more mmap calls and waste a bunch of space for each __libc_memalign.

This change makes __libc_memalign to mmap one page extra.  Worst case,
the kernel never puts a backing page behind it, but best case it allows
__libc_memalign to operate much much better.  For elf/tst-align --direct,
it reduces number of mmap calls from 12 to 9.

* elf/dl-minimal.c (__libc_memalign): Mmap one extra page.

8 years agolocaledata: CLDRv29: update LC_MESSAGES yes/no strings [BZ #15264] [BZ #16975]
Mike Frysinger [Mon, 18 Apr 2016 00:34:12 +0000 (20:34 -0400)]
localedata: CLDRv29: update LC_MESSAGES yes/no strings [BZ #15264] [BZ #16975]

The yes/no strings should be based on the dictionary words.  That means
they are capitalized based on the dictionary rather than position in the
sentence (e.g. the first word).
  bo_CN: nostr: changing མེན to མིན།
  bo_CN: yesstr: changing ཨིན to ཡིན།
  dz_BT: nostr: changing མེན to མེན་
  dz_BT: yesstr: changing ཨིན to ཨིན་
  en_CA: yesstr: changing Yes to yes
  en_CA: nostr: changing No to no
  en_US: yesstr: changing Yes to yes
  en_US: nostr: changing No to no
  es_ES: nostr: changing No to no
  es_ES: yesstr: changing Si to sí
  fi_FI: nostr: changing Ei to ei
  fi_FI: yesstr: changing Kyllä to kyllä
  ig_NG: yesstr: changing Ee to Eye
  ko_KR: nostr: changing 아니오 to 아니요
  ky_KG: nostr: changing Жок to жок
  ky_KG: yesstr: changing Ооба to ооба
  ms_MY: nostr: changing Tidak to tidak
  ms_MY: yesstr: changing Ya to ya
  te_IN: nostr: changing కాదు to వద్దు
  te_IN: yesstr: changing అవను to అవును
  ur_PK: nostr: changing نهيں to نہیں
  ur_PK: yesstr: changing بلكل to ہاں
  uz_UZ: nostr: changing Yo'q to yo‘q
  uz_UZ: yesstr: changing Ha to ha
  uz_UZ@cyrillic: nostr: changing Йўқ to йўқ
  uz_UZ@cyrillic: yesstr: changing Ҳа to ҳа
  wae_CH: nostr: changing Nei to nei
  wae_CH: yesstr: changing Ja to ja
  yo_NG: nostr: changing Bẹ́ẹ̀ kọ́ to Bẹ́ẹ̀kọ́
  yo_NG: yesstr: changing Bẹ́ẹ̀ ni to Bẹ́ẹ̀ni

Some of the translations were just wrong.
  el_GR: nostr: changing no to όχι
  el_GR: yesstr: changing yes to ναι
  km_KH: nostr: changing no:NO:n:N to ទេ​៖ n
  km_KH: yesstr: changing yes:YES:y:Y to បាទ/ចាស​៖ y
  ug_CN: nostr: changing No to ياق
  ug_CN: yesstr: changing Yes to ھەئە

Add missing translations for a number of locales:
  af_ZA: nostr: setting to nee
  af_ZA: yesstr: setting to ja
  am_ET: nostr: setting to አይ
  am_ET: yesstr: setting to አዎን
  ast_ES: nostr: setting to non
  ast_ES: yesstr: setting to sí
  be_BY: nostr: setting to не
  be_BY: yesstr: setting to так
  bem_ZM: nostr: setting to Awe
  bem_ZM: yesstr: setting to Ee
  bg_BG: nostr: setting to не
  bg_BG: yesstr: setting to да
  brx_IN: nostr: setting to नहीं
  brx_IN: yesstr: setting to हाँ
  bs_BA: nostr: setting to ne
  bs_BA: yesstr: setting to da
  ca_ES: nostr: setting to no
  ca_ES: yesstr: setting to sí
  da_DK: nostr: setting to nej
  da_DK: yesstr: setting to ja
  de_DE: nostr: setting to nein
  de_DE: yesstr: setting to ja
  en_DK: nostr: setting to yes
  en_DK: yesstr: setting to no
  et_EE: nostr: setting to ei
  et_EE: yesstr: setting to jah
  eu_ES: nostr: setting to ez
  eu_ES: yesstr: setting to bai
  fa_IR: nostr: setting to نه
  fa_IR: yesstr: setting to بله
  ff_SN: nostr: setting to Alaa
  ff_SN: yesstr: setting to Eey
  fo_FO: nostr: setting to nei
  fo_FO: yesstr: setting to já
  fr_BE: nostr: setting to non
  fr_BE: yesstr: setting to oui
  fr_CH: nostr: setting to non
  fr_CH: yesstr: setting to oui
  fr_FR: nostr: setting to non
  fr_FR: yesstr: setting to oui
  fr_LU: nostr: setting to non
  fr_LU: yesstr: setting to oui
  fur_IT: nostr: setting to no
  fur_IT: yesstr: setting to sì
  fy_DE: nostr: setting to nee
  fy_DE: yesstr: setting to ja
  ga_IE: nostr: setting to níl
  ga_IE: yesstr: setting to tá
  gd_GB: nostr: setting to chan eil
  gd_GB: yesstr: setting to tha
  gl_ES: nostr: setting to non
  gl_ES: yesstr: setting to si
  gu_IN: nostr: setting to નહીં
  gu_IN: yesstr: setting to હા
  he_IL: nostr: setting to לא
  he_IL: yesstr: setting to כן
  hi_IN: nostr: setting to नहीं
  hi_IN: yesstr: setting to हाँ
  hr_HR: nostr: setting to ne
  hr_HR: yesstr: setting to da
  hu_HU: nostr: setting to nem
  hu_HU: yesstr: setting to igen
  id_ID: nostr: setting to tidak
  id_ID: yesstr: setting to ya
  is_IS: nostr: setting to nei
  is_IS: yesstr: setting to já
  it_CH: nostr: setting to no
  it_CH: yesstr: setting to sì
  it_IT: nostr: setting to no
  it_IT: yesstr: setting to sì
  ka_GE: nostr: setting to არა
  ka_GE: yesstr: setting to კი
  kk_KZ: nostr: setting to жоқ
  kk_KZ: yesstr: setting to иә
  kl_GL: nostr: setting to naagga
  kl_GL: yesstr: setting to aap
  kn_IN: nostr: setting to ಇಲ್ಲ
  kn_IN: yesstr: setting to ಹೌದು
  ko_KR: yesstr: setting to 예
  lb_LU: nostr: setting to nee
  lb_LU: yesstr: setting to jo
  lg_UG: nostr: setting to Nedda
  lg_UG: yesstr: setting to Ye
  lt_LT: nostr: setting to ne
  lt_LT: yesstr: setting to taip
  lv_LV: nostr: setting to nē
  lv_LV: yesstr: setting to jā
  mg_MG: nostr: setting to Tsia
  mg_MG: yesstr: setting to Eny
  mn_MN: nostr: setting to үгүй
  mn_MN: yesstr: setting to тийм
  mr_IN: nostr: setting to नाहीःना
  mr_IN: yesstr: setting to होयःहो
  mt_MT: nostr: setting to le
  mt_MT: yesstr: setting to iva
  nb_NO: nostr: setting to nei
  nb_NO: yesstr: setting to ja
  ne_NP: nostr: setting to होइन
  ne_NP: yesstr: setting to हो
  nl_NL: nostr: setting to nee
  nl_NL: yesstr: setting to ja
  nn_NO: nostr: setting to nei
  nn_NO: yesstr: setting to ja
  or_IN: nostr: setting to ନା
  or_IN: yesstr: setting to ହଁ
  os_RU: nostr: setting to нӕйы
  os_RU: yesstr: setting to уойы
  pa_IN: nostr: setting to ਨਹੀਂ
  pa_IN: yesstr: setting to ਹਾਂ
  pl_PL: nostr: setting to nie
  pl_PL: yesstr: setting to tak
  pt_BR: nostr: setting to não
  pt_BR: yesstr: setting to sim
  pt_PT: nostr: setting to não
  pt_PT: yesstr: setting to sim
  ro_RO: nostr: setting to nu
  ro_RO: yesstr: setting to da
  ru_RU: nostr: setting to нет
  ru_RU: yesstr: setting to да
  ru_UA: nostr: setting to нет
  ru_UA: yesstr: setting to да
  se_NO: nostr: setting to ii
  se_NO: yesstr: setting to jo
  sl_SI: nostr: setting to ne
  sl_SI: yesstr: setting to da
  so_DJ: nostr: setting to maya
  so_DJ: yesstr: setting to haa
  so_SO: nostr: setting to maya
  so_SO: yesstr: setting to haa
  sq_AL: nostr: setting to jo
  sq_AL: yesstr: setting to po
  sr_RS@latin: nostr: setting to ne
  sr_RS@latin: yesstr: setting to da
  sr_RS: nostr: setting to не
  sr_RS: yesstr: setting to да
  sv_SE: nostr: setting to nej
  sv_SE: yesstr: setting to ja
  sw_KE: nostr: setting to Hapana
  sw_KE: yesstr: setting to Ndiyo
  yue_HK: nostr: setting to 唔係
  yue_HK: yesstr: setting to 係
  zu_ZA: nostr: setting to cha
  zu_ZA: yesstr: setting to yebo

8 years agolocaledata: LC_MESSAGES.{yes,no}expr: standardize yY/nN [BZ #15262]
Mike Frysinger [Tue, 19 Apr 2016 04:00:58 +0000 (00:00 -0400)]
localedata: LC_MESSAGES.{yes,no}expr: standardize yY/nN [BZ #15262]

The vast majority of languages include yY/nN in their yes/no regexes.
Standardize the few that were missing them.
  ms_MY: noexpr: add nN
  nan_TW@latin: yesexpr: add yY
  nan_TW@latin: noexpr: add nN
  se_NO: noexpr: add nN

This also highlighted a few that were incorrectly using yY/nN because
they clashed with their localized messages:
  uz_UZ: yesexpr: change ^[+1YyHh] to ^[+1ҲҳHh]
  uz_UZ: noexpr: change ^[-0JjNn] to ^[-0ЙйNnYyJj]
  uz_UZ@cyrillic: yesexpr: change ^[+1ҲҳYy] to ^[+1ҲҳHh]
  uz_UZ@cyrillic: noexpr: change ^[-0ЙйNn] to [-0ЙйNnYyJj]
  yo_NG: move nN (short for Bẹ́ẹ̀ni) from noexpr to yesexpr

8 years agolocaledata: LC_MESSAGES.{yes,no}expr: add +1/-0 to all regexes [BZ #15263]
Mike Frysinger [Tue, 19 Apr 2016 03:10:58 +0000 (23:10 -0400)]
localedata: LC_MESSAGES.{yes,no}expr: add +1/-0 to all regexes [BZ #15263]

A handful of regexes were allowing +1 for yesexpr and -0 for noexpr,
and it's the i18n definition.  Standardize all locales by allowing
these language-independent values in them.

Example change for en_US goes from ^[yY] to ^[+1yY], and from ^[nN]
to ^[-0nN].

8 years agolocaledata: standard LC_MESSAGES string regexes a bit
Mike Frysinger [Mon, 18 Apr 2016 00:34:12 +0000 (20:34 -0400)]
localedata: standard LC_MESSAGES string regexes a bit

A few locales add .* to the end of regexes, but this isn't necessary.
Drop it to simplify things.  e.g. It goes from ^[yY].* to ^[yY].  Did
it for all these locales for yesexpr & noexpr:
  aa_ET ak_GH am_ET an_ES ar_EG as_IN ast_ES ayc_PE az_AZ be_BY
  be_BY@latin bem_ZM ber_DZ ber_MA bg_BG bhb_IN bo_IN br_FR ca_ES
  ce_RU csb_PL cs_CZ cv_RU cy_GB da_DK de_DE dv_MV dz_BT el_GR en_CA
  en_DK en_US es_ES et_EE eu_ES fa_IR ff_SN fi_FI fo_FO fr_BE fr_CH
  fr_FR fr_LU fur_IT fy_DE ga_IE gd_GB gl_ES gv_GB ha_NG he_IL hi_IN
  hr_HR hsb_DE ht_HT hu_HU ia_FR id_ID ig_NG is_IS it_CH it_IT ka_GE
  kk_KZ kl_GL kn_IN ks_IN ks_IN@devanagari ku_TR kw_GB ky_KG li_NL
  lij_IT lt_LT lv_LV mg_MG mhr_RU mi_NZ mk_MK mn_MN my_MM nan_TW@latin
  nb_NO nds_DE nds_NL ne_NP nhn_MX niu_NU niu_NZ nl_NL nn_NO oc_FR
  or_IN os_RU pa_IN pa_PK pap_AW pap_CW pl_PL ps_AF pt_BR pt_PT quz_PE
  raj_IN ro_RO ru_RU ru_UA sa_IN sc_IT sd_IN@devanagari se_NO sk_SK
  sl_SI so_DJ so_SO sq_AL sv_SE sw_KE szl_PL tcy_IN te_IN tg_TJ the_NP
  tk_TM ti_ER ti_ET tt_RU tt_RU@iqtelif ug_CN unm_US ur_IN ur_PK uz_UZ
  uz_UZ@cyrillic vi_VN wa_BE wae_CH wo_SN yi_US yo_NG

A few locales were missing ^ anchors, so add them.  e.g. It goes from
[oOyY].* to ^[oOyY].
  fil_PH ik_CA iu_CA

Some locales are defining a subset of values when there are fuller ones
available (according to the language).  Switch them to copy instead.
  aa_DJ: copy aa_ET
  en_AU: copy en_US
  en_GB: copy en_US
  en_HK: copy en_US
  en_IN: copy en_US
  en_NG: copy en_US
  en_NZ: copy en_US
  en_PH: copy en_US
  en_SG: copy en_US
  en_ZA: copy en_US
  es_US: copy es_ES
  li_BE: copy nl_BE

8 years agolocaledata: kk_KZ: various updates [BZ #15578]
Timur Birsh [Wed, 20 Apr 2016 18:39:34 +0000 (14:39 -0400)]
localedata: kk_KZ: various updates [BZ #15578]

Tweak some of the collation settings for a few characters.

Add/update various fields:
  LC_MESSAGES
    yesstr: set to иә
    nostr: set to жоқ
  LC_MONETARY
    mon_decimal_point: change . to ,
    mon_thousands_sep: change to a non-breaking space
    p_sep_by_space: change 1 to 2
    set int_{p,n}_* fields
  LC_NUMERIC
    thousands_sep: change , to a non-breaking space
  LC_TIME
    abday: change saturday from Сн to Сб
  LC_TELEPHONE
    tel_dom_fmt: set to (%A) %l
    int_select: set to 8~10
  LC_ADDRESS:
    country_post: set to KAZ
    country_ab2: set to KZ
    country_ab3: set to KAZ
    country_isbn: set to 978-601
    lang_name: set to қазақ тілі

8 years agolocaledef: change week_1stweek default to 7
Mike Frysinger [Sat, 16 Apr 2016 03:02:37 +0000 (23:02 -0400)]
localedef: change week_1stweek default to 7

The ISO 14652/30112 specs say the defaults for the week keyword are:
7, 19971130, 7

The localedef has been using those defaults for the first two, but
0 for the last one.

8 years agolocaledata: CLDRv29: update LC_TIME week/first_week,workday fields
Mike Frysinger [Sat, 16 Apr 2016 05:44:59 +0000 (01:44 -0400)]
localedata: CLDRv29: update LC_TIME week/first_week,workday fields

I've spot checked a number of these, including some that were def
wrong (like ff_SN).  It also fixes all open week-related bugs.

Since ff_SN is the only one that changes its base date, I also made
sure that its ordering of day translations were correct.  Looks like
another case Petr brought up where the week field was not actually
checked against the day arrays.

I also took the opportunity to drop first_weekday/first_workday when
the value aligned with the defaults (1 & 2 respectively).  This didn't
impact too many locales In practice because the majority omitted them
already.

A few locales were defining some values incorrectly for their region:
  ak_GH: week: changing [7, 19971130, 7] to [7, 19971130, 1]
  ak_GH: first_weekday: changing 1 to 2
  ayc_PE: week: changing [7, 19971130, 7] to [7, 19971130, 1]
  bem_ZM: week: changing [7, 19971130, 4] to [7, 19971130, 1]
  bem_ZM: first_weekday: changing 1 to 2
  en_IE: first_weekday: changing 2 to 1
  en_US: week: changing [7, 19971130, 7] to [7, 19971130, 1]
  es_CO: first_weekday: changing 2 to 1
  es_ES: week: changing [7, 19971130, 5] to [7, 19971130, 4]
  ff_SN: week: changing [7, 19971129, 1] to [7, 19971130, 1]
  ff_SN: first_weekday: changing 1 to 2
  ga_IE: first_weekday: changing 2 to 1
  ht_HT: week: changing [7, 19971130, 7] to [7, 19971130, 1]
  ht_HT: first_weekday: changing 1 to 2
  mk_MK: week: changing [7, 19971130, 4] to [7, 19971130, 1]
  mt_MT: first_weekday: changing 2 to 1
  quz_PE: week: changing [7, 19971130, 7] to [7, 19971130, 1]
  sr_ME: week: changing [7, 19971130, 4] to [7, 19971130, 1]
  sr_RS: week: changing [7, 19971130, 4] to [7, 19971130, 1]
  sr_RS@latin: week: changing [7, 19971130, 4] to [7, 19971130, 1]
  sw_KE: week: changing [7, 19971130, 4] to [7, 19971130, 1]
  sw_KE: first_weekday: changing 2 to 1
  uk_UA: week: changing [7, 19971130, 4] to [7, 19971130, 1]
  unm_US: week: changing [7, 19971130, 4] to [7, 19971130, 1]

Some locales were copying locales that had the wrong week settings, so
that content had to be duplicated so the values could be adjusted:
  el_CY: week: setting to [7, 19971130, 1]
  en_AG: week: setting to [7, 19971130, 1]
  en_AG: first_weekday: changing 2 to 1
  en_ZM: week: setting to [7, 19971130, 1]
  es_CU: week: setting to [7, 19971130, 1]
  nl_AW: week: setting to [7, 19971130, 1]
  sw_TZ: first_weekday: setting to 2
  ta_LK: first_weekday: setting to 2

The majority of locales were omitting the week field thus getting the
default [7, 19971130, 0 (localedef) / 7 (ISO standard)].  Unfortunately,
neither of those are used by any locales, so we end up having to define
the field just to se the ndays field.  In practice, this rarely matters
due to it usage, and the first two fields match the defaults.
  aa_DJ: setting to [7, 19971130, 1]
  aa_ER: setting to [7, 19971130, 1]
  aa_ER@saaho: setting to [7, 19971130, 1]
  aa_ET: setting to [7, 19971130, 1]
  af_ZA: setting to [7, 19971130, 1]
  am_ET: setting to [7, 19971130, 1]
  an_ES: setting to [7, 19971130, 4]
  anp_IN: setting to [7, 19971130, 1]
  ar_AE: setting to [7, 19971130, 1]
  ar_BH: setting to [7, 19971130, 1]
  ar_DZ: setting to [7, 19971130, 1]
  ar_EG: setting to [7, 19971130, 1]
  ar_IN: setting to [7, 19971130, 1]
  ar_IQ: setting to [7, 19971130, 1]
  ar_JO: setting to [7, 19971130, 1]
  ar_KW: setting to [7, 19971130, 1]
  ar_LB: setting to [7, 19971130, 1]
  ar_LY: setting to [7, 19971130, 1]
  ar_MA: setting to [7, 19971130, 1]
  ar_OM: setting to [7, 19971130, 1]
  ar_QA: setting to [7, 19971130, 1]
  ar_SA: setting to [7, 19971130, 1]
  ar_SD: setting to [7, 19971130, 1]
  ar_SS: setting to [7, 19971130, 1]
  ar_SY: setting to [7, 19971130, 1]
  ar_TN: setting to [7, 19971130, 1]
  ar_YE: setting to [7, 19971130, 1]
  as_IN: setting to [7, 19971130, 1]
  ast_ES: setting to [7, 19971130, 4]
  az_AZ: setting to [7, 19971130, 1]
  be_BY: setting to [7, 19971130, 1]
  be_BY@latin: setting to [7, 19971130, 1]
  ber_DZ: setting to [7, 19971130, 1]
  ber_MA: setting to [7, 19971130, 1]
  bg_BG: setting to [7, 19971130, 4]
  bhb_IN: setting to [7, 19971130, 1]
  bho_IN: setting to [7, 19971130, 1]
  bn_BD: setting to [7, 19971130, 1]
  bn_IN: setting to [7, 19971130, 1]
  bo_CN: setting to [7, 19971130, 1]
  br_FR: setting to [7, 19971130, 4]
  brx_IN: setting to [7, 19971130, 1]
  bs_BA: setting to [7, 19971130, 1]
  byn_ER: setting to [7, 19971130, 1]
  ca_AD: setting to [7, 19971130, 4]
  ca_ES: setting to [7, 19971130, 4]
  ca_ES@euro: setting to [7, 19971130, 4]
  ca_FR: setting to [7, 19971130, 4]
  ca_IT: setting to [7, 19971130, 4]
  ce_RU: setting to [7, 19971130, 1]
  cmn_TW: setting to [7, 19971130, 1]
  crh_UA: setting to [7, 19971130, 1]
  cv_RU: setting to [7, 19971130, 1]
  cy_GB: setting to [7, 19971130, 4]
  de_BE: setting to [7, 19971130, 4]
  de_LU: setting to [7, 19971130, 4]
  doi_IN: setting to [7, 19971130, 1]
  dv_MV: setting to [7, 19971130, 1]
  dz_BT: setting to [7, 19971130, 1]
  el_GR: setting to [7, 19971130, 4]
  el_GR@euro: setting to [7, 19971130, 4]
  en_AU: setting to [7, 19971130, 1]
  en_BW: setting to [7, 19971130, 1]
  en_CA: setting to [7, 19971130, 1]
  en_HK: setting to [7, 19971130, 1]
  en_IE: setting to [7, 19971130, 4]
  en_IN: setting to [7, 19971130, 1]
  en_NG: setting to [7, 19971130, 1]
  en_NZ: setting to [7, 19971130, 1]
  en_PH: setting to [7, 19971130, 1]
  en_SG: setting to [7, 19971130, 1]
  en_ZA: setting to [7, 19971130, 1]
  en_ZW: setting to [7, 19971130, 1]
  es_AR: setting to [7, 19971130, 1]
  es_BO: setting to [7, 19971130, 1]
  es_CL: setting to [7, 19971130, 1]
  es_CO: setting to [7, 19971130, 1]
  es_CR: setting to [7, 19971130, 1]
  es_DO: setting to [7, 19971130, 1]
  es_EC: setting to [7, 19971130, 1]
  es_ES@euro: setting to [7, 19971130, 4]
  es_GT: setting to [7, 19971130, 1]
  es_HN: setting to [7, 19971130, 1]
  es_MX: setting to [7, 19971130, 1]
  es_NI: setting to [7, 19971130, 1]
  es_PA: setting to [7, 19971130, 1]
  es_PE: setting to [7, 19971130, 1]
  es_PR: setting to [7, 19971130, 1]
  es_PY: setting to [7, 19971130, 1]
  es_SV: setting to [7, 19971130, 1]
  es_US: setting to [7, 19971130, 1]
  es_UY: setting to [7, 19971130, 1]
  es_VE: setting to [7, 19971130, 1]
  eu_ES: setting to [7, 19971130, 4]
  fa_IR: setting to [7, 19971130, 1]
  fil_PH: setting to [7, 19971130, 1]
  fo_FO: setting to [7, 19971130, 4]
  fr_CA: setting to [7, 19971130, 1]
  fr_CH: setting to [7, 19971130, 4]
  fr_LU: setting to [7, 19971130, 4]
  fy_NL: setting to [7, 19971130, 4]
  ga_IE: setting to [7, 19971130, 4]
  gd_GB: setting to [7, 19971130, 4]
  gez_ER: setting to [7, 19971130, 1]
  gez_ET: setting to [7, 19971130, 1]
  gl_ES: setting to [7, 19971130, 4]
  gu_IN: setting to [7, 19971130, 1]
  gv_GB: setting to [7, 19971130, 4]
  hak_TW: setting to [7, 19971130, 1]
  ha_NG: setting to [7, 19971130, 1]
  he_IL: setting to [7, 19971130, 1]
  hi_IN: setting to [7, 19971130, 1]
  hne_IN: setting to [7, 19971130, 1]
  hr_HR: setting to [7, 19971130, 1]
  hy_AM: setting to [7, 19971130, 1]
  id_ID: setting to [7, 19971130, 1]
  ig_NG: setting to [7, 19971130, 1]
  ik_CA: setting to [7, 19971130, 1]
  is_IS: setting to [7, 19971130, 4]
  it_CH: setting to [7, 19971130, 4]
  it_IT: setting to [7, 19971130, 4]
  it_IT@euro: setting to [7, 19971130, 4]
  iu_CA: setting to [7, 19971130, 1]
  ja_JP: setting to [7, 19971130, 1]
  ka_GE: setting to [7, 19971130, 1]
  kk_KZ: setting to [7, 19971130, 1]
  kl_GL: setting to [7, 19971130, 1]
  km_KH: setting to [7, 19971130, 1]
  kn_IN: setting to [7, 19971130, 1]
  kok_IN: setting to [7, 19971130, 1]
  ko_KR: setting to [7, 19971130, 1]
  ks_IN: setting to [7, 19971130, 1]
  ks_IN@devanagari: setting to [7, 19971130, 1]
  ku_TR: setting to [7, 19971130, 1]
  kw_GB: setting to [7, 19971130, 4]
  ky_KG: setting to [7, 19971130, 1]
  lg_UG: setting to [7, 19971130, 1]
  lij_IT: setting to [7, 19971130, 4]
  lo_LA: setting to [7, 19971130, 1]
  lt_LT: setting to [7, 19971130, 4]
  lv_LV: setting to [7, 19971130, 1]
  lzh_TW: setting to [7, 19971130, 1]
  mag_IN: setting to [7, 19971130, 1]
  mai_IN: setting to [7, 19971130, 1]
  mg_MG: setting to [7, 19971130, 1]
  mhr_RU: setting to [7, 19971130, 1]
  mi_NZ: setting to [7, 19971130, 1]
  ml_IN: setting to [7, 19971130, 1]
  mni_IN: setting to [7, 19971130, 1]
  mn_MN: setting to [7, 19971130, 1]
  mr_IN: setting to [7, 19971130, 1]
  ms_MY: setting to [7, 19971130, 1]
  mt_MT: setting to [7, 19971130, 1]
  my_MM: setting to [7, 19971130, 1]
  nan_TW: setting to [7, 19971130, 1]
  nan_TW@latin: setting to [7, 19971130, 1]
  ne_NP: setting to [7, 19971130, 1]
  nhn_MX: setting to [7, 19971130, 1]
  niu_NU: setting to [7, 19971130, 1]
  niu_NZ: setting to [7, 19971130, 1]
  nl_BE: setting to [7, 19971130, 4]
  nl_BE@euro: setting to [7, 19971130, 4]
  nr_ZA: setting to [7, 19971130, 1]
  nso_ZA: setting to [7, 19971130, 1]
  oc_FR: setting to [7, 19971130, 4]
  om_ET: setting to [7, 19971130, 1]
  om_KE: setting to [7, 19971130, 1]
  or_IN: setting to [7, 19971130, 1]
  os_RU: setting to [7, 19971130, 1]
  pa_IN: setting to [7, 19971130, 1]
  pap_AW: setting to [7, 19971130, 1]
  pap_CW: setting to [7, 19971130, 1]
  pa_PK: setting to [7, 19971130, 1]
  ps_AF: setting to [7, 19971130, 1]
  pt_BR: setting to [7, 19971130, 1]
  pt_PT: setting to [7, 19971130, 4]
  pt_PT@euro: setting to [7, 19971130, 4]
  raj_IN: setting to [7, 19971130, 1]
  ro_RO: setting to [7, 19971130, 1]
  ru_RU: setting to [7, 19971130, 1]
  ru_UA: setting to [7, 19971130, 1]
  rw_RW: setting to [7, 19971130, 1]
  sa_IN: setting to [7, 19971130, 1]
  sat_IN: setting to [7, 19971130, 1]
  sd_IN: setting to [7, 19971130, 1]
  sd_IN@devanagari: setting to [7, 19971130, 1]
  se_NO: setting to [7, 19971130, 4]
  shs_CA: setting to [7, 19971130, 1]
  sid_ET: setting to [7, 19971130, 1]
  si_LK: setting to [7, 19971130, 1]
  sl_SI: setting to [7, 19971130, 1]
  so_DJ: setting to [7, 19971130, 1]
  so_ET: setting to [7, 19971130, 1]
  so_KE: setting to [7, 19971130, 1]
  so_SO: setting to [7, 19971130, 1]
  sq_AL: setting to [7, 19971130, 1]
  ss_ZA: setting to [7, 19971130, 1]
  st_ZA: setting to [7, 19971130, 1]
  sv_FI: setting to [7, 19971130, 4]
  sv_SE: setting to [7, 19971130, 4]
  ta_IN: setting to [7, 19971130, 1]
  tcy_IN: setting to [7, 19971130, 1]
  te_IN: setting to [7, 19971130, 1]
  tg_TJ: setting to [7, 19971130, 1]
  the_NP: setting to [7, 19971130, 1]
  th_TH: setting to [7, 19971130, 1]
  ti_ER: setting to [7, 19971130, 1]
  ti_ET: setting to [7, 19971130, 1]
  tig_ER: setting to [7, 19971130, 1]
  tk_TM: setting to [7, 19971130, 1]
  tl_PH: setting to [7, 19971130, 1]
  tn_ZA: setting to [7, 19971130, 1]
  tr_CY: setting to [7, 19971130, 1]
  tr_TR: setting to [7, 19971130, 1]
  ts_ZA: setting to [7, 19971130, 1]
  tt_RU: setting to [7, 19971130, 1]
  tt_RU@iqtelif: setting to [7, 19971130, 1]
  ug_CN: setting to [7, 19971130, 1]
  ur_IN: setting to [7, 19971130, 1]
  ur_PK: setting to [7, 19971130, 1]
  uz_UZ: setting to [7, 19971130, 1]
  uz_UZ@cyrillic: setting to [7, 19971130, 1]
  ve_ZA: setting to [7, 19971130, 1]
  vi_VN: setting to [7, 19971130, 1]
  wa_BE: setting to [7, 19971130, 4]
  wal_ET: setting to [7, 19971130, 1]
  wo_SN: setting to [7, 19971130, 1]
  xh_ZA: setting to [7, 19971130, 1]
  yi_US: setting to [7, 19971130, 1]
  yo_NG: setting to [7, 19971130, 1]
  yue_HK: setting to [7, 19971130, 1]
  zh_CN: setting to [7, 19971130, 1]
  zh_HK: setting to [7, 19971130, 1]
  zh_SG: setting to [7, 19971130, 1]
  zh_TW: setting to [7, 19971130, 1]
  zu_ZA: setting to [7, 19971130, 1]

Finally, set first_weekday in all the locales that were omitting it
and wanted something other than the default of 1.
  aa_DJ: setting to 7
  aa_ER: setting to 2
  aa_ER@saaho: setting to 2
  ar_AE: setting to 7
  ar_BH: setting to 7
  ar_DZ: setting to 7
  ar_EG: setting to 7
  ar_IQ: setting to 7
  ar_JO: setting to 7
  ar_KW: setting to 7
  ar_LB: setting to 2
  ar_LY: setting to 7
  ar_MA: setting to 7
  ar_OM: setting to 7
  ar_QA: setting to 7
  ar_SD: setting to 7
  ar_SS: setting to 2
  ar_SY: setting to 7
  az_AZ: setting to 2
  be_BY: setting to 2
  be_BY@latin: setting to 2
  ber_DZ: setting to 7
  ber_MA: setting to 7
  bn_BD: setting to 6
  bs_BA: setting to 2
  byn_ER: setting to 2
  dv_MV: setting to 6
  en_NG: setting to 2
  es_BO: setting to 2
  es_CL: setting to 2
  es_EC: setting to 2
  es_UY: setting to 2
  fo_FO: setting to 2
  fr_CH: setting to 2
  gd_GB: setting to 2
  gez_ER: setting to 2
  ha_NG: setting to 2
  hr_HR: setting to 2
  hy_AM: setting to 2
  ig_NG: setting to 2
  is_IS: setting to 2
  it_CH: setting to 2
  ka_GE: setting to 2
  kk_KZ: setting to 2
  kl_GL: setting to 2
  ku_TR: setting to 2
  ky_KG: setting to 2
  lg_UG: setting to 2
  mg_MG: setting to 2
  mn_MN: setting to 2
  ms_MY: setting to 2
  niu_NU: setting to 2
  pap_AW: setting to 2
  pap_CW: setting to 2
  pt_PT: setting to 2
  pt_PT@euro: setting to 2
  rw_RW: setting to 2
  se_NO: setting to 2
  si_LK: setting to 2
  so_DJ: setting to 7
  so_SO: setting to 2
  sq_AL: setting to 2
  tg_TJ: setting to 2
  ti_ER: setting to 2
  tig_ER: setting to 2
  tk_TM: setting to 2
  tt_RU: setting to 2
  tt_RU@iqtelif: setting to 2
  uz_UZ: setting to 2
  uz_UZ@cyrillic: setting to 2
  vi_VN: setting to 2
  wo_SN: setting to 2
  yo_NG: setting to 2

8 years agopowerpc: strcasestr optmization for power8
Rajalakshmi Srinivasaraghavan [Wed, 20 Apr 2016 17:40:42 +0000 (23:10 +0530)]
powerpc: strcasestr optmization for power8

This patch optimizes strcasestr function for power >= 8 systems.  The average
improvement of this optimization is ~40% and compares 16 bytes at a time
using vector instructions.  This patch is tested on powerpc64 and powerpc64le.

8 years agolocaledata: en_IL: new English locale [BZ #19963]
Guy Rutenberg [Tue, 19 Apr 2016 05:50:48 +0000 (01:50 -0400)]
localedata: en_IL: new English locale [BZ #19963]

8 years agolocaledata: ln_CD: new locale [BZ #12676]
Claude Paroz [Mon, 18 Apr 2016 05:14:36 +0000 (01:14 -0400)]
localedata: ln_CD: new locale [BZ #12676]

8 years agobenchtests: Support for cross-building benchmarks
Siddhesh Poyarekar [Wed, 20 Apr 2016 07:49:01 +0000 (13:19 +0530)]
benchtests: Support for cross-building benchmarks

This patch adds full support for cross-building benchmarks.  Some
benchmarks like those that need locales to be generated cannot be
built and are hence skipped for cross builds.

Tested by cross building for aarch64 on x86_64 and then running the
generated benchmark on aarch64.

* benchtests/Makefile (wcsmbs-benchset): Include only for
native builds and runs.
(LOCALES): Likewise.
(bench-build): Build timing-type here instead of the bench
target.  Generate locale only for native builds.
* benchtests/README: Add note for cross-building.

8 years agobenchtests: Clean up extra-objs
Siddhesh Poyarekar [Wed, 20 Apr 2016 05:49:49 +0000 (11:19 +0530)]
benchtests: Clean up extra-objs

The bench-clean target would leave behind json-lib.o.  Fix up to clean
up all extra-objs registered in benchtests.

8 years agoFix up ChangeLog
Siddhesh Poyarekar [Wed, 20 Apr 2016 06:48:59 +0000 (12:18 +0530)]
Fix up ChangeLog

Looks like I have forgotten what a ChangeLog entry looks like :/

8 years agobenchtests: Update README to include instructions for bench-build target
Siddhesh Poyarekar [Wed, 20 Apr 2016 05:28:20 +0000 (10:58 +0530)]
benchtests: Update README to include instructions for bench-build target

8 years agoFix up ChangeLog formatting
Siddhesh Poyarekar [Wed, 20 Apr 2016 04:53:53 +0000 (10:23 +0530)]
Fix up ChangeLog formatting

8 years agoNew make target to only build benchmark binaries
Siddhesh Poyarekar [Wed, 20 Apr 2016 04:53:28 +0000 (10:23 +0530)]
New make target to only build benchmark binaries

For situations where we are cross-building or where we want to avoid
building on the target system, we want a way to only build benchmarks
and then copy them over to the target system to run them.  I have also
added a simple enhancement for the 'bench' target where all benchmark
binaries are built and then the benchmarks executed.

Tested on arm.

Makefile.in (bench-build): New target.
Rules (PHONY): Add bench-build target.
benchtests/Makefile (bench): Depend on bench-build.
(bench-build): New target.

8 years agoFix gprof timing
Samuel Thibault [Tue, 19 Apr 2016 21:27:27 +0000 (23:27 +0200)]
Fix gprof timing

* sysdeps/mach/hurd/profil.c (__profile_frequency): Return tick
frequency instead of tick length in us.

8 years agohurd: fix profiling short-living processes
Samuel Thibault [Mon, 18 Apr 2016 22:54:24 +0000 (00:54 +0200)]
hurd: fix profiling short-living processes

* sysdeps/mach/hurd/profil.c (update_waiter): Initialize
profil_reply_port.
(profile_waiter): Do not initialize profil_reply_port.

8 years agoMove mempcpy, strcpy and stpcpy inlines to string/string-inlines.c as compatibility
Wilco Dijkstra [Mon, 18 Apr 2016 14:26:11 +0000 (15:26 +0100)]
Move mempcpy, strcpy and stpcpy inlines to string/string-inlines.c as compatibility
symbols as they are no longer used. Fix compat symbols for __strpbrk inlines.

        [BZ #18712]
        * string/string-inlines.c (__STRING2_COPY_TYPE): Add, moved from string2.h.
        (__old_mempcpy_small): Likewise.
        (__old_strcpy_small): Likewise.
        (__old_stpcpy_small): Likewise.
        (__old_strpbrk_c2): Fix compat symbol name.
        (__old_strpbrk_c3): Likewise.
        * string/bits/string2.h (__STRING2_COPY_TYPE): Remove.
        (__mempcpy_small): Remove.
        (__strcpy_small): Remove.
        (__stpcpy_small): Remove.

8 years agolocale: iso-639: add Talossan language [BZ #19400]
Robin van der Vliet [Sat, 16 Apr 2016 07:47:26 +0000 (03:47 -0400)]
locale: iso-639: add Talossan language [BZ #19400]

8 years agolocaledata: fix LC_TELEPHONE in a few locales
Mike Frysinger [Wed, 13 Apr 2016 03:45:46 +0000 (23:45 -0400)]
localedata: fix LC_TELEPHONE in a few locales

A bunch of locales were copying the wrong source locale -- looks like they
were basically TODOs from the original imports.  This lead to bad values
for int_prefix for them.

8 years agolocaledef: allow %l/%n in postal_fmt [BZ #16983]
Mike Frysinger [Fri, 15 Apr 2016 18:52:19 +0000 (14:52 -0400)]
localedef: allow %l/%n in postal_fmt [BZ #16983]

ISO 14652/30112 includes %l & %n now, so permit them in our files.

8 years agolocale: ld-telephone: update to ISO-30112 2014
Mike Frysinger [Wed, 13 Apr 2016 04:14:30 +0000 (00:14 -0400)]
locale: ld-telephone: update to ISO-30112 2014

The newer version of the standard adds %C %e %t to tel_int_fmt and
tel_dom_fmt.  Make sure localedef accepts them.

Also change the default tel_int_fmt to include %t per the standard.

8 years agolocaledata: LC_IDENTIFICATION: delete uncommon fields
Mike Frysinger [Wed, 13 Apr 2016 16:36:42 +0000 (12:36 -0400)]
localedata: LC_IDENTIFICATION: delete uncommon fields

Very few locales set audience/application/abbreviation, and
even the ones that do, set them largely to default/useless
values.  Drop them from the few locales until we decide we
want to set these everywhere (to something useful).

8 years agopowerpc: Optimization for strlen for POWER8.
Carlos Eduardo Seo [Wed, 11 Nov 2015 19:31:28 +0000 (17:31 -0200)]
powerpc: Optimization for strlen for POWER8.

This implementation takes advantage of vectorization to improve performance of
the loop over the current strlen implementation for POWER7.

8 years agolocaledata: CLDRv29: update LC_MONETARY int_curr_symbol & currency_symbol
Mike Frysinger [Tue, 9 Feb 2016 10:32:07 +0000 (05:32 -0500)]
localedata: CLDRv29: update LC_MONETARY int_curr_symbol & currency_symbol

This updates a few locales based on CLDR v29 data.  I've verified most by
hand while the rest I know are correct.

For int_curr_symbol, it should be 3 characters followed by a space:
  ar_SS: changing SDG  to SSP
  bem_ZM: changing ZMK  to ZMW
  dz_BT: changing BTN  to BTN   # Just changing " " to "<U0020>".
  en_ZW: changing ZWD  to USD
  es_SV: changing SVC  to USD
  lv_LV: changing LVL  to EUR
  ne_NP: changing INR  to NPR
  pap_AW: changing ANG  to AWG
  the_NP: changing INR  to NPR
Some of these require updates iso-4217.def.

For currency_symbol, it should be the standard/localized symbol name:
  aa_DJ: changing $ to Fdj
  ar_SA: changing ريال to ر.س
  ar_SS: changing ج.س. to £
  az_AZ: changing man. to ₼
  bg_BG: changing лв to лв.
  ce_RU: changing руб to ₽
  crh_UA: changing gr to ₴
  cv_RU: changing t to ₽
  de_CH: changing Fr. to CHF
  dz_BT: changing དངུལ་ཀྲམ་ to Nu.
  en_BW: changing Pu to P
  en_DK: changing ¤ to kr.
  en_PH: changing Php to ₱
  en_ZW: changing Z$ to $
  es_BO: changing $b to Bs
  es_DO: changing $ to RD$
  es_HN: changing L. to L
  es_PA: changing B/ to B/.
  es_SV: changing ₡ to $
  fil_PH: changing PhP to ₱
  he_IL: changing שח to ₪
  hy_AM: changing Դ to ֏
  ka_GE: changing ლ to ₾
  kk_KZ: changing тг to ₸
  ko_KR: changing ₩ to ₩
  lg_UG: changing /- to USh
  lv_LV: changing Ls to €
  mg_MG: changing AR to Ar
  mhr_RU: changing ТЕҤ to ₽
  my_MM: changing Ks to K
  os_RU: changing сом to ₽
  pap_AW: changing f to ƒ
  pap_CW: changing f to ƒ
  ps_AF: changing افغانۍ to ؋
  rw_RW: changing Frw to FRw
  ru_RU: changing руб to ₽
  ru_UA: changing гр to ₴
  sd_IN@devanagari: changing रु to ₹
  se_NO: changing  ru to kr
  si_LK: changing ₨ to රු
  so_SO: changing $ to S
  sq_AL: changing Lek to L
  ti_ER: changing $ to Nfk
  ti_ET: changing $ to Br
  tl_PH: changing PhP to ₱
  tr_TR: changing TL to ₺
  tt_RU: changing руб to ₽
  tt_RU@iqtelif: changing sum to ₽
  uz_UZ: changing so'm to soʻm
Note: Some of the characters might not render as they're still quite new
in the Unicode database.

8 years agolocaledef: check LC_IDENTIFICATION.category values
Mike Frysinger [Wed, 13 Apr 2016 22:38:56 +0000 (18:38 -0400)]
localedef: check LC_IDENTIFICATION.category values

Currently localedef accepts any value for the category keyword.  This has
allowed bad values to propagate to the vast majority of locales (~90%).
Add some logic to only accept a few standards.

8 years agolocaledata: LC_IDENTIFICATION.category: set to ISO 30112 2014 standard
Mike Frysinger [Wed, 13 Apr 2016 15:22:00 +0000 (11:22 -0400)]
localedata: LC_IDENTIFICATION.category: set to ISO 30112 2014 standard

The ISO 30112 standard defines the valid values for the category
keyword as only a few options:
posix:1993
i18n:2004
i18n:2012

The vast majority of locales had changed the "i18n" string to the
name of its own locale (e.g. "ak_GH:2013") as well as tweaking the
date (presumably thinking it should be the date of submission).

Convert all of them to "i18n:2012" for consistency.  A follow up
change will update localedef to actually check/validate the field.

8 years agoDetect Intel Goldmont and Airmont processors
H.J. Lu [Fri, 15 Apr 2016 12:22:53 +0000 (05:22 -0700)]
Detect Intel Goldmont and Airmont processors

Updated from the model numbers of Goldmont and Airmont processors in
Intel64 And IA-32 Processor Architectures Software Developer's Manual
Volume 3 Revision 058.

* sysdeps/x86/cpu-features.c (init_cpu_features): Detect Intel
Goldmont and Airmont processors.

8 years agoRemove pre GCC3.2 optimizations from string/bits/string2.h.
Wilco Dijkstra [Fri, 15 Apr 2016 11:33:29 +0000 (12:33 +0100)]
Remove pre GCC3.2 optimizations from string/bits/string2.h.

        * string/string.h: Use __GNUC_PREREQ(3,4) for bits/string2.h.
        * string/bits/string2.h (__STRING2_SMALL_GET16): Remove.
        (__STRING2_SMALL_GET32): Remove.
        (memset): Remove.
        (__memset_1): Remove.
        (__memset_gc): Remove.
        (__mempcpy): Remove.
        (mempcpy): Remove.
        (__mempcpy_args): Remove.
        (strchr): Remove.
        (strcpy): Remove.
        (strcpy_args): Remove.
        (__stpcpy_args): Remove.
        (__strcmp_cc): Remove.
        (__strcmp_gc): Remove.
        (strstr): Remove.

8 years agoSuppress GCC 6 warning about ambiguous 'else' with -Wparentheses
Yvan Roux [Fri, 15 Apr 2016 11:29:26 +0000 (13:29 +0200)]
Suppress GCC 6 warning about ambiguous 'else' with -Wparentheses

8 years agolocaledata: CLDRv29: update LC_ADDRESS.country_name translations
Mike Frysinger [Tue, 9 Feb 2016 05:36:15 +0000 (00:36 -0500)]
localedata: CLDRv29: update LC_ADDRESS.country_name translations

This updates a bunch of locales based on CLDR v29 data:
  bg_BG: changing Bulgaria to България
  bo_CN: changing ཀྲུང་ཧྭ་མི་དམངས་སྤྱི་མཐུན་རྒྱལ་ཁབ། to རྒྱ་ནག
  bo_IN: changing རྒྱ་གར to རྒྱ་གར་
  cy_GB: changing Cymru to Y Deyrnas Unedig
  dz_BT: changing འབྲུག། to འབྲུག
  en_US: changing USA to United States
  es_US: changing USA to Estados Unidos
  gd_GB: changing Breatainn Mhòr to An Rìoghachd Aonaichte
  ha_NG: changing Nigeria to Najeriya
  mk_MK: changing Macedonia to Македонија
  mn_MN: changing Mongolia to Монгол
  sq_MK: changing Macedonia to Maqedoni
  sr_RS@latin: changing Srbija i Crna Gora to Srbija
  tr_CY: changing Northern Cyprus to Kıbrıs
  tr_TR: changing Turkey to Türkiye
  ug_CN: changing 中华人民共和国 to جۇڭگو
  uz_UZ: changing O'zbekistan to Oʻzbekiston
  vi_VN: changing Việt nam to Việt Nam
  wae_CH: changing Switzerland to Schwiz
  yi_US: changing די פֿאראײניקטע שטאַטן to פֿאַראייניגטע שטאַטן
  yo_NG: changing Nigeria to Orílẹ́ède Nàìjíríà
  yue_HK: changing 香港 to 中華人民共和國香港特別行政區
  zu_ZA: changing Mzansi Afrika to i-South Africa

These all look largely straightforward.  Many had English translations
instead of native, and a few have been updated.  I can't verify some of
them as I'm not personally familiar, but the CLDR data matches.

The USA->United States seems a little odd, but that is also what the
CLDR database uses everywhere (rather than "United States of America").

We can also fill in a country name where there wasn't one before.
Many look correct to me (mostly the English ones), but there's also
many that I have no idea.  But it can't be worse than leaving it
blank ? :)
  ar_AE: changing to الإمارات العربية المتحدة
  ar_BH: changing to البحرين
  ar_DZ: changing to الجزائر
  ar_EG: changing to مصر
  ar_IN: changing to الهند
  ar_IQ: changing to العراق
  ar_JO: changing to الأردن
  ar_KW: changing to الكويت
  ar_LB: changing to لبنان
  ar_LY: changing to ليبيا
  ar_MA: changing to المغرب
  ar_OM: changing to عُمان
  ar_QA: changing to قطر
  ar_SA: changing to المملكة العربية السعودية
  ar_SD: changing to السودان
  ar_SS: changing to جنوب السودان
  ar_SY: changing to سوريا
  ar_TN: changing to تونس
  ar_YE: changing to اليمن
  as_IN: changing to ভাৰত
  ast_ES: changing to España
  az_AZ: changing to Azərbaycan
  be_BY: changing to Беларусь
  bn_IN: changing to ভারত
  br_FR: changing to Frañs
  brx_IN: changing to भारत
  bs_BA: changing to Bosna i Hercegovina
  ca_AD: changing to Andorra
  ca_ES: changing to Espanya
  ca_FR: changing to França
  ca_IT: changing to Itàlia
  ce_RU: changing to Росси
  da_DK: changing to Danmark
  de_AT: changing to Österreich
  de_BE: changing to Belgien
  de_CH: changing to Schweiz
  de_LU: changing to Luxemburg
  el_CY: changing to Κύπρος
  el_GR: changing to Ελλάδα
  en_AG: changing to Antigua & Barbuda
  en_AU: changing to Australia
  en_BW: changing to Botswana
  en_CA: changing to Canada
  en_DK: changing to Denmark
  en_GB: changing to United Kingdom
  en_HK: changing to Hong Kong SAR China
  en_IE: changing to Ireland
  en_IN: changing to India
  en_NZ: changing to New Zealand
  en_PH: changing to Philippines
  en_SG: changing to Singapore
  en_ZW: changing to Zimbabwe
  es_AR: changing to Argentina
  es_BO: changing to Bolivia
  es_CL: changing to Chile
  es_CO: changing to Colombia
  es_CU: changing to Cuba
  es_DO: changing to República Dominicana
  es_EC: changing to Ecuador
  es_ES: changing to España
  es_GT: changing to Guatemala
  es_HN: changing to Honduras
  es_MX: changing to México
  es_NI: changing to Nicaragua
  es_PA: changing to Panamá
  es_PE: changing to Perú
  es_PR: changing to Puerto Rico
  es_PY: changing to Paraguay
  es_SV: changing to El Salvador
  es_UY: changing to Uruguay
  es_VE: changing to Venezuela
  eu_ES: changing to Espainia
  fil_PH: changing to Pilipinas
  fo_FO: changing to Føroyar
  fr_BE: changing to Belgique
  fr_CA: changing to Canada
  fr_CH: changing to Suisse
  fr_FR: changing to France
  fr_LU: changing to Luxembourg
  fur_IT: changing to Italie
  fy_DE: changing to Dútslân
  fy_NL: changing to Nederlân
  ga_IE: changing to Éire
  gl_ES: changing to España
  gu_IN: changing to ભારત
  gv_GB: changing to Rywvaneth Unys
  he_IL: changing to ישראל
  hi_IN: changing to भारत
  hr_HR: changing to Hrvatska
  hu_HU: changing to Magyarország
  id_ID: changing to Indonesia
  is_IS: changing to Ísland
  it_CH: changing to Svizzera
  it_IT: changing to Italia
  ja_JP: changing to 日本
  ka_GE: changing to საქართველო
  kk_KZ: changing to Қазақстан
  kl_GL: changing to Kalaallit Nunaat
  kn_IN: changing to ಭಾರತ
  kok_IN: changing to भारत
  ko_KR: changing to 대한민국
  ks_IN: changing to ہِنٛدوستان
  ks_IN@devanagari: changing to भारत
  kw_GB: changing to Rywvaneth Unys
  ky_KG: changing to Кыргызстан
  lt_LT: changing to Lietuva
  lv_LV: changing to Latvija
  mg_MG: changing to Madagasikara
  ml_IN: changing to ഇന്ത്യ
  mr_IN: changing to भारत
  ms_MY: changing to Malaysia
  mt_MT: changing to Malta
  nb_NO: changing to Norge
  ne_NP: changing to नेपाल
  nl_AW: changing to Aruba
  nl_BE: changing to België
  nl_NL: changing to Nederland
  nn_NO: changing to Noreg
  or_IN: changing to ଭାରତ
  os_RU: changing to Уӕрӕсе
  pa_IN: changing to ਭਾਰਤ
  pa_PK: changing to ਪਾਕਿਸਤਾਨ
  pl_PL: changing to Polska
  pt_BR: changing to Brasil
  pt_PT: changing to Portugal
  ru_RU: changing to Россия
  ru_UA: changing to Украина
  sd_IN@devanagari: changing to भारत
  se_NO: changing to Norga
  si_LK: changing to ශ්‍රී ලංකාව
  sk_SK: changing to Slovensko
  sl_SI: changing to Slovenija
  sq_AL: changing to Shqipëri
  sv_SE: changing to Sverige
  ta_IN: changing to இந்தியா
  ta_LK: changing to இலங்கை
  ur_IN: changing to بھارت
  ur_PK: changing to پاکستان

8 years agolocaledata: fix LC_ADDRESS.country_car entries
Mike Frysinger [Tue, 12 Apr 2016 07:15:11 +0000 (03:15 -0400)]
localedata: fix LC_ADDRESS.country_car entries

These entries have been checked mostly against Wikipedia, but also using
the sources it cites (like the UN and other treaty sources).

Fix incorrect values:
  en_BW:  changing RB to BW
  kl_GL:  changing GRO to KN
  km_KH:  changing LAO to KH
  my_MM:  changing BA to MYA
  oc_FR:  changing F to F
  tr_CY:  changing TR to CY
  wae_CH: changing DH to CH

Add missing entries:
  aa_DJ:  changing to DJI
  ak_GH:  changing to GH
  ar_OM:  changing to OM
  ar_SS:  changing to SUD
  ar_YE:  changing to YAR
  bo_CN:  changing to CHN
  cmn_TW: changing to RC
  dv_MV:  changing to MV
  dz_BT:  changing to BHT
  en_AG:  changing to AG
  es_HN:  changing to HN
  es_PR:  changing to PR
  hak_TW: changing to RC
  lzh_TW: changing to RC
  nan_TW: changing to RC
  nan_TW@latin: changing to RC
  nl_AW:  changing to AUA
  pap_AW: changing to AUA
  so_DJ:  changing to DJI
  the_NP: changing to NEP
  ug_CN:  changing to CHN
  yue_HK: changing to HK
  zh_CN:  changing to CHN
  zh_HK:  changing to HK
  zh_TW:  changing to RC