diff options
author | Cherry Zhang <cherryyz@google.com> | 2021-04-29 21:49:15 -0400 |
---|---|---|
committer | Cherry Zhang <cherryyz@google.com> | 2021-04-30 16:53:35 +0000 |
commit | 89bf297b2486adaaff04be154a066ea9f5e63994 (patch) | |
tree | 963fcadec69c72502ec012864304b7e78eb530d5 /src/cmd/objdump | |
parent | a893682d83760a9f9bb6f5d543b907ee6467cc6e (diff) | |
download | go-89bf297b2486adaaff04be154a066ea9f5e63994.tar.gz go-89bf297b2486adaaff04be154a066ea9f5e63994.zip |
cmd/internal/objfile: emit better error for Go object of a different version
The Go object file format can change from version to version.
Tools like cmd/objdump and cmd/nm only onderstand the current
version of the object file. Currently, when it encounters an
object built with a different version of the toolchain, it emits
a generic error "unrecognized object file", which is not very
helpful for users. This CL makes it emit a clearer error. Now it
emits
objdump: open go116.o: go object of a different version: go116ld
Change-Id: I063c6078ed1da78f97cea65796779ae093a1a8cb
Reviewed-on: https://go-review.googlesource.com/c/go/+/315609
Trust: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
Diffstat (limited to 'src/cmd/objdump')
-rw-r--r-- | src/cmd/objdump/objdump_test.go | 15 | ||||
-rw-r--r-- | src/cmd/objdump/testdata/go116.o | bin | 0 -> 478 bytes |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/cmd/objdump/objdump_test.go b/src/cmd/objdump/objdump_test.go index ac184441ea..f231a7c6e0 100644 --- a/src/cmd/objdump/objdump_test.go +++ b/src/cmd/objdump/objdump_test.go @@ -345,3 +345,18 @@ func TestGoobjFileNumber(t *testing.T) { t.Logf("output:\n%s", text) } } + +func TestGoObjOtherVersion(t *testing.T) { + testenv.MustHaveExec(t) + t.Parallel() + + obj := filepath.Join("testdata", "go116.o") + cmd := exec.Command(exe, obj) + out, err := cmd.CombinedOutput() + if err == nil { + t.Fatalf("objdump go116.o succeeded unexpectly") + } + if !strings.Contains(string(out), "go object of a different version") { + t.Errorf("unexpected error message:\n%s", out) + } +} diff --git a/src/cmd/objdump/testdata/go116.o b/src/cmd/objdump/testdata/go116.o Binary files differnew file mode 100644 index 0000000000..6434d5c8cf --- /dev/null +++ b/src/cmd/objdump/testdata/go116.o |