void
x_cgo_init(G *g, void (*setg)(void*), void **tlsg, void **tlsbase)
{
- pthread_attr_t attr;
size_t size;
setg_gcc = setg;
- pthread_attr_init(&attr);
- pthread_attr_getstacksize(&attr, &size);
- g->stacklo = (uintptr)&attr - size + 4096;
- pthread_attr_destroy(&attr);
+ size = pthread_get_stacksize_np(pthread_self());
+ g->stacklo = (uintptr)&size - size + 4096;
}
sigfillset(&ign);
pthread_sigmask(SIG_SETMASK, &ign, &oset);
+ size = pthread_get_stacksize_np(pthread_self());
pthread_attr_init(&attr);
- pthread_attr_getstacksize(&attr, &size);
+ pthread_attr_setstacksize(&attr, size);
// Leave stacklo=0 and set stackhi=size; mstart will do the rest.
ts->g->stackhi = size;
err = _cgo_try_pthread_create(&p, &attr, threadentry, ts);
sigfillset(&ign);
pthread_sigmask(SIG_SETMASK, &ign, &oset);
+ size = pthread_get_stacksize_np(pthread_self());
pthread_attr_init(&attr);
- pthread_attr_getstacksize(&attr, &size);
+ pthread_attr_setstacksize(&attr, size);
// Leave stacklo=0 and set stackhi=size; mstart will do the rest.
ts->g->stackhi = size;
err = _cgo_try_pthread_create(&p, &attr, threadentry, ts);
void
x_cgo_init(G *g, void (*setg)(void*))
{
- pthread_attr_t attr;
size_t size;
//fprintf(stderr, "x_cgo_init = %p\n", &x_cgo_init); // aid debugging in presence of ASLR
setg_gcc = setg;
- pthread_attr_init(&attr);
- pthread_attr_getstacksize(&attr, &size);
- g->stacklo = (uintptr)&attr - size + 4096;
- pthread_attr_destroy(&attr);
+ size = pthread_get_stacksize_np(pthread_self());
+ g->stacklo = (uintptr)&size - size + 4096;
#if TARGET_OS_IPHONE
darwin_arm_init_mach_exception_handler();