mirror of
https://github.com/golang/go
synced 2024-11-11 21:20:21 -07:00
runtime: fix runtime-gdb script loading
runtime.rtype was a copy of reflect.rtype - update script to use that directly. Introduces a basic test which will skip on systems without appropriate GDB. Fixes #9326 Change-Id: I6ec74e947bd2e1295492ca34b3a8c1b49315a8cb Reviewed-on: https://go-review.googlesource.com/2821 Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
7785be8f22
commit
a25af2e99e
@ -202,7 +202,7 @@ def lookup_type(name):
|
||||
except gdb.error:
|
||||
pass
|
||||
|
||||
_rctp_type = gdb.lookup_type("struct runtime.rtype").pointer()
|
||||
_rctp_type = gdb.lookup_type("struct reflect.rtype").pointer()
|
||||
|
||||
|
||||
def iface_commontype(obj):
|
||||
|
59
src/runtime/runtime-gdb_test.go
Normal file
59
src/runtime/runtime-gdb_test.go
Normal file
@ -0,0 +1,59 @@
|
||||
package runtime_test
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func checkGdbPython(t *testing.T) {
|
||||
cmd := exec.Command("gdb", "-nx", "-q", "--batch", "-ex", "python import sys; print('golang gdb python support')")
|
||||
out, err := cmd.CombinedOutput()
|
||||
|
||||
if err != nil {
|
||||
t.Skipf("skipping due to issue running gdb%v", err)
|
||||
}
|
||||
if string(out) != "golang gdb python support\n" {
|
||||
t.Skipf("skipping due to lack of python gdb support: %s", out)
|
||||
}
|
||||
}
|
||||
|
||||
const helloSource = `
|
||||
package main
|
||||
import "fmt"
|
||||
func main() {
|
||||
fmt.Println("hi")
|
||||
}
|
||||
`
|
||||
|
||||
func TestGdbLoadRuntimeSupport(t *testing.T) {
|
||||
|
||||
checkGdbPython(t)
|
||||
|
||||
dir, err := ioutil.TempDir("", "go-build")
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create temp directory: %v", err)
|
||||
}
|
||||
defer os.RemoveAll(dir)
|
||||
|
||||
src := filepath.Join(dir, "main.go")
|
||||
err = ioutil.WriteFile(src, []byte(helloSource), 0644)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create file: %v", err)
|
||||
}
|
||||
|
||||
cmd := exec.Command("go", "build", "-o", "a.exe")
|
||||
cmd.Dir = dir
|
||||
out, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
t.Fatalf("building source %v\n%s", err, out)
|
||||
}
|
||||
|
||||
got, _ := exec.Command("gdb", "-nx", "-q", "--batch", "-ex", "source runtime-gdb.py",
|
||||
filepath.Join(dir, "a.exe")).CombinedOutput()
|
||||
if string(got) != "Loading Go Runtime support.\n" {
|
||||
t.Fatalf("%s", got)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user