platform/upstream/glibc.git
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

8 years agolocaledata: CLDRv29: update LC_ADDRESS.country_num values
Mike Frysinger [Tue, 9 Feb 2016 11:58:40 +0000 (06:58 -0500)]
localedata: CLDRv29: update LC_ADDRESS.country_num values

This updates a few locales based on CLDR v29 data.

Add missing fields:
  as_IN: changing to 356
  dv_MV: changing to 462
  kk_KZ: changing to 398
  my_MM: changing to 104
  rw_RW: changing to 646
  tt_RU: changing to 643

Update ones that are wrong:
  dz_BT: changing BHU to 064
  en_PH: changing 360 to 608
  km_KH: changing 418 to 116
  ky_KG: changing 643 to 417
  tr_CY: changing 792 to 196
  wo_SN: changing 450 to 686

As a result of fixing these, I had to update country_ab[23]:
  dz_BT: changing BHU to BTN
  en_PH: changing ID/IDN to PH/PHL
  km_KH: changing LA/LAO to KH/KHM
  ky_KG: changing KY/KYR to KG/KGZ
  tr_CY: changing TR/TUR to CY/CYP
  wo_SN: changing MG/MDG to SN/SEN

Pad with leading zeros to match the standard and other locales:
  ber_DZ: changing 12 to 012
  ca_AD: changing 20 to 020
  en_AG: changing 28 to 028
  hy_AM: changing 51 to 051
  li_BE: changing 56 to 056
  wa_BE: changing 56 to 056

I hand checked the first two sets against ISO 3166-1 directly.

8 years agolocaledata: LC_PAPER: use copy directives everywhere
Mike Frysinger [Tue, 9 Feb 2016 11:04:07 +0000 (06:04 -0500)]
localedata: LC_PAPER: use copy directives everywhere

There are only two page sizes that locales use: US-Letter and A4.
For the former, move to copying the en_US locale, while for the
latter, move to copying the i18n locale.  This lets us clean up
all the stray comments like FIXME.

There should be no functional differences here.

8 years agoFix pread consolidation on ports that require argument alignment
Adhemerval Zanella [Thu, 14 Apr 2016 19:41:33 +0000 (16:41 -0300)]
Fix pread consolidation on ports that require argument alignment

This patch fixes the __ALIGNMENT_{ARG,COUNT} definition for ports that
define __ASSUME_ALIGNED_REGISTER_PAIRS by including the kernel-features.h
(where it is defined if the case).

This was shown on arm with failing cases:

FAIL: debug/tst-chk1
FAIL: debug/tst-chk2
FAIL: debug/tst-chk3
FAIL: debug/tst-chk4
FAIL: debug/tst-chk5
FAIL: debug/tst-chk6
FAIL: debug/tst-lfschk1
FAIL: debug/tst-lfschk2
FAIL: debug/tst-lfschk3
FAIL: debug/tst-lfschk4
FAIL: debug/tst-lfschk5
FAIL: debug/tst-lfschk6
FAIL: posix/tst-preadwrite
FAIL: posix/tst-preadwrite64

The patches fixes it.  Tested on armhf.

* sysdeps/unix/sysv/linux/sysdep.h: Include kernel-features.h.

8 years agomalloc: Add missing internal_function attributes on function definitions
Florian Weimer [Thu, 14 Apr 2016 10:53:03 +0000 (12:53 +0200)]
malloc: Add missing internal_function attributes on function definitions

Fixes build on i386 after commit 29d794863cd6e03115d3670707cc873a9965ba92.

