mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: fix nacl build
The NaCl "system calls" were assumed to have a compatible return convention with the C compiler, and we were using tail jumps to those functions. Don't do that anymore. Correct mistake introduced in newstackcall duringconversion from (SP) to (FP) notation. (Actually this fix, in asm_amd64p32.s, slipped into the C compiler change, but update the name to match what go vet wants.) Correct computation of caller stack pointer in morestack: on amd64p32, the saved PC is the size of a uintreg, not uintptr. This may not matter, since it's been like this for a while, but uintreg is the correct one. (And on non-NaCl they are the same.) This will allow the NaCl build to get much farther. It will probably still not work completely. There's a bug in 6l that needs fixing too. TBR=minux CC=golang-codereviews https://golang.org/cl/134990043
This commit is contained in:
parent
433d643732
commit
f9b9ecc5ee
6 changed files with 210 additions and 85 deletions
|
|
@ -899,7 +899,7 @@ runtime·newstack(void)
|
|||
sp = gp->sched.sp;
|
||||
if(thechar == '6' || thechar == '8') {
|
||||
// The call to morestack cost a word.
|
||||
sp -= sizeof(uintptr);
|
||||
sp -= sizeof(uintreg);
|
||||
}
|
||||
if(StackDebug >= 1 || sp < gp->stackguard - StackGuard) {
|
||||
runtime·printf("runtime: newstack framesize=%p argsize=%p sp=%p stack=[%p, %p]\n"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue