var opts options
        opts, args = parseArgs(args)
 
-       // Pass the suffix for the current working directory as the
-       // first argument to the test. For iOS, cmd/go generates
-       // special handling of this argument.
-       args = append([]string{"cwdSuffix=" + pkgpath}, args...)
-
        // ios-deploy invokes lldb to give us a shell session with the app.
        s, err := newSession(appdir, args, opts)
        if err != nil {
 
        s.doCmd("run", "stop reason = signal SIGUSR2", 20*time.Second)
 
+       // Move the current working directory into the faux gopath.
+       if pkgpath != "src" {
+               s.do(`breakpoint delete 1`)
+               s.do(`expr char* $mem = (char*)malloc(512)`)
+               s.do(`expr $mem = (char*)getwd($mem, 512)`)
+               s.do(`expr $mem = (char*)strcat($mem, "/` + pkgpath + `")`)
+               s.do(`call (void)chdir($mem)`)
+       }
+
        startTestsLen := s.out.Len()
        fmt.Fprintln(s.in, `process continue`)
 
 
 func main() {
 {{if .IsIOS}}
        // Send a SIGUSR2, which will be intercepted by LLDB to
-       // tell the test harness that installation was successful.
-       // See misc/ios/go_darwin_arm_exec.go.
+       // tell the test harness that installation was successful,
+       // and to give the exec script a chance set the current
+       // working directory. See misc/ios/go_darwin_arm_exec.go.
        signal.Notify(make(chan os.Signal), syscall.SIGUSR2)
        syscall.Kill(0, syscall.SIGUSR2)
        signal.Reset(syscall.SIGUSR2)
-
-       // The first argument supplied to an iOS test is an offset
-       // suffix for the current working directory.
-       // Process it here, and remove it from os.Args.
-       const hdr = "cwdSuffix="
-       if len(os.Args) < 2 || len(os.Args[1]) <= len(hdr) || os.Args[1][:len(hdr)] != hdr {
-               panic("iOS test not passed a working directory suffix")
-       }
-       suffix := os.Args[1][len(hdr):]
-       dir, err := os.Getwd()
-       if err != nil {
-               panic(err)
-       }
-       if err := os.Chdir(dir + "/" + suffix); err != nil {
-               panic(err)
-       }
-       os.Args = append([]string{os.Args[0]}, os.Args[2:]...)
 {{end}}
 
 {{if .CoverEnabled}}