about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2006-11-10 20:04:37 +0000
committerJakub Jelinek <jakub@redhat.com>2006-11-10 20:04:37 +0000
commit8ee382621852ed3c7e5ff17609e69cdfc1ba5c9f (patch)
tree95ebc3131f83bbcff30b75e5031a63291b1e033d
parent362d67883f1d8b55049f47b5d56e534f04be0b99 (diff)
downloadglibc-8ee382621852ed3c7e5ff17609e69cdfc1ba5c9f.tar.gz
glibc-8ee382621852ed3c7e5ff17609e69cdfc1ba5c9f.tar.xz
glibc-8ee382621852ed3c7e5ff17609e69cdfc1ba5c9f.zip
Updated to fedora-glibc-20061110T1956
-rw-r--r--ChangeLog39
-rw-r--r--fedora/branch.mk4
-rw-r--r--fedora/glibc.spec.in6
-rw-r--r--po/sv.po20
-rw-r--r--posix/unistd.h2
-rw-r--r--string/strxfrm_l.c2
-rw-r--r--string/tst-strxfrm2.c50
-rw-r--r--sysdeps/gnu/siglist.c8
-rw-r--r--sysdeps/i386/fpu/bits/mathinline.h42
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysconf.c1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/sysconf.c1
11 files changed, 140 insertions, 35 deletions
diff --git a/ChangeLog b/ChangeLog
index ba1c875975..791b786cb0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,44 @@
+2006-11-10  Ulrich Drepper  <drepper@redhat.com>
+
+	[BZ #3451]
+	* sysdeps/i386/fpu/bits/mathinline.h (floor): Make rounding mode
+	change atomic.
+	(ceil): Likewise.
+
+2006-11-10  Jakub Jelinek  <jakub@redhat.com>
+
+	* string/strxfrm_l.c (STRXFRM): Fix trailing \1 optimization
+	if N is one bigger than return value.
+	* string/tst-strxfrm2.c (do_test): Also test strxfrm with l1 + 1
+	and l1 last arguments, if buf is defined, verify the return value
+	equals to strlen (buf) and verify no byte beyond passed length
+	is modified.
+
+2006-11-10  Ulrich Drepper  <drepper@redhat.com>
+
+	* po/sv.po: Update from translation team.
+
 2006-11-09  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/unix/sysv/linux/x86_64/sysconf.c (intel_check_word): Add
+	noinline attribute.
+
+2006-11-10  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word): Add
+	noinline attribute.
+
+	* sysdeps/gnu/siglist.c (__old_sys_siglist, __old_sys_sigabbrev):
+	Use __new_sys_siglist instead of _sys_siglist_internal as
+	second macro argument.
+	(_old_sys_siglist): Use declare_symbol_alias macro instead of
+	strong_alias.
+
+2006-11-09  Ulrich Drepper  <drepper@redhat.com>
+
+	[BZ #3493]
+	* posix/unistd.h (sysconf): Remove const attribute.
+
 	* sysdeps/posix/getaddrinfo.c (getaddrinfo): Fix test for
 	temporary or deprecated addresses.
 	Patch by Sridhar Samudrala <sri@us.ibm.com>.
diff --git a/fedora/branch.mk b/fedora/branch.mk
index 6226cbbad1..1762b85308 100644
--- a/fedora/branch.mk
+++ b/fedora/branch.mk
@@ -3,5 +3,5 @@ glibc-branch := fedora
 glibc-base := HEAD
 DIST_BRANCH := devel
 COLLECTION := dist-fc4
-fedora-sync-date := 2006-11-09 20:48 UTC
-fedora-sync-tag := fedora-glibc-20061109T2048
+fedora-sync-date := 2006-11-10 19:56 UTC
+fedora-sync-tag := fedora-glibc-20061110T1956
diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in
index da2d43898e..0b99a9e00e 100644
--- a/fedora/glibc.spec.in
+++ b/fedora/glibc.spec.in
@@ -1,4 +1,4 @@
-%define glibcrelease 5
+%define glibcrelease 6
 %define auxarches i586 i686 athlon sparcv9 alphaev6
 %define xenarches i686 athlon
 %ifarch %{xenarches}
@@ -1529,6 +1529,10 @@ rm -f *.filelist*
 %endif
 
 %changelog
+* Fri Nov 10 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-6
+- fix strxfrm fix
+- fix i?86 floor and ceil inlines (BZ#3451)
+
 * Thu Nov  9 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-5
 - fix sysconf (_SC_LEVEL{2,3}_CACHE_SIZE) on Intel Core Duo
   CPUs
diff --git a/po/sv.po b/po/sv.po
index 37a6af79b9..6aeb308fe5 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,13 +1,13 @@
 # GNU libc message catalog for swedish
 # Copyright © 1996, 1998, 2001, 2002, 2003, 2006 Free Software Foundation, Inc.
 # Jan Djärv <jan.h.d@swipnet.se>, 1996, 1998, 2001, 2002, 2003, 2006.
-# Revision: 1.51
+# Revision: 1.52
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: libc 2.5\n"
 "POT-Creation-Date: 2006-09-29 11:38-0700\n"
-"PO-Revision-Date: 2006-11-01 08:40+0100\n"
+"PO-Revision-Date: 2006-11-09 13:51+0100\n"
 "Last-Translator: Jan Djärv <jan.h.d@swipnet.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "MIME-Version: 1.0\n"
@@ -141,6 +141,7 @@ msgid ""
 msgstr ""
 "För felrapporteringsinstruktioner, se:\n"
 "<http://www.gnu.org/software/libc/bugs.html>.\n"
+"Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
 
 #: catgets/gencat.c:245 debug/xtrace.sh:64 elf/ldconfig.c:285
 #: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:425
@@ -946,7 +947,8 @@ msgstr ""
 "  -u, --unused            skriv ut oanvända direkta beroenden\n"
 "  -v, --verbose           skriv all information\n"
 "För felrapporteringsinstruktioner, se:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+"Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>."
 
 #: elf/ldd.bash.in:80
 msgid "ldd: option `$1' is ambiguous"
@@ -1048,7 +1050,7 @@ msgstr "%s är inte en ELF-fil, den har inte rätt magiskt tal i början.\n"
 
 #: elf/sprof.c:77
 msgid "Output selection:"
-msgstr "Välj utdata:"
+msgstr "Val av utdata:"
 
 #: elf/sprof.c:79
 msgid "print list of count paths and their number of use"
@@ -1069,6 +1071,7 @@ msgid ""
 msgstr ""
 "Läs och visa profildata för delat objekt.För felrapporteringsinstruktioner, se:\n"
 "<http://www.gnu.org/software/libc/bugs.html>.\n"
+"Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
 
 #: elf/sprof.c:94
 msgid "SHOBJ [PROFDATA]"
@@ -1212,7 +1215,7 @@ msgstr "visa alla kända teckenuppsättningar"
 
 #: iconv/iconv_prog.c:64 locale/programs/localedef.c:126
 msgid "Output control:"
-msgstr "Styr utdata:"
+msgstr "Val av utdata:"
 
 #: iconv/iconv_prog.c:65
 msgid "omit invalid characters from output"
@@ -1311,7 +1314,7 @@ msgstr ""
 
 #: iconv/iconvconfig.c:109
 msgid "Create fastloading iconv module configuration file."
-msgstr "Skapa en konfigurationsfil för snabbladdning av modul \"iconv\""
+msgstr "Skapa en snabbladdande modulkonfigurationsfil för iconv."
 
 #: iconv/iconvconfig.c:113
 msgid "[DIR...]"
@@ -2418,6 +2421,7 @@ msgid ""
 msgstr ""
 "Hämta lokalspecifik information.För felrapporteringsinstruktioner, se:\n"
 "<http://www.gnu.org/software/libc/bugs.html>.\n"
+"Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
 
 #: locale/programs/locale.c:91
 msgid ""
@@ -2881,7 +2885,8 @@ msgstr ""
 "motsvarande korta.\n"
 "\n"
 "För felrapporteringsinstruktioner, se:\n"
-"<http://www.gnu.org/software/libc/bugs.html>."
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+"Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>."
 
 #: malloc/memusage.sh:90
 msgid ""
@@ -4212,6 +4217,7 @@ msgid ""
 msgstr ""
 "Hämta poster från den administrativa databasenFör felrapporteringsinstruktioner, se:\n"
 "<http://www.gnu.org/software/libc/bugs.html>.\n"
+"Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
 
 #: nss/getent.c:145 nss/getent.c:394
 #, c-format
diff --git a/posix/unistd.h b/posix/unistd.h
index b751928b1e..c74190dfc3 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -559,7 +559,7 @@ extern long int pathconf (__const char *__path, int __name)
 extern long int fpathconf (int __fd, int __name) __THROW;
 
 /* Get the value of the system variable NAME.  */
-extern long int sysconf (int __name) __THROW __attribute__ ((__const__));
+extern long int sysconf (int __name) __THROW;
 
 #ifdef	__USE_POSIX2
 /* Get the value of the string-valued system variable NAME.  */
diff --git a/string/strxfrm_l.c b/string/strxfrm_l.c
index f158833f05..20f2f149bd 100644
--- a/string/strxfrm_l.c
+++ b/string/strxfrm_l.c
@@ -432,7 +432,7 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l)
   if (needed > 2 && needed == last_needed + 1)
     {
       /* Remove the \1 byte.  */
-      if (--needed < n)
+      if (--needed <= n)
 	dest[needed - 1] = L('\0');
     }
 
diff --git a/string/tst-strxfrm2.c b/string/tst-strxfrm2.c
index 31fc42cc93..d5a1115338 100644
--- a/string/tst-strxfrm2.c
+++ b/string/tst-strxfrm2.c
@@ -7,14 +7,34 @@ do_test (void)
 {
   int res = 0;
 
-  char buf[10];
+  char buf[20];
   size_t l1 = strxfrm (NULL, "ab", 0);
   size_t l2 = strxfrm (buf, "ab", 1);
   size_t l3 = strxfrm (buf, "ab", sizeof (buf));
+  if (l3 < sizeof (buf) && strlen (buf) != l3)
+    {
+      puts ("C locale l3 test failed");
+      res = 1;
+    }
+
+  size_t l4 = strxfrm (buf, "ab", l1 + 1);
+  if (l4 < l1 + 1 && strlen (buf) != l4)
+    {
+      puts ("C locale l4 test failed");
+      res = 1;
+    }
+
+  buf[l1] = 'Z';
+  size_t l5 = strxfrm (buf, "ab", l1);
+  if (buf[l1] != 'Z')
+    {
+      puts ("C locale l5 test failed");
+      res = 1;
+    }
 
-  if (l1 != l2 || l1 != l3)
+  if (l1 != l2 || l1 != l3 || l1 != l4 || l1 != l5)
     {
-      puts ("C locale test failed");
+      puts ("C locale retval test failed");
       res = 1;
     }
 
@@ -28,10 +48,30 @@ do_test (void)
       l1 = strxfrm (NULL, "ab", 0);
       l2 = strxfrm (buf, "ab", 1);
       l3 = strxfrm (buf, "ab", sizeof (buf));
+      if (l3 < sizeof (buf) && strlen (buf) != l3)
+	{
+	  puts ("UTF-8 locale l3 test failed");
+	  res = 1;
+	}
+
+      l4 = strxfrm (buf, "ab", l1 + 1);
+      if (l4 < l1 + 1 && strlen (buf) != l4)
+	{
+	  puts ("UTF-8 locale l4 test failed");
+	  res = 1;
+	}
+
+      buf[l1] = 'Z';
+      l5 = strxfrm (buf, "ab", l1);
+      if (buf[l1] != 'Z')
+	{
+	  puts ("UTF-8 locale l5 test failed");
+	  res = 1;
+	}
 
-      if (l1 != l2 || l1 != l3)
+      if (l1 != l2 || l1 != l3 || l1 != l4 || l1 != l5)
 	{
-	  puts ("UTF-8 locale test failed");
+	  puts ("UTF-8 locale retval test failed");
 	  res = 1;
 	}
     }
diff --git a/sysdeps/gnu/siglist.c b/sysdeps/gnu/siglist.c
index b8d37968e0..3005f867f0 100644
--- a/sysdeps/gnu/siglist.c
+++ b/sysdeps/gnu/siglist.c
@@ -40,13 +40,15 @@ const char *const __new_sys_sigabbrev[NSIG] =
 strong_alias (__new_sys_sigabbrev, _sys_sigabbrev_internal)
 
 #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
-declare_symbol_alias (__old_sys_siglist, _sys_siglist_internal, object,
+declare_symbol_alias (__old_sys_siglist, __new_sys_siglist, object,
 		      OLD_SIGLIST_SIZE * __WORDSIZE / 8)
 
-declare_symbol_alias (__old_sys_sigabbrev, _sys_sigabbrev_internal, object,
+declare_symbol_alias (__old_sys_sigabbrev, __new_sys_sigabbrev, object,
+		      OLD_SIGLIST_SIZE * __WORDSIZE / 8)
+
+declare_symbol_alias (_old_sys_siglist, __new_sys_siglist, object,
 		      OLD_SIGLIST_SIZE * __WORDSIZE / 8)
 
-strong_alias (__old_sys_siglist, _old_sys_siglist)
 compat_symbol (libc, __old_sys_siglist, _sys_siglist, GLIBC_2_0);
 compat_symbol (libc, _old_sys_siglist, sys_siglist, GLIBC_2_0);
 compat_symbol (libc, __old_sys_sigabbrev, sys_sigabbrev, GLIBC_2_0);
diff --git a/sysdeps/i386/fpu/bits/mathinline.h b/sysdeps/i386/fpu/bits/mathinline.h
index e04ce95099..8e7a867ec6 100644
--- a/sysdeps/i386/fpu/bits/mathinline.h
+++ b/sysdeps/i386/fpu/bits/mathinline.h
@@ -1,5 +1,5 @@
 /* Inline math functions for i387.
-   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
+   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2006
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by John C. Bowman <bowman@math.ualberta.ca>, 1995.
@@ -529,24 +529,36 @@ __inline_mathcodeNP (tanh, __x, \
 
 __inline_mathcodeNP (floor, __x, \
   register long double __value;						      \
-  __volatile unsigned short int __cw;					      \
-  __volatile unsigned short int __cwtmp;				      \
-  __asm __volatile ("fnstcw %0" : "=m" (__cw));				      \
-  __cwtmp = (__cw & 0xf3ff) | 0x0400; /* rounding down */		      \
-  __asm __volatile ("fldcw %0" : : "m" (__cwtmp));			      \
-  __asm __volatile ("frndint" : "=t" (__value) : "0" (__x));		      \
-  __asm __volatile ("fldcw %0" : : "m" (__cw));				      \
+  register int __ignore;						      \
+  unsigned short int __cw;						      \
+  unsigned short int __cwtmp;						      \
+  __asm __volatile ("fnstcw %4\n\t"					      \
+		    "movzwl %4, %1\n\t"					      \
+		    "andl $0xf3ff, %1\n\t"				      \
+		    "orl $0x0400, %1\n\t"	/* rounding down */	      \
+		    "movw %1, %3\n\t"					      \
+		    "fldcw %3\n\t"					      \
+		    "frndint\n\t"					      \
+		    "fldcw %4"						      \
+		    : "=t" (__value), "=&q" (__ignore)			      \
+		    : "0" (__x), "m" (__cwtmp), "m" (__cw));		      \
   return __value)
 
 __inline_mathcodeNP (ceil, __x, \
   register long double __value;						      \
-  __volatile unsigned short int __cw;					      \
-  __volatile unsigned short int __cwtmp;				      \
-  __asm __volatile ("fnstcw %0" : "=m" (__cw));				      \
-  __cwtmp = (__cw & 0xf3ff) | 0x0800; /* rounding up */			      \
-  __asm __volatile ("fldcw %0" : : "m" (__cwtmp));			      \
-  __asm __volatile ("frndint" : "=t" (__value) : "0" (__x));		      \
-  __asm __volatile ("fldcw %0" : : "m" (__cw));				      \
+  register int __ignore;						      \
+  unsigned short int __cw;						      \
+  unsigned short int __cwtmp;						      \
+  __asm __volatile ("fnstcw %4\n\t"					      \
+		    "movzwl %4, %1\n\t"					      \
+		    "andl $0xf3ff, %1\n\t"				      \
+		    "orl $0x0800, %1\n\t"	/* rounding up */	      \
+		    "movw %1, %3\n\t"					      \
+		    "fldcw %3\n\t"					      \
+		    "frndint\n\t"					      \
+		    "fldcw %4"						      \
+		    : "=t" (__value), "=&q" (__ignore)			      \
+		    : "0" (__x), "m" (__cwtmp), "m" (__cw));		      \
   return __value)
 
 #ifdef __FAST_MATH__
diff --git a/sysdeps/unix/sysv/linux/i386/sysconf.c b/sysdeps/unix/sysv/linux/i386/sysconf.c
index c9d7f77a00..2ffbd5227b 100644
--- a/sysdeps/unix/sysv/linux/i386/sysconf.c
+++ b/sysdeps/unix/sysv/linux/i386/sysconf.c
@@ -140,6 +140,7 @@ intel_02_known_compare (const void *p1, const void *p2)
 
 
 static long int
+__attribute__ ((noinline))
 intel_check_word (int name, unsigned int value, bool *has_level_2,
 		  bool *no_level_2_or_3)
 {
diff --git a/sysdeps/unix/sysv/linux/x86_64/sysconf.c b/sysdeps/unix/sysv/linux/x86_64/sysconf.c
index 80c982aa3b..5a898b7857 100644
--- a/sysdeps/unix/sysv/linux/x86_64/sysconf.c
+++ b/sysdeps/unix/sysv/linux/x86_64/sysconf.c
@@ -101,6 +101,7 @@ intel_02_known_compare (const void *p1, const void *p2)
 
 
 static long int
+__attribute__ ((noinline))
 intel_check_word (int name, unsigned int value, bool *has_level_2,
 		  bool *no_level_2_or_3)
 {