parent
5cd2ac1d49
commit
135330cbb2
13
_fixtures/issue877.go
Normal file
13
_fixtures/issue877.go
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"runtime"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
dyldenv := os.Getenv("DYLD_LIBRARY_PATH")
|
||||||
|
runtime.Breakpoint()
|
||||||
|
fmt.Println(dyldenv)
|
||||||
|
}
|
@ -334,6 +334,20 @@ const debugserverExecutable = "/Library/Developer/CommandLineTools/Library/Priva
|
|||||||
|
|
||||||
var ErrUnsupportedOS = errors.New("lldb backend not supported on windows")
|
var ErrUnsupportedOS = errors.New("lldb backend not supported on windows")
|
||||||
|
|
||||||
|
func getLdEnvVars() []string {
|
||||||
|
var result []string
|
||||||
|
|
||||||
|
environ := os.Environ()
|
||||||
|
for i := 0; i < len(environ); i++ {
|
||||||
|
if strings.HasPrefix(environ[i], "LD_") ||
|
||||||
|
strings.HasPrefix(environ[i], "DYLD_") {
|
||||||
|
result = append(result, "-e", environ[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
// LLDBLaunch starts an instance of lldb-server and connects to it, asking
|
// LLDBLaunch starts an instance of lldb-server and connects to it, asking
|
||||||
// it to launch the specified target program with the specified arguments
|
// it to launch the specified target program with the specified arguments
|
||||||
// (cmd) on the specified directory wd.
|
// (cmd) on the specified directory wd.
|
||||||
@ -358,7 +372,9 @@ func LLDBLaunch(cmd []string, wd string) (*Process, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
args := make([]string, 0, len(cmd)+4)
|
ldEnvVars := getLdEnvVars()
|
||||||
|
args := make([]string, 0, len(cmd)+4+len(ldEnvVars))
|
||||||
|
args = append(args, ldEnvVars...)
|
||||||
args = append(args, "-F", "-R", fmt.Sprintf("127.0.0.1:%d", listener.Addr().(*net.TCPAddr).Port), "--")
|
args = append(args, "-F", "-R", fmt.Sprintf("127.0.0.1:%d", listener.Addr().(*net.TCPAddr).Port), "--")
|
||||||
args = append(args, cmd...)
|
args = append(args, cmd...)
|
||||||
|
|
||||||
|
@ -2934,3 +2934,23 @@ func TestRecursiveNext(t *testing.T) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestIssue877 ensures that the environment variables starting with DYLD_ and LD_
|
||||||
|
// are passed when executing the binary on OSX via debugserver
|
||||||
|
func TestIssue877(t *testing.T) {
|
||||||
|
if runtime.GOOS != "darwin" && testBackend == "lldb" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const envval = "/usr/local/lib"
|
||||||
|
os.Setenv("DYLD_LIBRARY_PATH", envval)
|
||||||
|
withTestProcess("issue877", t, func(p proc.Process, fixture protest.Fixture) {
|
||||||
|
assertNoError(proc.Continue(p), t, "Continue()")
|
||||||
|
v, err := evalVariable(p, "dyldenv")
|
||||||
|
assertNoError(err, t, "EvalVariable()")
|
||||||
|
vv := constant.StringVal(v.Value)
|
||||||
|
t.Logf("v = %q", vv)
|
||||||
|
if vv != envval {
|
||||||
|
t.Fatalf("value of v is %q (expected %q)", vv, envval)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user