summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* Detect Intel Goldmont and Airmont processorsH.J. Lu2016-04-152-0/+13
| | | | | | | | | 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.
* Remove pre GCC3.2 optimizations from string/bits/string2.h.Wilco Dijkstra2016-04-153-439/+40
| | | | | | | | | | | | | | | | | | | * 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.
* Suppress GCC 6 warning about ambiguous 'else' with -WparenthesesYvan Roux2016-04-153-21/+30
|
* localedata: CLDRv29: update LC_ADDRESS.country_name translationsMike Frysinger2016-04-15174-71/+337
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 پاکستان
* localedata: fix LC_ADDRESS.country_car entriesMike Frysinger2016-04-1533-19/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* localedata: CLDRv29: update LC_ADDRESS.country_num valuesMike Frysinger2016-04-1519-26/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* localedata: LC_PAPER: use copy directives everywhereMike Frysinger2016-04-15168-560/+337
| | | | | | | | | 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.
* Fix pread consolidation on ports that require argument alignmentAdhemerval Zanella2016-04-142-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* malloc: Add missing internal_function attributes on function definitionsFlorian Weimer2016-04-142-0/+9
| | | | Fixes build on i386 after commit 29d794863cd6e03115d3670707cc873a9965ba92.
* Fix strfmon_l: Use specified locale for number formatting [BZ #19633]Stefan Liebler2016-04-142-6/+12
| | | | | | | | | | | | | | | | | | 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.
* malloc: Remove malloc hooks from fork handlerFlorian Weimer2016-04-143-119/+25
| | | | | | | 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.
* malloc: Remove unused definitions of thread_atfork, thread_atfork_staticFlorian Weimer2016-04-143-35/+7
|
* malloc: Run fork handler as late as possible [BZ #19431]Florian Weimer2016-04-149-51/+321
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Remove union wait [BZ #19613]Florian Weimer2016-04-1417-199/+72
| | | | | | | 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.
* localedata: de_IT: new localeMatthias Wallnoefer2016-04-133-0/+152
|
* localedata: de_{AT,CH}: copy data from de_DEMatthias Wallnoefer2016-04-133-6/+9
| | | | | 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.
* Register extra test objectsAndreas Schwab2016-04-136-5/+30
| | | | | This makes sure that the extra test objects are compiled with the correct MODULE_NAME and dependencies are tracked.
* localedata: LC_MEASUREMENT: use copy directives everywhereMike Frysinger2016-04-12306-613/+615
| | | | | | | | | 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.
* localedata: CLDRv29: update LC_IDENTIFICATION language/territory fieldsMike Frysinger2016-04-1296-132/+230
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* localedata: LC_TIME.date_fmt: delete entries same as the default valueMike Frysinger2016-04-12140-592/+142
| | | | | | 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.
* X86-64: Use non-temporal store in memcpy on large dataH.J. Lu2016-04-126-171/+260
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* VDSO support for MIPSMatthew Fortune2016-04-128-0/+149
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Consolidate pwrite/pwrite64 implementationsAdhemerval Zanella2016-04-1117-427/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Consolidate pread/pread64 implementationsAdhemerval Zanella2016-04-1118-414/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Consolidate off_t/off64_t syscall argument passingAdhemerval Zanella2016-04-115-10/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Define __ASSUME_ALIGNED_REGISTER_PAIRS for missing portsAdhemerval Zanella2016-04-114-0/+25
| | | | | | | | | | | | | | | | 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.
* nss_dns: Fix assertion failure in _nss_dns_getcanonname_r [BZ #19865]Florian Weimer2016-04-112-0/+13
|
* Add missing bug number to ChangeLogFlorian Weimer2016-04-111-0/+1
|
* Fix build with HAVE_AUX_VECTORSamuel Thibault2016-04-113-6/+9
| | | | | | * sysdeps/unix/sysv/linux/ldsodefs.h (HAVE_AUX_VECTOR): Define before including <ldsodefs.h>. * sysdeps/nacl/ldsodefs.h (HAVE_AUX_VECTOR): Likewise.
* Fix crash on getauxval call without HAVE_AUX_VECTORSamuel Thibault2016-04-103-0/+11
| | | | | | | * 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.
* Allow overriding of CFLAGS as well as CPPFLAGS for rtld.Nick Alcock2016-04-093-2/+8
| | | | | We need this to pass -fno-stack-protector to all the pieces of rtld in non-elf/ directories.
* When disabling SSE, make sure -fpmath is not set to use SSE eitherKhem Raj2016-04-092-1/+8
| | | | | | | | | | | | | | | 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.
* localedata: CLDRv28: update LC_PAPER valuesMike Frysinger2016-04-093-2/+7
| | | | | | 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.
* configure: fix `test ==` usageMike Frysinger2016-04-095-6/+13
| | | | | POSIX defines the = operator, but not ==. Fix the few places where we incorrectly used ==.
* localedata: iw_IL: delete old/deprecated locale [BZ #16137]Mike Frysinger2016-04-088-174/+18
| | | | | | | | 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>
* Fix limits.h NL_NMAX namespace (bug 19929).Joseph Myers2016-04-083-2/+9
| | | | | | | | | | | | | | | | | | 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.
* localedata: i18n: fix typos in tel_int_fmtMike FABIAN2016-04-082-1/+5
| | | | | Adding the %t avoids a double space if the area code %a happens to be empty. There are countries without area codes.
* Fix termios.h XCASE namespace (bug 19925).Joseph Myers2016-04-087-7/+19
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* powerpc: Add optimized P8 strspnPaul E. Murphy2016-04-077-1/+304
| | | | | | | 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.
* hsearch_r: Include <limits.h>Florian Weimer2016-04-072-0/+5
| | | | It is needed for UINT_MAX.
* scratch_buffer_set_array_size: Include <limits.h>Florian Weimer2016-04-072-0/+5
| | | | It is needed for CHAR_BIT.
* X86-64: Prepare memmove-vec-unaligned-erms.SH.J. Lu2016-04-062-54/+95
| | | | | | | | | | | | | | 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.
* X86-64: Prepare memset-vec-unaligned-erms.SH.J. Lu2016-04-062-13/+28
| | | | | | | | | | | | 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.
* Add memcpy/memmove/memset benchmarks with large dataH.J. Lu2016-04-066-2/+393
| | | | | | | | | | | 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.
* Mention Bug in ChangeLog for S390: Save and restore fprs/vrs while resolving ↵Stefan Liebler2016-04-061-0/+1
| | | | | | | symbols. The Bugzilla 19916 is added to the ChangeLog for commit 4603c51ef7989d7eb800cdd6f42aab206f891077.
* Force 32-bit displacement in memset-vec-unaligned-erms.SH.J. Lu2016-04-052-0/+18
| | | | | * sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S: Force 32-bit displacement to avoid long nop between instructions.
* Add a comment in memset-sse2-unaligned-erms.SH.J. Lu2016-04-052-0/+7
| | | | | * sysdeps/x86_64/multiarch/memset-sse2-unaligned-erms.S: Add a comment on VMOVU and VMOVA.
* strfmon_l: Use specified locale for number formatting [BZ #19633]Florian Weimer2016-04-047-25/+301
|
* Don't put SSE2/AVX/AVX512 memmove/memset in ld.soH.J. Lu2016-04-037-32/+51
| | | | | | | | | | | | | | 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.
* Fix memmove-vec-unaligned-erms.SH.J. Lu2016-04-032-24/+39
| | | | | | | | | | | | | | __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.