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

[commits] r5760 - in /trunk: libc/ libc/intl/ libc/locale/ libc/locale/programs/ libc/localedata/ libc/localedata/locales/ libc/nptl/ ...



Author: joseph
Date: Wed Apr  2 04:55:20 2008
New Revision: 5760

Log:
Merge changes between r5678 and r5759 from /fsf/trunk.

Added:
    trunk/libc/intl/tst-gettext6.c
      - copied unchanged from r5759, fsf/trunk/libc/intl/tst-gettext6.c
    trunk/libc/intl/tst-gettext6.sh
      - copied unchanged from r5759, fsf/trunk/libc/intl/tst-gettext6.sh
Modified:
    trunk/libc/ChangeLog
    trunk/libc/intl/Makefile
    trunk/libc/intl/dcigettext.c
    trunk/libc/locale/duplocale.c
    trunk/libc/locale/freelocale.c
    trunk/libc/locale/newlocale.c
    trunk/libc/locale/programs/ld-time.c
    trunk/libc/locale/programs/locfile.c
    trunk/libc/locale/setlocale.c
    trunk/libc/localedata/ChangeLog
    trunk/libc/localedata/Makefile
    trunk/libc/localedata/locales/iso14651_t1_common
    trunk/libc/nptl/ChangeLog
    trunk/libc/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h
    trunk/libc/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h
    trunk/libc/nptl/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h
    trunk/libc/nptl/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h
    trunk/libc/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h
    trunk/libc/nscd/nscd.c
    trunk/libc/po/nl.po
    trunk/libc/posix/getopt.c
    trunk/libc/stdio-common/vfprintf.c
    trunk/libc/stdlib/strtod_l.c
    trunk/libc/string/strfry.c
    trunk/libc/sunrpc/auth_unix.c
    trunk/libc/sunrpc/clnt_tcp.c
    trunk/libc/sunrpc/clnt_udp.c
    trunk/libc/sunrpc/clnt_unix.c
    trunk/libc/sunrpc/svc_tcp.c
    trunk/libc/sunrpc/svc_udp.c
    trunk/libc/sunrpc/svc_unix.c
    trunk/libc/sunrpc/xdr.c
    trunk/libc/sunrpc/xdr_array.c
    trunk/libc/sunrpc/xdr_rec.c
    trunk/libc/sunrpc/xdr_ref.c
    trunk/libc/sysdeps/posix/tempname.c
    trunk/libc/sysdeps/unix/opendir.c
    trunk/libc/sysdeps/unix/sysv/linux/alpha/syscalls.list
    trunk/libc/sysdeps/unix/sysv/linux/bits/local_lim.h
    trunk/libc/sysdeps/unix/sysv/linux/ia64/syscalls.list
    trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list
    trunk/libc/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
    trunk/libc/sysdeps/unix/sysv/linux/sys/param.h
    trunk/libc/sysdeps/unix/sysv/linux/sysconf.c
    trunk/libc/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list
    trunk/libc/sysdeps/unix/sysv/linux/x86_64/syscalls.list
    trunk/ports/ChangeLog.m68k
    trunk/ports/ChangeLog.mips
    trunk/ports/sysdeps/m68k/dl-machine.h
    trunk/ports/sysdeps/unix/sysv/linux/mips/nptl/bits/local_lim.h
    trunk/ports/sysdeps/unix/sysv/linux/mips/sys/tas.h

