From 8dc2499aa62f768c6395c9754b8cabc1ce25c494 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 11 Feb 2022 14:53:56 -0800 Subject: libgo: update to Go1.18beta2 gotools/ * Makefile.am (go_cmd_cgo_files): Add ast_go118.go (check-go-tool): Copy golang.org/x/tools directories. * Makefile.in: Regenerate. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/384695 --- libgo/runtime/go-signal.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'libgo/runtime') diff --git a/libgo/runtime/go-signal.c b/libgo/runtime/go-signal.c index d30d160..0cb9030 100644 --- a/libgo/runtime/go-signal.c +++ b/libgo/runtime/go-signal.c @@ -62,6 +62,7 @@ sigtramp(int sig, siginfo_t *info, void *context) G *gp; void *stack_context[10]; void *stack; + void *find_stack; size_t stack_size; void *next_segment; void *next_sp; @@ -91,9 +92,15 @@ sigtramp(int sig, siginfo_t *info, void *context) __splitstack_getcontext(&stack_context[0]); - stack = __splitstack_find_context((void*)(&gp->m->gsignal->stackcontext[0]), - &stack_size, &next_segment, - &next_sp, &initial_sp); + find_stack = + __splitstack_find_context((void*)(&gp->m->gsignal->stackcontext[0]), + &stack_size, &next_segment, + &next_sp, &initial_sp); + stack = find_stack; + if (stack == NULL) { + stack = gp->m->gsignalstack; + stack_size = gp->m->gsignalstacksize; + } // If some non-Go code called sigaltstack, adjust. sp = (uintptr)(&stack_size); @@ -113,7 +120,7 @@ sigtramp(int sig, siginfo_t *info, void *context) // Unfortunately __splitstack_find_context will return NULL // when it is called on a context that has never been used. // There isn't much we can do but assume all is well. - if (stack != NULL) { + if (find_stack != NULL) { // Here the gc runtime adjusts the gsignal // stack guard to match the values returned by // sigaltstack. Unfortunately we have no way -- cgit v1.1