]>
git.saurik.com Git - apple/libpthread.git/blob - tests/main_stack_custom.c
3 #include "darwintest_defaults.h"
4 #include <machine/vmparam.h>
6 T_DECL(main_stack_custom
, "tests the reported values for a custom main thread stack"){
7 T_EXPECT_EQ((size_t)STACKSIZE
, pthread_get_stacksize_np(pthread_self()), NULL
);
9 const uintptr_t stackaddr
= (uintptr_t)pthread_get_stackaddr_np(pthread_self());
10 size_t stacksize
= pthread_get_stacksize_np(pthread_self());
11 T_LOG("stack: %zx -> %zx (+%zx)", stackaddr
- stacksize
, stackaddr
, stacksize
);
12 T_EXPECT_LT((uintptr_t)__builtin_frame_address(0), stackaddr
, NULL
);
13 T_EXPECT_GT((uintptr_t)__builtin_frame_address(0), stackaddr
- stacksize
, NULL
);
16 T_QUIET
; T_ASSERT_POSIX_SUCCESS(getrlimit(RLIMIT_STACK
, &lim
), NULL
);
17 lim
.rlim_cur
= lim
.rlim_cur
+ 32 * PAGE_SIZE
;
18 T_EXPECT_EQ(setrlimit(RLIMIT_STACK
, &lim
), -1, "setrlimit for stack should fail with custom stack");
19 T_EXPECT_EQ((size_t)STACKSIZE
, pthread_get_stacksize_np(pthread_self()), "reported stacksize shouldn't change");