aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--libgo/runtime/proc.c8
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index 99e32ce..261a79a 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-b37a9e66ea584885043240f8f6f1d1c0284eadec
+6c1f159cdcb56ebff617f6bbc6c97943a1a8a34d
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c
index 7e2b172..6ac8857 100644
--- a/libgo/runtime/proc.c
+++ b/libgo/runtime/proc.c
@@ -166,7 +166,13 @@ static ucontext_t*
ucontext_arg(void** go_ucontext)
{
uintptr_t p = (uintptr_t)go_ucontext;
- p = (p + 15) &~ (uintptr_t)0xf;
+ size_t align = __alignof__(ucontext_t);
+ if(align > 16) {
+ // We only ensured space for up to a 16 byte alignment
+ // in libgo/go/runtime/runtime2.go.
+ runtime_throw("required alignment of ucontext_t too large");
+ }
+ p = (p + align - 1) &~ (uintptr_t)(align - 1);
return (ucontext_t*)p;
}