aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/os/proc.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/os/proc.go')
-rw-r--r--libgo/go/os/proc.go14
1 files changed, 11 insertions, 3 deletions
diff --git a/libgo/go/os/proc.go b/libgo/go/os/proc.go
index 774f099..33a8b26 100644
--- a/libgo/go/os/proc.go
+++ b/libgo/go/os/proc.go
@@ -44,6 +44,14 @@ func Getgroups() ([]int, error) {
// Exit causes the current program to exit with the given status code.
// Conventionally, code zero indicates success, non-zero an error.
-// The program terminates immediately; deferred functions are
-// not run.
-func Exit(code int) { syscall.Exit(code) }
+// The program terminates immediately; deferred functions are not run.
+func Exit(code int) {
+ if code == 0 {
+ // Give race detector a chance to fail the program.
+ // Racy programs do not have the right to finish successfully.
+ runtime_beforeExit()
+ }
+ syscall.Exit(code)
+}
+
+func runtime_beforeExit() // implemented in runtime