Commit 1b5b08d1 authored by Clément Chigot's avatar Clément Chigot Committed by Ian Lance Taylor

cmd/nm: fix cgo tests for aix/ppc64

This commit handles AIX cgo in cmd/nm tests.

Change-Id: I6753a0102e4f2c4c7bd4d7c999f62a0cb3d2183c
Reviewed-on: https://go-review.googlesource.com/c/go/+/164017
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
parent b41eef24
...@@ -20,6 +20,8 @@ func canInternalLink() bool { ...@@ -20,6 +20,8 @@ func canInternalLink() bool {
case "arm64", "mips64", "mips64le", "mips", "mipsle", "ppc64", "ppc64le": case "arm64", "mips64", "mips64le", "mips", "mipsle", "ppc64", "ppc64le":
return false return false
} }
case "aix":
return false
} }
return true return true
} }
......
...@@ -136,6 +136,11 @@ func testGoExec(t *testing.T, iscgo, isexternallinker bool) { ...@@ -136,6 +136,11 @@ func testGoExec(t *testing.T, iscgo, isexternallinker bool) {
"runtime.noptrdata": "D", "runtime.noptrdata": "D",
} }
if runtime.GOOS == "aix" && iscgo {
// pclntab is moved to .data section on AIX.
runtimeSyms["runtime.epclntab"] = "D"
}
out, err = exec.Command(testnmpath, exe).CombinedOutput() out, err = exec.Command(testnmpath, exe).CombinedOutput()
if err != nil { if err != nil {
t.Fatalf("go tool nm: %v\n%s", err, string(out)) t.Fatalf("go tool nm: %v\n%s", err, string(out))
...@@ -146,7 +151,10 @@ func testGoExec(t *testing.T, iscgo, isexternallinker bool) { ...@@ -146,7 +151,10 @@ func testGoExec(t *testing.T, iscgo, isexternallinker bool) {
// On AIX, .data and .bss addresses are changed by the loader. // On AIX, .data and .bss addresses are changed by the loader.
// Therefore, the values returned by the exec aren't the same // Therefore, the values returned by the exec aren't the same
// than the ones inside the symbol table. // than the ones inside the symbol table.
// In case of cgo, .text symbols are also changed.
switch code { switch code {
case "T", "t", "R", "r":
return iscgo
case "D", "d", "B", "b": case "D", "d", "B", "b":
return true return true
} }
...@@ -267,6 +275,9 @@ func testGoLib(t *testing.T, iscgo bool) { ...@@ -267,6 +275,9 @@ func testGoLib(t *testing.T, iscgo bool) {
if runtime.GOOS == "darwin" || (runtime.GOOS == "windows" && runtime.GOARCH == "386") { if runtime.GOOS == "darwin" || (runtime.GOOS == "windows" && runtime.GOARCH == "386") {
syms = append(syms, symType{"D", "_cgodata", true, false}) syms = append(syms, symType{"D", "_cgodata", true, false})
syms = append(syms, symType{"T", "_cgofunc", true, false}) syms = append(syms, symType{"T", "_cgofunc", true, false})
} else if runtime.GOOS == "aix" {
syms = append(syms, symType{"D", "cgodata", true, false})
syms = append(syms, symType{"T", ".cgofunc", true, false})
} else { } else {
syms = append(syms, symType{"D", "cgodata", true, false}) syms = append(syms, symType{"D", "cgodata", true, false})
syms = append(syms, symType{"T", "cgofunc", true, false}) syms = append(syms, symType{"T", "cgofunc", true, false})
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment