Update to go1.24.0
This commit is contained in:
@@ -32,7 +32,7 @@ package cgo
|
||||
*/
|
||||
import "C"
|
||||
|
||||
import "runtime/internal/sys"
|
||||
import "internal/runtime/sys"
|
||||
|
||||
// Incomplete is used specifically for the semantics of incomplete C types.
|
||||
type Incomplete struct {
|
||||
|
||||
@@ -34,6 +34,7 @@ _cgo_sys_thread_start(ThreadStart *ts)
|
||||
size = pthread_get_stacksize_np(pthread_self());
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setstacksize(&attr, size);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
// 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);
|
||||
|
||||
@@ -39,6 +39,7 @@ _cgo_sys_thread_start(ThreadStart *ts)
|
||||
size = pthread_get_stacksize_np(pthread_self());
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setstacksize(&attr, size);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
// 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);
|
||||
|
||||
@@ -33,6 +33,7 @@ _cgo_sys_thread_start(ThreadStart *ts)
|
||||
pthread_sigmask(SIG_SETMASK, &ign, &oset);
|
||||
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
pthread_attr_getstacksize(&attr, &size);
|
||||
|
||||
// Leave stacklo=0 and set stackhi=size; mstart will do the rest.
|
||||
|
||||
@@ -45,6 +45,7 @@ _cgo_sys_thread_start(ThreadStart *ts)
|
||||
pthread_sigmask(SIG_SETMASK, &ign, &oset);
|
||||
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
pthread_attr_getstacksize(&attr, &size);
|
||||
// Leave stacklo=0 and set stackhi=size; mstart will do the rest.
|
||||
ts->g->stackhi = size;
|
||||
|
||||
@@ -43,6 +43,7 @@ _cgo_sys_thread_start(ThreadStart *ts)
|
||||
pthread_sigmask(SIG_SETMASK, &ign, &oset);
|
||||
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
pthread_attr_getstacksize(&attr, &size);
|
||||
// Leave stacklo=0 and set stackhi=size; mstart will do the rest.
|
||||
ts->g->stackhi = size;
|
||||
|
||||
@@ -37,8 +37,12 @@ static void (*cgo_context_function)(struct context_arg*);
|
||||
|
||||
void
|
||||
x_cgo_sys_thread_create(void* (*func)(void*), void* arg) {
|
||||
pthread_attr_t attr;
|
||||
pthread_t p;
|
||||
int err = _cgo_try_pthread_create(&p, NULL, func, arg);
|
||||
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
int err = _cgo_try_pthread_create(&p, &attr, func, arg);
|
||||
if (err != 0) {
|
||||
fprintf(stderr, "pthread_create failed: %s", strerror(err));
|
||||
abort();
|
||||
@@ -153,7 +157,6 @@ _cgo_try_pthread_create(pthread_t* thread, const pthread_attr_t* attr, void* (*p
|
||||
for (tries = 0; tries < 20; tries++) {
|
||||
err = pthread_create(thread, attr, pfn, arg);
|
||||
if (err == 0) {
|
||||
pthread_detach(*thread);
|
||||
return 0;
|
||||
}
|
||||
if (err != EAGAIN) {
|
||||
|
||||
@@ -2,6 +2,12 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
# ifdef __CYGWIN__
|
||||
#error "don't use the cygwin compiler to build native Windows programs; use MinGW instead"
|
||||
#else
|
||||
// Exclude the following code from Cygwin builds.
|
||||
// Cygwin doesn't implement process.h nor does it support _beginthread.
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <process.h>
|
||||
@@ -156,3 +162,5 @@ void _cgo_beginthread(void (*func)(void*), void* arg) {
|
||||
fprintf(stderr, "runtime: failed to create new OS thread (%d)\n", errno);
|
||||
abort();
|
||||
}
|
||||
|
||||
#endif // __CYGWIN__
|
||||
@@ -40,6 +40,7 @@ _cgo_sys_thread_start(ThreadStart *ts)
|
||||
pthread_sigmask(SIG_SETMASK, &ign, &oset);
|
||||
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
pthread_attr_getstacksize(&attr, &size);
|
||||
// Leave stacklo=0 and set stackhi=size; mstart will do the rest.
|
||||
ts->g->stackhi = size;
|
||||
|
||||
@@ -63,6 +63,7 @@ _cgo_sys_thread_start(ThreadStart *ts)
|
||||
pthread_sigmask(SIG_SETMASK, &ign, &oset);
|
||||
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
pthread_attr_getstacksize(&attr, &size);
|
||||
// Leave stacklo=0 and set stackhi=size; mstart will do the rest.
|
||||
ts->g->stackhi = size;
|
||||
|
||||
@@ -28,6 +28,7 @@ _cgo_sys_thread_start(ThreadStart *ts)
|
||||
pthread_sigmask(SIG_SETMASK, &ign, &oset);
|
||||
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
pthread_attr_getstacksize(&attr, &size);
|
||||
// Leave stacklo=0 and set stackhi=size; mstart will do the rest.
|
||||
ts->g->stackhi = size;
|
||||
|
||||
@@ -33,6 +33,7 @@ _cgo_sys_thread_start(ThreadStart *ts)
|
||||
pthread_sigmask(SIG_SETMASK, &ign, &oset);
|
||||
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
pthread_attr_getstacksize(&attr, &size);
|
||||
// Leave stacklo=0 and set stackhi=size; mstart will do the rest.
|
||||
ts->g->stackhi = size;
|
||||
|
||||
@@ -35,6 +35,7 @@ _cgo_sys_thread_start(ThreadStart *ts)
|
||||
pthread_sigmask(SIG_SETMASK, &ign, &oset);
|
||||
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
pthread_attr_getstacksize(&attr, &size);
|
||||
// Leave stacklo=0 and set stackhi=size; mstart will do the rest.
|
||||
ts->g->stackhi = size;
|
||||
|
||||
@@ -34,6 +34,7 @@ _cgo_sys_thread_start(ThreadStart *ts)
|
||||
pthread_sigmask(SIG_SETMASK, &ign, &oset);
|
||||
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
pthread_attr_getstacksize(&attr, &size);
|
||||
|
||||
// Leave stacklo=0 and set stackhi=size; mstart will do the rest.
|
||||
|
||||
@@ -35,6 +35,7 @@ _cgo_sys_thread_start(ThreadStart *ts)
|
||||
pthread_sigmask(SIG_SETMASK, &ign, &oset);
|
||||
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||
pthread_attr_getstacksize(&attr, &size);
|
||||
// Leave stacklo=0 and set stackhi=size; mstart will do the rest.
|
||||
ts->g->stackhi = size;
|
||||
|
||||
@@ -21,7 +21,7 @@ x_cgo_getstackbound(uintptr bounds[2])
|
||||
// Needed before pthread_getattr_np, too, since before glibc 2.32
|
||||
// it did not call pthread_attr_init in all cases (see #65625).
|
||||
pthread_attr_init(&attr);
|
||||
#if defined(__GLIBC__) || (defined(__sun) && !defined(__illumos__))
|
||||
#if defined(__GLIBC__) || defined(__BIONIC__) || (defined(__sun) && !defined(__illumos__))
|
||||
// pthread_getattr_np is a GNU extension supported in glibc.
|
||||
// Solaris is not glibc but does support pthread_getattr_np
|
||||
// (and the fallback doesn't work...). Illumos does not.
|
||||
|
||||
Reference in New Issue
Block a user