proc/gdbserial: pass environment variables to target (#820)

debugserver requires a special option to forward the environment to the target.

Fixes #818
This commit is contained in:
Alessandro Arzilli 2017-05-04 19:46:45 +02:00 committed by Derek Parker
parent 76ce11cffb
commit f29b9edad2
3 changed files with 29 additions and 2 deletions

13
_fixtures/testenv.go Normal file

@ -0,0 +1,13 @@
package main
import (
"fmt"
"os"
"runtime"
)
func main() {
x := os.Getenv("SOMEVAR")
runtime.Breakpoint()
fmt.Printf("SOMEVAR=%s\n", x)
}

@ -313,8 +313,8 @@ func LLDBLaunch(cmd []string, wd string) (*Process, error) {
var proc *exec.Cmd
if _, err := os.Stat(debugserverExecutable); err == nil {
args := make([]string, 0, len(cmd)+1)
args = append(args, "127.0.0.1"+port)
args := make([]string, 0, len(cmd)+2)
args = append(args, "-F", "127.0.0.1"+port)
args = append(args, cmd...)
isDebugserver = true

@ -2730,3 +2730,17 @@ func TestPackageWithPathVar(t *testing.T) {
assertNoError(err, t, "EvalVariable(pkg.SomeVar.X)")
})
}
func TestEnvironment(t *testing.T) {
os.Setenv("SOMEVAR", "bah")
withTestProcess("testenv", t, func(p proc.Process, fixture protest.Fixture) {
assertNoError(proc.Continue(p), t, "Continue()")
v, err := evalVariable(p, "x")
assertNoError(err, t, "EvalVariable()")
vv := constant.StringVal(v.Value)
t.Logf("v = %q", vv)
if vv != "bah" {
t.Fatalf("value of v is %q (expected \"bah\")", vv)
}
})
}