diff options
| author | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-24 23:46:17 +0000 |
|---|---|---|
| committer | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-24 23:46:17 +0000 |
| commit | f97228863f84f4d7d87959ea40df40130f2ec912 (patch) | |
| tree | 9319bca77115a32f6a0b5e8bcd651465b14c76da /libgo/go/debug | |
| parent | d304b9e1af728d54ec16155c3d2116dc398c33c6 (diff) | |
| download | ppe42-gcc-f97228863f84f4d7d87959ea40df40130f2ec912.tar.gz ppe42-gcc-f97228863f84f4d7d87959ea40df40130f2ec912.zip | |
Update to current version of Go library.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171427 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgo/go/debug')
| -rw-r--r-- | libgo/go/debug/proc/proc_darwin.go | 2 | ||||
| -rw-r--r-- | libgo/go/debug/proc/proc_freebsd.go | 2 | ||||
| -rw-r--r-- | libgo/go/debug/proc/proc_linux.go | 18 | ||||
| -rw-r--r-- | libgo/go/debug/proc/proc_windows.go | 2 |
4 files changed, 15 insertions, 9 deletions
diff --git a/libgo/go/debug/proc/proc_darwin.go b/libgo/go/debug/proc/proc_darwin.go index 7caf3a21a4f..49f0a5361fb 100644 --- a/libgo/go/debug/proc/proc_darwin.go +++ b/libgo/go/debug/proc/proc_darwin.go @@ -12,6 +12,6 @@ func Attach(pid int) (Process, os.Error) { return nil, os.NewError("debug/proc not implemented on OS X") } -func ForkExec(argv0 string, argv []string, envv []string, dir string, fd []*os.File) (Process, os.Error) { +func StartProcess(argv0 string, argv []string, attr *os.ProcAttr) (Process, os.Error) { return Attach(0) } diff --git a/libgo/go/debug/proc/proc_freebsd.go b/libgo/go/debug/proc/proc_freebsd.go index f6474ce80ca..4df07c365af 100644 --- a/libgo/go/debug/proc/proc_freebsd.go +++ b/libgo/go/debug/proc/proc_freebsd.go @@ -12,6 +12,6 @@ func Attach(pid int) (Process, os.Error) { return nil, os.NewError("debug/proc not implemented on FreeBSD") } -func ForkExec(argv0 string, argv []string, envv []string, dir string, fd []*os.File) (Process, os.Error) { +func StartProcess(argv0 string, argv []string, attr *os.ProcAttr) (Process, os.Error) { return Attach(0) } diff --git a/libgo/go/debug/proc/proc_linux.go b/libgo/go/debug/proc/proc_linux.go index f0cc43a108e..6890a2221ef 100644 --- a/libgo/go/debug/proc/proc_linux.go +++ b/libgo/go/debug/proc/proc_linux.go @@ -1279,25 +1279,31 @@ func Attach(pid int) (Process, os.Error) { return p, nil } -// ForkExec forks the current process and execs argv0, stopping the -// new process after the exec syscall. See os.ForkExec for additional +// StartProcess forks the current process and execs argv0, stopping the +// new process after the exec syscall. See os.StartProcess for additional // details. -func ForkExec(argv0 string, argv []string, envv []string, dir string, fd []*os.File) (Process, os.Error) { +func StartProcess(argv0 string, argv []string, attr *os.ProcAttr) (Process, os.Error) { + sysattr := &syscall.ProcAttr{ + Dir: attr.Dir, + Env: attr.Env, + Ptrace: true, + } p := newProcess(-1) // Create array of integer (system) fds. - intfd := make([]int, len(fd)) - for i, f := range fd { + intfd := make([]int, len(attr.Files)) + for i, f := range attr.Files { if f == nil { intfd[i] = -1 } else { intfd[i] = f.Fd() } } + sysattr.Files = intfd // Fork from the monitor thread so we get the right tracer pid. err := p.do(func() os.Error { - pid, errno := syscall.PtraceForkExec(argv0, argv, envv, dir, intfd) + pid, _, errno := syscall.StartProcess(argv0, argv, sysattr) if errno != 0 { return &os.PathError{"fork/exec", argv0, os.Errno(errno)} } diff --git a/libgo/go/debug/proc/proc_windows.go b/libgo/go/debug/proc/proc_windows.go index dc22faef81b..661474b67aa 100644 --- a/libgo/go/debug/proc/proc_windows.go +++ b/libgo/go/debug/proc/proc_windows.go @@ -12,6 +12,6 @@ func Attach(pid int) (Process, os.Error) { return nil, os.NewError("debug/proc not implemented on windows") } -func ForkExec(argv0 string, argv []string, envv []string, dir string, fd []*os.File) (Process, os.Error) { +func StartProcess(argv0 string, argv []string, attr *os.ProcAttr) (Process, os.Error) { return Attach(0) } |

