]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/nm: fix cgo tests for aix/ppc64
authorClément Chigot <clement.chigot@atos.net>
Thu, 21 Feb 2019 09:50:29 +0000 (10:50 +0100)
committerIan Lance Taylor <iant@golang.org>
Wed, 20 Mar 2019 13:50:44 +0000 (13:50 +0000)
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: Ian Lance Taylor <iant@golang.org>
src/cmd/nm/nm_cgo_test.go
src/cmd/nm/nm_test.go

index 1dfdf7f21acb4938748427c4f819fcc3eb706d2f..143a297e0528e66a2a9a35637272ee815a833ee3 100644 (file)
@@ -20,6 +20,8 @@ func canInternalLink() bool {
                case "arm64", "mips64", "mips64le", "mips", "mipsle", "ppc64", "ppc64le":
                        return false
                }
+       case "aix":
+               return false
        }
        return true
 }
index 8176ddd7f458706065e33e910dd05860695f602a..e47d57d9cb3161f2d57dee97827771ad9c8b639e 100644 (file)
@@ -136,6 +136,11 @@ func testGoExec(t *testing.T, iscgo, isexternallinker bool) {
                "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()
        if err != nil {
                t.Fatalf("go tool nm: %v\n%s", err, string(out))
@@ -146,7 +151,10 @@ func testGoExec(t *testing.T, iscgo, isexternallinker bool) {
                        // On AIX, .data and .bss addresses are changed by the loader.
                        // Therefore, the values returned by the exec aren't the same
                        // than the ones inside the symbol table.
+                       // In case of cgo, .text symbols are also changed.
                        switch code {
+                       case "T", "t", "R", "r":
+                               return iscgo
                        case "D", "d", "B", "b":
                                return true
                        }
@@ -267,6 +275,9 @@ func testGoLib(t *testing.T, iscgo bool) {
                if runtime.GOOS == "darwin" || (runtime.GOOS == "windows" && runtime.GOARCH == "386") {
                        syms = append(syms, symType{"D", "_cgodata", 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 {
                        syms = append(syms, symType{"D", "cgodata", true, false})
                        syms = append(syms, symType{"T", "cgofunc", true, false})