diff options
author | Roland McGrath <roland@gnu.org> | 2005-10-16 11:38:59 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2005-10-16 11:38:59 +0000 |
commit | fe60d146c76a500ac68496c2c2b3223337d3d7c6 (patch) | |
tree | 8d2bfda59a4314a797e2db985bce7b5832f20b60 | |
parent | c45c24812b64c41a494e74c789a9e91ea21b3f7c (diff) | |
download | glibc-fe60d146c76a500ac68496c2c2b3223337d3d7c6.tar.gz glibc-fe60d146c76a500ac68496c2c2b3223337d3d7c6.tar.xz glibc-fe60d146c76a500ac68496c2c2b3223337d3d7c6.zip |
* sysdeps/unix/sysv/linux/sh/bits/mman.h: Define MREMAP_FIXED.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | Makerules | 2 | ||||
-rw-r--r-- | nptl/ChangeLog | 6 | ||||
-rw-r--r-- | nptl/init.c | 21 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sh/bits/mman.h | 1 |
5 files changed, 25 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog index 46c4621c56..232bc07fc0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-10-16 Kaz Kojima <kkojima@rr.iij4u.or.jp> + + * sysdeps/unix/sysv/linux/sh/bits/mman.h: Define MREMAP_FIXED. + 2005-08-05 Alfred M. Szmidt <ams@gnu.org> [BZ #1252] diff --git a/Makerules b/Makerules index cc8c3d8700..3ffff58db3 100644 --- a/Makerules +++ b/Makerules @@ -676,7 +676,7 @@ include $(patsubst %,$(..)extra-modules.mk,$(modules-names)) extra-modules-build := $(filter-out $(modules-names-nobuild),$(modules-names)) $(extra-modules-build:%=$(objpfx)%.so): $(objpfx)%.so: \ - $(objpfx)$(module).os $(common-objpfx)shlib.lds \ + $(objpfx)%.os $(common-objpfx)shlib.lds \ $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a $(build-module) endif diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 3c8e73a2b9..ef30df0fda 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,9 @@ +2005-10-16 Roland McGrath <roland@redhat.com> + + * init.c (__pthread_initialize_minimal_internal): Even when using a + compile-time default stack size, apply the minimum that allocate_stack + will require, and round up to page size. + 2005-10-10 Daniel Jacobowitz <dan@codesourcery.com> * Makefile ($(test-modules)): Remove static pattern rule. diff --git a/nptl/init.c b/nptl/init.c index de704122d1..6a7fff9959 100644 --- a/nptl/init.c +++ b/nptl/init.c @@ -297,17 +297,22 @@ __pthread_initialize_minimal_internal (void) || limit.rlim_cur == RLIM_INFINITY) /* The system limit is not usable. Use an architecture-specific default. */ - __default_stacksize = ARCH_STACK_DEFAULT_SIZE; + limit.rlim_cur = ARCH_STACK_DEFAULT_SIZE; else if (limit.rlim_cur < PTHREAD_STACK_MIN) /* The system limit is unusably small. Use the minimal size acceptable. */ - __default_stacksize = PTHREAD_STACK_MIN; - else - { - /* Round the resource limit up to page size. */ - const uintptr_t pagesz = __sysconf (_SC_PAGESIZE); - __default_stacksize = (limit.rlim_cur + pagesz - 1) & -pagesz; - } + limit.rlim_cur = PTHREAD_STACK_MIN; + + /* Make sure it meets the minimum size that allocate_stack + (allocatestack.c) will demand, which depends on the page size. */ + const uintptr_t pagesz = __sysconf (_SC_PAGESIZE); + const size_t minstack = pagesz * 2 + __static_tls_size + MINIMAL_REST_STACK; + if (limit.rlim_cur < minstack) + limit.rlim_cur = minstack; + + /* Round the resource limit up to page size. */ + limit.rlim_cur = (limit.rlim_cur + pagesz - 1) & -pagesz; + __default_stacksize = limit.rlim_cur; /* Get the size of the static and alignment requirements for the TLS block. */ diff --git a/sysdeps/unix/sysv/linux/sh/bits/mman.h b/sysdeps/unix/sysv/linux/sh/bits/mman.h index 656b5b673b..a3c690b6c6 100644 --- a/sysdeps/unix/sysv/linux/sh/bits/mman.h +++ b/sysdeps/unix/sysv/linux/sh/bits/mman.h @@ -78,6 +78,7 @@ /* Flags for `mremap'. */ #ifdef __USE_GNU # define MREMAP_MAYMOVE 1 +# define MREMAP_FIXED 2 #endif /* Advice to `madvise'. */ |