* sysdeps/x86_64/memset.S: Add sfence after movnti.
authorUlrich Drepper <drepper@redhat.com>
Thu, 8 Nov 2007 01:07:04 +0000 (01:07 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 8 Nov 2007 01:07:04 +0000 (01:07 +0000)
ChangeLog
localedata/ChangeLog
localedata/locales/ug_CN
nptl/ChangeLog
nptl/Makefile
nptl/allocatestack.c
nptl/tst-basic7.c [new file with mode: 0644]
sysdeps/x86_64/memset.S

index 1717871..ed269ee 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2007-11-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * sysdeps/x86_64/memset.S: Add sfence after movnti.
+
 2007-11-07  Ulrich Drepper  <drepper@redhat.com>
 
        [BZ #5277]
index f7c6c08..9a6722b 100644 (file)
@@ -1,5 +1,8 @@
 2007-11-07  Ulrich Drepper  <drepper@redhat.com>
 
+       [BZ #5238]
+       * locales/ug_CN: Fix typo in collating symbol definition.
+
        [BZ #5237]
        * locales/lo_LA: Fix typos in collation symbols.
 
index c452641..3732d7b 100644 (file)
@@ -2,7 +2,7 @@ escape_char /
 comment_char %
 %
 % Uyghur language locale for China
-% Source: 
+% Source:
 % Contact: Pablo Saratxaga
 % Email: pablo@mandriva.com
 % Language: ug
@@ -56,8 +56,8 @@ LC_COLLATE
 % U+0224, U+0225 are also similar to ztail and are sorted the same.
 %
 % new arabic writting uses some extra letters too.
-% all vowels are noted, and in beginning of the word there is a 
-% "yeh with hamza" (U+0626) in the front; should it be ignored 
+% all vowels are noted, and in beginning of the word there is a
+% "yeh with hamza" (U+0626) in the front; should it be ignored
 % in sorting?
 %
 % arabic     old latin       turkic (from azeri, which has same phonemes)
@@ -107,7 +107,7 @@ collating-symbol  <htail>
 collating-symbol  <ktail>
 collating-symbol  <ztail>
 collating-symbol  <obar>
-collating-symbol  <udiaresis>
+collating-symbol  <udiaeresis>
 
 collating-element <h,> from "<U0068><U0321>"
 collating-element <H,> from "<U0048><U0321>"
@@ -238,7 +238,7 @@ reorder-after <U0648>
 <U06D0> <ar_e>;<BAS>;<MIN>;IGNORE
 <U06CC> <ar_i>;<BAS>;<MIN>;IGNORE
 <U064A> <ar_y>;<BAS>;<MIN>;IGNORE
+
 reorder-end
 
 END LC_COLLATE
@@ -330,4 +330,3 @@ LC_ADDRESS
 % FIXME
 copy "en_DK"
 END LC_ADDRESS
-
index c92e6ab..bc4d43c 100644 (file)
@@ -1,3 +1,11 @@
+2007-11-07  Ulrich Drepper  <drepper@redhat.com>
+
+       [BZ #5245]
+       * allocatestack.c (allocate_stack): Change ENOMEM error in case
+       mmap failed to EAGAIN.
+       * Makefile (tests): Add tst-basic7.
+       * tst-basic7.c: New file.
+
 2007-11-05  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/unix/sysv/linux/register-atfork.c (__register_atfork):
index f239846..00cf40d 100644 (file)
@@ -222,6 +222,7 @@ tests = tst-typesizes \
        tst-barrier1 tst-barrier2 tst-barrier3 tst-barrier4 \
        tst-align tst-align2 tst-align3 \
        tst-basic1 tst-basic2 tst-basic3 tst-basic4 tst-basic5 tst-basic6 \
+       tst-basic7 \
        tst-kill1 tst-kill2 tst-kill3 tst-kill4 tst-kill5 tst-kill6 \
        tst-raise1 \
        tst-join1 tst-join2 tst-join3 tst-join4 tst-join5 tst-join6 \
index c894e96..f75599c 100644 (file)
@@ -462,7 +462,12 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
              mem = ARCH_RETRY_MMAP (size);
              if (__builtin_expect (mem == MAP_FAILED, 0))
 #endif
-               return errno;
+               {
+                 if (errno == ENOMEM)
+                   errno = EAGAIN;
+
+                 return errno;
+               }
            }
 
          /* SIZE is guaranteed to be greater than zero.
diff --git a/nptl/tst-basic7.c b/nptl/tst-basic7.c
new file mode 100644 (file)
index 0000000..da461e4
--- /dev/null
@@ -0,0 +1,56 @@
+#include <errno.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/mman.h>
+#include <sys/resource.h>
+
+static void
+use_up_memory (void)
+{
+  struct rlimit rl;
+  getrlimit (RLIMIT_AS, &rl);
+  rl.rlim_cur = 10 * 1024 * 1024;
+  setrlimit (RLIMIT_AS, &rl);
+
+  char *c;
+  int PAGESIZE = getpagesize ();
+  while (1)
+    {
+      c = mmap (NULL, PAGESIZE, PROT_NONE, MAP_ANON | MAP_PRIVATE, -1, 0);
+      if (c == MAP_FAILED)
+       break;
+    }
+}
+
+static void *
+child (void *arg)
+{
+  sleep (1);
+  return arg;
+}
+
+static int
+do_test (void)
+{
+  int err;
+  pthread_t tid;
+
+  use_up_memory ();
+
+  err = pthread_create (&tid, NULL, child, NULL);
+  if (err != 0)
+    {
+      printf ("pthread_create returns %d: %s\n", err,
+             err == EAGAIN ? "OK" : "FAIL");
+      return err != EAGAIN;
+    }
+
+  /* We did not fail to allocate memory despite the preparation.  Oh well.  */
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
index bf2ef00..9392406 100644 (file)
@@ -127,6 +127,7 @@ L(memset_entry):
        add     $0x40,%rcx
        dec     %rax
        jne     11b
+       sfence
        jmp     4b
 
 END (memset)