]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix TestGdbPythonCgo failure with ld.gold
authorDaniel Martí <mvdan@mvdan.cc>
Thu, 9 Aug 2018 16:25:13 +0000 (17:25 +0100)
committerDaniel Martí <mvdan@mvdan.cc>
Thu, 9 Aug 2018 22:15:04 +0000 (22:15 +0000)
See the added comment for the reasoning behind the workaround.

Fixes #26868.

Change-Id: Idede020ec88a49595dc233d9a1346b12691186f4
Reviewed-on: https://go-review.googlesource.com/128815
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/runtime/runtime-gdb_test.go

index 4733efba6d85606e3080ee275f07731298c8c0c5..d9c6f6d22a24b7780a32f9271730ba16f1a7342a 100644 (file)
@@ -162,7 +162,22 @@ func testGdbPython(t *testing.T, cgo bool) {
        args := []string{"-nx", "-q", "--batch",
                "-iex", "add-auto-load-safe-path " + filepath.Join(runtime.GOROOT(), "src", "runtime"),
                "-ex", "set startup-with-shell off",
-               "-ex", "info auto-load python-scripts",
+       }
+       if cgo {
+               // When we build the cgo version of the program, the system's
+               // linker is used. Some external linkers, like GNU gold,
+               // compress the .debug_gdb_scripts into .zdebug_gdb_scripts.
+               // Until gold and gdb can work together, temporarily load the
+               // python script directly.
+               args = append(args,
+                       "-ex", "source "+filepath.Join(runtime.GOROOT(), "src", "runtime", "runtime-gdb.py"),
+               )
+       } else {
+               args = append(args,
+                       "-ex", "info auto-load python-scripts",
+               )
+       }
+       args = append(args,
                "-ex", "set python print-stack full",
                "-ex", "br fmt.Println",
                "-ex", "run",
@@ -193,7 +208,7 @@ func testGdbPython(t *testing.T, cgo bool) {
                "-ex", "goroutine 1 bt",
                "-ex", "echo END\n",
                filepath.Join(dir, "a.exe"),
-       }
+       )
        got, _ := exec.Command("gdb", args...).CombinedOutput()
        t.Logf("gdb output: %s\n", got)