Modified: trunk/libc/ChangeLog
==============================================================================
--- trunk/libc/ChangeLog (original)
+++ trunk/libc/ChangeLog Wed Apr  2 04:55:20 2008
@@ -1,3 +1,88 @@
+2008-03-31  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #6007]
+	* string/strfry.c: Handle empty strings again.
+
+2008-03-30  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #5443]
+	* intl/dcigettext.c (__dcigettext): Get reader lock for locale data
+	before looking for translation.
+	* locale/duplocale.c: Transform __libc_setlocale_lock into rwlock.
+	* locale/freelocale.c: Likewise.
+	* locale/newlocale.c: Likewise.
+	* locale/setlocale.c: Likewise.
+	Based partially on a patch by ryo@xxxxxxxxxxxxxxxxxxx
+
+2008-03-30  Jakub Jelinek  <jakub@xxxxxxxxxx>
+
+	* intl/dcigettext.c (_nl_find_msg): Reread nconversions after
+	acquiring wrlock.  Do conv_tab allocation while holding lock.
+	* intl/Makefile: Add rules to build and run tst-gettext6.
+	* intl/tst-gettext6.c: New test.
+	* intl/tst-gettext6.sh: New file.
+
+2008-03-30  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* po/nl.po: Update from translation team.
+
+	* sysdeps/unix/opendir.c (__alloc_dir): If allocation fails for size
+	provided through st_blksize, try the default size before giving up.
+
+2008-03-29  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* stdio-common/vfprintf.c (vfprintf): Correct overflow test.
+
+	[BZ #5939]
+	* sysdeps/posix/tempname.c (__gen_tempname): Correct flag selection.
+
+	* posix/getopt.c (_getopt_internal_r): Remove old POSIX-demanded
+	error message.  POSIX today does not require the messages to be in
+	a specific form.  Suggested by Jim Meyering <jim@xxxxxxxxxxxx>.
+
+	[BZ #5979]
+	* sunrpc/auth_unix.c: Unify printed strings.
+	* sunrpc/clnt_tcp.c: Likewise.
+	* sunrpc/clnt_udp.c: Likewise.
+	* sunrpc/clnt_unix.c: Likewise.
+	* sunrpc/svc_tcp.c: Likewise.
+	* sunrpc/svc_udp.c: Likewise.
+	* sunrpc/svc_unix.c: Likewise.
+	* sunrpc/xdr.c: Likewise.
+	* sunrpc/xdr_array.c: Likewise.
+	* sunrpc/xdr_rec.c: Likewise.
+	* sunrpc/xdr_ref.c: Likewise.
+	* locale/programs/ld-time.c (time_finish): Unify messages.
+	* locale/programs/locfile.c (handle_copy): Fix typo.
+	* nscd/nscd.c (options): Fix typo.
+
+	[BZ #5995]
+	* stdlib/strtod_l.c: Use correct sign for result in one more
+	underflow case.
+	Patch by Eric Blake <ebb9@xxxxxxx>.
+
+2008-03-27  Jakub Jelinek  <jakub@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/wordsize-64/syscalls.list: Add open
+	and creat system calls.
+	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove open system
+	call.
+	* sysdeps/unix/sysv/linux/ia64/syscalls.list: Remove open and creat
+	system calls.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: Likewise.
+	* sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise.
+
+2008-03-27  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/bits/local_lim.h: Undefined ARG_MAX if
+	<linux/limits.h> has defined it.
+	* sysdeps/unix/sysv/linux/sys/param.h: Define NCARGS to the legacy
+	ARG_MAX value and prevent ARG_MAX from being defined by the kernel
+	headers.
+	* sysdeps/unix/sysv/linux/sysconf.c: Define legacy_ARG_MAX and use
+	it instead of ARG_MAX.
+
 2008-03-25  Jakub Jelinek  <jakub@xxxxxxxxxx>
 
 	* posix/gai.conf: Fix comment for scope nullbits.

Modified: trunk/libc/intl/Makefile
==============================================================================
--- trunk/libc/intl/Makefile (original)
+++ trunk/libc/intl/Makefile Wed Apr  2 04:55:20 2008
@@ -1,4 +1,4 @@
-# Copyright (C) 1995-2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 1995-2003, 2005, 2008 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
@@ -33,11 +33,11 @@
 	     tst-codeset.sh tstcodeset.po \
 	     tst-gettext3.sh \
 	     tst-gettext4.sh tst-gettext4-de.po tst-gettext4-fr.po \
-	     tst-gettext5.sh
+	     tst-gettext5.sh tst-gettext6.sh
 
 include ../Makeconfig
 
-multithread-test-srcs := tst-gettext4 tst-gettext5
+multithread-test-srcs := tst-gettext4 tst-gettext5 tst-gettext6
 test-srcs := tst-gettext tst-translit tst-gettext2 tst-codeset tst-gettext3
 ifeq ($(have-thread-library),yes)
 test-srcs += $(multithread-test-srcs)
@@ -68,7 +68,8 @@
 tests: $(objpfx)tst-translit.out $(objpfx)tst-gettext2.out \
        $(objpfx)tst-codeset.out $(objpfx)tst-gettext3.out
 ifeq ($(have-thread-library),yes)
-tests: $(objpfx)tst-gettext4.out $(objpfx)tst-gettext5.out
+tests: $(objpfx)tst-gettext4.out $(objpfx)tst-gettext5.out \
+       $(objpfx)tst-gettext6.out
 endif
 ifneq (no,$(PERL))
 tests: $(objpfx)mtrace-tst-gettext
@@ -95,6 +96,8 @@
 	$(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/
 $(objpfx)tst-gettext5.out: tst-gettext5.sh $(objpfx)tst-gettext5
 	$(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/
+$(objpfx)tst-gettext6.out: tst-gettext6.sh $(objpfx)tst-gettext6
+	$(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/
 endif
 # eglibc: endif
 
@@ -109,6 +112,7 @@
 CFLAGS-tst-gettext3.c = -DOBJPFX=\"$(objpfx)\"
 CFLAGS-tst-gettext4.c = -DOBJPFX=\"$(objpfx)\"
 CFLAGS-tst-gettext5.c = -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-gettext6.c = -DOBJPFX=\"$(objpfx)\"
 
 ifeq ($(have-thread-library),yes)
 ifeq (yes,$(build-shared))
@@ -127,6 +131,7 @@
 $(objpfx)tst-gettext3.out: $(objpfx)tst-gettext.out
 $(objpfx)tst-gettext4.out: $(objpfx)tst-gettext.out
 $(objpfx)tst-gettext5.out: $(objpfx)tst-gettext.out
+$(objpfx)tst-gettext6.out: $(objpfx)tst-gettext.out
 
 CPPFLAGS += -D'LOCALEDIR="$(msgcatdir)"' \
 	    -D'LOCALE_ALIAS_PATH="$(msgcatdir)"'

Modified: trunk/libc/intl/dcigettext.c
==============================================================================
--- trunk/libc/intl/dcigettext.c (original)
+++ trunk/libc/intl/dcigettext.c Wed Apr  2 04:55:20 2008
@@ -1,5 +1,6 @@
 /* Implementation of the internal dcigettext function.
-   Copyright (C) 1995-2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1995-2005, 2006, 2007, 2008
+   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
@@ -453,6 +454,11 @@
 	    : n == 1 ? (char *) msgid1 : (char *) msgid2);
 #endif
 
+#ifdef _LIBC
+  __libc_rwlock_define (extern, __libc_setlocale_lock attribute_hidden)
+  __libc_rwlock_rdlock (__libc_setlocale_lock);
+#endif
+
   __libc_rwlock_rdlock (_nl_state_lock);
 
   /* If DOMAINNAME is NULL, we are interested in the default domain.  If
@@ -471,7 +477,7 @@
 # ifdef HAVE_PER_THREAD_LOCALE
 #  ifdef _LIBC
 #   if __OPTION_EGLIBC_LOCALE_CODE
-  localename = __current_locale_name (category);
+  localename = strdupa (__current_locale_name (category));
 #   else
   localename = "C";
 #   endif
@@ -497,6 +503,9 @@
       else
 	retval = (char *) (*foundp)->translation;
 
+# ifdef _LIBC
+      __libc_rwlock_unlock (__libc_setlocale_lock);
+# endif
       __libc_rwlock_unlock (_nl_state_lock);
       return retval;
     }
@@ -556,6 +565,7 @@
 	  /* We cannot get the current working directory.  Don't signal an
 	     error but simply return the default string.  */
 	  FREE_BLOCKS (block_list);
+	  __libc_rwlock_unlock (__libc_setlocale_lock);
 	  __libc_rwlock_unlock (_nl_state_lock);
 	  __set_errno (saved_errno);
 	  return (plural == 0
@@ -622,6 +632,7 @@
 	{
 	no_translation:
 	  FREE_BLOCKS (block_list);
+	  __libc_rwlock_unlock (__libc_setlocale_lock);
 	  __libc_rwlock_unlock (_nl_state_lock);
 	  __set_errno (saved_errno);
 	  return (plural == 0
@@ -735,6 +746,7 @@
 	      if (plural)
 		retval = plural_lookup (domain, n, retval, retlen);
 
+	      __libc_rwlock_unlock (__libc_setlocale_lock);
 	      __libc_rwlock_unlock (_nl_state_lock);
 	      return retval;
 	    }
@@ -887,6 +899,7 @@
 	{
 	  /* We have to allocate a new conversions table.  */
 	  __libc_rwlock_wrlock (domain->conversions_lock);
+	  nconversions = domain->nconversions;
 
 	  /* Maybe in the meantime somebody added the translation.
 	     Recheck.  */
@@ -1041,6 +1054,7 @@
 # endif
 	  )
 	{
+	  __libc_lock_define_initialized (static, lock)
 	  /* We are supposed to do a conversion.  First allocate an
 	     appropriate table with the same structure as the table
 	     of translations in the file, where we can put the pointers
@@ -1050,13 +1064,21 @@
 	     handle this case by converting RESULTLEN bytes, including
 	     NULs.  */
 
-	  if (convd->conv_tab == NULL
-	      && ((convd->conv_tab =
-		    (char **) calloc (nstrings + domain->n_sysdep_strings,
-				      sizeof (char *)))
-		  == NULL))
-	    /* Mark that we didn't succeed allocating a table.  */
-	    convd->conv_tab = (char **) -1;
+	  if (__builtin_expect (convd->conv_tab == NULL, 0))
+	    {
+	      __libc_lock_lock (lock);
+	      if (convd->conv_tab == NULL)
+		{
+		  convd->conv_tab
+		    = calloc (nstrings + domain->n_sysdep_strings,
+			      sizeof (char *));
+		  if (convd->conv_tab != NULL)
+		    goto not_translated_yet;
+		  /* Mark that we didn't succeed allocating a table.  */
+		  convd->conv_tab = (char **) -1;
+		}
+	      __libc_lock_unlock (lock);
+	    }
 
 	  if (__builtin_expect (convd->conv_tab == (char **) -1, 0))
 	    /* Nothing we can do, no more memory.  We cannot use the
@@ -1065,12 +1087,14 @@
 
 	  if (convd->conv_tab[act] == NULL)
 	    {
+	      __libc_lock_lock (lock);
+	    not_translated_yet:;
+
 	      /* We haven't used this string so far, so it is not
 		 translated yet.  Do this now.  */
 	      /* We use a bit more efficient memory handling.
 		 We allocate always larger blocks which get used over
 		 time.  This is faster than many small allocations.   */
-	      __libc_lock_define_initialized (static, lock)
 # define INITIAL_BLOCK_SIZE	4080
 	      static unsigned char *freemem;
 	      static size_t freemem_size;
@@ -1081,8 +1105,6 @@
 # ifndef _LIBC
 	      transmem_block_t *transmem_list = NULL;
 # endif
-
-	      __libc_lock_lock (lock);
 
 	      inbuf = (const unsigned char *) result;
 	      outbuf = freemem + sizeof (size_t);

Modified: trunk/libc/locale/duplocale.c
==============================================================================
--- trunk/libc/locale/duplocale.c (original)
+++ trunk/libc/locale/duplocale.c Wed Apr  2 04:55:20 2008
@@ -1,5 +1,5 @@
 /* Duplicate handle for selection of locales.
-   Copyright (C) 1997, 2000, 2001, 2002, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1997,2000,2001,2002,2005,2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
 
@@ -27,7 +27,7 @@
 
 
 /* Lock for protecting global data.  */
-__libc_lock_define (extern , __libc_setlocale_lock attribute_hidden)
+__libc_rwlock_define (extern , __libc_setlocale_lock attribute_hidden)
 
 
 __locale_t
@@ -54,7 +54,7 @@
       char *namep = (char *) (result + 1);
 
       /* We modify global data (the usage counts).  */
-      __libc_lock_lock (__libc_setlocale_lock);
+      __libc_rwlock_wrlock (__libc_setlocale_lock);
 
       for (cnt = 0; cnt < __LC_LAST; ++cnt)
 	if (cnt != LC_ALL)
@@ -78,7 +78,7 @@
       result->__ctype_toupper = dataset->__ctype_toupper;
 
       /* It's done.  */
-      __libc_lock_unlock (__libc_setlocale_lock);
+      __libc_rwlock_unlock (__libc_setlocale_lock);
     }
 
   return result;

Modified: trunk/libc/locale/freelocale.c
==============================================================================
--- trunk/libc/locale/freelocale.c (original)
+++ trunk/libc/locale/freelocale.c Wed Apr  2 04:55:20 2008
@@ -1,5 +1,5 @@
 /* Free data allocated by a call to setlocale_r
-   Copyright (C) 1996, 1997, 2000, 2002, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1996,1997,2000,2002,2005,2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1996.
 
@@ -26,7 +26,7 @@
 
 
 /* Lock for protecting global data.  */
-__libc_lock_define (extern , __libc_setlocale_lock attribute_hidden)
+__libc_rwlock_define (extern , __libc_setlocale_lock attribute_hidden)
 
 
 void
@@ -39,7 +39,7 @@
     return;
 
   /* We modify global data (the usage counts).  */
-  __libc_lock_lock (__libc_setlocale_lock);
+  __libc_rwlock_wrlock (__libc_setlocale_lock);
 
   for (cnt = 0; cnt < __LC_LAST; ++cnt)
     if (cnt != LC_ALL && dataset->__locales[cnt]->usage_count != UNDELETABLE)
@@ -47,7 +47,7 @@
       _nl_remove_locale (cnt, dataset->__locales[cnt]);
 
   /* It's done.  */
-  __libc_lock_unlock (__libc_setlocale_lock);
+  __libc_rwlock_unlock (__libc_setlocale_lock);
 
   /* Free the locale_t handle itself.  */
   free (dataset);

Modified: trunk/libc/locale/newlocale.c
==============================================================================
--- trunk/libc/locale/newlocale.c (original)
+++ trunk/libc/locale/newlocale.c Wed Apr  2 04:55:20 2008
@@ -1,5 +1,5 @@
 /* Return a reference to locale information record.
-   Copyright (C) 1996, 1997, 1999, 2000-2002, 2004, 2005, 2006
+   Copyright (C) 1996, 1997, 1999, 2000-2002, 2004, 2005, 2006, 2008
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1996.
@@ -30,7 +30,7 @@
 
 
 /* Lock for protecting global data.  */
-__libc_lock_define (extern , __libc_setlocale_lock attribute_hidden)
+__libc_rwlock_define (extern , __libc_setlocale_lock attribute_hidden)
 
 
 /* Use this when we come along an error.  */
@@ -162,7 +162,7 @@
     }
 
   /* Protect global data.  */
-  __libc_lock_lock (__libc_setlocale_lock);
+  __libc_rwlock_wrlock (__libc_setlocale_lock);
 
   /* Now process all categories we are interested in.  */
   names_len = 0;
@@ -183,7 +183,7 @@
 		  _nl_remove_locale (cnt, result.__locales[cnt]);
 
               /* Critical section left.  */
-              __libc_lock_unlock (__libc_setlocale_lock);
+              __libc_rwlock_unlock (__libc_setlocale_lock);
 	      return NULL;
 	    }
 
@@ -263,7 +263,7 @@
     }
 
   /* Critical section left.  */
-  __libc_lock_unlock (__libc_setlocale_lock);
+  __libc_rwlock_unlock (__libc_setlocale_lock);
 
   /* Update the special members.  */
  update:

Modified: trunk/libc/locale/programs/ld-time.c
==============================================================================
--- trunk/libc/locale/programs/ld-time.c (original)
+++ trunk/libc/locale/programs/ld-time.c Wed Apr  2 04:55:20 2008
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2005, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2005, 2006, 2007, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxx>, 1995.
 
@@ -435,7 +435,7 @@
 			   && !__isleap (time->era_entries[idx].stop_date[0])))
 		      && !be_quiet)
 			  WITH_CUR_LOCALE (error (0, 0, _("\
-%s: stopping date is invalid in string %Zd in `era' field"),
+%s: invalid stopping date in string %Zd in `era' field"),
 						  "LC_TIME", idx + 1));
 		}
 	    }

Modified: trunk/libc/locale/programs/locfile.c
==============================================================================
--- trunk/libc/locale/programs/locfile.c (original)
+++ trunk/libc/locale/programs/locfile.c Wed Apr  2 04:55:20 2008
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2004, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2004, 2005, 2006, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxx>, 1996.
 
@@ -955,7 +955,7 @@
 
   now = lr_token (ldfile, charmap, result, NULL, verbose);
   if (now->tok != tok_string)
-    lr_error (ldfile, _("expect string argument for `copy'"));
+    lr_error (ldfile, _("expecting string argument for `copy'"));
   else if (!ignore_content)
     {
       if (now->val.str.startmb == NULL)

Modified: trunk/libc/locale/setlocale.c
==============================================================================
--- trunk/libc/locale/setlocale.c (original)
+++ trunk/libc/locale/setlocale.c Wed Apr  2 04:55:20 2008
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1995-2000, 2002, 2003, 2004, 2006
+/* Copyright (C) 1991, 1992, 1995-2000, 2002, 2003, 2004, 2006, 2008
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -93,7 +93,7 @@
 
 
 /* Lock for protecting global data.  */
-__libc_lock_define_initialized (, __libc_setlocale_lock attribute_hidden)
+__libc_rwlock_define_initialized (, __libc_setlocale_lock attribute_hidden)
 
 /* Defined in loadmsgcat.c.  */
 extern int _nl_msg_cat_cntr;
@@ -284,7 +284,7 @@
 	}
 
       /* Protect global data.  */
-      __libc_lock_lock (__libc_setlocale_lock);
+      __libc_rwlock_wrlock (__libc_setlocale_lock);
 
       /* Load the new data for each category.  */
       while (category-- > 0)
@@ -351,7 +351,7 @@
 	    free ((char *) newnames[category]);
 
       /* Critical section left.  */
-      __libc_lock_unlock (__libc_setlocale_lock);
+      __libc_rwlock_unlock (__libc_setlocale_lock);
 
       /* Free the resources (the locale path variable).  */
       free (locale_path);
@@ -364,7 +364,7 @@
       const char *newname[1] = { locale };
 
       /* Protect global data.  */
-      __libc_lock_lock (__libc_setlocale_lock);
+      __libc_rwlock_wrlock (__libc_setlocale_lock);
 
       if (CATEGORY_USED (category))
 	{
@@ -416,7 +416,7 @@
 	}
 
       /* Critical section left.  */
-      __libc_lock_unlock (__libc_setlocale_lock);
+      __libc_rwlock_unlock (__libc_setlocale_lock);
 
       /* Free the resources (the locale path variable.  */
       free (locale_path);

Modified: trunk/libc/localedata/ChangeLog
==============================================================================
--- trunk/libc/localedata/ChangeLog (original)
+++ trunk/libc/localedata/ChangeLog Wed Apr  2 04:55:20 2008
@@ -1,3 +1,12 @@
+2008-03-31  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* locales/iso14651_t1_common: Add support for Gujarati script.
+	Patch by Pravin Satpute <psatpute@xxxxxxxxxx>.
+
+2008-03-30  Jakub Jelinek  <jakub@xxxxxxxxxx>
+
+	* Makefile (LOCALES): Add ja_JP.UTF-8.
+
 2008-03-23  Ulrich Drepper  <drepper@xxxxxxxxxx>
 
 	* locales/iso14651_t1_common: Add support for Devanagari script.

Modified: trunk/libc/localedata/Makefile
==============================================================================
--- trunk/libc/localedata/Makefile (original)
+++ trunk/libc/localedata/Makefile Wed Apr  2 04:55:20 2008
@@ -148,7 +148,8 @@
 	   en_US.ISO-8859-1 ja_JP.EUC-JP da_DK.ISO-8859-1 \
 	   hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 ja_JP.SJIS fr_FR.ISO-8859-1 \
 	   vi_VN.TCVN5712-1 nb_NO.ISO-8859-1 nn_NO.ISO-8859-1 \
-	   tr_TR.UTF-8 cs_CZ.UTF-8 zh_TW.EUC-TW fa_IR.UTF-8 fr_FR.UTF-8
+	   tr_TR.UTF-8 cs_CZ.UTF-8 zh_TW.EUC-TW fa_IR.UTF-8 fr_FR.UTF-8 \
+	   ja_JP.UTF-8
 LOCALE_SRCS := $(shell echo "$(LOCALES)"|sed 's/\([^ .]*\)[^ ]*/\1/g')
 CHARMAPS := $(shell echo "$(LOCALES)" | \
 		    sed -e 's/[^ .]*[.]\([^ ]*\)/\1/g' -e s/SJIS/SHIFT_JIS/g)

Modified: trunk/libc/localedata/locales/iso14651_t1_common
==============================================================================
--- trunk/libc/localedata/locales/iso14651_t1_common (original)
+++ trunk/libc/localedata/locales/iso14651_t1_common Wed Apr  2 04:55:20 2008
@@ -61,6 +61,7 @@
 script <ARMENIAN>
 script <GEORGIAN>
 script <DEVANAGARI>
+script <GUJARATI>
 
 # Déclaration des symboles internes / Declaration of internal symbols
 #
@@ -560,6 +561,96 @@
 collating-symbol <dv-grave>
 collating-symbol <dv-acute>
 
+#<GUJARATI>
+#
+# Added Akhand Characters in sorting as per requirement of mr_IN
+# gvd- denotes vowel modifier
+# gm-  denotes matras
+# gvw- denotes vowels
+# <GNKT> denotes Nukta characters
+
+collating-element <gu-ksha> from "<U0A95><U0ACD><U0AB7>"
+collating-element <gu-dnya> from "<U0A9C><U0ACD><U0A9E>"
+collating-element <gu-shra> from "<U0AB6><U0ACD><U0AB0>"
+collating-element <gu-tra>  from "<U0AA4><U0ACD><U0AB0>"
+
+# defning symbols
+collating-symbol <GNKT>
+collating-symbol <gom> 
+collating-symbol <gvw-a> 
+collating-symbol <gvw-aa> 
+collating-symbol <gvw-i> 
+collating-symbol <gvw-ii> 
+collating-symbol <gvw-u> 
+collating-symbol <gvw-uu> 
+collating-symbol <gvw-vocalicr> 
+collating-symbol <gvw-vocalicrr> 
+collating-symbol <gvw-vocalicl> 
+collating-symbol <gvw-vocalicll> 
+collating-symbol <gvw-candrae> 
+collating-symbol <gvw-e> 
+collating-symbol <gvw-ai> 
+collating-symbol <gvw-candrao> 
+collating-symbol <gvw-o> 
+collating-symbol <gvw-au> 
+collating-symbol <g-ka> 
+collating-symbol <g-kha> 
+collating-symbol <g-ga> 
+collating-symbol <g-gha> 
+collating-symbol <g-nga> 
+collating-symbol <g-ca> 
+collating-symbol <g-cha> 
+collating-symbol <g-ja> 
+collating-symbol <g-jha> 
+collating-symbol <g-nya> 
+collating-symbol <g-tta> 
+collating-symbol <g-ttha> 
+collating-symbol <g-dda> 
+collating-symbol <g-ddha> 
+collating-symbol <g-nna> 
+collating-symbol <g-ta> 
+collating-symbol <g-tha> 
+collating-symbol <g-da> 
+collating-symbol <g-dha> 
+collating-symbol <g-na> 
+collating-symbol <g-pa> 
+collating-symbol <g-pha> 
+collating-symbol <g-ba> 
+collating-symbol <g-bha> 
+collating-symbol <g-ma> 
+collating-symbol <g-ya> 
+collating-symbol <g-ra> 
+collating-symbol <g-la> 
+collating-symbol <g-lla> 
+collating-symbol <g-va> 
+collating-symbol <g-sha> 
+collating-symbol <g-ssa> 
+collating-symbol <g-sa> 
+collating-symbol <g-ha> 
+collating-symbol <g-ksha>
+collating-symbol <g-dnya>
+collating-symbol <g-shra>
+collating-symbol <g-tra>
+collating-symbol <g-avagrah> 
+collating-symbol <gm-aa> 
+collating-symbol <gm-i> 
+collating-symbol <gm-ii> 
+collating-symbol <gm-u> 
+collating-symbol <gm-uu>
+collating-symbol <gm-vocalicr> 
+collating-symbol <gm-vocalicrr> 
+collating-symbol <gm-vocalicl> 
+collating-symbol <gm-vocalicll> 
+collating-symbol <gm-candrae> 
+collating-symbol <gm-e> 
+collating-symbol <gm-ai> 
+collating-symbol <gm-candrao> 
+collating-symbol <gm-o> 
+collating-symbol <gm-au> 
+collating-symbol <gvd-anuswara> 
+collating-symbol <gvd-chandrabindu>
+collating-symbol <gvd-visarg>
+collating-symbol <g-halant>
 
 # Ordre des symboles internes / Order of internal symbols
 #
@@ -1064,6 +1155,87 @@
 <dvd-chandrabindu>
 <dvd-visarg>
 <d_halant>
+#
+# <GUJARATI>
+#
+# collation weights in order
+
+<GNKT>
+<gom> 
+<gvw-a> 
+<gvw-aa> 
+<gvw-i> 
+<gvw-ii> 
+<gvw-u> 
+<gvw-uu> 
+<gvw-vocalicr> 
+<gvw-vocalicrr> 
+<gvw-vocalicl> 
+<gvw-vocalicll> 
+<gvw-candrae> 
+<gvw-e> 
+<gvw-ai> 
+<gvw-candrao> 
+<gvw-o> 
+<gvw-au> 
+<g-ka> 
+<g-kha> 
+<g-ga> 
+<g-gha> 
+<g-nga> 
+<g-ca> 
+<g-cha> 
+<g-ja> 
+<g-jha> 
+<g-nya> 
+<g-tta> 
+<g-ttha> 
+<g-dda>  
+<g-ddha> 
+<g-nna> 
+<g-ta> 
+<g-tha> 
+<g-da> 
+<g-dha> 
+<g-na> 
+<g-pa> 
+<g-pha> 
+<g-ba> 
+<g-bha> 
+<g-ma> 
+<g-ya> 
+<g-ra> 
+<g-la> 
+<g-lla> 
+<g-va> 
+<g-sha> 
+<g-ssa> 
+<g-sa> 
+<g-ha> 
+<g-ksha>
+<g-dnya>
+<g-shra>
+<g-tra>
+<g-avagrah> 
+<gm-aa> 
+<gm-i> 
+<gm-ii> 
+<gm-u> 
+<gm-uu>
+<gm-vocalicr> 
+<gm-vocalicrr> 
+<gm-vocalicl> 
+<gm-vocalicll> 
+<gm-candrae> 
+<gm-e> 
+<gm-ai> 
+<gm-candrao> 
+<gm-o> 
+<gm-au> 
+<gvd-anuswara>
+<gvd-chandrabindu>
+<gvd-visarg>
+<g-halant>
 
 order_start <SPECIAL>;forward;backward;forward;forward,position
 #
@@ -2941,6 +3113,94 @@
 <U0953> IGNORE;<dv-grave>;<MIN>;IGNORE
 <U0954> IGNORE;<dv-acute>;<MIN>;IGNORE
 
+order_start  <GUJARATI>;forward;forward;forward;forward,position
+<U0AE6> <0>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0AE7> <1>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0AE8> <2>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0AE9> <3>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0AEA> <4>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0AEB> <5>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0AEC> <6>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0AED> <7>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0AEE> <8>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0AEF> <9>;"<BAS><NUM>";"<MIN><MIN>";IGNORE
+<U0AD0> <gom> ;<BAS>;<MIN>;IGNORE 
+<U0A85> <gvw-a> ;<BAS>;<MIN>;IGNORE
+<U0A86> <gvw-aa> ;<BAS>;<MIN>;IGNORE
+<U0A87> <gvw-i> ;<BAS>;<MIN>;IGNORE
+<U0A88> <gvw-ii> ;<BAS>;<MIN>;IGNORE
+<U0A89> <gvw-u> ;<BAS>;<MIN>;IGNORE
+<U0A8A> <gvw-uu>;<BAS>;<MIN>;IGNORE 
+<U0A8B> <gvw-vocalicr>;<BAS>;<MIN>;IGNORE 
+<U0AE0> <gvw-vocalicrr>;<BAS>;<MIN>;IGNORE 
+<U0A8C> <gvw-vocalicl>;<BAS>;<MIN>;IGNORE 
+<U0AE1> <gvw-vocalicll>;<BAS>;<MIN>;IGNORE 
+<U0A8D> <gvw-candrae>;<BAS>;<MIN>;IGNORE 
+<U0A8F> <gvw-e>;<BAS>;<MIN>;IGNORE 
+<U0A90> <gvw-ai>;<BAS>;<MIN>;IGNORE 
+<U0A91> <gvw-candrao>;<BAS>;<MIN>;IGNORE 
+<U0A93> <gvw-o>;<BAS>;<MIN>;IGNORE 
+<U0A94> <gvw-au>;<BAS>;<MIN>;IGNORE
+<U0A95> <g-ka>;<BAS>;<MIN>;IGNORE 
+<U0A96> <g-kha>;<BAS>;<MIN>;IGNORE 
+<U0A97> <g-ga>;<BAS>;<MIN>;IGNORE 
+<U0A98> <g-gha>;<BAS>;<MIN>;IGNORE
+<U0A99> <g-nga>;<BAS>;<MIN>;IGNORE 
+<U0A9A> <g-ca>;<BAS>;<MIN>;IGNORE 
+<U0A9B> <g-cha>;<BAS>;<MIN>;IGNORE 
+<U0A9C> <g-ja>;<BAS>;<MIN>;IGNORE 
+<U0A9D> <g-jha>;<BAS>;<MIN>;IGNORE 
+<U0A9E> <g-nya>;<BAS>;<MIN>;IGNORE 
+<U0A9F> <g-tta>;<BAS>;<MIN>;IGNORE 
+<U0AA0> <g-ttha>;<BAS>;<MIN>;IGNORE 
+<U0AA1> <g-dda>;<BAS>;<MIN>;IGNORE 
+<U0AA2> <g-ddha>;<BAS>;<MIN>;IGNORE 
+<U0AA3> <g-nna>;<BAS>;<MIN>;IGNORE 
+<U0AA4> <g-ta>;<BAS>;<MIN>;IGNORE 
+<U0AA5> <g-tha>;<BAS>;<MIN>;IGNORE 
+<U0AA6> <g-da>;<BAS>;<MIN>;IGNORE 
+<U0AA7> <g-dha>;<BAS>;<MIN>;IGNORE 
+<U0AA8> <g-na>;<BAS>;<MIN>;IGNORE 
+<U0AAA> <g-pa>;<BAS>;<MIN>;IGNORE 
+<U0AAB> <g-pha>;<BAS>;<MIN>;IGNORE 
+<U0AAC> <g-ba>;<BAS>;<MIN>;IGNORE 
+<U0AAD> <g-bha>;<BAS>;<MIN>;IGNORE 
+<U0AAE> <g-ma>;<BAS>;<MIN>;IGNORE 
+<U0AAF> <g-ya>;<BAS>;<MIN>;IGNORE 
+<U0AB0> <g-ra>;<BAS>;<MIN>;IGNORE 
+<U0AB2> <g-la>;<BAS>;<MIN>;IGNORE 
+<U0AB3> <g-lla>;<BAS>;<MIN>;IGNORE 
+<U0AB5> <g-va>;<BAS>;<MIN>;IGNORE 
+<U0AB6> <g-sha>;<BAS>;<MIN>;IGNORE 
+<U0AB7> <g-ssa>;<BAS>;<MIN>;IGNORE 
+<U0AB8> <g-sa>;<BAS>;<MIN>;IGNORE 
+<U0AB9>   <g-ha>;<BAS>;<MIN>;IGNORE 
+<gu-ksha> <g-ksha>;<BAS>;<MIN>;IGNORE 
+<gu-dnya> <g-dnya>;<BAS>;<MIN>;IGNORE 
+<gu-shra> <g-shra>;<BAS>;<MIN>;IGNORE
+<gu-tra> <g-tra>;<BAS>;<MIN>;IGNORE
+<U0ABD> <g-avagrah>;<BAS>;<MIN>;IGNORE 
+<U0ABE> <gm-aa>;<BAS>;<MIN>;IGNORE 
+<U0ABF> <gm-i>;<BAS>;<MIN>;IGNORE 
+<U0AC0> <gm-ii>;<BAS>;<MIN>;IGNORE 
+<U0AC1> <gm-u>;<BAS>;<MIN>;IGNORE 
+<U0AC2> <gm-uu>;<BAS>;<MIN>;IGNORE
+<U0AC3> <gm-vocalicr>;<BAS>;<MIN>;IGNORE 
+<U0AC4> <gm-vocalicrr>;<BAS>;<MIN>;IGNORE 
+<U0AE2> <gm-vocalicl>;<BAS>;<MIN>;IGNORE 
+<U0AE3> <gm-vocalicll>;<BAS>;<MIN>;IGNORE 
+<U0AC5> <gm-candrae>;<BAS>;<MIN>;IGNORE 
+<U0AC7> <gm-e>;<BAS>;<MIN>;IGNORE 
+<U0AC8> <gm-ai>;<BAS>;<MIN>;IGNORE 
+<U0AC9> <gm-candrao>;<BAS>;<MIN>;IGNORE 
+<U0ACB> <gm-o>;<BAS>;<MIN>;IGNORE 
+<U0ACC> <gm-au>;<BAS>;<MIN>;IGNORE 
+<U0A82> <gvd-anuswara>;<BAS>;<MIN>;IGNORE
+<U0A81> <gvd-chandrabindu>;<BAS>;<MIN>;IGNORE
+<U0A83> <gvd-visarg>;<BAS>;<MIN>;IGNORE
+<U0ACD> <g-halant>;<BAS>;<MIN>;IGNORE
+<U0ABC> IGNORE;<GNKT>;<MIN>;IGNORE
+
 order_end
 
 END LC_COLLATE

Modified: trunk/libc/nptl/ChangeLog
==============================================================================
--- trunk/libc/nptl/ChangeLog (original)
+++ trunk/libc/nptl/ChangeLog Wed Apr  2 04:55:20 2008
@@ -1,3 +1,12 @@
+2008-03-27  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/bits/local_lim.h: Undefined ARG_MAX if
+	<linux/limits.h> has defined it.
+	* sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: Likewise.
+	* sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: Likewise.
+
 2008-03-18  Jakub Jelinek  <jakub@xxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/ia64/dl-sysdep.h: Use __ASSEMBLER__ instead

Modified: trunk/libc/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h
==============================================================================
--- trunk/libc/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h (original)
+++ trunk/libc/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h Wed Apr  2 04:55:20 2008
@@ -1,5 +1,5 @@
 /* Minimum guaranteed maximum values for system limits.  Linux/Alpha version.
-   Copyright (C) 1993-1998,2000,2002,2003,2004 Free Software Foundation, Inc.
+   Copyright (C) 1993-1998,2000,2002-2004,2008 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
@@ -31,6 +31,9 @@
 #ifndef OPEN_MAX
 # define __undef_OPEN_MAX
 #endif
+#ifndef ARG_MAX
+# define __undef_ARG_MAX
+#endif
 
 /* The kernel sources contain a file with all the needed information.  */
 #include <linux/limits.h>
@@ -49,6 +52,11 @@
 #ifdef __undef_OPEN_MAX
 # undef OPEN_MAX
 # undef __undef_OPEN_MAX
+#endif
+/* Have to remove ARG_MAX?  */
+#ifdef __undef_ARG_MAX
+# undef ARG_MAX
+# undef __undef_ARG_MAX
 #endif
 
 /* The number of data keys per process.  */

Modified: trunk/libc/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h
==============================================================================
--- trunk/libc/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h (original)
+++ trunk/libc/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h Wed Apr  2 04:55:20 2008
@@ -1,5 +1,5 @@
 /* Minimum guaranteed maximum values for system limits.  Linux version.
-   Copyright (C) 1993-1998,2000,2002,2003,2004 Free Software Foundation, Inc.
+   Copyright (C) 1993-1998,2000,2002-2004,2008 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
@@ -31,6 +31,9 @@
 #ifndef OPEN_MAX
 # define __undef_OPEN_MAX
 #endif
+#ifndef ARG_MAX
+# define __undef_ARG_MAX
+#endif
 
 /* The kernel sources contain a file with all the needed information.  */
 #include <linux/limits.h>
@@ -49,6 +52,11 @@
 #ifdef __undef_OPEN_MAX
 # undef OPEN_MAX
 # undef __undef_OPEN_MAX
+#endif
+/* Have to remove ARG_MAX?  */
+#ifdef __undef_ARG_MAX
+# undef ARG_MAX
+# undef __undef_ARG_MAX
 #endif
 
 /* The number of data keys per process.  */

Modified: trunk/libc/nptl/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h
==============================================================================
--- trunk/libc/nptl/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h (original)
+++ trunk/libc/nptl/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h Wed Apr  2 04:55:20 2008
@@ -1,5 +1,5 @@
 /* Minimum guaranteed maximum values for system limits.  Linux/IA-64 version.
-   Copyright (C) 1993-1998,2000,2002,2003,2004 Free Software Foundation, Inc.
+   Copyright (C) 1993-1998,2000,2002-2004,2008 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
@@ -31,6 +31,9 @@
 #ifndef OPEN_MAX
 # define __undef_OPEN_MAX
 #endif
+#ifndef ARG_MAX
+# define __undef_ARG_MAX
+#endif
 
 /* The kernel sources contain a file with all the needed information.  */
 #include <linux/limits.h>
@@ -49,6 +52,11 @@
 #ifdef __undef_OPEN_MAX
 # undef OPEN_MAX
 # undef __undef_OPEN_MAX
+#endif
+/* Have to remove ARG_MAX?  */
+#ifdef __undef_ARG_MAX
+# undef ARG_MAX
+# undef __undef_ARG_MAX
 #endif
 
 /* The number of data keys per process.  */

Modified: trunk/libc/nptl/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h
==============================================================================
--- trunk/libc/nptl/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h (original)
+++ trunk/libc/nptl/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h Wed Apr  2 04:55:20 2008
@@ -1,5 +1,6 @@
 /* Minimum guaranteed maximum values for system limits.  Linux/PPC version.
-   Copyright (C) 1993-1998,2000,2002-2004,2006 Free Software Foundation, Inc.
+   Copyright (C) 1993-1998,2000,2002-2004,2006,2008
+   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
@@ -31,6 +32,9 @@
 #ifndef OPEN_MAX
 # define __undef_OPEN_MAX
 #endif
+#ifndef ARG_MAX
+# define __undef_ARG_MAX
+#endif
 
 /* The kernel sources contain a file with all the needed information.  */
 #include <linux/limits.h>
@@ -49,6 +53,11 @@
 #ifdef __undef_OPEN_MAX
 # undef OPEN_MAX
 # undef __undef_OPEN_MAX
+#endif
+/* Have to remove ARG_MAX?  */
+#ifdef __undef_ARG_MAX
+# undef ARG_MAX
+# undef __undef_ARG_MAX
 #endif
 
 /* The number of data keys per process.  */

Modified: trunk/libc/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h
==============================================================================
--- trunk/libc/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h (original)
+++ trunk/libc/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h Wed Apr  2 04:55:20 2008
@@ -1,5 +1,5 @@
 /* Minimum guaranteed maximum values for system limits.  Linux/SPARC version.
-   Copyright (C) 1993-1998,2000,2002,2003,2004 Free Software Foundation, Inc.
+   Copyright (C) 1993-1998,2000,2002-2004,2008 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
@@ -31,6 +31,9 @@
 #ifndef OPEN_MAX
 # define __undef_OPEN_MAX
 #endif
+#ifndef ARG_MAX
+# define __undef_ARG_MAX
+#endif
 
 /* The kernel sources contain a file with all the needed information.  */
 #include <linux/limits.h>
@@ -49,6 +52,11 @@
 #ifdef __undef_OPEN_MAX
 # undef OPEN_MAX
 # undef __undef_OPEN_MAX
+#endif
+/* Have to remove ARG_MAX?  */
+#ifdef __undef_ARG_MAX
+# undef ARG_MAX
+# undef __undef_ARG_MAX
 #endif
 
 /* The number of data keys per process.  */

Modified: trunk/libc/nscd/nscd.c
==============================================================================
--- trunk/libc/nscd/nscd.c (original)
+++ trunk/libc/nscd/nscd.c Wed Apr  2 04:55:20 2008
@@ -100,7 +100,7 @@
     N_("Do not fork and display messages on the current tty") },
   { "nthreads", 't', N_("NUMBER"), 0, N_("Start NUMBER threads") },
   { "shutdown", 'K', NULL, 0, N_("Shut the server down") },
-  { "statistic", 'g', NULL, 0, N_("Print current configuration statistic") },
+  { "statistics", 'g', NULL, 0, N_("Print current configuration statistics") },
   { "invalidate", 'i', N_("TABLE"), 0,
     N_("Invalidate the specified cache") },
   { "secure", 'S', N_("TABLE,yes"), OPTION_HIDDEN,

Modified: trunk/libc/po/nl.po
==============================================================================
--- trunk/libc/po/nl.po (original)
+++ trunk/libc/po/nl.po Wed Apr  2 04:55:20 2008
@@ -8,7 +8,7 @@
 "Project-Id-Version: libc-2.7\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2007-10-15 21:18-0700\n"
-"PO-Revision-Date: 2007-11-14 21:31+0100\n"
+"PO-Revision-Date: 2008-03-30 20:00+0200\n"
 "Last-Translator: Benno Schulenberg <benno@xxxxxxxxxxx>\n"
 "Language-Team: Dutch <vertaling@xxxxxxxxxxxxxxx>\n"
 "MIME-Version: 1.0\n"
@@ -1459,7 +1459,7 @@
 msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
 msgstr ""
 "tekenskaart '%s' is niet ASCII-compatibel;\n"
-"de locale voldoet niet aan ISO C\n"
+"de taalregio voldoet niet aan ISO C\n"
 
 #: locale/programs/charmap.c:337
 #, c-format
@@ -2176,7 +2176,7 @@
 #: locale/programs/ld-ctype.c:3780
 #, c-format
 msgid "%s: transliteration data from locale `%s' not available"
-msgstr "%s: transliteratiegegevens van locale '%s' zijn niet beschikbaar"
+msgstr "%s: transliteratiegegevens van taalregio '%s' zijn niet beschikbaar"
 
 #: locale/programs/ld-ctype.c:3881
 #, c-format
@@ -2393,11 +2393,11 @@
 
 #: locale/programs/locale.c:76
 msgid "Write names of available locales"
-msgstr "namen van beschikbare locales tonen"
+msgstr "namen van de beschikbare taalregio's tonen"
 
 #: locale/programs/locale.c:78
 msgid "Write names of available charmaps"
-msgstr "namen van beschikbare tekenskaarten tonen"
+msgstr "namen van de beschikbare tekenskaarten tonen"
 
 #: locale/programs/locale.c:79
 msgid "Modify output format:"
@@ -2405,15 +2405,15 @@
 
 #: locale/programs/locale.c:80
 msgid "Write names of selected categories"
-msgstr "namen van geselecteerde categorieën tonen"
+msgstr "namen van de geselecteerde categorieën tonen"
 
 #: locale/programs/locale.c:81
 msgid "Write names of selected keywords"
-msgstr "namen van geselecteerde sleutelwoorden tonen"
+msgstr "namen van de geselecteerde sleutelwoorden tonen"
 
 #: locale/programs/locale.c:82
 msgid "Print more information"
-msgstr "breedsprakige uitvoer"
+msgstr "uitgebreide uitvoer produceren"
 
 #: locale/programs/locale.c:87
 msgid ""
@@ -2421,7 +2421,7 @@
 "<http://www.gnu.org/software/libc/bugs.html>.\n"
 msgstr ""
 "  \n"
-"Informatie over locales weergeven.\vVoor het rapporteren van fouten, zie:\n"
+"Informatie over taalregio-instellingen weergeven.\vVoor het rapporteren van fouten, zie:\n"
 "  <http://www.gnu.org/software/libc/bugs.html>.\n"
 
 #: locale/programs/locale.c:92
@@ -2435,22 +2435,22 @@
 #: locale/programs/locale.c:193
 #, c-format
 msgid "Cannot set LC_CTYPE to default locale"
-msgstr "Kan LC_TYPE niet op de standaard-locale instellen"
+msgstr "Kan LC_TYPE niet op de standaard-taalregio instellen"
 
 #: locale/programs/locale.c:195
 #, c-format
 msgid "Cannot set LC_MESSAGES to default locale"
-msgstr "Kan LC_MESSAGES niet op de standaard-locale instellen"
+msgstr "Kan LC_MESSAGES niet op de standaard-taalregio instellen"
 
 #: locale/programs/locale.c:208
 #, c-format
 msgid "Cannot set LC_COLLATE to default locale"
-msgstr "Kan LC_COLLATE niet op de standaard-locale instellen"
+msgstr "Kan LC_COLLATE niet op de standaard-taalregio instellen"
 
 #: locale/programs/locale.c:224
 #, c-format
 msgid "Cannot set LC_ALL to default locale"
-msgstr "Kan LC_ALL niet op de standaard-locale instellen"
+msgstr "Kan LC_ALL niet op de standaard-taalregio instellen"
 
 #: locale/programs/locale.c:500
 #, c-format
@@ -2507,7 +2507,7 @@
 
 #: locale/programs/localedef.c:140
 msgid "Add locales named by parameters to archive"
-msgstr "genoemde locales aan archief toevoegen"
+msgstr "genoemde taalregio's aan archief toevoegen"
 
 #: locale/programs/localedef.c:141
 msgid "Replace existing archive content"
@@ -2515,7 +2515,7 @@
 
 #: locale/programs/localedef.c:143
 msgid "Remove locales named by parameters from archive"
-msgstr "genoemde locales uit archief verwijderen"
+msgstr "genoemde taalregio's uit archief verwijderen"
 
 #: locale/programs/localedef.c:144
 msgid "List content of archive"
@@ -2523,13 +2523,13 @@
 
 #: locale/programs/localedef.c:146
 msgid "locale.alias file to consult when making archive"
-msgstr "te raadplegen aliassenbestand"
+msgstr "te raadplegen aliassenbestand tijdens archivering"
 
 #: locale/programs/localedef.c:151
 msgid "Compile locale specification"
 msgstr ""
 "  \n"
-"Een locale-specificatie compileren."
+"De definitie van een taalregio compileren."
 
 #: locale/programs/localedef.c:154
 msgid ""
@@ -2555,7 +2555,7 @@
 #: locale/programs/localedef.c:599 locale/programs/localedef.c:619
 #, c-format
 msgid "cannot open locale definition file `%s'"
-msgstr "kan locale-definitiebestand '%s' niet openen"
+msgstr "kan taalregiodefinitiebestand '%s' niet openen"
 
 #: locale/programs/localedef.c:285
 #, c-format
@@ -2570,21 +2570,21 @@
 "                       locale path    : %s\n"
 "%s"
 msgstr ""
-"Systeemmap voor tekenskaarten      : %s\n"
-"                repertoire-kaarten : %s\n"
-"                locale-pad         : %s\n"
+"Systeemmap voor tekenskaarten: %s\n"
+"       voor repertoirekaarten: %s\n"
+"       en het taalregiopad is: %s\n"
 "\n"
 "%s"
 
 #: locale/programs/localedef.c:567
 #, c-format
 msgid "circular dependencies between locale definitions"
-msgstr "circulaire afhankelijkheid tussen locale-definities"
+msgstr "circulaire afhankelijkheid tussen taalregiodefinities"
 
 #: locale/programs/localedef.c:573
 #, c-format
 msgid "cannot add already read locale `%s' a second time"
-msgstr "kan de reeds gelezen locale '%s' niet nogmaals toevoegen"
+msgstr "kan de reeds gelezen taalregio '%s' niet nogmaals toevoegen"
 
 #: locale/programs/locarchive.c:88 locale/programs/locarchive.c:261
 #, c-format
@@ -2610,17 +2610,17 @@
 #: locale/programs/locarchive.c:156
 #, c-format
 msgid "failed to create new locale archive"
-msgstr "aanmaken van een nieuw locale-archief is mislukt"
+msgstr "aanmaken van een nieuw taalregio-archief is mislukt"
 
 #: locale/programs/locarchive.c:168
 #, c-format
 msgid "cannot change mode of new locale archive"
-msgstr "kan modus van het nieuwe locale-archief niet wijzigen"
+msgstr "kan modus van het nieuwe taalregio-archief niet wijzigen"
 
 #: locale/programs/locarchive.c:255
 #, c-format
 msgid "cannot map locale archive file"
-msgstr "kan locale-archief niet in het geheugen plaatsen"
+msgstr "kan taalregio-archief niet in het geheugen plaatsen"
 
 #: locale/programs/locarchive.c:331
 #, c-format
@@ -2630,12 +2630,12 @@
 #: locale/programs/locarchive.c:396
 #, c-format
 msgid "cannot extend locale archive file"
-msgstr "kan locale-archiefbestand niet uitbreiden"
+msgstr "kan taalregio-archiefbestand niet uitbreiden"
 
 #: locale/programs/locarchive.c:405
 #, c-format
 msgid "cannot change mode of resized locale archive"
-msgstr "kan modus van aangepast locale-archief niet wijzigen"
+msgstr "kan modus van aangepast taalregio-archief niet wijzigen"
 
 #: locale/programs/locarchive.c:413
 #, c-format
@@ -2645,17 +2645,17 @@
 #: locale/programs/locarchive.c:466
 #, c-format
 msgid "cannot open locale archive \"%s\""
-msgstr "kan locale-archief '%s' niet openen"
+msgstr "kan taalregio-archief '%s' niet openen"
 
 #: locale/programs/locarchive.c:471
 #, c-format
 msgid "cannot stat locale archive \"%s\""
-msgstr "kan status van locale-archief '%s' niet opvragen"
+msgstr "kan status van taalregio-archief '%s' niet opvragen"
 
 #: locale/programs/locarchive.c:490
 #, c-format
 msgid "cannot lock locale archive \"%s\""
-msgstr "kan locale-archief '%s' niet vergrendelen"
+msgstr "kan taalregio-archief '%s' niet vergrendelen"
 
 #: locale/programs/locarchive.c:513
 #, c-format
@@ -2665,19 +2665,19 @@
 #: locale/programs/locarchive.c:573
 #, c-format
 msgid "locale '%s' already exists"
-msgstr "locale '%s' bestaat al"
+msgstr "taalregio '%s' bestaat al"
 
 #: locale/programs/locarchive.c:804 locale/programs/locarchive.c:819
 #: locale/programs/locarchive.c:831 locale/programs/locarchive.c:843
 #: locale/programs/locfile.c:344
 #, c-format
 msgid "cannot add to locale archive"
-msgstr "kan niet aan locale-archief toevoegen"
+msgstr "kan niet aan taalregio-archief toevoegen"
 
 #: locale/programs/locarchive.c:998
 #, c-format
 msgid "locale alias file `%s' not found"
-msgstr "kan locale-aliassenbestand '%s' niet vinden"
+msgstr "kan taalregio-aliassenbestand '%s' niet vinden"
 
 #: locale/programs/locarchive.c:1142
 #, c-format
@@ -2702,7 +2702,7 @@
 #: locale/programs/locarchive.c:1233
 #, c-format
 msgid "incomplete set of locale files in \"%s\""
-msgstr "onvolledige verzameling van locale-bestanden in '%s'"
+msgstr "onvolledige verzameling van taalregiobestanden in '%s'"
 
 #: locale/programs/locarchive.c:1297
 #, c-format
@@ -2712,7 +2712,7 @@
 #: locale/programs/locarchive.c:1367
 #, c-format
 msgid "locale \"%s\" not in archive"
-msgstr "locale '%s' zit niet in archief"
+msgstr "taalregio '%s' zit niet in het archief"
 
 #: locale/programs/locfile.c:132
 #, c-format
@@ -2721,7 +2721,7 @@
 
 #: locale/programs/locfile.c:252
 msgid "syntax error: not inside a locale definition section"
-msgstr "syntaxfout: niet binnen een locale-definitie-sectie"
+msgstr "syntaxfout: niet binnen een taalregiodefinitie-sectie"
 
 #: locale/programs/locfile.c:626
 #, c-format
@@ -2744,7 +2744,7 @@
 
 #: locale/programs/locfile.c:786
 msgid "locale name should consist only of portable characters"
-msgstr "een locale-naam mag alleen uit overdraagbare tekens bestaan"
+msgstr "een taalregionaam mag alleen uit overdraagbare tekens bestaan"
 
 #: locale/programs/locfile.c:805
 msgid "no other keyword shall be specified when `copy' is used"
@@ -4356,59 +4356,59 @@
 
 #: posix/getopt.c:571 posix/getopt.c:587
 #, c-format
-msgid "%s: option '%s' is ambiguous\n"
+msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: optie '%s' is niet eenduidig\n"
 
 #: posix/getopt.c:620 posix/getopt.c:624
 #, c-format
-msgid "%s: option '--%s' doesn't allow an argument\n"
+msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: optie '--%s' staat geen argument toe\n"
 
 #: posix/getopt.c:633 posix/getopt.c:638
 #, c-format
-msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: optie '%c%s' staat geen argument toe\n"
 
 #: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
 #: posix/getopt.c:1035
 #, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: optie '%s' vereist een argument\n"
 
 #: posix/getopt.c:738 posix/getopt.c:741
 #, c-format
-msgid "%s: unrecognized option '--%s'\n"
+msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: onbekende optie '--%s'\n"
 
 #: posix/getopt.c:749 posix/getopt.c:752
 #, c-format
-msgid "%s: unrecognized option '%c%s'\n"
+msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: onbekende optie '%c%s'\n"
 
 #: posix/getopt.c:804 posix/getopt.c:807
 #, c-format
-msgid "%s: illegal option -- '%c'\n"
+msgid "%s: illegal option -- %c\n"
 msgstr "%s: ongeldige optie -- %c\n"
 
 #: posix/getopt.c:813 posix/getopt.c:816
 #, c-format
-msgid "%s: invalid option -- '%c'\n"
+msgid "%s: invalid option -- %c\n"
 msgstr "%s: ongeldige optie -- %c\n"
 
 #: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
 #: posix/getopt.c:1106
 #, c-format
-msgid "%s: option requires an argument -- '%c'\n"
+msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: optie vereist een argument -- %c\n"
 
 #: posix/getopt.c:937 posix/getopt.c:953
 #, c-format
-msgid "%s: option '-W %s' is ambiguous\n"
+msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: optie '-W %s' is niet eenduidig\n"
 
 #: posix/getopt.c:977 posix/getopt.c:995
 #, c-format
-msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: optie '-W %s' staat geen argument toe\n"
 
 #: posix/regcomp.c:135
@@ -5345,7 +5345,7 @@
 #. TRANS A file that isn't a directory was specified when a directory is required.
 #: sysdeps/gnu/errlist.c:229
 msgid "Not a directory"
-msgstr "Niet een map"
+msgstr "Is geen map"
 
 #. TRANS File is a directory; you cannot open a directory for writing,
 #. TRANS or create or remove hard links to it.

Modified: trunk/libc/posix/getopt.c
==============================================================================
--- trunk/libc/posix/getopt.c (original)
+++ trunk/libc/posix/getopt.c Wed Apr  2 04:55:20 2008
@@ -792,30 +792,16 @@
 	if (print_errors)
 	  {
 #if defined _LIBC && defined USE_IN_LIBIO
-	      char *buf;
-	      int n;
-#endif
-
-	    if (d->__posixly_correct)
-	      {
-#if defined _LIBC && defined USE_IN_LIBIO
-		n = __asprintf (&buf, _("%s: illegal option -- '%c'\n"),
-				argv[0], c);
-#else
-		fprintf (stderr, _("%s: illegal option -- '%c'\n"), argv[0],
-			 c);
-#endif
-	      }
-	    else
-	      {
-#if defined _LIBC && defined USE_IN_LIBIO
-		n = __asprintf (&buf, _("%s: invalid option -- '%c'\n"),
-				argv[0], c);
-#else
-		fprintf (stderr, _("%s: invalid option -- '%c'\n"), argv[0],
-			 c);
-#endif
-	      }
+	    char *buf;
+	    int n;
+#endif
+
+#if defined _LIBC && defined USE_IN_LIBIO
+	    n = __asprintf (&buf, _("%s: invalid option -- '%c'\n"),
+			    argv[0], c);
+#else
+	    fprintf (stderr, _("%s: invalid option -- '%c'\n"), argv[0], c);
+#endif
 
 #if defined _LIBC && defined USE_IN_LIBIO
 	    if (n >= 0)

Modified: trunk/libc/stdio-common/vfprintf.c
==============================================================================
--- trunk/libc/stdio-common/vfprintf.c (original)
+++ trunk/libc/stdio-common/vfprintf.c Wed Apr  2 04:55:20 2008
@@ -1534,7 +1534,8 @@
       if (prec > width
 	  && prec + 32 > (int)(sizeof (work_buffer) / sizeof (work_buffer[0])))
 	{
-	  if (__builtin_expect (prec > ~((size_t) 0) - 31, 0))
+	  if (__builtin_expect (prec > ~((size_t) 0) / sizeof (CHAR_T) - 31,
+				0))
 	    {
 	      done = -1;
 	      goto all_done;

Modified: trunk/libc/stdlib/strtod_l.c
==============================================================================
--- trunk/libc/stdlib/strtod_l.c (original)
+++ trunk/libc/stdlib/strtod_l.c Wed Apr  2 04:55:20 2008
@@ -1041,7 +1041,7 @@
   if (__builtin_expect (exponent < MIN_10_EXP - (DIG + 1), 0))
     {
       __set_errno (ERANGE);
-      return 0.0;
+      return negative ? -0.0 : 0.0;
     }
 
   if (int_no > 0)

Modified: trunk/libc/string/strfry.c
==============================================================================
--- trunk/libc/string/strfry.c (original)
+++ trunk/libc/string/strfry.c Wed Apr  2 04:55:20 2008
@@ -26,7 +26,6 @@
 {
   static int init;
   static struct random_data rdata;
-  size_t len, i;
 
   if (!init)
     {
@@ -37,17 +36,18 @@
       init = 1;
     }
 
-  len = strlen (string) - 1;
-  for (i = 0; i < len; ++i)
-    {
-      int32_t j;
-      __random_r (&rdata, &j);
-      j = j % (len - i) + i;
+  size_t len = strlen (string);
+  if (len > 0)
+    for (size_t i = 0; i < len - 1; ++i)
+      {
+	int32_t j;
+	__random_r (&rdata, &j);
+	j = j % (len - i) + i;
 
-      char c = string[i];
-      string[i] = string[j];
-      string[j] = c;
-    }
+	char c = string[i];
+	string[i] = string[j];
+	string[j] = c;
+      }
 
   return string;
 }

Modified: trunk/libc/sunrpc/auth_unix.c
==============================================================================
--- trunk/libc/sunrpc/auth_unix.c (original)
+++ trunk/libc/sunrpc/auth_unix.c Wed Apr  2 04:55:20 2008
@@ -111,7 +111,7 @@
   if (auth == NULL || au == NULL)
     {
 no_memory:
-      (void) __fxprintf (NULL, "%s", _("authunix_create: out of memory\n"));
+      (void) __fxprintf (NULL, "%s: %s", __func__, _("out of memory\n"));
       mem_free (auth, sizeof (*auth));
       mem_free (au, sizeof (*au));
       return NULL;

Modified: trunk/libc/sunrpc/clnt_tcp.c
==============================================================================
--- trunk/libc/sunrpc/clnt_tcp.c (original)
+++ trunk/libc/sunrpc/clnt_tcp.c Wed Apr  2 04:55:20 2008
@@ -128,7 +128,7 @@
   if (h == NULL || ct == NULL)
     {
       struct rpc_createerr *ce = &get_rpc_createerr ();
-      (void) __fxprintf (NULL, "%s", _("clnttcp_create: out of memory\n"));
+      (void) __fxprintf (NULL, "%s: %s", __func__, _("out of memory\n"));
       ce->cf_stat = RPC_SYSTEMERROR;
       ce->cf_error.re_errno = ENOMEM;
       goto fooy;

Modified: trunk/libc/sunrpc/clnt_udp.c
==============================================================================
--- trunk/libc/sunrpc/clnt_udp.c (original)
+++ trunk/libc/sunrpc/clnt_udp.c Wed Apr  2 04:55:20 2008
@@ -136,7 +136,8 @@
   if (cl == NULL || cu == NULL)
     {
       struct rpc_createerr *ce = &get_rpc_createerr ();
-      (void) __fxprintf (NULL, "%s", _("clntudp_create: out of memory\n"));
+      (void) __fxprintf (NULL, "%s: %s",
+			 "clntudp_create", _("out of memory\n"));
       ce->cf_stat = RPC_SYSTEMERROR;
       ce->cf_error.re_errno = ENOMEM;
       goto fooy;

Modified: trunk/libc/sunrpc/clnt_unix.c
==============================================================================
--- trunk/libc/sunrpc/clnt_unix.c (original)
+++ trunk/libc/sunrpc/clnt_unix.c Wed Apr  2 04:55:20 2008
@@ -125,7 +125,7 @@
   if (h == NULL || ct == NULL)
     {
       struct rpc_createerr *ce = &get_rpc_createerr ();
-      (void) __fxprintf (NULL, "%s", _("clntunix_create: out of memory\n"));
+      (void) __fxprintf (NULL, "%s: %s", __func__, _("out of memory\n"));
       ce->cf_stat = RPC_SYSTEMERROR;
       ce->cf_error.re_errno = ENOMEM;
       goto fooy;

Modified: trunk/libc/sunrpc/svc_tcp.c
==============================================================================
--- trunk/libc/sunrpc/svc_tcp.c (original)
+++ trunk/libc/sunrpc/svc_tcp.c Wed Apr  2 04:55:20 2008
@@ -176,7 +176,7 @@
   xprt = (SVCXPRT *) mem_alloc (sizeof (SVCXPRT));
   if (r == NULL || xprt == NULL)
     {
-      (void) __fxprintf (NULL, "%s", _("svctcp_create: out of memory\n"));
+      (void) __fxprintf (NULL, "%s: %s", __func__, _("out of memory\n"));
       mem_free (r, sizeof (*r));
       mem_free (xprt, sizeof (SVCXPRT));
       return NULL;
@@ -214,8 +214,8 @@
   cd = (struct tcp_conn *) mem_alloc (sizeof (struct tcp_conn));
   if (xprt == (SVCXPRT *) NULL || cd == NULL)
     {
-      (void) __fxprintf (NULL, "%s",
-			 _("svc_tcp: makefd_xprt: out of memory\n"));
+      (void) __fxprintf (NULL, "%s: %s", "svc_tcp: makefd_xprt",
+			 _("out of memory\n"));
       mem_free (xprt, sizeof (SVCXPRT));
       mem_free (cd, sizeof (struct tcp_conn));
       return NULL;

Modified: trunk/libc/sunrpc/svc_udp.c
==============================================================================
--- trunk/libc/sunrpc/svc_udp.c (original)
+++ trunk/libc/sunrpc/svc_udp.c Wed Apr  2 04:55:20 2008
@@ -149,7 +149,8 @@
   buf = mem_alloc (((MAX (sendsz, recvsz) + 3) / 4) * 4);
   if (xprt == NULL || su == NULL || buf == NULL)
     {
-      (void) __fxprintf (NULL, "%s", _("svcudp_create: out of memory\n"));
+      (void) __fxprintf (NULL, "%s: %s",
+			 "svcudp_create",  _("out of memory\n"));
       mem_free (xprt, sizeof (SVCXPRT));
       mem_free (su, sizeof (*su));
       mem_free (buf, ((MAX (sendsz, recvsz) + 3) / 4) * 4);

Modified: trunk/libc/sunrpc/svc_unix.c
==============================================================================
--- trunk/libc/sunrpc/svc_unix.c (original)
+++ trunk/libc/sunrpc/svc_unix.c Wed Apr  2 04:55:20 2008
@@ -173,7 +173,7 @@
   xprt = (SVCXPRT *) mem_alloc (sizeof (SVCXPRT));
   if (r == NULL || xprt == NULL)
     {
-      __fxprintf (NULL, "%s", _("svcunix_create: out of memory\n"));
+      __fxprintf (NULL, "%s: %s", __func__, _("out of memory\n"));
       mem_free (r, sizeof (*r));
       mem_free (xprt, sizeof (SVCXPRT));
       return NULL;
@@ -211,8 +211,8 @@
   cd = (struct unix_conn *) mem_alloc (sizeof (struct unix_conn));
   if (xprt == (SVCXPRT *) NULL || cd == (struct unix_conn *) NULL)
     {
-      (void) __fxprintf (NULL, "%s",
-			 _("svc_unix: makefd_xprt: out of memory\n"));
+      (void) __fxprintf (NULL, "%s: %s", "svc_unix: makefd_xprt",
+			 _("out of memory\n"));
       mem_free (xprt, sizeof (SVCXPRT));
       mem_free (cd, sizeof (struct unix_conn));
       return NULL;

Modified: trunk/libc/sunrpc/xdr.c
==============================================================================
--- trunk/libc/sunrpc/xdr.c (original)
+++ trunk/libc/sunrpc/xdr.c Wed Apr  2 04:55:20 2008
@@ -563,7 +563,7 @@
 	}
       if (sp == NULL)
 	{
-	  (void) __fxprintf (NULL, "%s", _("xdr_bytes: out of memory\n"));
+	  (void) __fxprintf (NULL, "%s: %s", __func__, _("out of memory\n"));
 	  return FALSE;
 	}
       /* fall into ... */
@@ -715,7 +715,7 @@
 	*cpp = sp = (char *) mem_alloc (nodesize);
       if (sp == NULL)
 	{
-	  (void) __fxprintf (NULL, "%s", _("xdr_string: out of memory\n"));
+	  (void) __fxprintf (NULL, "%s: %s", __func__, _("out of memory\n"));
 	  return FALSE;
 	}
       sp[size] = 0;

Modified: trunk/libc/sunrpc/xdr_array.c
==============================================================================
--- trunk/libc/sunrpc/xdr_array.c (original)
+++ trunk/libc/sunrpc/xdr_array.c Wed Apr  2 04:55:20 2008
@@ -103,7 +103,7 @@
 	*addrp = target = calloc (c, elsize);
 	if (target == NULL)
 	  {
-	    (void) __fxprintf (NULL, "%s", _("xdr_array: out of memory\n"));
+	    (void) __fxprintf (NULL, "%s: %s", __func__, _("out of memory\n"));
 	    return FALSE;
 	  }
 	break;

Modified: trunk/libc/sunrpc/xdr_rec.c
==============================================================================
--- trunk/libc/sunrpc/xdr_rec.c (original)
+++ trunk/libc/sunrpc/xdr_rec.c Wed Apr  2 04:55:20 2008
@@ -153,7 +153,7 @@
 
   if (rstrm == NULL || buf == NULL)
     {
-      (void) __fxprintf (NULL, "%s", _("xdrrec_create: out of memory\n"));
+      (void) __fxprintf (NULL, "%s: %s", __func__, _("out of memory\n"));
       mem_free (rstrm, sizeof (RECSTREAM));
       mem_free (buf, sendsize + recvsize + BYTES_PER_XDR_UNIT);
       /*

Modified: trunk/libc/sunrpc/xdr_ref.c
==============================================================================
--- trunk/libc/sunrpc/xdr_ref.c (original)
+++ trunk/libc/sunrpc/xdr_ref.c Wed Apr  2 04:55:20 2008
@@ -82,8 +82,7 @@
 	*pp = loc = (caddr_t) calloc (1, size);
 	if (loc == NULL)
 	  {
-	    (void) __fxprintf (NULL, "%s",
-			       _("xdr_reference: out of memory\n"));
+	    (void) __fxprintf (NULL, "%s: %s", __func__, _("out of memory\n"));
 	    return FALSE;
 	  }
 	break;

Modified: trunk/libc/sysdeps/posix/tempname.c
==============================================================================
--- trunk/libc/sysdeps/posix/tempname.c (original)
+++ trunk/libc/sysdeps/posix/tempname.c Wed Apr  2 04:55:20 2008
@@ -297,7 +297,7 @@
 	{
 	case __GT_FILE:
 	  fd = __open (tmpl,
-		       (flags & ~ACCESSPERMS)
+		       (flags & ~O_ACCMODE)
 		       | O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
 	  break;
 

Modified: trunk/libc/sysdeps/unix/opendir.c
==============================================================================
--- trunk/libc/sysdeps/unix/opendir.c (original)
+++ trunk/libc/sysdeps/unix/opendir.c Wed Apr  2 04:55:20 2008
@@ -171,6 +171,8 @@
 	goto lose;
     }
 
+  const size_t default_allocation = (BUFSIZ < sizeof (struct dirent64)
+				     ? sizeof (struct dirent64) : BUFSIZ);
   size_t allocation;
 #ifdef _STATBUF_ST_BLKSIZE
   if (__builtin_expect ((size_t) statp->st_blksize >= sizeof (struct dirent64),
@@ -178,20 +180,30 @@
     allocation = statp->st_blksize;
   else
 #endif
-    allocation = (BUFSIZ < sizeof (struct dirent64)
-		  ? sizeof (struct dirent64) : BUFSIZ);
+    allocation = default_allocation;
 
   DIR *dirp = (DIR *) malloc (sizeof (DIR) + allocation);
   if (dirp == NULL)
-  lose:
-    {
-      if (close_fd)
-	{
-	  int save_errno = errno;
-	  close_not_cancel_no_status (fd);
-	  __set_errno (save_errno);
+    {
+#ifdef _STATBUF_ST_BLKSIZE
+      if (allocation == statp->st_blksize
+	  && allocation != default_allocation)
+	{
+	  allocation = default_allocation;
+	  dirp = (DIR *) malloc (sizeof (DIR) + allocation);
 	}
-      return NULL;
+      if (dirp == NULL)
+#endif
+      lose:
+	{
+	  if (close_fd)
+	    {
+	      int save_errno = errno;
+	      close_not_cancel_no_status (fd);
+	      __set_errno (save_errno);
+	    }
+	  return NULL;
+	}
     }
 
   dirp->fd = fd;

Modified: trunk/libc/sysdeps/unix/sysv/linux/alpha/syscalls.list
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/alpha/syscalls.list (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/alpha/syscalls.list Wed Apr  2 04:55:20 2008
@@ -17,8 +17,6 @@
 vfork		-	vfork		0	__vfork		vfork
 
 getpriority	-	getpriority	i:ii	__getpriority	getpriority
-open		-	open		Ci:siv	__libc_open	__open open !__libc_open64 __open64 open64
-open64		open	-
 
 # proper socket implementations:
 accept		-	accept		Ci:iBN	__libc_accept	__accept accept

Modified: trunk/libc/sysdeps/unix/sysv/linux/bits/local_lim.h
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/bits/local_lim.h (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/bits/local_lim.h Wed Apr  2 04:55:20 2008
@@ -1,5 +1,5 @@
 /* Minimum guaranteed maximum values for system limits.  Linux version.
-   Copyright (C) 1993-1998, 2000, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1993-1998,2000,2003,2004,2008 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
@@ -31,6 +31,9 @@
 #ifndef OPEN_MAX
 # define __undef_OPEN_MAX
 #endif
+#ifndef ARG_MAX
+# define __undef_ARG_MAX
+#endif
 
 /* The kernel sources contain a file with all the needed information.  */
 #include <linux/limits.h>
@@ -50,6 +53,11 @@
 # undef OPEN_MAX
 # undef __undef_OPEN_MAX
 #endif
+/* Have to remove ARG_MAX?  */
+#ifdef __undef_ARG_MAX
+# undef ARG_MAX
+# undef __undef_ARG_MAX
+#endif
 
 /* Maximum amount by which a process can descrease its asynchronous I/O
    priority level.  */

Modified: trunk/libc/sysdeps/unix/sysv/linux/ia64/syscalls.list
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/ia64/syscalls.list (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/ia64/syscalls.list Wed Apr  2 04:55:20 2008
@@ -3,9 +3,6 @@
 umount2		-	umount		2	__umount2	umount2
 
 getpriority	-	getpriority	i:ii	__getpriority	getpriority
-
-creat		-	creat		Ci:si	__libc_creat	creat creat64
-open		-	open		Ci:siv	__libc_open	__open open __open64 open64
 
 # semaphore and shm system calls
 msgctl		-	msgctl		i:iip	__msgctl	msgctl

Modified: trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list Wed Apr  2 04:55:20 2008
@@ -1,5 +1,3 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
-creat		-	creat		Ci:si	__libc_creat	creat creat64
 getrlimit	-	ugetrlimit	i:ip	__getrlimit	getrlimit getrlimit64
-open		-	open		Ci:siv	__libc_open	__open open __open64 open64

Modified: trunk/libc/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list Wed Apr  2 04:55:20 2008
@@ -1,9 +1,6 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
 vfork		-	vfork		0	__vfork		vfork
-
-creat		-	creat		Ci:si	__libc_creat	creat creat64
-open		-	open		Ci:siv	__libc_open	__open open __open64 open64
 
 # semaphore and shm system calls
 msgctl		-	msgctl		i:iip	__msgctl	msgctl

Modified: trunk/libc/sysdeps/unix/sysv/linux/sys/param.h
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/sys/param.h (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/sys/param.h Wed Apr  2 04:55:20 2008
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1996,1997,2000,2001,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1997,2000,2001,2003,2008 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
@@ -19,9 +19,19 @@
 #ifndef _SYS_PARAM_H
 #define _SYS_PARAM_H	1
 
+#ifndef ARG_MAX
+# define __undef_ARG_MAX
+#endif
+
 #include <limits.h>
 #include <linux/limits.h>
 #include <linux/param.h>
+
+/* The kernel headers defines ARG_MAX.  The value is wrong, though.  */
+#ifndef __undef_ARG_MAX
+# undef ARG_MAX
+# undef __undef_ARG_MAX
+#endif
 
 /* BSD names for some <limits.h> values.  */
 
@@ -31,12 +41,12 @@
 #endif
 #define	MAXSYMLINKS	20
 #define	CANBSIZ		MAX_CANON
-#define	NCARGS		ARG_MAX
 #define MAXPATHLEN	PATH_MAX
-/* The following is not really correct but it is a value we used for a
+/* The following are not really correct but it is a value we used for a
    long time and which seems to be usable.  People should not use NOFILE
-   anyway.  */
+   and NCARGS anyway.  */
 #define NOFILE		256
+#define	NCARGS		131072
 
 
 #include <sys/types.h>

Modified: trunk/libc/sysdeps/unix/sysv/linux/sysconf.c
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/sysconf.c (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/sysconf.c Wed Apr  2 04:55:20 2008
@@ -26,6 +26,11 @@
 #include <sys/resource.h>
 #include <not-cancel.h>
 #include <ldsodefs.h>
+
+/* Legacy value of ARG_MAX.  The macro is now not defined since the
+   actual value varies based on the stack size.  */
+#define legacy_ARG_MAX 131072
+
 
 static long int posix_sysconf (int name);
 
@@ -83,10 +88,10 @@
 	  /* Use getrlimit to get the stack limit.  */
 	  struct rlimit rlimit;
 	  if (__getrlimit (RLIMIT_STACK, &rlimit) == 0)
-	    return MAX (ARG_MAX, rlimit.rlim_cur / 4);
+	    return MAX (legacy_ARG_MAX, rlimit.rlim_cur / 4);
 	}
 
-      return ARG_MAX;
+      return legacy_ARG_MAX;
 
     case _SC_NGROUPS_MAX:
       /* Try to read the information from the /proc/sys/kernel/ngroups_max

Modified: trunk/libc/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list Wed Apr  2 04:55:20 2008
@@ -15,3 +15,5 @@
 readahead	-	readahead	i:iii	__readahead	readahead
 sendfile	-	sendfile	i:iipi	sendfile	sendfile64
 sync_file_range	-	sync_file_range	i:iiii	sync_file_range
+creat		-	creat		Ci:si	__libc_creat	creat creat64
+open		-	open		Ci:siv	__libc_open	__open open __open64 open64

Modified: trunk/libc/sysdeps/unix/sysv/linux/x86_64/syscalls.list
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/x86_64/syscalls.list (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/x86_64/syscalls.list Wed Apr  2 04:55:20 2008
@@ -1,13 +1,11 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
 arch_prctl	EXTRA	arch_prctl	i:ii	__arch_prctl	arch_prctl
-creat		-	creat		Ci:si	__libc_creat	creat creat64
 modify_ldt	EXTRA	modify_ldt	i:ipi	__modify_ldt	modify_ldt
 msgctl		-	msgctl		i:iip	__msgctl	msgctl
 msgget		-	msgget		i:ii	__msgget	msgget
 msgrcv		-	msgrcv		Ci:ibnii __msgrcv	msgrcv
 msgsnd		-	msgsnd		Ci:ibni	__msgsnd	msgsnd
-open		-	open		Ci:siv	__libc_open	__open open __open64 open64
 shmat		-	shmat		i:ipi	__shmat		shmat
 shmctl		-	shmctl		i:iip	__shmctl	shmctl
 shmdt		-	shmdt		i:s	__shmdt		shmdt

Modified: trunk/ports/ChangeLog.m68k
==============================================================================
--- trunk/ports/ChangeLog.m68k (original)
+++ trunk/ports/ChangeLog.m68k Wed Apr  2 04:55:20 2008
@@ -1,3 +1,9 @@
+2008-03-28  Maxim Kuvyrkov  <maxim@xxxxxxxxxxxxxxxx>
+
+	Explicitly get address of _DYNAMIC.
+	* sysdeps/m68k/dl-machine.h (elf_machine_dynamic): Retrieve _DYNAMIC
+	from GOT instead of assuming value at GOT pointer.
+
 2007-10-22  Daniel Jacobowitz  <dan@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/m68k/bits/fcntl.h (F_DUPFD_CLOEXEC): Define.

Modified: trunk/ports/ChangeLog.mips
==============================================================================
--- trunk/ports/ChangeLog.mips (original)
+++ trunk/ports/ChangeLog.mips Wed Apr  2 04:55:20 2008
@@ -1,3 +1,13 @@
+2008-03-28  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/mips/nptl/bits/local_lim.h: Undefine
+	ARG_MAX if <linux/limits.h> has defined it.
+
+2008-03-28  Robin Randhawa  <robin@xxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Added memory
+	barriers to enforce strict ordering on weakly ordered systems.
+
 2008-03-26  David Stephenson  <david.stephenson@xxxxxxxxxxxx>
 	    Daniel Jacobowitz  <dan@xxxxxxxxxxxxxxxx>
 

Modified: trunk/ports/sysdeps/m68k/dl-machine.h
==============================================================================
--- trunk/ports/sysdeps/m68k/dl-machine.h (original)
+++ trunk/ports/sysdeps/m68k/dl-machine.h Wed Apr  2 04:55:20 2008
@@ -33,14 +33,16 @@
 }
 
 
-/* Return the link-time address of _DYNAMIC.  Conveniently, this is the
-   first element of the GOT.  This must be inlined in a function which
-   uses global data.  */
+/* Return the link-time address of _DYNAMIC.
+   This must be inlined in a function which uses global data.  */
 static inline Elf32_Addr
 elf_machine_dynamic (void)
 {
-  register Elf32_Addr *got asm ("%a5");
-  return *got;
+  Elf32_Addr addr;
+
+  asm ("move.l _DYNAMIC@xxxxx(%%a5), %0"
+       : "=a" (addr));
+  return addr;
 }
 
 

Modified: trunk/ports/sysdeps/unix/sysv/linux/mips/nptl/bits/local_lim.h
==============================================================================
--- trunk/ports/sysdeps/unix/sysv/linux/mips/nptl/bits/local_lim.h (original)
+++ trunk/ports/sysdeps/unix/sysv/linux/mips/nptl/bits/local_lim.h Wed Apr  2 04:55:20 2008
@@ -1,5 +1,5 @@
 /* Minimum guaranteed maximum values for system limits.  MIPS Linux version.
-   Copyright (C) 1993-1998,2000,2002,2003,2004,2007
+   Copyright (C) 1993-1998,2000,2002,2003,2004,2007,2008
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -32,6 +32,9 @@
 #ifndef OPEN_MAX
 # define __undef_OPEN_MAX
 #endif
+#ifndef ARG_MAX
+# define __undef_ARG_MAX
+#endif
 
 /* The kernel sources contain a file with all the needed information.  */
 #include <linux/limits.h>
@@ -50,6 +53,11 @@
 #ifdef __undef_OPEN_MAX
 # undef OPEN_MAX
 # undef __undef_OPEN_MAX
+#endif
+/* Have to remove ARG_MAX?  */
+#ifdef __undef_ARG_MAX
+# undef ARG_MAX
+# undef __undef_ARG_MAX
 #endif
 
 /* The number of data keys per process.  */

Modified: trunk/ports/sysdeps/unix/sysv/linux/mips/sys/tas.h
==============================================================================
--- trunk/ports/sysdeps/unix/sysv/linux/mips/sys/tas.h (original)
+++ trunk/ports/sysdeps/unix/sysv/linux/mips/sys/tas.h Wed Apr  2 04:55:20 2008
@@ -40,17 +40,19 @@
 
   __asm__ __volatile__
     ("/* Inline test and set */\n"
-     "1:\n\t"
      ".set	push\n\t"
 #if _MIPS_SIM == _ABIO32
      ".set	mips2\n\t"
 #endif
+     "sync\n\t"
+     "1:\n\t"
      "ll	%0,%3\n\t"
      "move	%1,%4\n\t"
      "beq	%0,%4,2f\n\t"
      "sc	%1,%2\n\t"
+     "beqz	%1,1b\n"
+     "sync\n\t"
      ".set	pop\n\t"
-     "beqz	%1,1b\n"
      "2:\n\t"
      "/* End test and set */"
      : "=&r" (r), "=&r" (t), "=m" (*p)