]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/ld: restore .debug_gdb_script section after runtime reorganization
authorShenghou Ma <minux@golang.org>
Fri, 16 Jan 2015 06:23:56 +0000 (01:23 -0500)
committerMinux Ma <minux@golang.org>
Fri, 6 Feb 2015 19:21:59 +0000 (19:21 +0000)
On some systems, gdb refuses to load Python plugin from arbitrary
paths, so we have to add $GOROOT/src/runtime to auto-load-safe-path
in the gdb script test.

Change-Id: Icc44baab8d04a65bd21ceac2ab8ddb13c8d083e8
Reviewed-on: https://go-review.googlesource.com/2905
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
src/cmd/ld/dwarf.c
src/runtime/runtime-gdb_test.go

index 061171ea0b12b47acd0c9abdd1b852404dc58679..fad35fa75de4e8dc8e318f32c41bc44754d678cb 100644 (file)
@@ -1414,7 +1414,7 @@ movetomodule(DWDie *parent)
        die->link = parent->child;
 }
 
-// If the pcln table contains runtime/string.goc, use that to set gdbscript path.
+// If the pcln table contains runtime/runtime.go, use that to set gdbscript path.
 static void
 finddebugruntimepath(LSym *s)
 {
@@ -1427,7 +1427,7 @@ finddebugruntimepath(LSym *s)
 
        for(i=0; i<s->pcln->nfile; i++) {
                f = s->pcln->file[i];
-               if((p = strstr(f->name, "runtime/string.goc")) != nil) {
+               if((p = strstr(f->name, "runtime/runtime.go")) != nil) {
                        *p = '\0';
                        snprint(gdbscript, sizeof gdbscript, "%sruntime/runtime-gdb.py", f->name);
                        *p = 'r';
index 4a74dd372a87bf47f2625a8ff01c33b17df9d542..7540fbfabc43a5d9b658bd1535759f96ff9b5074 100644 (file)
@@ -1,21 +1,23 @@
 package runtime_test
 
 import (
+       "fmt"
        "io/ioutil"
        "os"
        "os/exec"
        "path/filepath"
+       "runtime"
        "testing"
 )
 
 func checkGdbPython(t *testing.T) {
-       cmd := exec.Command("gdb", "-nx", "-q", "--batch", "-ex", "python import sys; print('golang gdb python support')")
+       cmd := exec.Command("gdb", "-nx", "-q", "--batch", "-ex", "python import sys; print('go gdb python support')")
        out, err := cmd.CombinedOutput()
 
        if err != nil {
-               t.Skipf("skipping due to issue running gdb%v", err)
+               t.Skipf("skipping due to issue running gdb%v", err)
        }
-       if string(out) != "golang gdb python support\n" {
+       if string(out) != "go gdb python support\n" {
                t.Skipf("skipping due to lack of python gdb support: %s", out)
        }
 }
@@ -29,7 +31,6 @@ func main() {
 `
 
 func TestGdbLoadRuntimeSupport(t *testing.T) {
-
        checkGdbPython(t)
 
        dir, err := ioutil.TempDir("", "go-build")
@@ -51,7 +52,8 @@ func TestGdbLoadRuntimeSupport(t *testing.T) {
                t.Fatalf("building source %v\n%s", err, out)
        }
 
-       got, _ := exec.Command("gdb", "-nx", "-q", "--batch", "-ex", "source runtime-gdb.py",
+       got, _ := exec.Command("gdb", "-nx", "-q", "--batch", "-iex",
+               fmt.Sprintf("add-auto-load-safe-path %s/src/runtime", runtime.GOROOT()),
                filepath.Join(dir, "a.exe")).CombinedOutput()
        if string(got) != "Loading Go Runtime support.\n" {
                t.Fatalf("%s", got)