[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r23912 - in /fsf/trunk/libc: ./ localedata/ localedata/locales/ math/ nptl/ ports/ ports/sysdeps/unix/sysv/linux/hppa/ sysde...



Author: eglibc
Date: Wed Sep  4 00:02:03 2013
New Revision: 23912

Log:
Import glibc-mainline for 2013-09-04

Added:
    fsf/trunk/libc/localedata/locales/quz_PE
    fsf/trunk/libc/sysdeps/unix/sysv/linux/tst-fanotify.c
    fsf/trunk/libc/sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S
Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/NEWS
    fsf/trunk/libc/Versions.def
    fsf/trunk/libc/localedata/ChangeLog
    fsf/trunk/libc/localedata/SUPPORTED
    fsf/trunk/libc/localedata/locales/ht_HT
    fsf/trunk/libc/math/libm-test.inc
    fsf/trunk/libc/nptl/ChangeLog
    fsf/trunk/libc/nptl/tst-cleanup2.c
    fsf/trunk/libc/ports/ChangeLog
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/hppa/Versions
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/hppa/syscalls.list
    fsf/trunk/libc/sysdeps/i386/fpu/libm-test-ulps
    fsf/trunk/libc/sysdeps/ieee754/flt-32/e_lgammaf_r.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/Makefile
    fsf/trunk/libc/sysdeps/x86_64/fpu/libm-test-ulps
    fsf/trunk/libc/sysdeps/x86_64/multiarch/Makefile
    fsf/trunk/libc/sysdeps/x86_64/multiarch/ifunc-impl-list.c
    fsf/trunk/libc/sysdeps/x86_64/multiarch/strcmp.S

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Wed Sep  4 00:02:03 2013
@@ -1,3 +1,30 @@
+2013-09-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #15427]
+	* sysdeps/ieee754/flt-32/e_lgammaf_r.c (__ieee754_lgammaf_r): Use
+	2**-30 instead of 2**-70 as threshold for returning -log(|x|).
+	* math/libm-test.inc (lgamma_test_data): Add more tests.
+	* sysdeps/i386/fpu/libm-test-ulps: Update.
+	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
+
+2013-09-03   OndÃÂej BÃÂlka  <neleai@xxxxxxxxx>
+
+	* sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: New file.
+	* sysdeps/x86_64/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list):
+	Add ifunc.
+	* sysdeps/x86_64/multiarch/Makefile (sysdep_routines):
+	Add strcmp-sse2-unaligned
+	* sysdeps/x86_64/multiarch/strcmp.S (strcmp): Add ifunc.
+
+2013-09-02  Mike Frysinger  <vapier@xxxxxxxxxx>
+
+	* Versions.def (libc): Add GLIBC_2.19.
+
+2013-09-02  Mike Frysinger  <vapier@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/tst-fanotify.c: New test.
+	* sysdeps/unix/sysv/linux/Makefile (tests): Add tst-fanotify.
+
 2013-09-02  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	[BZ #14155]

Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Wed Sep  4 00:02:03 2013
@@ -9,13 +9,14 @@
 
 * The following bugs are resolved with this release:
 
-  14155, 14699, 15522, 15531, 15532, 15736, 15749, 15797, 15867, 15890,
-  15897, 15905, 15909.
+  14155, 14699, 15427, 15522, 15531, 15532, 15736, 15749, 15797, 15867,
+  15886, 15887, 15890, 15897, 15905, 15909, 15921.
 
 * CVE-2013-4237 The readdir_r function could write more than NAME_MAX bytes
   to the d_name member of struct dirent, or omit the terminating NUL
   character.  (Bugzilla #14699).
 
+* New locales: quz_PE.
 
 Version 2.18
 

Modified: fsf/trunk/libc/Versions.def
==============================================================================
--- fsf/trunk/libc/Versions.def (original)
+++ fsf/trunk/libc/Versions.def Wed Sep  4 00:02:03 2013
@@ -35,6 +35,7 @@
   GLIBC_2.16
   GLIBC_2.17
   GLIBC_2.18
+  GLIBC_2.19
   HURD_CTHREADS_0.3
 %ifdef EXPORT_UNWIND_FIND_FDE
   GCC_3.0

Modified: fsf/trunk/libc/localedata/ChangeLog
==============================================================================
--- fsf/trunk/libc/localedata/ChangeLog (original)
+++ fsf/trunk/libc/localedata/ChangeLog Wed Sep  4 00:02:03 2013
@@ -1,3 +1,12 @@
+2013-09-03  Chris Leonard  <cjl@xxxxxxxxxxxxx>
+
+	[BZ#15886]
+	* locales/ht_HT: 1.1 revision of ht_HT locale.
+
+	[BZ#15887]
+	* locales/quz_PE: New locale for quz_PE.
+	* SUPPORTED: Add quz_PE.
+
 2013-08-30   OndÃÂej BÃÂlka  <neleai@xxxxxxxxx>
 
 	* tests-mbwc/dat_wcsncat.c: Fix typos.

Modified: fsf/trunk/libc/localedata/SUPPORTED
==============================================================================
--- fsf/trunk/libc/localedata/SUPPORTED (original)
+++ fsf/trunk/libc/localedata/SUPPORTED Wed Sep  4 00:02:03 2013
@@ -344,6 +344,7 @@
 pt_PT.UTF-8/UTF-8 \
 pt_PT/ISO-8859-1 \
 pt_PT@euro/ISO-8859-15 \
+quz_PE/UTF-8 \
 ro_RO.UTF-8/UTF-8 \
 ro_RO/ISO-8859-2 \
 ru_RU.KOI8-R/KOI8-R \

Modified: fsf/trunk/libc/localedata/locales/ht_HT
==============================================================================
--- fsf/trunk/libc/localedata/locales/ht_HT (original)
+++ fsf/trunk/libc/localedata/locales/ht_HT Wed Sep  4 00:02:03 2013
@@ -1,35 +1,45 @@
 comment_char %
-escape_char  /
-%
-% U006Breyol Language Locale for Haiti
-% Source: OLPC
-% Language: ht
-% Contact: olpchaiti.org
-% Address: 22 rue 2, Port-au-Prince
-% Email: contact@xxxxxxxxxxxxx
-% Territory: HT
-% Revision: 1.0
-% Date: 2008-08-17
-% Users: general
-% Charset: ISO-8859-1
-% Authors:
-% 2008-08-17, bzg@xxxxxxxxxx
-%
-% Distribution and use is free, also
-% for commercial purposes.
+escape_char /
+% Charset: UTF-8
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Haitian Kreyol (KreyÃÂl Ayisyen) language locale for Haiti
+%
+% Prepared and contributed to glibc by Bastien Guerry <bzg@xxxxxxxxxx> and
+% Chris Leonard <cjl@xxxxxxxxxxxxx>
+% This locale data has been developed in collaboration between:
+% Sugar Labs,  http://www.sugarlabs.org/
+% One Laptop Per Child, http://one.laptop.org/
+% OLPC France, http://olpc-france.org
+% and members of the OLPC Haiti volunteer team
+%
+% build with: localedef -f UTF-8 -i ht_HT ht_HT
+%
+% This file is a part of GNU C Library (glibc) and contains locale data. The
+% Free Software Foundation does not claim any copyright interest in the
+% locale data contained in this file. The foregoing does not affect the
+% license of GNU C Library (glibc) as a whole. It does not exempt you from the
+% conditions of the license if your use would otherwise be governed by
+% that license.
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
 
 LC_IDENTIFICATION
-title      "Kreyol locale for Haiti"
-source     "OLPC"
-address    ""
-contact    "olpchaiti.org"
-email      "contact@xxxxxxxxxxxxx"
-tel        ""
-fax        ""
-language   "U006Breyol"
-territory  "Haiti"
-revision   "1.0"
-date       "2008-08-17"
+title        "Kreyol locale for Haiti"
+source       "Sugar Labs / OLPC"
+address      ""
+contact      "sugarlabs.org"
+email        "libc-alpha@xxxxxxxxxxxxxx"
+tel          ""
+fax          ""
+language     "Kreyol"
+territory    "Haiti"
+revision     "1.1"
+date         "2013-08-09"
 %
 category  "ht_HT:2000";LC_IDENTIFICATION
 category  "ht_HT:2000";LC_CTYPE
@@ -37,35 +47,91 @@
 category  "ht_HT:2000";LC_TIME
 category  "ht_HT:2000";LC_NUMERIC
 category  "ht_HT:2000";LC_MONETARY
+category  "ht_HT:2000";LC_PAPER
+category  "ht_HT:2000";LC_MEASUREMENT
 category  "ht_HT:2000";LC_MESSAGES
-category  "ht_HT:2000";LC_PAPER
 category  "ht_HT:2000";LC_NAME
 category  "ht_HT:2000";LC_ADDRESS
 category  "ht_HT:2000";LC_TELEPHONE
-
 END LC_IDENTIFICATION
 
 LC_CTYPE
+% In Haitian Kreyol, accents are simply omitted if they cannot be represented.
 copy "i18n"
-
 translit_start
-
-% In Haiti, accents are simply omitted if they cannot be represented.
 include "translit_combining";""
-
 translit_end
-
 END LC_CTYPE
 
 LC_COLLATE
-% Copy the template from ISO/IEC 14651
 copy "iso14651_t1"
 END LC_COLLATE
 
-LC_MESSAGES
-yesexpr "<U005E><U005B><U006F><U006F><U0079><U0079><U005D><U002E><U002A>"
-noexpr  "<U005E><U005B><U006E><U006E><U005D><U002E><U002A>"
-END LC_MESSAGES
+LC_TIME
+% janvye, fevriye, mas, avril, me, jen, jiyÃÂ, out, septanm, oktÃÂb, novanm, desanm
+mon           "<U006A><U0061><U006E><U0076><U0079><U0065>";/
+     "<U0066><U0065><U0076><U0072><U0069><U0079><U0065>";/
+     "<U006D><U0061><U0073>";/
+     "<U0061><U0076><U0072><U0069><U006C>";/
+     "<U006D><U0065>";/
+     "<U006A><U0065><U006E>";/
+     "<U006A><U0069><U0079><U00E8>";/
+     "<U006F><U0075><U0074>";/
+     "<U0073><U0065><U0070><U0074><U0061><U006E><U006D>";/
+     "<U006F><U006B><U0074><U00F2><U0062>";/
+     "<U006E><U006F><U0076><U0061><U006E><U006D>";/
+     "<U0064><U0065><U0073><U0061><U006E><U006D>"
+% jan, fev, mas, avr, me, jen, jiy, out, sep, okt, nov, des
+abmon         "<U006A><U0061><U006E>";/
+       "<U0066><U0065><U0076>";/
+       "<U006D><U0061><U0073>";/
+       "<U0061><U0076><U0072>";/
+       "<U006D><U0065>";/
+       "<U006A><U0065><U006E>";/
+       "<U006A><U0069><U0079>";/
+       "<U006F><U0075><U0074>";/
+       "<U0073><U0065><U0070>";/
+       "<U006F><U006B><U0074>";/
+       "<U006E><U006F><U0076>";/
+       "<U0064><U0065><U0073>"
+% dimanch, lendi , madi, mÃÂkredi, jedi, vandredi, samdi
+day           "<U0064><U0069><U006D><U0061><U006E><U0063><U0068>";/
+     "<U006C><U0065><U006E><U0064><U0069><U0020>";/
+     "<U006D><U0061><U0064><U0069>";/
+     "<U006D><U00E8><U006B><U0072><U0065><U0064><U0069>";/
+     "<U006A><U0065><U0064><U0069>";/
+     "<U0076><U0061><U006E><U0064><U0072><U0065><U0064><U0069>";/
+     "<U0073><U0061><U006D><U0064><U0069>"
+% dim, len , mad, mÃÂk, jed, van, sam
+abday         "<U0064><U0069><U006D>";/
+       "<U006C><U0065><U006E><U0020>";/
+       "<U006D><U0061><U0064>";/
+       "<U006D><U00E8><U006B>";/
+       "<U006A><U0065><U0064>";/
+       "<U0076><U0061><U006E>";/
+       "<U0073><U0061><U006D>"
+week    7;19971130;7
+first_weekday 1
+first_workday 2
+% %a %d %b %Y %T %Z
+d_t_fmt       "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
+% %d/%m/%Y
+d_fmt         "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
+% %T
+t_fmt         "<U0025><U0054>"
+am_pm         "";""
+t_fmt_ampm    ""
+% %a %b %e %H:%M:%S %Z %Y
+date_fmt      "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U0020><U0025><U0059>"
+END LC_TIME
+
+LC_NUMERIC
+% ,
+decimal_point "<U002C>"
+%
+thousands_sep "<U0020>"
+grouping      3
+END LC_NUMERIC
 
 LC_MONETARY
 int_curr_symbol           "<U0048><U0054><U0047><U0020>"
@@ -85,81 +151,27 @@
 n_sign_posn               1
 END LC_MONETARY
 
-LC_NUMERIC
-decimal_point             "<U002C>"
-thousands_sep             "<U0020>"
-grouping                  3
-END LC_NUMERIC
-
-LC_TIME
-abday   "<U0064><U0069><U006D><U002E>";/
-        "<U006C><U0045><U006E><U002E>";/
-        "<U006D><U0061><U0064><U002E>";/
-        "<U006D><U00E8><U006B><U002E>";/
-        "<U006A><U0045><U0064><U002E>";/
-        "<U0076><U0061><U006E><U002E>";/
-        "<U0073><U0061><U006D><U002E>"
-day     "<U0064><U0069><U006D><U0061><U006E><U0063><U0068>";/
-        "<U006C><U0045><U006E><U0064><U0069>";/
-        "<U006D><U0061><U0064><U0069>";/
-        "<U006D><U00E8><U006B><U0052><U0045><U0064><U0069>";/
-        "<U006A><U0045><U0064><U0069>";/
-        "<U0076><U0061><U006E><U0064><U0052><U0045><U0064><U0069>";/
-        "<U0073><U0061><U006D><U0064><U0069>"
-abmon   "<U006A><U0061><U006E><U0076><U002E>";/
-        "<U0066><U0045><U0076><U0052><U002E>";/
-        "<U006D><U0061><U0073>";/
-        "<U0061><U0076><U0052><U0069><U006C>";/
-        "<U006D><U0045>";/
-        "<U006A><U0045><U006E>";/
-        "<U006A><U0069><U0079><U00E8><U002E>";/
-        "<U006F><U0055><U0074>";/
-        "<U0073><U0045><U0070><U0074><U002E>";/
-        "<U006F><U006B><U0074><U002E>";/
-        "<U006E><U006F><U0076><U002E>";/
-        "<U0064><U0045><U0073><U002E>"
-mon     "<U006A><U0061><U006E><U0076><U0079><U0045>";/
-        "<U0066><U0045><U0076><U0052><U0069><U0079><U0045>";/
-        "<U006D><U0061><U0073>";/
-        "<U0061><U0076><U0052><U0069><U006C>";/
-        "<U006D><U0045>";/
-        "<U006A><U0045><U006E>";/
-        "<U006A><U0069><U0079><U00E8>";/
-        "<U006F><U0055><U0074>";/
-        "<U0073><U0045><U0070><U0074><U0061><U006E><U006D>";/
-        "<U006F><U0063><U0074><U006F><U0062><U0052><U0045>";/
-        "<U006E><U006F><U0076><U0061><U006E><U006D>";/
-        "<U0064><U0045><U0073><U0061><U006E><U006D>"
-d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0079><U0020><U0025><U0074><U0020><U0025><U005A>"
-d_fmt   "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
-t_fmt   "<U0025><U0074>"
-am_pm   "";""
-t_fmt_ampm ""
-date_fmt       "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0045>/
-<U0020><U0025><U0068><U003A><U0025><U006D><U003A><U0025><U0073><U0020>/
-<U0025><U005A><U0020><U0025><U0079>"
-
-week    7;19971130;4
-first_weekday 2
-first_workday 2
-END LC_TIME
-
 LC_PAPER
+% A4
 height   297
 width    210
 END LC_PAPER
 
-LC_TELEPHONE
-tel_int_fmt    "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
-<U006C>"
-tel_dom_fmt    "<U0025><U0061><U0020><U0025><U006C>"
-int_prefix     "<U0035><U0030><U0039>"
-int_select     "<U0030><U0030>"
-END LC_TELEPHONE
-
 LC_MEASUREMENT
+% metric
 measurement    1
 END LC_MEASUREMENT
+
+LC_MESSAGES
+% ^[wWoOyY].*
+yesexpr "<U005E><U005B><U0077><U0057><U006F><U004F><U0079><U0059><U005D><U002E><U002A>"
+% ^[nN].*
+noexpr  "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
+% Wi
+yesstr  "<U0057><U0069>"
+% Non
+nostr   "<U004E><U006F><U006E>"
+END LC_MESSAGES
 
 LC_NAME
 name_fmt    "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
@@ -172,7 +184,32 @@
 <U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0052><U0025>/
 <U004E><U0025><U0025><U005A><U0020><U0025><U0074><U0025>/
 <U004E><U0025><U0063><U0025><U004E>"
-country_ab2 "<U0068><U0074>"
-country_ab3 "<U0068><U0074><U0069>"
-%country_num 332
+% Ayiti
+country_name "<U0041><U0079><U0069><U0074><U0069>"
+% HT
+country_post "<U0048><U0054>"
+% HT
+country_ab2  "<U0048><U0054>"
+% HTI
+country_ab3  "<U0048><U0054><U0049>"
+country_num  332
+country_isbn 99935
+%
+% KreyÃÂl ayisyen
+lang_name    "<U004B><U0072><U0065><U0079><U00F2><U006C><U0020><U0061><U0079><U0069><U0073><U0079><U0065><U006E>"
+% ht
+lang_ab      "<U0068><U0074>"
+% hat
+lang_term    "<U0068><U0061><U0074>"
 END LC_ADDRESS
+
+LC_TELEPHONE
+% +%c %a %l
+tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025><U006C>"
+% %a %l
+tel_dom_fmt "<U0025><U0061><U0020><U0025><U006C>"
+% 00
+int_select  "<U0030><U0030>"
+% 509
+int_prefix  "<U0035><U0030><U0039>"
+END LC_TELEPHONE

Added: fsf/trunk/libc/localedata/locales/quz_PE
==============================================================================
--- fsf/trunk/libc/localedata/locales/quz_PE (added)
+++ fsf/trunk/libc/localedata/locales/quz_PE Wed Sep  4 00:02:03 2013
@@ -1,0 +1,169 @@
+comment_char %
+escape_char /
+% Charset: UTF-8
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Quechua (Cusco-Collao) language locale for Peru
+%
+% Prepared and contributed to glibc by Chris Leonard <cjl@xxxxxxxxxxxxx>
+% and Amos Batto
+%
+% This locale data has been developed in collaboration between:
+% Sugar Labs,  http://www.sugarlabs.org/
+% Instituto de Lenguas y Literaturas Andinas-Amazonicas
+% http://www.illa-a.org/wp/illa/
+%
+% build with: localedef -f UTF-8 -i quz_PE quz_PE
+%
+% This file is a part of GNU C Library (glibc) and contains locale data. The Free
+% Software Foundation does not claim any copyright interest in the
+% locale data contained in this file. The foregoing does not affect the
+% license of GNU C Library (glibc) as a whole. It does not exempt you from the
+% conditions of the license if your use would otherwise be governed by
+% that license.
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+LC_IDENTIFICATION
+title        "Quechua (Cusco-Collao) locale for Peru"
+source       "Sugar Labs / OLPC"
+address      ""
+contact      "sugarlabs.org"
+email        "libc-alpha@xxxxxxxxxxxxxx"
+tel          ""
+fax          ""
+language     "Quechua (Cusco-Collao)"
+territory    "Peru"
+revision     "1.0"
+date         "2013-08-24"
+%
+category  "quz_PE:2013";LC_IDENTIFICATION
+category  "quz_PE:2013";LC_CTYPE
+category  "quz_PE:2013";LC_COLLATE
+category  "quz_PE:2013";LC_TIME
+category  "quz_PE:2013";LC_NUMERIC
+category  "quz_PE:2013";LC_MONETARY
+category  "quz_PE:2013";LC_PAPER
+category  "quz_PE:2013";LC_MEASUREMENT
+category  "quz_PE:2013";LC_MESSAGES
+category  "quz_PE:2013";LC_NAME
+category  "quz_PE:2013";LC_ADDRESS
+category  "quz_PE:2013";LC_TELEPHONE
+END LC_IDENTIFICATION
+
+LC_CTYPE
+copy "i18n"
+translit_start
+include "translit_combining";""
+translit_end
+END LC_CTYPE
+
+LC_COLLATE
+copy "iso14651_t1"
+END LC_COLLATE
+
+% LC_TIME: Use Quechua transliteration of Spanish day and month names
+
+LC_TIME
+% iniru, phiwriru, marsu, awril, mayu, huniyu, huliyu, agustu,siptiyimri, uktuwri, nuwiyimri, tisiyimri
+mon           "<U0069><U006E><U0069><U0072><U0075>";/
+     "<U0070><U0068><U0069><U0077><U0072><U0069><U0072><U0075>";/
+     "<U006D><U0061><U0072><U0073><U0075>";/
+     "<U0061><U0077><U0072><U0069><U006C>";/
+     "<U006D><U0061><U0079><U0075>";/
+     "<U0068><U0075><U006E><U0069><U0079><U0075>";/
+     "<U0068><U0075><U006C><U0069><U0079><U0075>";/
+     "<U0061><U0067><U0075><U0073><U0074><U0075>";/
+     "<U0073><U0069><U0070><U0074><U0069><U0079><U0069><U006D><U0072><U0069>";/
+     "<U0075><U006B><U0074><U0075><U0077><U0072><U0069>";/
+     "<U006E><U0075><U0077><U0069><U0079><U0069><U006D><U0072><U0069>";/
+     "<U0074><U0069><U0073><U0069><U0079><U0069><U006D><U0072><U0069>"
+% ini, phi, mar, awr, may, hun, hul, agu, sip, ukt, nuw, tis
+abmon         "<U0069><U006E><U0069>";/
+       "<U0070><U0068><U0069>";/
+       "<U006D><U0061><U0072>";/
+       "<U0061><U0077><U0072>";/
+       "<U006D><U0061><U0079>";/
+       "<U0068><U0075><U006E>";/
+       "<U0068><U0075><U006C>";/
+       "<U0061><U0067><U0075>";/
+       "<U0073><U0069><U0070>";/
+       "<U0075><U006B><U0074>";/
+       "<U006E><U0075><U0077>";/
+       "<U0074><U0069><U0073>"
+% tuminku, lunis, martis, miyirkulis, juywis, wiyirnis, sawatu
+day           "<U0074><U0075><U006D><U0069><U006E><U006B><U0075>";/
+     "<U006C><U0075><U006E><U0069><U0073>";/
+     "<U006D><U0061><U0072><U0074><U0069><U0073>";/
+     "<U006D><U0069><U0079><U0069><U0072><U006B><U0075><U006C><U0069><U0073>";/
+     "<U006A><U0075><U0079><U0077><U0069><U0073>";/
+     "<U0077><U0069><U0079><U0069><U0072><U006E><U0069><U0073>";/
+     "<U0073><U0061><U0077><U0061><U0074><U0075>"
+% tum, lun, mar, miy, juy, wiy, saw
+abday         "<U0074><U0075><U006D>";/
+       "<U006C><U0075><U006E>";/
+       "<U006D><U0061><U0072>";/
+       "<U006D><U0069><U0079>";/
+       "<U006A><U0075><U0079>";/
+       "<U0077><U0069><U0079>";/
+       "<U0073><U0061><U0077>"
+% %a %d %b %Y %T %Z
+d_t_fmt       "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
+% %d/%m/%y
+d_fmt         "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
+% %I:%M:%S %p
+t_fmt         "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0070>"
+% AM, PM
+am_pm         "<U0041><U004D>";/
+       "<U0050><U004D>"
+% %I:%M:%S %p
+t_fmt_ampm    "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0070>"
+week    7;19971130;7
+first_weekday 1
+first_workday 2
+% %a %b %e %H:%M:%S %Z %Y
+date_fmt      "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U0020><U0025><U0059>"
+END LC_TIME
+
+LC_NUMERIC
+copy "es_PE"
+END LC_NUMERIC
+
+LC_MONETARY
+copy "es_PE"
+END LC_MONETARY
+
+LC_PAPER
+copy "es_PE"
+END LC_PAPER
+
+LC_MEASUREMENT
+% metric
+measurement    1
+END LC_MEASUREMENT
+
+LC_MESSAGES
+% ^[aAsSyY].*
+yesexpr "<U005E><U005B><U0061><U0041><U0073><U0053><U0079><U0059><U005D><U002E><U002A>"
+% ^[mMnN].*
+noexpr  "<U005E><U005B><U006D><U004D><U006E><U004E><U005D><U002E><U002A>"
+% ArÃÂ
+yesstr   "<U0041><U0072><U00ED>"
+% Manan
+nostr    "<U004D><U0061><U006E><U0061><U006E>"
+END LC_MESSAGES
+
+LC_NAME
+copy "es_PE"
+END LC_NAME
+
+% TO DO - adjust for Quechua specific lang-info for Peru
+LC_ADDRESS
+copy "es_PE"
+END LC_ADDRESS
+
+LC_TELEPHONE
+copy "es_PE"
+END LC_TELEPHONE

Modified: fsf/trunk/libc/math/libm-test.inc
==============================================================================
--- fsf/trunk/libc/math/libm-test.inc (original)
+++ fsf/trunk/libc/math/libm-test.inc Wed Sep  4 00:02:03 2013
@@ -9978,6 +9978,61 @@
     TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1),
     TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1),
     TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1),
+
+    TEST_f_f1 (lgamma, 0x1p-5L, 3.4484891277979584796832693452686366085801e+00L, 1),
+    TEST_f_f1 (lgamma, -0x1p-5L, 3.4845895751341394376217526729956836492792e+00L, -1),
+    TEST_f_f1 (lgamma, 0x1p-10L, 6.9309089024194618895406190646600805357273e+00L, 1),
+    TEST_f_f1 (lgamma, -0x1p-10L, 6.9320362775113082175565786721095494761582e+00L, -1),
+    TEST_f_f1 (lgamma, 0x1p-15L, 1.0397190093941001762077888432721419773538e+01L, 1),
+    TEST_f_f1 (lgamma, -0x1p-15L, 1.0397225324389321751118257981741350715545e+01L, -1),
+    TEST_f_f1 (lgamma, 0x1p-20L, 1.3862943060723899573457963336920089012399e+01L, 1),
+    TEST_f_f1 (lgamma, -0x1p-20L, 1.3862944161675408862049886226750366625112e+01L, -1),
+    TEST_f_f1 (lgamma, 0x1p-25L, 1.7328679496796266133304874243201700664713e+01L, 1),
+    TEST_f_f1 (lgamma, -0x1p-25L, 1.7328679531201000798551671833865469674673e+01L, -1),
+    TEST_f_f1 (lgamma, 0x1p-30L, 2.0794415416260785304085859198055798098863e+01L, 1),
+    TEST_f_f1 (lgamma, -0x1p-30L, 2.0794415417335933262374820960532606449975e+01L, -1),
+    TEST_f_f1 (lgamma, 0x1p-40L, 2.7725887222397287402100277256545578941303e+01L, 1),
+    TEST_f_f1 (lgamma, -0x1p-40L, 2.7725887222398337351278293820766115529596e+01L, -1),
+    TEST_f_f1 (lgamma, 0x1p-50L, 3.4657359027997264958191108994508978906983e+01L, 1),
+    TEST_f_f1 (lgamma, -0x1p-50L, 3.4657359027997265983532103151309975524744e+01L, -1),
+    TEST_f_f1 (lgamma, 0x1p-60L, 4.1588830833596718564533272505187468598519e+01L, 1),
+    TEST_f_f1 (lgamma, -0x1p-60L, 4.1588830833596718565534582069793719571779e+01L, -1),
+    TEST_f_f1 (lgamma, 0x1p-64L, 4.4361419555836499802671564849429355013920e+01L, 1),
+    TEST_f_f1 (lgamma, -0x1p-64L, 4.4361419555836499802734146697217245699749e+01L, -1),
+    TEST_f_f1 (lgamma, 0x1p-70L, 4.8520302639196171659205759581386516869302e+01L, 1),
+    TEST_f_f1 (lgamma, -0x1p-70L, 4.8520302639196171659206737422758202661268e+01L, -1),
+    TEST_f_f1 (lgamma, 0x1p-100L, 6.9314718055994530941723212145817201464678e+01L, 1),
+    TEST_f_f1 (lgamma, -0x1p-100L, 6.9314718055994530941723212145818112150422e+01L, -1),
+    TEST_f_f1 (lgamma, 0x1p-126L, 8.7336544750553108986571247303730247577506e+01L, 1),
+    TEST_f_f1 (lgamma, -0x1p-126L, 8.7336544750553108986571247303730247577520e+01L, -1),
+    TEST_f_f1 (lgamma, 0x1p-149L, 1.0327892990343185110316758609726830864325e+02L, 1),
+    TEST_f_f1 (lgamma, -0x1p-149L, 1.0327892990343185110316758609726830864325e+02L, -1),
+#ifndef TEST_FLOAT
+    TEST_f_f1 (lgamma, 0x1p-200L, 1.3862943611198906188344642429163531361510e+02L, 1),
+    TEST_f_f1 (lgamma, -0x1p-200L, 1.3862943611198906188344642429163531361510e+02L, -1),
+    TEST_f_f1 (lgamma, 0x1p-500L, 3.4657359027997265470861606072908828403775e+02L, 1),
+    TEST_f_f1 (lgamma, -0x1p-500L, 3.4657359027997265470861606072908828403775e+02L, -1),
+    TEST_f_f1 (lgamma, 0x1p-1000L, 6.9314718055994530941723212145817656807550e+02L, 1),
+    TEST_f_f1 (lgamma, -0x1p-1000L, 6.9314718055994530941723212145817656807550e+02L, -1),
+    TEST_f_f1 (lgamma, 0x1p-1022L, 7.0839641853226410622441122813025645257316e+02L, 1),
+    TEST_f_f1 (lgamma, -0x1p-1022L, 7.0839641853226410622441122813025645257316e+02L, -1),
+    TEST_f_f1 (lgamma, 0x1p-1074L, 7.4444007192138126231410729844608163411309e+02L, 1),
+    TEST_f_f1 (lgamma, -0x1p-1074L, 7.4444007192138126231410729844608163411309e+02L, -1),
+#endif
+#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
+    TEST_f_f1 (lgamma, 0x1p-5000L, 3.4657359027997265470861606072908828403775e+03L, 1),
+    TEST_f_f1 (lgamma, -0x1p-5000L, 3.4657359027997265470861606072908828403775e+03L, -1),
+    TEST_f_f1 (lgamma, 0x1p-10000L, 6.9314718055994530941723212145817656807550e+03L, 1),
+    TEST_f_f1 (lgamma, -0x1p-10000L, 6.9314718055994530941723212145817656807550e+03L, -1),
+    TEST_f_f1 (lgamma, 0x1p-16382L, 1.1355137111933024058873096613727848538213e+04L, 1),
+    TEST_f_f1 (lgamma, -0x1p-16382L, 1.1355137111933024058873096613727848538213e+04L, -1),
+    TEST_f_f1 (lgamma, 0x1p-16445L, 1.1398805384308300613366382237379713662002e+04L, 1),
+    TEST_f_f1 (lgamma, -0x1p-16445L, 1.1398805384308300613366382237379713662002e+04L, -1),
+# if LDBL_MANT_DIG >= 113
+    TEST_f_f1 (lgamma, 0x1p-16494L, 1.1432769596155737933527826611331164313837e+04L, 1),
+    TEST_f_f1 (lgamma, -0x1p-16494L, 1.1432769596155737933527826611331164313837e+04L, -1),
+# endif
+#endif
   };
 
 static void

Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Wed Sep  4 00:02:03 2013
@@ -1,3 +1,9 @@
+2013-09-03  Siddhesh Poyarekar  <siddhesh@xxxxxxxxxx>
+
+	[BZ #15921]
+	* tst-cleanup2.c (do_test): New volatile variable RET to
+	return success.
+
 2013-08-30   OndÃÂej BÃÂlka  <neleai@xxxxxxxxx>
 
 	* sysdeps/pthread/pthread.h: Fix typos.

Modified: fsf/trunk/libc/nptl/tst-cleanup2.c
==============================================================================
--- fsf/trunk/libc/nptl/tst-cleanup2.c (original)
+++ fsf/trunk/libc/nptl/tst-cleanup2.c Wed Sep  4 00:02:03 2013
@@ -34,6 +34,12 @@
 do_test (void)
 {
   char *p = NULL;
+  /* gcc can overwrite the success written value by scheduling instructions
+     around sprintf.  It is allowed to do this since according to C99 the first
+     argument of sprintf is a character array and NULL is not a valid character
+     array.  Mark the return value as volatile so that it gets reloaded on
+     return.  */
+  volatile int ret = 0;
   struct sigaction sa;
 
   sa.sa_handler = sig_handler;
@@ -50,7 +56,7 @@
   if (setjmp (jmpbuf))
     {
       puts ("Exiting main...");
-      return 0;
+      return ret;
     }
 
   sprintf (p, "This should segv\n");

Modified: fsf/trunk/libc/ports/ChangeLog
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog (original)
+++ fsf/trunk/libc/ports/ChangeLog Wed Sep  4 00:02:03 2013
@@ -1,3 +1,10 @@
+2013-09-02  Mike Frysinger  <vapier@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/hppa/syscalls.list (fanotify_mark): New
+	entry.
+	* sysdeps/unix/sysv/linux/hppa/Versions (libc): Add GLIBC_2.19 and
+	fanotify_mark.
+
 2013-01-02  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* README: Update copyright dates in example.

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/hppa/Versions
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/hppa/Versions (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/hppa/Versions Wed Sep  4 00:02:03 2013
@@ -32,6 +32,9 @@
     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
     prlimit64;
   }
+  GLIBC_2.19 {
+    fanotify_mark;
+  }
 }
 librt {
   GLIBC_2.3 {

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/hppa/syscalls.list
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/hppa/syscalls.list (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/hppa/syscalls.list Wed Sep  4 00:02:03 2013
@@ -36,3 +36,4 @@
 setrlimit	-	setrlimit	i:ip	__setrlimit	setrlimit
 getrlimit	-	getrlimit	i:ip	__getrlimit	getrlimit
 prlimit64	EXTRA	prlimit64	i:iipp	__prlimit64	prlimit64@@GLIBC_2.17
+fanotify_mark	EXTRA	fanotify_mark	i:iiiiis	__fanotify_mark	fanotify_mark@@GLIBC_2.19

Modified: fsf/trunk/libc/sysdeps/i386/fpu/libm-test-ulps
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/fpu/libm-test-ulps (original)
+++ fsf/trunk/libc/sysdeps/i386/fpu/libm-test-ulps Wed Sep  4 00:02:03 2013
@@ -5470,9 +5470,35 @@
 idouble: 1
 ildouble: 1
 ldouble: 1
+Test "gamma (-0x1p-10)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "gamma (-0x1p-15)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "gamma (-0x1p-20)":
+double: 1
+idouble: 1
+Test "gamma (-0x1p-30)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "gamma (-0x1p-5)":
+double: 1
+idouble: 1
 Test "gamma (0.7)":
 float: 1
 ifloat: 1
+Test "gamma (0x1p-40)":
+ildouble: 1
+ldouble: 1
 Test "gamma (1.2)":
 double: 1
 float: 2
@@ -5723,9 +5749,35 @@
 idouble: 1
 ildouble: 1
 ldouble: 1
+Test "lgamma (-0x1p-10)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+Test "lgamma (-0x1p-15)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "lgamma (-0x1p-20)":
+double: 1
+idouble: 1
+Test "lgamma (-0x1p-30)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "lgamma (-0x1p-5)":
+double: 1
+idouble: 1
 Test "lgamma (0.7)":
 float: 1
 ifloat: 1
+Test "lgamma (0x1p-40)":
+ildouble: 1
+ldouble: 1
 Test "lgamma (1.2)":
 double: 1
 float: 2

Modified: fsf/trunk/libc/sysdeps/ieee754/flt-32/e_lgammaf_r.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/flt-32/e_lgammaf_r.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/flt-32/e_lgammaf_r.c Wed Sep  4 00:02:03 2013
@@ -150,8 +150,8 @@
 	      *signgamp = -1;
 	    return one/fabsf(x);
 	  }
-	if(__builtin_expect(ix<0x1c800000, 0)) {
-	    /* |x|<2**-70, return -log(|x|) */
+	if(__builtin_expect(ix<0x30800000, 0)) {
+	    /* |x|<2**-30, return -log(|x|) */
 	    if(hx<0) {
 		*signgamp = -1;
 		return -__ieee754_logf(-x);

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/Makefile
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/Makefile (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/Makefile Wed Sep  4 00:02:03 2013
@@ -38,7 +38,7 @@
 		  bits/socket_type.h bits/syscall.h bits/sysctl.h \
 		  bits/mman-linux.h
 
-tests += tst-clone
+tests += tst-clone tst-fanotify
 
 # Generate the list of SYS_* macros for the system calls (__NR_* macros).
 

Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/tst-fanotify.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/tst-fanotify.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/tst-fanotify.c Wed Sep  4 00:02:03 2013
@@ -1,0 +1,56 @@
+/* Basic fanotify test.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <sys/fanotify.h>
+
+static int
+do_test (void)
+{
+  int fd, ret;
+
+  fd = fanotify_init (0, 0);
+  if (fd < 0)
+    {
+      if (errno == ENOSYS)
+	{
+	  puts ("SKIP: missing support for fanotify (check CONFIG_FANOTIFY=y)");
+	  return 0;
+	}
+
+      perror ("fanotify_init (0, 0) failed");
+      return 1;
+    }
+
+  ret = fanotify_mark (fd, FAN_MARK_ADD | FAN_MARK_MOUNT, FAN_ACCESS
+		       | FAN_MODIFY | FAN_OPEN | FAN_CLOSE | FAN_ONDIR
+		       | FAN_EVENT_ON_CHILD, AT_FDCWD, ".");
+  if (ret)
+    {
+      perror ("fanotify_mark (...) failed");
+      return 1;
+    }
+
+  puts ("All OK");
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"

Modified: fsf/trunk/libc/sysdeps/x86_64/fpu/libm-test-ulps
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/fpu/libm-test-ulps (original)
+++ fsf/trunk/libc/sysdeps/x86_64/fpu/libm-test-ulps Wed Sep  4 00:02:03 2013
@@ -6222,11 +6222,39 @@
 Test "gamma (-0.5)":
 ildouble: 1
 ldouble: 1
+Test "gamma (-0x1p-10)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "gamma (-0x1p-15)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "gamma (-0x1p-20)":
+double: 1
+idouble: 1
+Test "gamma (-0x1p-30)":
+ildouble: 1
+ldouble: 1
+Test "gamma (-0x1p-5)":
+double: 1
+idouble: 1
 Test "gamma (0.7)":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+Test "gamma (0x1p-10)":
+float: 1
+ifloat: 1
+Test "gamma (0x1p-30)":
+double: 1
+idouble: 1
+Test "gamma (0x1p-40)":
+ildouble: 1
+ldouble: 1
 Test "gamma (1.2)":
 double: 1
 float: 2
@@ -6491,11 +6519,39 @@
 Test "lgamma (-0.5)":
 ildouble: 1
 ldouble: 1
+Test "lgamma (-0x1p-10)":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+Test "lgamma (-0x1p-15)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "lgamma (-0x1p-20)":
+double: 1
+idouble: 1
+Test "lgamma (-0x1p-30)":
+ildouble: 1
+ldouble: 1
+Test "lgamma (-0x1p-5)":
+double: 1
+idouble: 1
 Test "lgamma (0.7)":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+Test "lgamma (0x1p-10)":
+float: 1
+ifloat: 1
+Test "lgamma (0x1p-30)":
+double: 1
+idouble: 1
+Test "lgamma (0x1p-40)":
+ildouble: 1
+ldouble: 1
 Test "lgamma (1.2)":
 double: 1
 float: 2

Modified: fsf/trunk/libc/sysdeps/x86_64/multiarch/Makefile
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/multiarch/Makefile (original)
+++ fsf/trunk/libc/sysdeps/x86_64/multiarch/Makefile Wed Sep  4 00:02:03 2013
@@ -6,8 +6,10 @@
 
 ifeq ($(subdir),string)
 
-sysdep_routines += strncat-c stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \
-		   strend-sse4 memcmp-sse4 memcpy-ssse3 memcpy-sse2-unaligned mempcpy-ssse3 \
+sysdep_routines += strncat-c stpncpy-c strncpy-c strcmp-ssse3 \
+		   strcmp-sse2-unaligned strncmp-ssse3 \
+		   strend-sse4 memcmp-sse4 memcpy-ssse3 \
+		   memcpy-sse2-unaligned mempcpy-ssse3 \
 		   memmove-ssse3 memcpy-ssse3-back mempcpy-ssse3-back \
 		   memmove-ssse3-back strcasestr-nonascii strcasecmp_l-ssse3 \
 		   strncase_l-ssse3 strcat-ssse3 strncat-ssse3\

Modified: fsf/trunk/libc/sysdeps/x86_64/multiarch/ifunc-impl-list.c
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/multiarch/ifunc-impl-list.c (original)
+++ fsf/trunk/libc/sysdeps/x86_64/multiarch/ifunc-impl-list.c Wed Sep  4 00:02:03 2013
@@ -118,6 +118,7 @@
   IFUNC_IMPL (i, name, strcmp,
 	      IFUNC_IMPL_ADD (array, i, strcmp, HAS_SSE4_2, __strcmp_sse42)
 	      IFUNC_IMPL_ADD (array, i, strcmp, HAS_SSSE3, __strcmp_ssse3)
+	      IFUNC_IMPL_ADD (array, i, strcmp, 1, __strcmp_sse2_unaligned)
 	      IFUNC_IMPL_ADD (array, i, strcmp, 1, __strcmp_sse2))
 
   /* Support sysdeps/x86_64/multiarch/strcpy.S.  */

Added: fsf/trunk/libc/sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S (added)
+++ fsf/trunk/libc/sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S Wed Sep  4 00:02:03 2013
@@ -1,0 +1,210 @@
+/* strcmp with unaligned loads
+   Copyright (C) 2013 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include "sysdep.h"
+#define ALIGN(x)	.p2align x
+
+ENTRY ( __strcmp_sse2_unaligned)
+	movl	%edi, %eax
+	xorl	%edx, %edx
+	pxor	%xmm7, %xmm7
+	orl	%esi, %eax
+	andl	$4095, %eax
+	cmpl	$4032, %eax
+	jg	L(cross_page)
+	movdqu	(%rdi), %xmm1
+	movdqu	(%rsi), %xmm0
+	pcmpeqb	%xmm1, %xmm0
+	pminub	%xmm1, %xmm0
+	pxor	%xmm1, %xmm1
+	pcmpeqb	%xmm1, %xmm0
+	pmovmskb	%xmm0, %eax
+	testq	%rax, %rax
+	je	L(next_48_bytes)
+L(return):
+	bsfq	%rax, %rdx
+	movzbl	(%rdi, %rdx), %eax
+	movzbl	(%rsi, %rdx), %edx
+	subl	%edx, %eax
+	ret
+
+	ALIGN (4)
+L(next_48_bytes):
+	movdqu	16(%rdi), %xmm6
+	movdqu	16(%rsi), %xmm3
+	movdqu	32(%rdi), %xmm5
+	pcmpeqb	%xmm6, %xmm3
+	movdqu	32(%rsi), %xmm2
+	pminub	%xmm6, %xmm3
+	pcmpeqb	%xmm1, %xmm3
+	movdqu	48(%rdi), %xmm4
+	pcmpeqb	%xmm5, %xmm2
+	pmovmskb	%xmm3, %edx
+	movdqu	48(%rsi), %xmm0
+	pminub	%xmm5, %xmm2
+	pcmpeqb	%xmm1, %xmm2
+	pcmpeqb	%xmm4, %xmm0
+	pmovmskb	%xmm2, %eax
+	salq	$16, %rdx
+	pminub	%xmm4, %xmm0
+	pcmpeqb	%xmm1, %xmm0
+	salq	$32, %rax
+	orq	%rdx, %rax
+	pmovmskb	%xmm0, %ecx
+	movq	%rcx, %rdx
+	salq	$48, %rdx
+	orq	%rdx, %rax
+	jne	L(return)
+L(main_loop_header):
+	leaq	64(%rdi), %rdx
+	movl	$4096, %ecx
+	pxor	%xmm9, %xmm9
+	andq	$-64, %rdx
+	subq	%rdi, %rdx
+	leaq	(%rdi, %rdx), %rax
+	addq	%rsi, %rdx
+	movq	%rdx, %rsi
+	andl	$4095, %esi
+	subq	%rsi, %rcx
+	shrq	$6, %rcx
+	movq	%rcx, %rsi
+	jmp	L(loop_start)
+
+	ALIGN	(4)
+L(loop):
+	addq	$64, %rax
+	addq	$64, %rdx
+L(loop_start):
+	testq	%rsi, %rsi
+	leaq	-1(%rsi), %rsi
+	je	L(loop_cross_page)
+L(back_to_loop):
+	movdqu	(%rdx), %xmm0
+	movdqu	16(%rdx), %xmm1
+	movdqa	(%rax), %xmm2
+	movdqa	16(%rax), %xmm3
+	pcmpeqb	%xmm2, %xmm0
+	movdqu	32(%rdx), %xmm5
+	pcmpeqb	%xmm3, %xmm1
+	pminub	%xmm2, %xmm0
+	movdqu	48(%rdx), %xmm6
+	pminub	%xmm3, %xmm1
+	movdqa	32(%rax), %xmm2
+	pminub	%xmm1, %xmm0
+	movdqa	48(%rax), %xmm3
+	pcmpeqb	%xmm2, %xmm5
+	pcmpeqb	%xmm3, %xmm6
+	pminub	%xmm2, %xmm5
+	pminub	%xmm3, %xmm6
+	pminub	%xmm5, %xmm0
+	pminub	%xmm6, %xmm0
+	pcmpeqb	%xmm7, %xmm0
+	pmovmskb	%xmm0, %ecx
+	testl	%ecx, %ecx
+	je	L(loop)
+	pcmpeqb	%xmm7, %xmm5
+	movdqu	(%rdx), %xmm0
+	pcmpeqb	%xmm7, %xmm1
+	movdqa	(%rax), %xmm2
+	pcmpeqb	%xmm2, %xmm0
+	pminub	%xmm2, %xmm0
+	pcmpeqb	%xmm7, %xmm6
+	pcmpeqb	%xmm7, %xmm0
+	pmovmskb	%xmm1, %ecx
+	pmovmskb	%xmm5, %r8d
+	pmovmskb	%xmm0, %edi
+	salq	$16, %rcx
+	salq	$32, %r8
+	pmovmskb	%xmm6, %esi
+	orq	%r8, %rcx
+	orq	%rdi, %rcx
+	salq	$48, %rsi
+	orq	%rsi, %rcx
+	bsfq	%rcx, %rcx
+	movzbl	(%rax, %rcx), %eax
+	movzbl	(%rdx, %rcx), %edx
+	subl	%edx, %eax
+	ret
+
+	ALIGN (4)
+L(loop_cross_page):
+	xor	%r10, %r10
+	movq	%rdx, %r9
+	and	$63, %r9
+	subq	%r9, %r10
+
+	movdqa	(%rdx, %r10), %xmm0
+	movdqa	16(%rdx, %r10), %xmm1
+	movdqu	(%rax, %r10), %xmm2
+	movdqu	16(%rax, %r10), %xmm3
+	pcmpeqb	%xmm2, %xmm0
+	movdqa	32(%rdx, %r10), %xmm5
+	pcmpeqb	%xmm3, %xmm1
+	pminub	%xmm2, %xmm0
+	movdqa	48(%rdx, %r10), %xmm6
+	pminub	%xmm3, %xmm1
+	movdqu	32(%rax, %r10), %xmm2
+	movdqu	48(%rax, %r10), %xmm3
+	pcmpeqb	%xmm2, %xmm5
+	pcmpeqb	%xmm3, %xmm6
+	pminub	%xmm2, %xmm5
+	pminub	%xmm3, %xmm6
+
+	pcmpeqb	%xmm7, %xmm0
+	pcmpeqb	%xmm7, %xmm1
+	pcmpeqb	%xmm7, %xmm5
+	pcmpeqb	%xmm7, %xmm6
+
+	pmovmskb	%xmm1, %ecx
+	pmovmskb	%xmm5, %r8d
+	pmovmskb	%xmm0, %edi
+	salq	$16, %rcx
+	salq	$32, %r8
+	pmovmskb	%xmm6, %esi
+	orq	%r8, %rdi
+	orq	%rcx, %rdi
+	salq	$48, %rsi
+	orq	%rsi, %rdi
+	movq	%r9, %rcx
+	movq	$63, %rsi
+	shrq	%cl, %rdi
+	test	%rdi, %rdi
+	je	L(back_to_loop)
+	bsfq	%rdi, %rcx
+	movzbl	(%rax, %rcx), %eax
+	movzbl	(%rdx, %rcx), %edx
+	subl	%edx, %eax
+	ret
+
+	ALIGN (4)
+L(cross_page_loop):
+	cmpb	%cl, %al
+	jne	L(different)
+	addq	$1, %rdx
+	cmpq	$64, %rdx
+	je	L(main_loop_header)
+L(cross_page):
+	movzbl	(%rdi, %rdx), %eax
+	movzbl	(%rsi, %rdx), %ecx
+	testb	%al, %al
+	jne	L(cross_page_loop)
+	xorl	%eax, %eax
+L(different):
+	subl	%ecx, %eax
+	ret
+END (__strcmp_sse2_unaligned)

Modified: fsf/trunk/libc/sysdeps/x86_64/multiarch/strcmp.S
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/multiarch/strcmp.S (original)
+++ fsf/trunk/libc/sysdeps/x86_64/multiarch/strcmp.S Wed Sep  4 00:02:03 2013
@@ -66,6 +66,7 @@
 # define STRCMP_SSE2	__strncasecmp_l_sse2
 # define __GI_STRCMP	__GI___strncasecmp_l
 #else
+# define USE_AS_STRCMP
 # define UPDATE_STRNCMP_COUNTER
 # ifndef STRCMP
 #  define STRCMP	strcmp
@@ -88,11 +89,17 @@
 	jne	1f
 	call	__init_cpu_features
 1:
+#ifdef USE_AS_STRCMP
+	leaq	__strcmp_sse2_unaligned(%rip), %rax
+	testl   $bit_Fast_Unaligned_Load, __cpu_features+CPUID_OFFSET+index_Fast_Unaligned_Load(%rip)
+	jnz     3f
+#else
 	testl	$bit_Slow_SSE4_2, __cpu_features+CPUID_OFFSET+index_Slow_SSE4_2(%rip)
 	jnz	2f
 	leaq	STRCMP_SSE42(%rip), %rax
 	testl	$bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
 	jnz	3f
+#endif
 2:	leaq	STRCMP_SSSE3(%rip), %rax
 	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
 	jnz	3f

_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits