You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.3 KiB
64 lines
2.3 KiB
diff -pruN glibc-2.17-c758a686/nptl/Makefile glibc-2.17-c758a686/nptl/Makefile |
|
--- glibc-2.17-c758a686/nptl/Makefile 2013-07-31 11:51:24.882747234 +0530 |
|
+++ glibc-2.17-c758a686/nptl/Makefile 2013-07-31 11:58:55.964731526 +0530 |
|
@@ -276,10 +276,7 @@ gen-as-const-headers = pthread-errnos.sy |
|
|
|
LDFLAGS-pthread.so = -Wl,--enable-new-dtags,-z,nodelete,-z,initfirst |
|
|
|
-# The size is 1MB + 4KB. The extra 4KB has been added to prevent allocatestack |
|
-# from resizing the input size to avoid the 64K aliasing conflict on Intel |
|
-# processors. |
|
-DEFAULT_STACKSIZE=1052672 |
|
+DEFAULT_STACKSIZE=1048576 |
|
CFLAGS-tst-default-attr.c = -DDEFAULT_STACKSIZE=$(DEFAULT_STACKSIZE) |
|
tst-default-attr-ENV = GLIBC_PTHREAD_STACKSIZE=$(DEFAULT_STACKSIZE) |
|
|
|
diff -pruN glibc-2.17-c758a686/nptl/tst-default-attr.c glibc-2.17-c758a686/nptl/tst-default-attr.c |
|
--- glibc-2.17-c758a686/nptl/tst-default-attr.c 2013-07-31 11:51:24.885747234 +0530 |
|
+++ glibc-2.17-c758a686/nptl/tst-default-attr.c 2013-07-31 12:18:10.016691337 +0530 |
|
@@ -38,6 +38,7 @@ |
|
|
|
/* DEFAULT_STACKSIZE macro is defined in the Makefile. */ |
|
static size_t stacksize = DEFAULT_STACKSIZE; |
|
+long int pagesize; |
|
|
|
static int |
|
verify_stacksize_result (pthread_attr_t *attr) |
|
@@ -46,12 +47,20 @@ verify_stacksize_result (pthread_attr_t |
|
|
|
RETURN_IF_FAIL (pthread_attr_getstacksize, attr, &stack); |
|
|
|
- if (stacksize != stack) |
|
+ /* pthread_create perturbs the stack size by a page if it aligns to 64K to |
|
+ avoid the 64K aliasing conflict. We cannot simply add 4K to the size in |
|
+ the Makefile because it breaks the test on powerpc since the page size |
|
+ there is 64K, resulting in a resize in __pthread_initialize_minimal. |
|
+ Hence, our check is to ensure that the stack size is not more than a page |
|
+ more than the requested size. */ |
|
+ if (stack < stacksize || stack > stacksize + pagesize) |
|
{ |
|
printf ("failed to set default stacksize (%zu, %zu)\n", stacksize, stack); |
|
return 1; |
|
} |
|
|
|
+ printf ("Requested %zu and got %zu\n", stacksize, stack); |
|
+ |
|
return 0; |
|
} |
|
|
|
@@ -101,6 +110,15 @@ run_threads (void) |
|
static int |
|
do_test (void) |
|
{ |
|
+ pthread_attr_t attr; |
|
+ |
|
+ pagesize = sysconf (_SC_PAGESIZE); |
|
+ if (pagesize < 0) |
|
+ { |
|
+ printf ("sysconf failed: %s\n", strerror (errno)); |
|
+ return 1; |
|
+ } |
|
+ |
|
RETURN_IF_FAIL (run_threads); |
|
return 0; |
|
}
|
|
|