]> git.ipfire.org Git - thirdparty/glibc.git/log
thirdparty/glibc.git
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.

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

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

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

8 years agoRemove powerpc64 strspn, strcspn, and strpbrk implementation
Adhemerval Zanella [Mon, 28 Mar 2016 13:26:05 +0000 (10:26 -0300)] 
Remove powerpc64 strspn, strcspn, and strpbrk implementation

This patch removes the powerpc64 optimized strspn, strcspn, and
strpbrk assembly implementation now that the default C one
implements the same strategy.  On internal glibc benchtests
current implementations shows similar performance with -O2.

Tested on powerpc64le (POWER8).

* sysdeps/powerpc/powerpc64/strcspn.S: Remove file.
* sysdeps/powerpc/powerpc64/strpbrk.S: Remove file.
* sysdeps/powerpc/powerpc64/strspn.S: Remove file.

8 years agoImprove generic strpbrk performance
Adhemerval Zanella [Sun, 27 Mar 2016 13:33:56 +0000 (13:33 +0000)] 
Improve generic strpbrk performance

With now a faster strcspn implementation, it is faster to just use
it with some return tests than reimplementing strpbrk itself.
As for strcspn optimization, it is generally at least 10 times faster
than the existing implementation on bench-strspn on a few AArch64
implementations.

Also the string/bits/string2.h inlines make no longer sense, as current
implementation will already implement most of the optimizations.

Tested on x86_64, i386, and aarch64.

* string/strpbrk.c (strpbrk): Rewrite function.
* string/bits/string2.h (strpbrk): Use __builtin_strpbrk.
(__strpbrk_c2): Likewise.
(__strpbrk_c3): Likewise.
* string/string-inlines.c
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strpbrk_c2):
Likewise.
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strpbrk_c3):
Likewise.

8 years agoImprove generic strspn performance
Adhemerval Zanella [Sat, 26 Mar 2016 19:09:07 +0000 (19:09 +0000)] 
Improve generic strspn performance

As for strcspn, this patch improves strspn performance using a much
faster algorithm.  It first constructs a 256-entry table based on
the accept string and then uses it as a lookup table for the
input string.  As for strcspn optimization, it is generally at least
10 times faster than the existing implementation on bench-strspn
on a few AArch64 implementations.

Also the string/bits/string2.h inlines make no longer sense, as current
implementation will already implement most of the optimizations.

Tested on x86_64, i686, and aarch64.

* string/strspn.c (strcspn): Rewrite function.
* string/bits/string2.h (strspn): Use __builtin_strcspn.
(__strspn_c1): Remove inline function.
(__strspn_c2): Likewise.
(__strspn_c3): Likewise.
* string/string-inlines.c
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strspn_c1): Add
compatibility symbol.
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strspn_c2):
Likewise.
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strspn_c3):
Likewise.

8 years agoImprove generic strcspn performance
Wilco Dijkstra [Fri, 25 Mar 2016 19:44:26 +0000 (16:44 -0300)] 
Improve generic strcspn performance

Improve strcspn performance using a much faster algorithm.  It is kept simple
so it works well on most targets.  It is generally at least 10 times faster
than the existing implementation on bench-strcspn on a few AArch64
implementations, and for some tests 100 times as fast (repeatedly calling
strchr on a small string is extremely slow...).

In fact the string/bits/string2.h inlines make no longer sense, as GCC
already uses strlen if reject is an empty string, strchrnul is 5 times as
fast as __strcspn_c1, while __strcspn_c2 and __strcspn_c3 are slower than
the strcspn main loop for large strings (though reject length 2-4 could be
special cased in the future to gain even more performance).

Tested on x86_64, i686, and aarch64.

* string/Version (libc): Add GLIBC_2.24.
* string/strcspn.c (strcspn): Rewrite function.
* string/bits/string2.h (strcspn): Use __builtin_strcspn.
(__strcspn_c1): Remove inline function.
(__strcspn_c2): Likewise.
(__strcspn_c3): Likewise.
* string/string-inline.c
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strcspn_c1): Add
compatibility symbol.
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strcspn_c2):
Likewise.
[SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strcspn_c3):
Likewise.
* sysdeps/i386/string-inlines.c: Include generic string-inlines.c.

8 years agoS390: Use ahi instead of aghi in 32bit _dl_runtime_resolve.
Stefan Liebler [Fri, 1 Apr 2016 08:42:54 +0000 (10:42 +0200)] 
S390: Use ahi instead of aghi in 32bit _dl_runtime_resolve.

This patch uses ahi instead of aghi in 32bit _dl_runtime_resolve
to adjust the stack pointer. This is no functional change,
but a cosmetic one.

ChangeLog:

* sysdeps/s390/s390-32/dl-trampoline.h (_dl_runtime_resolve):
Use ahi instead of aghi to adjust stack pointer.

