implement spec: when main.main returns, the program exits
R=r
DELTA=9 (7 added, 2 deleted, 0 changed)
OCL=15628
CL=15643
diff --git a/src/runtime/rt0_amd64.s b/src/runtime/rt0_amd64.s
index 9f354a7..35448e0 100644
--- a/src/runtime/rt0_amd64.s
+++ b/src/runtime/rt0_amd64.s
@@ -37,13 +37,14 @@
CALL schedinit(SB)
// create a new goroutine to start program
-
PUSHQ $mainstart(SB) // entry
PUSHQ $16 // arg size
CALL sys·newproc(SB)
+ POPQ AX
+ POPQ AX
+
+ // start this M
CALL mstart(SB)
- POPQ AX
- POPQ AX
CALL notok(SB) // never returns
RET
@@ -52,6 +53,10 @@
CALL main·init_function(SB)
CALL initdone(SB)
CALL main·main(SB)
+ PUSHQ $0
+ CALL sys·exit(SB)
+ POPQ AX
+ CALL notok(SB)
RET
TEXT sys·breakpoint(SB),7,$0