aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/objdump
diff options
context:
space:
mode:
authorAlex Brainman <alex.brainman@gmail.com>2014-05-15 12:44:29 +1000
committerAlex Brainman <alex.brainman@gmail.com>2014-05-15 12:44:29 +1000
commit6c7bef551b32c2f7f2371b21cc8d51d807737ef3 (patch)
tree231e1dabafb2338c1469436c0230d246cb558bd5 /src/cmd/objdump
parent8e22903b46aadd6eda937417cba86b528cba92e2 (diff)
downloadgo-6c7bef551b32c2f7f2371b21cc8d51d807737ef3.tar.xz
cmd/addr2line, cmd/objdump: fix pe text section starting address
fixes windows build LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/97500043
Diffstat (limited to 'src/cmd/objdump')
-rw-r--r--src/cmd/objdump/main.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/cmd/objdump/main.go b/src/cmd/objdump/main.go
index 1b6b3d0fc4..fb79ba3a2a 100644
--- a/src/cmd/objdump/main.go
+++ b/src/cmd/objdump/main.go
@@ -318,8 +318,17 @@ func loadTables(f *os.File) (textStart uint64, textData, symtab, pclntab []byte,
}
if obj, err := pe.NewFile(f); err == nil {
+ var imageBase uint64
+ switch oh := obj.OptionalHeader.(type) {
+ case *pe.OptionalHeader32:
+ imageBase = uint64(oh.ImageBase)
+ case *pe.OptionalHeader64:
+ imageBase = oh.ImageBase
+ default:
+ return 0, nil, nil, nil, fmt.Errorf("pe file format not recognized")
+ }
if sect := obj.Section(".text"); sect != nil {
- textStart = uint64(sect.VirtualAddress)
+ textStart = imageBase + uint64(sect.VirtualAddress)
textData, _ = sect.Data()
}
if pclntab, err = loadPETable(obj, "pclntab", "epclntab"); err != nil {