diff options
| author | Alberto Donizetti <alb.donizetti@gmail.com> | 2017-06-20 18:54:22 +0000 |
|---|---|---|
| committer | Alberto Donizetti <alb.donizetti@gmail.com> | 2017-06-20 19:46:11 +0000 |
| commit | 5a5ac34133f31eedf39e0cc6bef06085190317d2 (patch) | |
| tree | 977ce2134e96a56575d1c177e253dc91ea755d60 /src/cmd/vendor/github.com/google/pprof/internal/elfexec | |
| parent | 3d13b5e00c9bc065d83e27d787a64adc683cea02 (diff) | |
| download | go-5a5ac34133f31eedf39e0cc6bef06085190317d2.tar.xz | |
Revert "cmd/vendor/github.com/google/pprof: refresh from upstream"
This reverts commit 3d13b5e00c9bc065d83e27d787a64adc683cea02.
Reason for revert: the new TestHttpsInsecure test breaks two darwin builders, the android builders, and one plan9 builder.
Change-Id: I09158e7d1bd2b3ffda57e7f2350f34eb9b62e784
Reviewed-on: https://go-review.googlesource.com/46158
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/vendor/github.com/google/pprof/internal/elfexec')
| -rw-r--r-- | src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec.go | 25 | ||||
| -rw-r--r-- | src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec_test.go | 3 |
2 files changed, 11 insertions, 17 deletions
diff --git a/src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec.go b/src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec.go index 9b238c5b87..c46272e8fc 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec.go @@ -131,7 +131,7 @@ func GetBuildID(binary io.ReaderAt) ([]byte, error) { if buildID == nil { buildID = note.Desc } else { - return nil, fmt.Errorf("multiple build ids found, don't know which to use") + return nil, fmt.Errorf("multiple build ids found, don't know which to use!") } } } @@ -240,22 +240,17 @@ func GetBase(fh *elf.FileHeader, loadSegment *elf.ProgHeader, stextOffset *uint6 } return start, nil case elf.ET_DYN: - // The process mapping information, start = start of virtual address range, - // and offset = offset in the executable file of the start address, tells us - // that a runtime virtual address x maps to a file offset - // fx = x - start + offset. + if offset != 0 { + if loadSegment == nil || loadSegment.Vaddr == 0 { + return start - offset, nil + } + return 0, fmt.Errorf("Don't know how to handle mapping. Offset=%x, vaddr=%x", + offset, loadSegment.Vaddr) + } if loadSegment == nil { - return start - offset, nil + return start, nil } - // The program header, if not nil, indicates the offset in the file where - // the executable segment is located (loadSegment.Off), and the base virtual - // address where the first byte of the segment is loaded - // (loadSegment.Vaddr). A file offset fx maps to a virtual (symbol) address - // sx = fx - loadSegment.Off + loadSegment.Vaddr. - // - // Thus, a runtime virtual address x maps to a symbol address - // sx = x - start + offset - loadSegment.Off + loadSegment.Vaddr. - return start - offset + loadSegment.Off - loadSegment.Vaddr, nil + return start - loadSegment.Vaddr, nil } return 0, fmt.Errorf("Don't know how to handle FileHeader.Type %v", fh.Type) } diff --git a/src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec_test.go b/src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec_test.go index c6b8fe4c22..b9f2a841a6 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec_test.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/elfexec/elfexec_test.go @@ -62,9 +62,8 @@ func TestGetBase(t *testing.T) { {"exec chromeos kernel 4", fhExec, kernelHeader, uint64p(0xffffffff81200198), 0x198, 0x100000, 0, 0x7ee00000, false}, {"exec chromeos kernel unremapped", fhExec, kernelHeader, uint64p(0xffffffff810001c8), 0xffffffff834001c8, 0xffffffffc0000000, 0xffffffff834001c8, 0x2400000, false}, {"dyn", fhDyn, nil, nil, 0x200000, 0x300000, 0, 0x200000, false}, - {"dyn map", fhDyn, lsOffset, nil, 0x0, 0x300000, 0, 0xFFFFFFFFFFE00000, false}, + {"dyn offset", fhDyn, lsOffset, nil, 0x0, 0x300000, 0, 0xFFFFFFFFFFC00000, false}, {"dyn nomap", fhDyn, nil, nil, 0x0, 0x0, 0, 0, false}, - {"dyn map+offset", fhDyn, lsOffset, nil, 0x900000, 0xa00000, 0x200000, 0x500000, false}, {"rel", fhRel, nil, nil, 0x2000000, 0x3000000, 0, 0x2000000, false}, {"rel nomap", fhRel, nil, nil, 0x0, ^uint64(0), 0, 0, false}, {"rel offset", fhRel, nil, nil, 0x100000, 0x200000, 0x1, 0, true}, |
