aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/objdump
diff options
context:
space:
mode:
authorWei Xiao <wei.xiao@arm.com>2017-05-09 16:25:13 +0800
committerCherry Zhang <cherryyz@google.com>2017-05-16 12:26:10 +0000
commitb2363ee9f6c37f0c0ac0dd6b992c0de54c7d40f5 (patch)
tree750af645f80267a406f1e188a4ee62805260f94d /src/cmd/objdump
parent5088b64b07f7e8e93e3cdd3bd438c3b7e696eeae (diff)
downloadgo-b2363ee9f6c37f0c0ac0dd6b992c0de54c7d40f5.tar.gz
go-b2363ee9f6c37f0c0ac0dd6b992c0de54c7d40f5.zip
cmd/internal/objabi: fix the bug of shrinking SymType down to a uint8
Previous CL (cmd/internal/objabi: shrink SymType down to a uint8) shrinks SymType down to a uint8 but forgot making according change in goobj. Fixes #20296 Also add a test to catch such Goobj format inconsistency bug Change-Id: Ib43dd7122cfcacf611a643814e95f8c5a924941f Reviewed-on: https://go-review.googlesource.com/42971 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com> Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/cmd/objdump')
-rw-r--r--src/cmd/objdump/objdump_test.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/cmd/objdump/objdump_test.go b/src/cmd/objdump/objdump_test.go
index 91adde3eb3..47e51df339 100644
--- a/src/cmd/objdump/objdump_test.go
+++ b/src/cmd/objdump/objdump_test.go
@@ -201,3 +201,50 @@ func TestDisasmExtld(t *testing.T) {
}
testDisasm(t, false, "-ldflags=-linkmode=external")
}
+
+func TestDisasmGoobj(t *testing.T) {
+ switch runtime.GOARCH {
+ case "arm":
+ t.Skipf("skipping on %s, issue 19811", runtime.GOARCH)
+ case "arm64":
+ t.Skipf("skipping on %s, issue 10106", runtime.GOARCH)
+ case "mips", "mipsle", "mips64", "mips64le":
+ t.Skipf("skipping on %s, issue 12559", runtime.GOARCH)
+ case "s390x":
+ t.Skipf("skipping on %s, issue 15255", runtime.GOARCH)
+ }
+
+ hello := filepath.Join(tmp, "hello.o")
+ args := []string{"tool", "compile", "-o", hello}
+ args = append(args, "testdata/fmthello.go")
+ out, err := exec.Command(testenv.GoToolPath(t), args...).CombinedOutput()
+ if err != nil {
+ t.Fatalf("go tool compile fmthello.go: %v\n%s", err, out)
+ }
+ need := []string{
+ "main(SB)",
+ "fmthello.go:6",
+ }
+
+ args = []string{
+ "-s", "main",
+ hello,
+ }
+
+ out, err = exec.Command(exe, args...).CombinedOutput()
+ if err != nil {
+ t.Fatalf("objdump fmthello.o: %v\n%s", err, out)
+ }
+
+ text := string(out)
+ ok := true
+ for _, s := range need {
+ if !strings.Contains(text, s) {
+ t.Errorf("disassembly missing '%s'", s)
+ ok = false
+ }
+ }
+ if !ok {
+ t.Logf("full disassembly:\n%s", text)
+ }
+}