Commit 324b2938 authored by Ian Lance Taylor's avatar Ian Lance Taylor Committed by Russ Cox

cmd/objdump: disassemble local text symbols

Fixes #8803.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/169720043
parent 6b54cc93
...@@ -159,7 +159,7 @@ func dump(tab *gosym.Table, lookup lookupFunc, disasm disasmFunc, goarch string, ...@@ -159,7 +159,7 @@ func dump(tab *gosym.Table, lookup lookupFunc, disasm disasmFunc, goarch string,
printed := false printed := false
for _, sym := range syms { for _, sym := range syms {
if sym.Code != 'T' || sym.Size == 0 || sym.Name == "_text" || sym.Name == "text" || sym.Addr < textStart || symRE != nil && !symRE.MatchString(sym.Name) { if (sym.Code != 'T' && sym.Code != 't') || sym.Size == 0 || sym.Name == "_text" || sym.Name == "text" || sym.Addr < textStart || symRE != nil && !symRE.MatchString(sym.Name) {
continue continue
} }
if sym.Addr >= textStart+uint64(len(textData)) || sym.Addr+uint64(sym.Size) > textStart+uint64(len(textData)) { if sym.Addr >= textStart+uint64(len(textData)) || sym.Addr+uint64(sym.Size) > textStart+uint64(len(textData)) {
......
...@@ -157,12 +157,15 @@ var armNeed = []string{ ...@@ -157,12 +157,15 @@ var armNeed = []string{
// binary for the current system (only) and test that objdump // binary for the current system (only) and test that objdump
// can handle that one. // can handle that one.
func TestDisasm(t *testing.T) { func testDisasm(t *testing.T, flags ...string) {
tmp, exe := buildObjdump(t) tmp, exe := buildObjdump(t)
defer os.RemoveAll(tmp) defer os.RemoveAll(tmp)
hello := filepath.Join(tmp, "hello.exe") hello := filepath.Join(tmp, "hello.exe")
out, err := exec.Command("go", "build", "-o", hello, "testdata/fmthello.go").CombinedOutput() args := []string{"build", "-o", hello}
args = append(args, flags...)
args = append(args, "testdata/fmthello.go")
out, err := exec.Command("go", args...).CombinedOutput()
if err != nil { if err != nil {
t.Fatalf("go build fmthello.go: %v\n%s", err, out) t.Fatalf("go build fmthello.go: %v\n%s", err, out)
} }
...@@ -194,3 +197,15 @@ func TestDisasm(t *testing.T) { ...@@ -194,3 +197,15 @@ func TestDisasm(t *testing.T) {
t.Logf("full disassembly:\n%s", text) t.Logf("full disassembly:\n%s", text)
} }
} }
func TestDisasm(t *testing.T) {
testDisasm(t)
}
func TestDisasmExtld(t *testing.T) {
switch runtime.GOOS {
case "windows":
t.Skipf("skipping on %s", runtime.GOOS)
}
testDisasm(t, "-ldflags=-linkmode=external")
}
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