8 years agoIncrease internal precision of ldbl-128ibm decimal printf [BZ #19853]
Paul E. Murphy [Mon, 29 Feb 2016 19:27:36 +0000 (13:27 -0600)] 
Increase internal precision of ldbl-128ibm decimal printf [BZ #19853]

When the signs differ, the precision of the conversion sometimes
drops below 106 bits.  This strategy is identical to the
hexadecimal variant.

I've refactored tst-sprintf3 to enable testing a value with more
than 30 significant digits in order to demonstrate this failure
and its solution.

Additionally, this implicitly fixes a typo in the shift
quantities when subtracting from the high mantissa to compute
the difference.

8 years agoAdd x86-64 memset with unaligned store and rep stosb
H.J. Lu [Thu, 31 Mar 2016 17:05:51 +0000 (10:05 -0700)] 
Add x86-64 memset with unaligned store and rep stosb

Implement x86-64 memset with unaligned store and rep movsb.  Support
16-byte, 32-byte and 64-byte vector register sizes.  A single file
provides 2 implementations of memset, one with rep stosb and the other
without rep stosb.  They share the same codes when size is between 2
times of vector register size and REP_STOSB_THRESHOLD which defaults
to 2KB.

Key features:

1. Use overlapping store to avoid branch.
2. For size <= 4 times of vector register size, fully unroll the loop.
3. For size > 4 times of vector register size, store 4 times of vector
register size at a time.

[BZ #19881]
* sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
memset-sse2-unaligned-erms, memset-avx2-unaligned-erms and
memset-avx512-unaligned-erms.
* sysdeps/x86_64/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Test __memset_chk_sse2_unaligned,
__memset_chk_sse2_unaligned_erms, __memset_chk_avx2_unaligned,
__memset_chk_avx2_unaligned_erms, __memset_chk_avx512_unaligned,
__memset_chk_avx512_unaligned_erms, __memset_sse2_unaligned,
__memset_sse2_unaligned_erms, __memset_erms,
__memset_avx2_unaligned, __memset_avx2_unaligned_erms,
__memset_avx512_unaligned_erms and __memset_avx512_unaligned.
* sysdeps/x86_64/multiarch/memset-avx2-unaligned-erms.S: New
file.
* sysdeps/x86_64/multiarch/memset-avx512-unaligned-erms.S:
Likewise.
* sysdeps/x86_64/multiarch/memset-sse2-unaligned-erms.S:
Likewise.
* sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S:
Likewise.

8 years agoAdd x86-64 memmove with unaligned load/store and rep movsb
H.J. Lu [Thu, 31 Mar 2016 17:04:26 +0000 (10:04 -0700)] 
Add x86-64 memmove with unaligned load/store and rep movsb

Implement x86-64 memmove with unaligned load/store and rep movsb.
Support 16-byte, 32-byte and 64-byte vector register sizes.  When
size <= 8 times of vector register size, there is no check for
address overlap bewteen source and destination.  Since overhead for
overlap check is small when size > 8 times of vector register size,
memcpy is an alias of memmove.

A single file provides 2 implementations of memmove, one with rep movsb
and the other without rep movsb.  They share the same codes when size is
between 2 times of vector register size and REP_MOVSB_THRESHOLD which
is 2KB for 16-byte vector register size and scaled up by large vector
register size.

Key features:

1. Use overlapping load and store to avoid branch.
2. For size <= 8 times of vector register size, load  all sources into
registers and store them together.
3. If there is no address overlap bewteen source and destination, copy
from both ends with 4 times of vector register size at a time.
4. If address of destination > address of source, backward copy 8 times
of vector register size at a time.
5. Otherwise, forward copy 8 times of vector register size at a time.
6. Use rep movsb only for forward copy.  Avoid slow backward rep movsb
by fallbacking to backward copy 8 times of vector register size at a
time.
7. Skip when address of destination == address of source.

[BZ #19776]
* sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
memmove-sse2-unaligned-erms, memmove-avx-unaligned-erms and
memmove-avx512-unaligned-erms.
* sysdeps/x86_64/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Test
__memmove_chk_avx512_unaligned_2,
__memmove_chk_avx512_unaligned_erms,
__memmove_chk_avx_unaligned_2, __memmove_chk_avx_unaligned_erms,
__memmove_chk_sse2_unaligned_2,
__memmove_chk_sse2_unaligned_erms, __memmove_avx_unaligned_2,
__memmove_avx_unaligned_erms, __memmove_avx512_unaligned_2,
__memmove_avx512_unaligned_erms, __memmove_erms,
__memmove_sse2_unaligned_2, __memmove_sse2_unaligned_erms,
__memcpy_chk_avx512_unaligned_2,
__memcpy_chk_avx512_unaligned_erms,
__memcpy_chk_avx_unaligned_2, __memcpy_chk_avx_unaligned_erms,
__memcpy_chk_sse2_unaligned_2, __memcpy_chk_sse2_unaligned_erms,
__memcpy_avx_unaligned_2, __memcpy_avx_unaligned_erms,
__memcpy_avx512_unaligned_2, __memcpy_avx512_unaligned_erms,
__memcpy_sse2_unaligned_2, __memcpy_sse2_unaligned_erms,
__memcpy_erms, __mempcpy_chk_avx512_unaligned_2,
__mempcpy_chk_avx512_unaligned_erms,
__mempcpy_chk_avx_unaligned_2, __mempcpy_chk_avx_unaligned_erms,
__mempcpy_chk_sse2_unaligned_2, __mempcpy_chk_sse2_unaligned_erms,
__mempcpy_avx512_unaligned_2, __mempcpy_avx512_unaligned_erms,
__mempcpy_avx_unaligned_2, __mempcpy_avx_unaligned_erms,
__mempcpy_sse2_unaligned_2, __mempcpy_sse2_unaligned_erms and
__mempcpy_erms.
* sysdeps/x86_64/multiarch/memmove-avx-unaligned-erms.S: New
file.
* sysdeps/x86_64/multiarch/memmove-avx512-unaligned-erms.S:
Likwise.
* sysdeps/x86_64/multiarch/memmove-sse2-unaligned-erms.S:
Likwise.
* sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:
Likwise.

8 years agoS390: Extend structs La_s390_regs / La_s390_retval with vector-registers.
Stefan Liebler [Thu, 31 Mar 2016 15:37:16 +0000 (17:37 +0200)] 
S390: Extend structs La_s390_regs / La_s390_retval with vector-registers.

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

ChangeLog:

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

8 years agoS390: Save and restore fprs/vrs while resolving symbols.
Stefan Liebler [Thu, 31 Mar 2016 15:37:16 +0000 (17:37 +0200)] 
S390: Save and restore fprs/vrs while resolving symbols.

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

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

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

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

ChangeLog:

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

8 years agoFix tst-dlsym-error build
Adhemerval Zanella [Thu, 31 Mar 2016 13:51:51 +0000 (10:51 -0300)] 
Fix tst-dlsym-error build

This patch fixes the new test tst-dlsym-error build on aarch64
(and possible other architectures as well) due missing strchrnul
definition.

* elf/tst-dlsym-error.c: Include <string.h> for strchrnul.

8 years agoReport dlsym, dlvsym lookup errors using dlerror [BZ #19509]
Florian Weimer [Thu, 31 Mar 2016 09:26:55 +0000 (11:26 +0200)] 
Report dlsym, dlvsym lookup errors using dlerror [BZ #19509]

* elf/dl-lookup.c (_dl_lookup_symbol_x): Report error even if
skip_map != NULL.
* elf/tst-dlsym-error.c: New file.
* elf/Makefile (tests): Add tst-dlsym-error.
(tst-dlsym-error): Link against libdl.

8 years ago[microblaze] Remove __ASSUME_FUTIMESAT.
Joseph Myers [Tue, 29 Mar 2016 22:13:36 +0000 (22:13 +0000)] 
[microblaze] Remove __ASSUME_FUTIMESAT.

MicroBlaze has a special version of futimesat.c because it gained the
futimesat syscall later than other non-asm-generic architectures.  Now
the minimum kernel is recent enough that this syscall can always be
assumed to be present for MicroBlaze, so this patch removes the
special version and the __ASSUME_FUTIMESAT macro, resulting in the
sysdeps/unix/sysv/linux/futimesat.c version being used.

Untested.

* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
(__ASSUME_FUTIMESAT): Remove macro.
* sysdeps/unix/sysv/linux/microblaze/futimesat.c: Remove file.

8 years agoCVE-2016-3075: Stack overflow in _nss_dns_getnetbyname_r [BZ #19879]
Florian Weimer [Tue, 29 Mar 2016 10:57:56 +0000 (12:57 +0200)] 
CVE-2016-3075: Stack overflow in _nss_dns_getnetbyname_r [BZ #19879]

The defensive copy is not needed because the name may not alias the
output buffer.

8 years agonss_db: Propagate ERANGE error if parse_line fails [BZ #19837]
Florian Weimer [Tue, 29 Mar 2016 09:27:32 +0000 (11:27 +0200)] 
nss_db: Propagate ERANGE error if parse_line fails [BZ #19837]

Reproducer (needs to run as root):

perl -e \
  'print "large:x:999:" . join(",", map {"user$_"} (1 .. 135))."\n"' \
  >> /etc/group
cd /var/db
make
getent -s db group

After the fix, the last command should list the "large" group.

The magic number 135 has been chosen so that the line is shorter than
1024 bytes, but the pointers required to encode the member array will
cross the threshold, triggering the bug.

8 years agoInitial Enhanced REP MOVSB/STOSB (ERMS) support
H.J. Lu [Tue, 29 Mar 2016 02:22:59 +0000 (19:22 -0700)] 
Initial Enhanced REP MOVSB/STOSB (ERMS) support

The newer Intel processors support Enhanced REP MOVSB/STOSB (ERMS) which
has a feature bit in CPUID.  This patch adds the Enhanced REP MOVSB/STOSB
(ERMS) bit to x86 cpu-features.

* sysdeps/x86/cpu-features.h (bit_cpu_ERMS): New.
(index_cpu_ERMS): Likewise.
(reg_ERMS): Likewise.

8 years agoSynchronize <sys/personality.h> with kernel headers
Aurelien Jarno [Mon, 28 Mar 2016 20:42:52 +0000 (22:42 +0200)] 
Synchronize <sys/personality.h> with kernel headers

<sys/personality.h> is out of sync with kernel headers, missing the
UNAME26, FDPIC_FUNCPTRS and PER_LINUX_FDPIC entries. Fix that.

Changelog:
* sysdeps/unix/sysv/linux/sys/personality.h (UNAME26, FDPIC_FUNCPTRS,
PER_LINUX_FDPIC): Add.

8 years agoMake __memcpy_avx512_no_vzeroupper an alias
H.J. Lu [Mon, 28 Mar 2016 20:15:59 +0000 (13:15 -0700)] 
Make __memcpy_avx512_no_vzeroupper an alias

Since x86-64 memcpy-avx512-no-vzeroupper.S implements memmove, make
__memcpy_avx512_no_vzeroupper an alias of __memmove_avx512_no_vzeroupper
to reduce code size of libc.so.

* sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Remove
memcpy-avx512-no-vzeroupper.
* sysdeps/x86_64/multiarch/memcpy-avx512-no-vzeroupper.S: Renamed
to ...
* sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S: This.
(MEMCPY): Don't define.
(MEMCPY_CHK): Likewise.
(MEMPCPY): Likewise.
(MEMPCPY_CHK): Likewise.
(MEMPCPY_CHK): Renamed to ...
(__mempcpy_chk_avx512_no_vzeroupper): This.
(MEMPCPY_CHK): Renamed to ...
(__mempcpy_chk_avx512_no_vzeroupper): This.
(MEMCPY_CHK): Renamed to ...
(__memmove_chk_avx512_no_vzeroupper): This.
(MEMCPY): Renamed to ...
(__memmove_avx512_no_vzeroupper): This.
(__memcpy_avx512_no_vzeroupper): New alias.
(__memcpy_chk_avx512_no_vzeroupper): Likewise.

8 years agoImplement x86-64 multiarch mempcpy in memcpy
H.J. Lu [Mon, 28 Mar 2016 20:13:36 +0000 (13:13 -0700)] 
Implement x86-64 multiarch mempcpy in memcpy

Implement x86-64 multiarch mempcpy in memcpy to share most of code.  It
reduces code size of libc.so.

[BZ #18858]
* sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Remove
mempcpy-ssse3, mempcpy-ssse3-back, mempcpy-avx-unaligned
and mempcpy-avx512-no-vzeroupper.
* sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S (MEMPCPY_CHK):
New.
(MEMPCPY): Likewise.
* sysdeps/x86_64/multiarch/memcpy-avx512-no-vzeroupper.S
(MEMPCPY_CHK): New.
(MEMPCPY): Likewise.
* sysdeps/x86_64/multiarch/memcpy-ssse3-back.S (MEMPCPY_CHK): New.
(MEMPCPY): Likewise.
* sysdeps/x86_64/multiarch/memcpy-ssse3.S (MEMPCPY_CHK): New.
(MEMPCPY): Likewise.
* sysdeps/x86_64/multiarch/mempcpy-avx-unaligned.S: Removed.
* sysdeps/x86_64/multiarch/mempcpy-avx512-no-vzeroupper.S:
Likewise.
* sysdeps/x86_64/multiarch/mempcpy-ssse3-back.S: Likewise.
* sysdeps/x86_64/multiarch/mempcpy-ssse3.S: Likewise.

8 years ago[x86] Add a feature bit: Fast_Unaligned_Copy
H.J. Lu [Mon, 28 Mar 2016 11:39:48 +0000 (04:39 -0700)] 
[x86] Add a feature bit: Fast_Unaligned_Copy

On AMD processors, memcpy optimized with unaligned SSE load is
slower than emcpy optimized with aligned SSSE3 while other string
functions are faster with unaligned SSE load.  A feature bit,
Fast_Unaligned_Copy, is added to select memcpy optimized with
unaligned SSE load.

[BZ #19583]
* sysdeps/x86/cpu-features.c (init_cpu_features): Set
Fast_Unaligned_Copy with Fast_Unaligned_Load for Intel
processors.  Set Fast_Copy_Backward for AMD Excavator
processors.
* sysdeps/x86/cpu-features.h (bit_arch_Fast_Unaligned_Copy):
New.
(index_arch_Fast_Unaligned_Copy): Likewise.
* sysdeps/x86_64/multiarch/memcpy.S (__new_memcpy): Check
Fast_Unaligned_Copy instead of Fast_Unaligned_Load.

8 years agoresolv: Always set *resplen2 out parameter in send_dg [BZ #19791]
Florian Weimer [Fri, 25 Mar 2016 10:49:51 +0000 (11:49 +0100)] 
resolv: Always set *resplen2 out parameter in send_dg [BZ #19791]

Since commit 44d20bca52ace85850012b0ead37b360e3ecd96e (Implement
second fallback mode for DNS requests), there is a code path which
returns early, before *resplen2 is initialized.  This happens if the
name server address is immediately recognized as invalid (because of
lack of protocol support, or if it is a broadcast address such
255.255.255.255, or another invalid address).

If this happens and *resplen2 was non-zero (which is the case if a
previous query resulted in a failure), __libc_res_nquery would reuse
an existing second answer buffer.  This answer has been previously
identified as unusable (for example, it could be an NXDOMAIN
response).  Due to the presence of a second answer, no name server
switching will occur.  The result is a name resolution failure,
although a successful resolution would have been possible if name
servers have been switched and queries had proceeded along the search
path.

The above paragraph still simplifies the situation.  Before glibc
2.23, if the second answer needed malloc, the stub resolver would
still attempt to reuse the second answer, but this is not possible
because __libc_res_nsearch has freed it, after the unsuccessful call
to __libc_res_nquerydomain, and set the buffer pointer to NULL.  This
eventually leads to an assertion failure in __libc_res_nquery:

/* Make sure both hp and hp2 are defined */
assert((hp != NULL) && (hp2 != NULL));

If assertions are disabled, the consequence is a NULL pointer
dereference on the next line.

Starting with glibc 2.23, as a result of commit
e9db92d3acfe1822d56d11abcea5bfc4c41cf6ca (CVE-2015-7547: getaddrinfo()
stack-based buffer overflow (Bug 18665)), the second answer is always
allocated with malloc.  This means that the assertion failure happens
with small responses as well because there is no buffer to reuse, as
soon as there is a name resolution failure which triggers a search for
an answer along the search path.

This commit addresses the issue by ensuring that *resplen2 is
initialized before the send_dg function returns.

This commit also addresses a bug where an invalid second reply is
incorrectly returned as a valid to the caller.

8 years agotst-audit10: Fix compilation on compilers without bit_AVX512F [BZ #19860]
Florian Weimer [Fri, 25 Mar 2016 10:11:42 +0000 (11:11 +0100)] 
tst-audit10: Fix compilation on compilers without bit_AVX512F [BZ #19860]

[BZ# 19860]
* sysdeps/x86_64/tst-audit10.c (avx512_enabled): Always return
zero if the compiler does not provide the AVX512F bit.

8 years agoFix x86_64 / x86 powl inaccuracy for integer exponents (bug 19848).
Joseph Myers [Thu, 24 Mar 2016 01:32:52 +0000 (01:32 +0000)] 
Fix x86_64 / x86 powl inaccuracy for integer exponents (bug 19848).

Bug 19848 reports cases where powl on x86 / x86_64 has error
accumulation, for small integer exponents, larger than permitted by
glibc's accuracy goals, at least in some rounding modes.  This patch
further restricts the exponent range for which the
small-integer-exponent logic is used to limit the possible error
accumulation.

Tested for x86_64 and x86 and ulps updated accordingly.

[BZ #19848]
* sysdeps/i386/fpu/e_powl.S (p3): Rename to p2 and change value
from 8 to 4.
(__ieee754_powl): Compare integer exponent against 4 not 8.
* sysdeps/x86_64/fpu/e_powl.S (p3): Rename to p2 and change value
from 8 to 4.
(__ieee754_powl): Compare integer exponent against 4 not 8.
* math/auto-libm-test-in: Add more tests of pow.
* math/auto-libm-test-out: Regenerated.
* sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Update.
* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.

8 years agoAssume __NR_utimensat is always defined
Aurelien Jarno [Wed, 23 Mar 2016 22:35:08 +0000 (23:35 +0100)] 
Assume __NR_utimensat is always defined

With the 2.6.32 minimum kernel on x86 and 3.2 on other architectures,
__NR_utimensat is always defined.

Changelog:
* sysdeps/unix/sysv/linux/futimens.c (futimens) [__NR_utimensat]:
Make code unconditional.
[!__NR_utimensat]: Remove conditional code.
* sysdeps/unix/sysv/linux/lutimes.c (lutimes) [__NR_utimensat]:
Make code unconditional.
[!__NR_utimensat]: Remove conditional code.
* sysdeps/unix/sysv/linux/utimensat.c (utimensat) [__NR_utimensat]:
Make code unconditional.
[!__NR_utimensat]: Remove conditional code.

8 years agoAssume __NR_openat is always defined
Aurelien Jarno [Wed, 23 Mar 2016 22:35:08 +0000 (23:35 +0100)] 
Assume __NR_openat is always defined

With the 2.6.32 minimum kernel on x86 and 3.2 on other architectures,
__NR_openat is always defined.

Changelog:
* sysdeps/unix/sysv/linux/dl-openat64.c (openat64) [__NR_openat]:
Make code unconditional.

8 years agox86, pthread_cond_*wait: Do not depend on %eax not being clobbered
Nick Alcock [Wed, 23 Mar 2016 12:40:14 +0000 (13:40 +0100)] 
x86, pthread_cond_*wait: Do not depend on %eax not being clobbered

The x86-specific versions of both pthread_cond_wait and
pthread_cond_timedwait have (in their fall-back-to-futex-wait slow
paths) calls to __pthread_mutex_cond_lock_adjust followed by
__pthread_mutex_unlock_usercnt, which load the parameters before the
first call but then assume that the first parameter, in %eax, will
survive unaffected.  This happens to have been true before now, but %eax
is a call-clobbered register, and this assumption is not safe: it could
change at any time, at GCC's whim, and indeed the stack-protector canary
checking code clobbers %eax while checking that the canary is
uncorrupted.

So reload %eax before calling __pthread_mutex_unlock_usercnt.  (Do this
unconditionally, even when stack-protection is not in use, because it's
the right thing to do, it's a slow path, and anything else is dicing
with death.)

* sysdeps/unix/sysv/linux/i386/pthread_cond_timedwait.S: Reload
call-clobbered %eax on retry path.
* sysdeps/unix/sysv/linux/i386/pthread_cond_wait.S: Likewise.

8 years agoDon't set %rcx twice before "rep movsb"
H.J. Lu [Tue, 22 Mar 2016 15:36:16 +0000 (08:36 -0700)] 
Don't set %rcx twice before "rep movsb"

* sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S (MEMCPY):
Don't set %rcx twice before "rep movsb".

8 years agoSet index_arch_AVX_Fast_Unaligned_Load only for Intel processors
H.J. Lu [Tue, 22 Mar 2016 14:46:56 +0000 (07:46 -0700)] 
Set index_arch_AVX_Fast_Unaligned_Load only for Intel processors

Since only Intel processors with AVX2 have fast unaligned load, we
should set index_arch_AVX_Fast_Unaligned_Load only for Intel processors.

Move AVX, AVX2, AVX512, FMA and FMA4 detection into get_common_indeces
and call get_common_indeces for other processors.

Add CPU_FEATURES_CPU_P and CPU_FEATURES_ARCH_P to aoid loading
GLRO(dl_x86_cpu_features) in cpu-features.c.

[BZ #19583]
* sysdeps/x86/cpu-features.c (get_common_indeces): Remove
inline.  Check family before setting family, model and
extended_model.  Set AVX, AVX2, AVX512, FMA and FMA4 usable
bits here.
(init_cpu_features): Replace HAS_CPU_FEATURE and
HAS_ARCH_FEATURE with CPU_FEATURES_CPU_P and
CPU_FEATURES_ARCH_P.  Set index_arch_AVX_Fast_Unaligned_Load
for Intel processors with usable AVX2.  Call get_common_indeces
for other processors with family == NULL.
* sysdeps/x86/cpu-features.h (CPU_FEATURES_CPU_P): New macro.
(CPU_FEATURES_ARCH_P): Likewise.
(HAS_CPU_FEATURE): Use CPU_FEATURES_CPU_P.
(HAS_ARCH_FEATURE): Use CPU_FEATURES_ARCH_P.

8 years agoFix malloc threaded tests link on non-Linux
Samuel Thibault [Tue, 22 Mar 2016 08:58:48 +0000 (09:58 +0100)] 
Fix malloc threaded tests link on non-Linux

* malloc/Makefile ($(objpfx)tst-malloc-backtrace,
$(objpfx)tst-malloc-thread-exit, $(objpfx)tst-malloc-thread-fail): Use
$(shared-thread-library) instead of hardcoding the path to libpthread.

8 years agoRemove __ASSUME_GETDENTS64_SYSCALL.
Joseph Myers [Tue, 22 Mar 2016 00:32:20 +0000 (00:32 +0000)] 
Remove __ASSUME_GETDENTS64_SYSCALL.

This patch removes the __ASSUME_GETDENTS64_SYSCALL macro, as its
definition is constant given the new kernel version requirements (and
was constant anyway before those requirements except for MIPS n32).

Note that the "#ifdef __NR_getdents64" conditional *is* still needed,
because MIPS n64 only has the getdents syscall (being a 64-bit ABI,
that syscall is 64-bit; the difference between the two on 64-bit
architectures is where d_type goes).  If MIPS n64 were to gain the
getdents64 syscall and we wanted to use it conditionally on the kernel
version at runtime we'd have to revert this patch, but I think that's
unlikely (and in any case, we could follow the simpler approach of
undefining __NR_getdents64 if the syscall can't be assumed, just like
we do for accept4 / recvmmsg / sendmmsg syscalls on architectures
where socketcall support came first).

Most of the getdents.c changes are reindentation.

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

* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_GETDENTS64_SYSCALL): Remove macro.
* sysdeps/unix/sysv/linux/getdents.c
[!__ASSUME_GETDENTS64_SYSCALL]: Remove conditional code.
[!have_no_getdents64_defined]: Likewise.
(__GETDENTS): Remove __have_no_getdents64 conditional.

8 years agoRemove __ASSUME_SIGNALFD4.
Joseph Myers [Mon, 21 Mar 2016 16:30:05 +0000 (16:30 +0000)] 
Remove __ASSUME_SIGNALFD4.

Current Linux kernel version requirements mean the signalfd4 syscall
can always be assumed to be available.  This patch removes
__ASSUME_SIGNALFD4 and associated conditionals.

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

* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_SIGNALFD4):
Remove macro.
* sysdeps/unix/sysv/linux/signalfd.c: Do not include
<kernel-features.h>.
(signalfd) [__NR_signalfd4]: Make code unconditional.
(signalfd) [!__ASSUME_SIGNALFD4]: Remove conditional code.

8 years agoposix: Fix posix_spawn implict check style
Adhemerval Zanella [Mon, 21 Mar 2016 15:10:20 +0000 (12:10 -0300)] 
posix: Fix posix_spawn implict check style

This patch fixes the implicit check style add in 2a69f853c for the
general convention one.

Checked on x86_64.

* sysdeps/unix/sysv/linux/spawni.c (__spawnix): Fix implict checks
style.

8 years agoUse JUMPTARGET in x86-64 pthread
H.J. Lu [Mon, 21 Mar 2016 13:38:17 +0000 (06:38 -0700)] 
Use JUMPTARGET in x86-64 pthread

When PLT may be used, JUMPTARGET should be used instead calling the
function directly.

* sysdeps/unix/sysv/linux/x86_64/cancellation.S
(__pthread_enable_asynccancel): Use JUMPTARGET to call
__pthread_unwind.
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
(__condvar_cleanup2): Use JUMPTARGET to call _Unwind_Resume.
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
(__condvar_cleanup1): Likewise.

8 years agolocaledata: standardize copyright/license information [BZ #11213]
Mike Frysinger [Sat, 20 Feb 2016 06:59:46 +0000 (01:59 -0500)] 
localedata: standardize copyright/license information [BZ #11213]

Use the language from the FSF in all locale files to disclaim any
license/copyright on locale data.

See https://sourceware.org/ml/libc-locales/2013-q1/msg00048.html

8 years agomath: don't clobber old libm.so on install [BZ #19822]
Dylan Alex Simon [Tue, 15 Mar 2016 17:20:01 +0000 (13:20 -0400)] 
math: don't clobber old libm.so on install [BZ #19822]

When installing glibc (w/mathvec enabled) in-place on a system with
a glibc w/out mathvec enabled, the install will clobber the existing
libm.so (e.g., /lib64/libm-2.21.so) with a linker script.  This is
because libm.so is a symlink to libm.so.6 which is a symlink to the
final libm-2.21.so file.  When the makefile writes the linker script
directly to libm.so, it gets clobbered.

The simple patch below to math/Makefile fixes this.  It is based on
the nptl Makefile, which does exactly the same thing in a safer way.

8 years agolocaledata: standardize first few lines
Mike Frysinger [Sat, 20 Feb 2016 06:55:12 +0000 (01:55 -0500)] 
localedata: standardize first few lines

Purely a style touchup to make sure the headers all look the same.

8 years agoposix: Fix posix_spawn invalid memory access
Adhemerval Zanella [Sun, 20 Mar 2016 20:35:24 +0000 (17:35 -0300)] 
posix: Fix posix_spawn invalid memory access

Current Linux posix_spawn spawn do not test if the pid argument is
valid before trying to update it for success case.  This patch fixes
it.

Tested on x86_64 and i686.

* sysdeps/unix/sysv/linux/spawni.c (__spawnix): Fix invalid memory
access where posix_spawn success and pid argument is null.
* posix/tst-spawn.c (do_test): Add posix_spawn null pid argument for
success case.

8 years agohurd: Add c++-types expected result
Samuel Thibault [Sun, 20 Mar 2016 21:16:34 +0000 (22:16 +0100)] 
hurd: Add c++-types expected result

* sysdeps/mach/hurd/i386/c++-types.data: New file.

8 years agohurd: Allow inlining IO locks
Samuel Thibault [Sun, 20 Mar 2016 21:12:06 +0000 (22:12 +0100)] 
hurd: Allow inlining IO locks

* sysdeps/mach/hurd/libc-lock.h (_IO_lock_inexpensive): Define to 1.

8 years agohurd: Do not hide rtld symbols which need to be preempted
Samuel Thibault [Sun, 20 Mar 2016 16:56:47 +0000 (17:56 +0100)] 
hurd: Do not hide rtld symbols which need to be preempted

* sysdeps/generic/dl-fcntl.h: New file, adds attribute_hidden to __open
and __fcntl.
* sysdeps/mach/hurd/dl-fcntl.h: New file, adds attribute_hidden to
__fcntl only.
* include/fcntl.h [IS_IN (rtld)]: Include <dl-fcntl.h> instead of
adding attribute_hidden to __open and __fcntl.

8 years agoFix mach-syscalls.mk build
Samuel Thibault [Sun, 20 Mar 2016 18:50:58 +0000 (19:50 +0100)] 
Fix mach-syscalls.mk build

* mach/Makefile ($(objpfx)mach-syscalls.mk): Depend on libc-modules.h.

8 years agohurd: Break errnos.d / libc-modules.h dependency loop
Samuel Thibault [Sun, 20 Mar 2016 15:44:44 +0000 (16:44 +0100)] 
hurd: Break errnos.d / libc-modules.h dependency loop

Generating errnos.d does not actually need libc-modules.h.

* sysdeps/mach/hurd/Makefile ($(common-objpfx)errnos.d): Strip
"-include $(common-objpfx)libc-modules.h" from CPPFLAGS, and do not
depend on libc-modules.h,

8 years agoRemove __ASSUME_EVENTFD2, move eventfd to syscalls.list.
Joseph Myers [Thu, 17 Mar 2016 19:07:39 +0000 (19:07 +0000)] 
Remove __ASSUME_EVENTFD2, move eventfd to syscalls.list.

Given current Linux kernel version requirements, we can assume the
presence of the eventfd2 syscall.  This means that __ASSUME_EVENTFD2
can be removed, and a syscalls.list entry suffices for eventfd instead
of needing a .c file.  This patch implements those changes.

Tested for x86_64 and x86 (not that that means much, given the lack of
testsuite coverage for eventfd).

* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_EVENTFD2):
Remove macro.
* sysdeps/unix/sysv/linux/eventfd.c: Remove file.
* sysdeps/unix/sysv/linux/syscalls.list (eventfd): New syscall
entry.

8 years agoRemove __ASSUME_FALLOCATE.
Joseph Myers [Thu, 17 Mar 2016 12:15:51 +0000 (12:15 +0000)] 
Remove __ASSUME_FALLOCATE.

Given current Linux kernel version requirements, we can always assume
the fallocate syscall to be available.  This patch removes
__ASSUME_FALLOCATE and a test for whether __NR_fallocate is defined.

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

* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_FALLOCATE):
Remove macro.
* sysdeps/unix/sysv/linux/wordsize-64/posix_fallocate.c: Do not
include <kernel-features.h>.
[!__ASSUME_FALLOCATE]: Remove conditional code.
(posix_fallocate) [__NR_fallocate]: Make code unconditional.

8 years agoUse JUMPTARGET in x86-64 mathvec
H.J. Lu [Wed, 16 Mar 2016 21:24:01 +0000 (14:24 -0700)] 
Use JUMPTARGET in x86-64 mathvec

When PLT may be used, JUMPTARGET should be used instead calling the
function directly.

* sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core_sse4.S
(_ZGVbN2v_cos_sse4): Use JUMPTARGET to call cos.
* sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core_avx2.S
(_ZGVdN4v_cos_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core_avx512.S
(_ZGVdN4v_cos): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_exp2_core_sse4.S
(_ZGVbN2v_exp_sse4): Use JUMPTARGET to call exp.
* sysdeps/x86_64/fpu/multiarch/svml_d_exp4_core_avx2.S
(_ZGVdN4v_exp_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_exp8_core_avx512.S
(_ZGVdN4v_exp): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_log2_core_sse4.S
(_ZGVbN2v_log_sse4): Use JUMPTARGET to call log.
* sysdeps/x86_64/fpu/multiarch/svml_d_log4_core_avx2.S
(_ZGVdN4v_log_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_log8_core_avx512.S
(_ZGVdN4v_log): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_pow2_core_sse4.S
(_ZGVbN2vv_pow_sse4): Use JUMPTARGET to call pow.
* sysdeps/x86_64/fpu/multiarch/svml_d_pow4_core_avx2.S
(_ZGVdN4vv_pow_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_pow8_core_avx512.S
(_ZGVdN4vv_pow): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_sin2_core_sse4.S
(_ZGVbN2v_sin_sse4): Use JUMPTARGET to call sin.
* sysdeps/x86_64/fpu/multiarch/svml_d_sin4_core_avx2.S
(_ZGVdN4v_sin_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_sin8_core_avx512.S
(_ZGVdN4v_sin): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_sincos2_core_sse4.S
(_ZGVbN2vvv_sincos_sse4): Use JUMPTARGET to call sin and cos.
* sysdeps/x86_64/fpu/multiarch/svml_d_sincos4_core_avx2.S
(_ZGVdN4vvv_sincos_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_d_sincos8_core_avx512.S
(_ZGVdN4vvv_sincos): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_cosf16_core_avx512.S
(_ZGVdN8v_cosf): Use JUMPTARGET to call cosf.
* sysdeps/x86_64/fpu/multiarch/svml_s_cosf4_core_sse4.S
(_ZGVbN4v_cosf_sse4): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_cosf8_core_avx2.S
(_ZGVdN8v_cosf_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_expf16_core_avx512.S
(_ZGVdN8v_expf): Use JUMPTARGET to call expf.
* sysdeps/x86_64/fpu/multiarch/svml_s_expf4_core_sse4.S
(_ZGVbN4v_expf_sse4): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_expf8_core_avx2.S
(_ZGVdN8v_expf_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_logf16_core_avx512.S
(_ZGVdN8v_logf): Use JUMPTARGET to call logf.
* sysdeps/x86_64/fpu/multiarch/svml_s_logf4_core_sse4.S
(_ZGVbN4v_logf_sse4): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_logf8_core_avx2.S
(_ZGVdN8v_logf_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_powf16_core_avx512.S
(_ZGVdN8vv_powf): Use JUMPTARGET to call powf.
* sysdeps/x86_64/fpu/multiarch/svml_s_powf4_core_sse4.S
(_ZGVbN4vv_powf_sse4): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_powf8_core_avx2.S
(_ZGVdN8vv_powf_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sincosf16_core_avx512.S
(_ZGVdN8vv_powf): Use JUMPTARGET to call sinf and cosf.
* sysdeps/x86_64/fpu/multiarch/svml_s_sincosf4_core_sse4.S
(_ZGVbN4vvv_sincosf_sse4): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sincosf8_core_avx2.S
(_ZGVdN8vvv_sincosf_avx2): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sinf16_core_avx512.S
(_ZGVdN8v_sinf): Use JUMPTARGET to call sinf.
* sysdeps/x86_64/fpu/multiarch/svml_s_sinf4_core_sse4.S
(_ZGVbN4v_sinf_sse4): Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_sinf8_core_avx2.S
(_ZGVdN8v_sinf_avx2): Likewise.
* sysdeps/x86_64/fpu/svml_d_wrapper_impl.h (WRAPPER_IMPL_SSE2):
Use JUMPTARGET to call callee.
(WRAPPER_IMPL_SSE2_ff): Likewise.
(WRAPPER_IMPL_SSE2_fFF): Likewise.
(WRAPPER_IMPL_AVX): Likewise.
(WRAPPER_IMPL_AVX_ff): Likewise.
(WRAPPER_IMPL_AVX_fFF): Likewise.
(WRAPPER_IMPL_AVX512): Likewise.
(WRAPPER_IMPL_AVX512_ff): Likewise.
* sysdeps/x86_64/fpu/svml_s_wrapper_impl.h (WRAPPER_IMPL_SSE2):
Likewise.
(WRAPPER_IMPL_SSE2_ff): Likewise.
(WRAPPER_IMPL_SSE2_fFF): Likewise.
(WRAPPER_IMPL_AVX): Likewise.
(WRAPPER_IMPL_AVX_ff): Likewise.
(WRAPPER_IMPL_AVX_fFF): Likewise.
(WRAPPER_IMPL_AVX512): Likewise.
(WRAPPER_IMPL_AVX512_ff): Likewise.
(WRAPPER_IMPL_AVX512_fFF): Likewise.

8 years agoadd ChangeLog entry
Mike Frysinger [Wed, 16 Mar 2016 19:06:33 +0000 (15:06 -0400)] 
add ChangeLog entry

8 years agolocaledata: use same comment_char/escape_char in these files
Mike Frysinger [Sat, 20 Feb 2016 07:31:07 +0000 (02:31 -0500)] 
localedata: use same comment_char/escape_char in these files

These files are small and easy to convert to what most others use.