diff options
author | Wei Xiao <wei.xiao@arm.com> | 2017-05-09 16:25:13 +0800 |
---|---|---|
committer | Cherry Zhang <cherryyz@google.com> | 2017-05-16 12:26:10 +0000 |
commit | b2363ee9f6c37f0c0ac0dd6b992c0de54c7d40f5 (patch) | |
tree | 750af645f80267a406f1e188a4ee62805260f94d /src/cmd/objdump | |
parent | 5088b64b07f7e8e93e3cdd3bd438c3b7e696eeae (diff) | |
download | go-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.go | 47 |
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) + } +} |