aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2005-10-16 11:38:59 +0000
committerRoland McGrath <roland@gnu.org>2005-10-16 11:38:59 +0000
commitfe60d146c76a500ac68496c2c2b3223337d3d7c6 (patch)
tree8d2bfda59a4314a797e2db985bce7b5832f20b60
parentc45c24812b64c41a494e74c789a9e91ea21b3f7c (diff)
downloadglibc-fe60d146c76a500ac68496c2c2b3223337d3d7c6.tar
glibc-fe60d146c76a500ac68496c2c2b3223337d3d7c6.tar.gz
glibc-fe60d146c76a500ac68496c2c2b3223337d3d7c6.tar.bz2
glibc-fe60d146c76a500ac68496c2c2b3223337d3d7c6.zip
* sysdeps/unix/sysv/linux/sh/bits/mman.h: Define MREMAP_FIXED.
-rw-r--r--ChangeLog4
-rw-r--r--Makerules2
-rw-r--r--nptl/ChangeLog6
-rw-r--r--nptl/init.c21
-rw-r--r--sysdeps/unix/sysv/linux/sh/bits/mman.h1
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'. */