runtime: use alignof to check alignment of ucontext_t
Use alignof rather than assuming a 16 byte alignment. Reviewed-on: https://go-review.googlesource.com/28913 From-SVN: r240047
This commit is contained in:
parent
a9ca0a9d02
commit
ac376b15df
2 changed files with 8 additions and 2 deletions
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue