diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | localedata/ChangeLog | 3 | ||||
-rw-r--r-- | localedata/locales/ug_CN | 11 | ||||
-rw-r--r-- | nptl/ChangeLog | 8 | ||||
-rw-r--r-- | nptl/Makefile | 1 | ||||
-rw-r--r-- | nptl/allocatestack.c | 7 | ||||
-rw-r--r-- | nptl/tst-basic7.c | 56 | ||||
-rw-r--r-- | sysdeps/x86_64/memset.S | 1 |
8 files changed, 84 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog index 17178716f2..ed269eeaf2 100644 --- 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] diff --git a/localedata/ChangeLog b/localedata/ChangeLog index f7c6c08dc3..9a6722bf55 100644 --- a/localedata/ChangeLog +++ b/localedata/ChangeLog @@ -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. diff --git a/localedata/locales/ug_CN b/localedata/locales/ug_CN index c4526416f9..3732d7bdc1 100644 --- a/localedata/locales/ug_CN +++ b/localedata/locales/ug_CN @@ -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 - diff --git a/nptl/ChangeLog b/nptl/ChangeLog index c92e6abf45..bc4d43ce5b 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -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): diff --git a/nptl/Makefile b/nptl/Makefile index f239846fb7..00cf40d695 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -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 \ diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c index c894e96a28..f75599c668 100644 --- a/nptl/allocatestack.c +++ b/nptl/allocatestack.c @@ -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 index 0000000000..da461e43df --- /dev/null +++ b/nptl/tst-basic7.c @@ -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" diff --git a/sysdeps/x86_64/memset.S b/sysdeps/x86_64/memset.S index bf2ef005b4..939240600d 100644 --- a/sysdeps/x86_64/memset.S +++ b/sysdeps/x86_64/memset.S @@ -127,6 +127,7 @@ L(memset_entry): add $0x40,%rcx dec %rax jne 11b + sfence jmp 4b END (memset) |