8 years agoFix strfmon_l: Use specified locale for number formatting [BZ #19633]
Stefan Liebler [Thu, 14 Apr 2016 10:21:53 +0000 (12:21 +0200)]
Fix strfmon_l: Use specified locale for number formatting [BZ #19633]

The commit 985fc132f23dbb83de76c5af9e783ef1b5900148
"strfmon_l: Use specified locale for number formatting [BZ #19633]"
introduced an elf/check-abi-libc testfailure due to __printf_fp_l
on architectures which use sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h.

This patch uses libc_hidden_def instead of ldbl_hidden_def.
The ldbl_strong_alias is removed due to the rename of ___printf_fp_l
to __printf_fp_l.

ChangeLog:

* stdio-common/printf_fp.c (__printf_fp_l):
Rename ___printf_fp_l to __printf_fp_l and
remove strong alias. Use libc_hidden_def instead
of ldbl_hidden_def macro.

8 years agomalloc: Remove malloc hooks from fork handler
Florian Weimer [Thu, 14 Apr 2016 07:18:30 +0000 (09:18 +0200)]
malloc: Remove malloc hooks from fork handler

The fork handler now runs so late that there is no risk anymore that
other fork handlers in the same thread use malloc, so it is no
longer necessary to install malloc hooks which made a subset
of malloc functionality available to the thread that called fork.

8 years agomalloc: Remove unused definitions of thread_atfork, thread_atfork_static
Florian Weimer [Thu, 14 Apr 2016 07:17:36 +0000 (09:17 +0200)]
malloc: Remove unused definitions of thread_atfork, thread_atfork_static

8 years agomalloc: Run fork handler as late as possible [BZ #19431]
Florian Weimer [Thu, 14 Apr 2016 07:17:02 +0000 (09:17 +0200)]
malloc: Run fork handler as late as possible [BZ #19431]

Previously, a thread M invoking fork would acquire locks in this order:

  (M1) malloc arena locks (in the registered fork handler)
  (M2) libio list lock

A thread F invoking flush (NULL) would acquire locks in this order:

  (F1) libio list lock
  (F2) individual _IO_FILE locks

A thread G running getdelim would use this order:

  (G1) _IO_FILE lock
  (G2) malloc arena lock

After executing (M1), (F1), (G1), none of the threads can make progress.

This commit changes the fork lock order to:

  (M'1) libio list lock
  (M'2) malloc arena locks

It explicitly encodes the lock order in the implementations of fork,
and does not rely on the registration order, thus avoiding the deadlock.

8 years agoRemove union wait [BZ #19613]
Florian Weimer [Thu, 14 Apr 2016 06:54:57 +0000 (08:54 +0200)]
Remove union wait [BZ #19613]

The overloading approach in the W* macros was incompatible with
integer expressions of a type different from int.  Applications
using union wait and these macros will have to migrate to the
POSIX-specified int status type.

8 years agolocaledata: de_IT: new locale
Matthias Wallnoefer [Wed, 13 Apr 2016 21:39:52 +0000 (17:39 -0400)]
localedata: de_IT: new locale

8 years agolocaledata: de_{AT,CH}: copy data from de_DE
Matthias Wallnoefer [Wed, 13 Apr 2016 15:10:59 +0000 (11:10 -0400)]
localedata: de_{AT,CH}: copy data from de_DE

Improve the de_AT/de_CH locales by copying the de_DE locale in more
places.  This fills out translations that weren't there before.

8 years agoRegister extra test objects
Andreas Schwab [Wed, 13 Apr 2016 15:04:37 +0000 (17:04 +0200)]
Register extra test objects

This makes sure that the extra test objects are compiled with the correct
MODULE_NAME and dependencies are tracked.

8 years agolocaledata: LC_MEASUREMENT: use copy directives everywhere
Mike Frysinger [Tue, 9 Feb 2016 11:25:52 +0000 (06:25 -0500)]
localedata: LC_MEASUREMENT: use copy directives everywhere

There are only two measurement systems that locales use: US and metric.
For the former, move to copying the en_US locale, while for the latter,
move to copying the i18n locale.  This lets us clean up all the stray
comments like FIXME.

There should be no functional differences here.

8 years agolocaledata: CLDRv29: update LC_IDENTIFICATION language/territory fields
Mike Frysinger [Wed, 10 Feb 2016 00:53:38 +0000 (19:53 -0500)]
localedata: CLDRv29: update LC_IDENTIFICATION language/territory fields

This updates all the territory fields based on CLDR v29 data.  Many of
them were obviously incorrect where people used a two letter code and
not the English name.
  aa_DJ: changing DJ to Djibouti
  aa_ER@saaho: changing ER to Eritrea
  aa_ER: changing ER to Eritrea
  aa_ET: changing ET to Ethiopia
  am_ET: changing ET to Ethiopia
  ar_LY: changing Libyan Arab Jamahiriya to Libya
  ar_SY: changing Syrian Arab Republic to Syria
  bo_CN: changing P.R. of China to China
  bs_BA: changing Bosnia and Herzegowina to Bosnia & Herzegovina
  byn_ER: changing ER to Eritrea
  ca_IT: changing Italy (L'Alguer) to Italy
  ce_RU: changing RUSSIAN FEDERATION to Russia
  cmn_TW: changing Republic of China to Taiwan
  cy_GB: changing Great Britain to United Kingdom
  de_LU@euro: changing Luxemburg to Luxembourg
  de_LU: changing Luxemburg to Luxembourg
  en_AG: changing Antigua and Barbuda to Antigua & Barbuda
  en_GB: changing Great Britain to United Kingdom
  en_HK: changing Hong Kong to Hong Kong SAR China
  en_US: changing USA to United States
  es_US: changing USA to United States
  fr_LU@euro: changing Luxemburg to Luxembourg
  fr_LU: changing Luxemburg to Luxembourg
  fy_DE: changing DE to Germany
  gd_GB: changing Great Britain to United Kingdom
  gez_ER@abegede: changing ER to Eritrea
  gez_ER: changing ER to Eritrea
  gez_ET@abegede: changing ET to Ethiopia
  gez_ET: changing ET to Ethiopia
  gv_GB: changing Britain to United Kingdom
  hak_TW: changing Republic of China to Taiwan
  iu_CA: changing CA to Canada
  ko_KR: changing Republic of Korea to South Korea
  kw_GB: changing Britain to United Kingdom
  li_BE: changing BE to Belgium
  li_NL: changing NL to Netherlands
  lzh_TW: changing Republic of China to Taiwan
  my_MM: changing Myanmar to Myanmar (Burma)
  nan_TW: changing Republic of China to Taiwan
  nds_DE: changing DE to Germany
  nds_NL: changing NL to Netherlands
  om_ET: changing ET to Ethiopia
  om_KE: changing KE to Kenya
  pap_AW: changing AW to Aruba
  pap_CW: changing CW to Curaçao
  pt_BR: changing Brasil to Brazil
  sid_ET: changing ET to Ethiopia
  sk_SK: changing Slovak to Slovakia
  so_DJ: changing DJ to Djibouti
  so_ET: changing ET to Ethiopia
  so_KE: changing KE to Kenya
  so_SO: changing SO to Somalia
  ti_ER: changing ER to Eritrea
  ti_ET: changing ET to Ethiopia
  tig_ER: changing ER to Eritrea
  tt_RU@iqtelif: changing Tatarstan, Russian Federation to Russia
  uk_UA: changing UA to Ukraine
  unm_US: changing USA to United States
  wal_ET: changing ET to Ethiopia
  yi_US: changing USA to United States
  yue_HK: changing Hong Kong to Hong Kong SAR China
  zh_CN: changing P.R. of China to China
  zh_HK: changing Hong Kong to Hong Kong SAR China
  zh_TW: changing Taiwan R.O.C. to Taiwan

This updates all the language fields based on CLDR v29 data.  Many of
them were obviously incorrect where people used a two letter code and
not the English name.
  aa_DJ: changing aa to Afar
  aa_ER: changing aa to Afar
  aa_ER@saaho: changing aa to Afar
  aa_ET: changing aa to Afar
  am_ET: changing am to Amharic
  az_AZ: changing Azeri to Azerbaijani
  bn_BD: changing Bengali/Bangla to Bengali
  byn_ER: changing byn to Blin
  de_AT: changing German to Austrian German
  de_CH: changing German to Swiss High German
  en_AU: changing English to Australian English
  en_CA: changing English to Canadian English
  en_GB: changing English to British English
  en_US: changing English to American English
  es_ES: changing Spanish to European Spanish
  es_MX: changing Spanish to Mexican Spanish
  ff_SN: changing ff to Fulah
  fr_CA: changing French to Canadian French
  fr_CH: changing French to Swiss French
  fur_IT: changing Furlan to Friulian
  fy_DE: changing fy to Western Frisian
  fy_NL: changing Frisian to Western Frisian
  gd_GB: changing Scots Gaelic to Scottish Gaelic
  gez_ER@abegede: changing gez to Geez
  gez_ER: changing gez to Geez
  gez_ET@abegede: changing gez to Geez
  gez_ET: changing gez to Geez
  gv_GB: changing Manx Gaelic to Manx
  ht_HT: changing Kreyol to Haitian Creole
  kl_GL: changing Greenlandic to Kalaallisut
  lg_UG: changing Luganda to Ganda
  li_BE: changing li to Limburgish
  li_NL: changing li to Limburgish
  nan_TW@latin: changing Minnan to Min Nan Chinese
  nb_NO: changing Norwegian, Bokmål to Norwegian Bokmål
  nds_DE: changing nds to Low German
  nds_NL: changing nds to Low Saxon
  niu_NU: changing Vagahau Niue (Niuean) to Niuean
  niu_NZ: changing Vagahau Niue (Niuean) to Niuean
  nl_BE: changing Dutch to Flemish
  nn_NO: changing Norwegian, Nynorsk to Norwegian Nynorsk
  nr_ZA: changing Southern Ndebele to South Ndebele
  om_ET: changing om to Oromo
  om_KE: changing om to Oromo
  or_IN: changing Odia to Oriya
  os_RU: changing Ossetian to Ossetic
  pap_AW: changing pap to Papiamento
  pap_CW: changing pap to Papiamento
  pa_PK: changing Punjabi (Shahmukhi) to Punjabi
  pt_BR: changing Portuguese to Brazilian Portuguese
  pt_PT: changing Portuguese to European Portuguese
  se_NO: changing Northern Saami to Northern Sami
  sid_ET: changing sid to Sidamo
  so_DJ: changing so to Somali
  so_ET: changing so to Somali
  so_KE: changing so to Somali
  so_SO: changing so to Somali
  st_ZA: changing Sotho to Southern Sotho
  sw_KE: changing sw to Swahili
  sw_TZ: changing sw to Swahili
  ti_ER: changing ti to Tigrinya
  ti_ET: changing ti to Tigrinya
  tig_ER: changing tig to Tigre
  uk_UA: changing uk to Ukrainian
  wal_ET: changing wal to Wolaytta
  yue_HK: changing Yue Chinese to Cantonese

8 years agolocaledata: LC_TIME.date_fmt: delete entries same as the default value
Mike Frysinger [Mon, 11 Apr 2016 19:52:51 +0000 (15:52 -0400)]
localedata: LC_TIME.date_fmt: delete entries same as the default value

There's no real value in populating this field when it's the same as the
default POSIX setting, so drop it from most locales so it's clear what's
going on.

8 years agoX86-64: Use non-temporal store in memcpy on large data
H.J. Lu [Tue, 12 Apr 2016 15:10:31 +0000 (08:10 -0700)]
X86-64: Use non-temporal store in memcpy on large data

The large memcpy micro benchmark in glibc shows that there is a
regression with large data on Haswell machine.  non-temporal store in
memcpy on large data can improve performance significantly.  This
patch adds a threshold to use non temporal store which is 6 times of
shared cache size.  When size is above the threshold, non temporal
store will be used, but avoid non-temporal store if there is overlap
between destination and source since destination may be in cache when
source is loaded.

For size below 8 vector register width, we load all data into registers
and store them together.  Only forward and backward loops, which move 4
vector registers at a time, are used to support overlapping addresses.
For forward loop, we load the last 4 vector register width of data and
the first vector register width of data into vector registers before the
loop and store them after the loop.  For backward loop, we load the first
4 vector register width of data and the last vector register width of
data into vector registers before the loop and store them after the loop.

[BZ #19928]
* sysdeps/x86_64/cacheinfo.c (__x86_shared_non_temporal_threshold):
New.
(init_cacheinfo): Set __x86_shared_non_temporal_threshold to 6
times of shared cache size.
* sysdeps/x86_64/multiarch/memmove-avx-unaligned-erms.S
(VMOVNT): New.
* sysdeps/x86_64/multiarch/memmove-avx512-unaligned-erms.S
(VMOVNT): Likewise.
* sysdeps/x86_64/multiarch/memmove-sse2-unaligned-erms.S
(VMOVNT): Likewise.
(VMOVU): Changed to movups for smaller code sizes.
(VMOVA): Changed to movaps for smaller code sizes.
* sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S: Update
comments.
(PREFETCH): New.
(PREFETCH_SIZE): Likewise.
(PREFETCHED_LOAD_SIZE): Likewise.
(PREFETCH_ONE_SET): Likewise.
Rewrite to use forward and backward loops, which move 4 vector
registers at a time, to support overlapping addresses and use
non temporal store if size is above the threshold and there is
no overlap between destination and source.

8 years agoVDSO support for MIPS
Matthew Fortune [Tue, 12 Apr 2016 08:31:06 +0000 (09:31 +0100)]
VDSO support for MIPS

This patch adds support for using the implementations of gettimeofday()
and clock_gettime() provided by the kernel in the VDSO. The VDSO will
always provide clock_gettime() as CLOCK_{REALTIME,MONOTONIC}_COARSE can
be implemented regardless of platform. CLOCK_{REALTIME,MONOTONIC}, along
with gettimeofday(), are only implemented on platforms which make use of
either the CP0 count or GIC as their clocksource. On other platforms,
the VDSO does not provide the __vdso_gettimeofday symbol, as it is
never useful.

The VDSO functions return ENOSYS when they encounter an unsupported
request, in which case glibc should fall back to the standard syscall.

Tested with upstream kernel 4.5 and QEMU emulating Malta.

./vdsotest gettimeofday bench
gettimeofday: syscall: 1021 nsec/call
gettimeofday:    libc: 262 nsec/call
gettimeofday:    vdso: 174 nsec/call

* sysdeps/unix/sysv/linux/mips/Makefile (sysdep_routines):
Include dl-vdso.
* sysdeps/unix/sysv/linux/mips/Versions: Add
__vdso_clock_gettime.
* sysdeps/unix/sysv/linux/mips/init-first.c: New file.
* sysdeps/unix/sysv/linux/mips/libc-vdso.h: New file.
* sysdeps/unix/sysv/linux/mips/mips32/sysdep.h:
(INTERNAL_VSYSCALL_CALL): Define to be compatible with MIPS
definitions of INTERNAL_SYSCALL_{ERROR_P,ERRNO}.
(HAVE_CLOCK_GETTIME_VSYSCALL): Define.
(HAVE_GETTIMEOFDAY_VSYSCALL): Define.
* sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: Likewise.

8 years agoConsolidate pwrite/pwrite64 implementations
Adhemerval Zanella [Fri, 23 Oct 2015 12:59:32 +0000 (10:59 -0200)]
Consolidate pwrite/pwrite64 implementations

This patch consolidates all the pwrite/pwrite64 implementation for Linux
in only one (sysdeps/unix/sysv/linux/pwrite{64}.c).  It also removes the
syscall from the auto-generation using assembly macros.

For pwrite{64} offset argument placement the new SYSCALL_LL{64} macro
is used.  For pwrite ports that do not define __NR_pwrite will use
__NR_pwrite64 and for pwrite64 ports that dot define __NR_pwrite64 will
use __NR_pwrite for the syscall.

Checked on x86_64, x32, i386, aarch64, and ppc64le.

* sysdeps/unix/sysv/linux/arm/pwrite.c: Remove file.
* sysdeps/unix/sysv/linux/arm/pwrite64.c: Likewise.
* sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c: Likewise.
* sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/pwrite64.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/syscalls.list (prite): Remove
syscalls generation.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
[__NR_pwrite64] (__NR_write): Remove define.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
[__NR_pwrite64] (__NR_write): Remove define.
* sysdeps/unix/sysv/linux/pwrite.c [__NR_pwrite64] (__NR_pwrite):
Remove define.
(__libc_pwrite): Use SYSCALL_LL macro on offset argument.
* sysdeps/unix/sysv/linux/pwrite64.c [__NR_pwrite64] (__NR_pwrite):
Remove define.
(__libc_pwrite64): Use SYSCALL_LL64 macro on offset argument.
* sysdeps/unix/sysv/linux/sh/pwrite.c: Rewrite using default
Linux implementation as base.
* sysdeps/unix/sysv/linux/sh/pwrite64.c: Likewise.
* sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise.
* sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.

8 years agoConsolidate pread/pread64 implementations
Adhemerval Zanella [Wed, 21 Oct 2015 12:03:31 +0000 (10:03 -0200)]
Consolidate pread/pread64 implementations

This patch consolidates all the pread/pread64 implementation for Linux
in only one (sysdeps/unix/sysv/linux/pread.c).  It also removes the
syscall from the auto-generation using assembly macros.

For pread{64} offset argument placement the new SYSCALL_LL{64} macro
is used.  For pread ports that do not define __NR_pread will use
__NR_pread64 and for pread64 ports that dot define __NR_pread64 will
use __NR_pread for the syscall.

Checked on x86_64, x32, i386, aarch64, and ppc64le.

* sysdeps/unix/sysv/linux/arm/pread.c: Remove file.
* sysdeps/unix/sysv/linux/arm/pread64.c: Likewise.
* sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c: Likewise.
* sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c: Likewise,
* sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/pread64.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/syscalls.list (pread): Remove
syscall generation.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
[__NR_pread64] (__NR_pread): Remove define.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h:
[__NR_pread64] (__NR_pread): Likewise.
* sysdeps/unix/sysv/linux/pread.c [__NR_pread64] (__NR_pread): Remove
define.
(__libc_pread): Use SYSCALL_LL macro on offset argument.
* sysdeps/unix/sysv/linux/pread64.c [__NR_pread64] (__NR_pread):
Remove define.
(__libc_pread64): Use SYSCALL_LL64 macro on offset argument.
* sysdeps/unix/sysv/linux/sh/pread.c: Rewrite using default
Linux implementation as base.
* sysdeps/unix/sysv/linux/sh/pread64.c: Likewise.
* sysdeps/unix/sysv/linux/mips/pread.c: Likewise.
* sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.

8 years agoConsolidate off_t/off64_t syscall argument passing
Adhemerval Zanella [Wed, 21 Oct 2015 12:04:07 +0000 (10:04 -0200)]
Consolidate off_t/off64_t syscall argument passing

This patch add three new macros (SYSCALL_LL, SYSCALL_LL64, and
__ASSUME_WORDSIZE64_ILP32) to use along with off_t and off64_t argument
syscalls.  The rationale for this change is:

1. Remove multiple implementations for the same syscall for different
   architectures (for instance, pread have 6 different implementations).

2. Also remove the requirement to use syscall wrappers for cancellable
   entrypoints.

The macro usage should be used along __ALIGNMENT_ARG to follow ABI constrains
for architecture where it applies.  For instance, pread can be rewritten as:

  return SYSCALL_CANCEL (pread, fd, buf, count,
                         __ALIGNMENT_ARG SYSCALL_LL (offset));

Another macro, SYSCALL_LL64, is provided for off64_t.  The macro
__ASSUME_WORDSIZE64_ILP32 is used by the ABI to define is uses 64-bit register
even if ABI is ILP32 (for instance x32 and mips64-n32).

The changes itself are not currently used in any implementation, so no
code change is expected.

* sysdeps/unix/sysv/linux/generic/sysdep.h (__ALIGNMENT_ARG): Move
definition.
(__ALIGNMENT_COUNT): Likewise.
* sysdeps/unix/sysv/linux/sysdep.h (__ALIGNMENT_ARG): To here.
(__ALIGNMENT_COUNT): Likewise.
(SYSCALL_LL): New define.
(SYSCALL_LL64): Likewise.
* sysdeps/unix/sysv/linux/mips/kernel-features.h:
[_MIPS_SIM == _ABIO32] (__ASSUME_WORDSIZE64_ILP32): Define.
* sysdeps/unix/sysv/linux/x86_64/kernel-features.h:
[ILP32] (__ASUME_WORDSIZE64_ILP32): Likewise.

8 years agoDefine __ASSUME_ALIGNED_REGISTER_PAIRS for missing ports
Adhemerval Zanella [Tue, 17 Nov 2015 20:19:06 +0000 (18:19 -0200)]
Define __ASSUME_ALIGNED_REGISTER_PAIRS for missing ports

This patch defines __ASSUME_ALIGNED_REGISTER_PAIRS for the missing
ports that require 64-bit value (e.g., long long) to be aligned to
an even register pair in argument passing.

No code change is expected, tested with builds for powerpc32,
mips-o32, and armhf.

* sysdeps/unix/sysv/linux/arm/kernel-features.h
(__ASSUME_ALIGNED_REGISTER_PAIRS): Define.
* sysdeps/unix/sysv/linux/mips/kernel-features.h
[_MIPS_SIM == _ABIO32] (__ASSUME_ALIGNED_REGISTER_PAIRS): Likewise.
* sysdeps/unix/sysv/linux/powerpc/kernel-features.h
[!__powerpc64__] (__ASSUME_ALIGNED_REGISTER_PAIRS): Likewise.

8 years agonss_dns: Fix assertion failure in _nss_dns_getcanonname_r [BZ #19865]
Florian Weimer [Mon, 11 Apr 2016 08:55:43 +0000 (10:55 +0200)]
nss_dns: Fix assertion failure in _nss_dns_getcanonname_r [BZ #19865]

8 years agoAdd missing bug number to ChangeLog
Florian Weimer [Mon, 11 Apr 2016 08:54:05 +0000 (10:54 +0200)]
Add missing bug number to ChangeLog

8 years agoFix build with HAVE_AUX_VECTOR
Samuel Thibault [Mon, 11 Apr 2016 08:27:02 +0000 (10:27 +0200)]
Fix build with HAVE_AUX_VECTOR

* sysdeps/unix/sysv/linux/ldsodefs.h (HAVE_AUX_VECTOR): Define before
including <ldsodefs.h>.
* sysdeps/nacl/ldsodefs.h (HAVE_AUX_VECTOR): Likewise.

8 years agoFix crash on getauxval call without HAVE_AUX_VECTOR
Samuel Thibault [Sun, 10 Apr 2016 21:58:43 +0000 (23:58 +0200)]
Fix crash on getauxval call without HAVE_AUX_VECTOR

* sysdeps/generic/ldsodefs.h (struct rtld_global_ro)
[!HAVE_AUX_VECTOR]: Do not define _dl_auxv field.
* misc/getauxval.c (__getauxval) [!HAVE_AUX_VECTOR]: Do not go through
GLRO(dl_auxv) list.

8 years agoAllow overriding of CFLAGS as well as CPPFLAGS for rtld.
Nick Alcock [Sun, 13 Mar 2016 15:16:51 +0000 (15:16 +0000)]
Allow overriding of CFLAGS as well as CPPFLAGS for rtld.

We need this to pass -fno-stack-protector to all the pieces of rtld in
non-elf/ directories.

8 years agoWhen disabling SSE, make sure -fpmath is not set to use SSE either
Khem Raj [Sun, 3 Apr 2016 04:55:25 +0000 (21:55 -0700)]
When disabling SSE, make sure -fpmath is not set to use SSE either

This fixes errors when we inject sse options through CFLAGS and now
that we have -Werror turned on by default this warning turns into an
error on x86:

$ gcc -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -x c /dev/null -S -mno-sse -mno-mmx
/dev/null:1:0: warning: SSE instruction set disabled, using 387 arithmetics

Where as:

$ gcc -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -x c /dev/null -S -mno-sse -mno-mmx -mfpmath=387

Generates no warnings.

8 years agolocaledata: CLDRv28: update LC_PAPER values
Mike Frysinger [Tue, 9 Feb 2016 20:28:52 +0000 (15:28 -0500)]
localedata: CLDRv28: update LC_PAPER values

These locales should be using A4 paper size rather than US-Letter.
Update the copy points to match the others in the file.  All other
locales have been verified against the CLDR and hand checking.

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

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

8 years agolocaledata: iw_IL: delete old/deprecated locale [BZ #16137]
Mike Frysinger [Fri, 19 Feb 2016 07:27:11 +0000 (02:27 -0500)]
localedata: iw_IL: delete old/deprecated locale [BZ #16137]

From the bug:
Obsolete locale.  The ISO-639 code for Hebrew was changed from 'iw'
to 'he' in 1989, according to Bruno Haible on libc-alpha 2003-09-01.

Reported-by: Chris Leonard <cjlhomeaddress@gmail.com>
8 years agoFix limits.h NL_NMAX namespace (bug 19929).
Joseph Myers [Fri, 8 Apr 2016 22:52:51 +0000 (22:52 +0000)]
Fix limits.h NL_NMAX namespace (bug 19929).

bits/xopen_lim.h (included by limits.h if __USE_XOPEN) defines
NL_NMAX, but this constant was removed in the 2008 edition of POSIX so
should not be defined in that case.  This patch duly disables that
define for __USE_XOPEN2K8.  It remains enabled for __USE_GNU to avoid
affecting sysconf (_SC_NL_NMAX), the implementation of which uses
"#ifdef NL_NMAX".

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

[BZ #19929]
* include/bits/xopen_lim.h (NL_NMAX): Do not define if
[__USE_XOPEN2K8 && !__USE_GNU].
* conform/Makefile (test-xfail-XOPEN2K8/limits.h/conform): Remove
variable.

8 years agolocaledata: i18n: fix typos in tel_int_fmt
Mike FABIAN [Sun, 1 Nov 2015 00:53:16 +0000 (09:53 +0900)]
localedata: i18n: fix typos in tel_int_fmt

Adding the %t avoids a double space if the area code %a happens
to be empty.  There are countries without area codes.

8 years agoFix termios.h XCASE namespace (bug 19925).
Joseph Myers [Fri, 8 Apr 2016 18:16:09 +0000 (18:16 +0000)]
Fix termios.h XCASE namespace (bug 19925).

bits/termios.h (various versions under sysdeps/unix/sysv/linux)
defines XCASE if defined __USE_MISC || defined __USE_XOPEN.  This
macro was removed in the 2001 edition of POSIX, and is not otherwise
reserved, so should not be defined for 2001 and later versions of
POSIX.  This patch fixes the conditions accordingly (leaving the macro
defined for __USE_MISC, so still in the default namespace).

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

[BZ #19925]
* sysdeps/unix/sysv/linux/alpha/bits/termios.h (XCASE): Do not
define if [!__USE_MISC && __USE_XOPEN2K].
* sysdeps/unix/sysv/linux/bits/termios.h (XCASE): Likewise.
* sysdeps/unix/sysv/linux/mips/bits/termios.h (XCASE): Likewise.
* sysdeps/unix/sysv/linux/powerpc/bits/termios.h (XCASE):
Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/termios.h (XCASE): Likewise.
* conform/Makefile (test-xfail-XOPEN2K/termios.h/conform): Remove
variable.
(test-xfail-XOPEN2K8/termios.h/conform): Likewise.

8 years agopowerpc: Add optimized P8 strspn
Paul E. Murphy [Mon, 14 Mar 2016 21:40:46 +0000 (17:40 -0400)]
powerpc: Add optimized P8 strspn

This utilizes vectors and bitmasks.  For small needle, large
haystack, the performance improvement is upto 8x.  For short
strings (0-4B), the cost of computing the bitmask dominates,
and is a tad slower.

8 years agohsearch_r: Include <limits.h>
Florian Weimer [Thu, 7 Apr 2016 11:48:00 +0000 (13:48 +0200)]
hsearch_r: Include <limits.h>

It is needed for UINT_MAX.

8 years agoscratch_buffer_set_array_size: Include <limits.h>
Florian Weimer [Thu, 7 Apr 2016 11:46:28 +0000 (13:46 +0200)]
scratch_buffer_set_array_size: Include <limits.h>

It is needed for CHAR_BIT.

8 years agoX86-64: Prepare memmove-vec-unaligned-erms.S
H.J. Lu [Wed, 6 Apr 2016 17:19:16 +0000 (10:19 -0700)]
X86-64: Prepare memmove-vec-unaligned-erms.S

Prepare memmove-vec-unaligned-erms.S to make the SSE2 version as the
default memcpy, mempcpy and memmove.

* sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S
(MEMCPY_SYMBOL): New.
(MEMPCPY_SYMBOL): Likewise.
(MEMMOVE_CHK_SYMBOL): Likewise.
Replace MEMMOVE_SYMBOL with MEMMOVE_CHK_SYMBOL on __mempcpy_chk
symbols.  Replace MEMMOVE_SYMBOL with MEMPCPY_SYMBOL on
__mempcpy symbols.  Provide alias for __memcpy_chk in libc.a.
Provide alias for memcpy in libc.a and ld.so.

8 years agoX86-64: Prepare memset-vec-unaligned-erms.S
H.J. Lu [Wed, 6 Apr 2016 16:10:18 +0000 (09:10 -0700)]
X86-64: Prepare memset-vec-unaligned-erms.S

Prepare memset-vec-unaligned-erms.S to make the SSE2 version as the
default memset.

* sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S
(MEMSET_CHK_SYMBOL): New.  Define if not defined.
(__bzero): Check VEC_SIZE == 16 instead of USE_MULTIARCH.
Disabled fro now.
Replace MEMSET_SYMBOL with MEMSET_CHK_SYMBOL on __memset_chk
symbols.  Properly check USE_MULTIARCH on __memset symbols.

8 years agoAdd memcpy/memmove/memset benchmarks with large data
H.J. Lu [Wed, 6 Apr 2016 15:37:20 +0000 (08:37 -0700)]
Add memcpy/memmove/memset benchmarks with large data

Add memcpy, memmove and memset benchmarks with large data sizes.

* benchtests/Makefile (string-benchset): Add memcpy-large,
memmove-large and memset-large.
* benchtests/bench-memcpy-large.c: New file.
* benchtests/bench-memmove-large.c: Likewise.
* benchtests/bench-memmove-large.c: Likewise.
* benchtests/bench-string.h (TIMEOUT): Don't redefine.

8 years agoMention Bug in ChangeLog for S390: Save and restore fprs/vrs while resolving symbols.
Stefan Liebler [Wed, 6 Apr 2016 13:21:00 +0000 (15:21 +0200)]
Mention Bug in ChangeLog for S390: Save and restore fprs/vrs while resolving symbols.

The Bugzilla 19916 is added to the ChangeLog for
commit 4603c51ef7989d7eb800cdd6f42aab206f891077.

8 years agoForce 32-bit displacement in memset-vec-unaligned-erms.S
H.J. Lu [Tue, 5 Apr 2016 12:21:07 +0000 (05:21 -0700)]
Force 32-bit displacement in memset-vec-unaligned-erms.S

* sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S: Force
32-bit displacement to avoid long nop between instructions.

8 years agoAdd a comment in memset-sse2-unaligned-erms.S
H.J. Lu [Tue, 5 Apr 2016 12:19:05 +0000 (05:19 -0700)]
Add a comment in memset-sse2-unaligned-erms.S

* sysdeps/x86_64/multiarch/memset-sse2-unaligned-erms.S: Add
a comment on VMOVU and VMOVA.

8 years agostrfmon_l: Use specified locale for number formatting [BZ #19633]
Florian Weimer [Mon, 4 Apr 2016 13:18:13 +0000 (15:18 +0200)]
strfmon_l: Use specified locale for number formatting [BZ #19633]

8 years agoDon't put SSE2/AVX/AVX512 memmove/memset in ld.so
H.J. Lu [Sun, 3 Apr 2016 21:32:20 +0000 (14:32 -0700)]
Don't put SSE2/AVX/AVX512 memmove/memset in ld.so

Since memmove and memset in ld.so don't use IFUNC, don't put SSE2, AVX
and AVX512 memmove and memset in ld.so.

* sysdeps/x86_64/multiarch/memmove-avx-unaligned-erms.S: Skip
if not in libc.
* sysdeps/x86_64/multiarch/memmove-avx512-unaligned-erms.S:
Likewise.
* sysdeps/x86_64/multiarch/memset-avx2-unaligned-erms.S:
Likewise.
* sysdeps/x86_64/multiarch/memset-avx512-unaligned-erms.S:
Likewise.

8 years agoFix memmove-vec-unaligned-erms.S
H.J. Lu [Sun, 3 Apr 2016 19:38:25 +0000 (12:38 -0700)]
Fix memmove-vec-unaligned-erms.S

__mempcpy_erms and __memmove_erms can't be placed between __memmove_chk
and __memmove it breaks __memmove_chk.

Don't check source == destination first since it is less common.

* sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:
(__mempcpy_erms, __memmove_erms): Moved before __mempcpy_chk
with unaligned_erms.
(__memmove_erms): Skip if source == destination.
(__memmove_unaligned_erms): Don't check source == destination
first.

8 years agoRemove Fast_Copy_Backward from Intel Core processors
H.J. Lu [Fri, 1 Apr 2016 22:08:48 +0000 (15:08 -0700)]
Remove Fast_Copy_Backward from Intel Core processors

Intel Core i3, i5 and i7 processors have fast unaligned copy and
copy backward is ignored.  Remove Fast_Copy_Backward from Intel Core
processors to avoid confusion.

* sysdeps/x86/cpu-features.c (init_cpu_features): Don't set
bit_arch_Fast_Copy_Backward for Intel Core proessors.

8 years agoUse PTR_ALIGN_DOWN on strcspn and strspn
Adhemerval Zanella [Fri, 1 Apr 2016 21:33:03 +0000 (18:33 -0300)]
Use PTR_ALIGN_DOWN on strcspn and strspn

Tested on aarch64.

* string/strcspn.c (strcspn): Use PTR_ALIGN_DOWN.
* string/strspn.c (strspn): Likewise.

8 years agoTest 64-byte alignment in memset benchtest
H.J. Lu [Fri, 1 Apr 2016 17:00:01 +0000 (10:00 -0700)]
Test 64-byte alignment in memset benchtest

Add 64-byte alignment tests in memset benchtest for 64-byte vector
registers.

* benchtests/bench-memset.c (do_test): Support 64-byte
alignment.
(test_main): Test 64-byte alignment.

8 years agoTest 64-byte alignment in memmove benchtest
H.J. Lu [Fri, 1 Apr 2016 16:58:59 +0000 (09:58 -0700)]
Test 64-byte alignment in memmove benchtest

Add 64-byte alignment tests in memmove benchtest for 64-byte vector
registers.

* benchtests/bench-memmove.c (test_main): Test 64-byte
alignment.