aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils.go
diff options
context:
space:
mode:
authorDaniel Martí <mvdan@mvdan.cc>2018-04-06 22:38:48 +0100
committerBrad Fitzpatrick <bradfitz@golang.org>2018-04-06 23:03:41 +0000
commit31db81d329ddeacc4ba18671783cca5f1ddb4b9d (patch)
treeb767e593fda986a2cd5bdeb6e88cb438a19e69ed /src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils.go
parent4acb305d8bf421ccd8963faa140ce57094ce36ae (diff)
downloadgo-31db81d329ddeacc4ba18671783cca5f1ddb4b9d.tar.xz
cmd/vendor/.../pprof: update to 0f7d9ba1
In particular, to pull a few fixes that were causing some tests to be flaky on our build dashboard. Fixes #24405. Fixes #24508. Fixes #24611. Change-Id: I713156ad11c924e4a4b603144d10395523d526ed Reviewed-on: https://go-review.googlesource.com/105275 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils.go')
-rw-r--r--src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils.go31
1 files changed, 28 insertions, 3 deletions
diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils.go b/src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils.go
index 390f952feb..12b6a5c4b2 100644
--- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils.go
+++ b/src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils.go
@@ -81,6 +81,26 @@ func (bu *Binutils) update(fn func(r *binrep)) {
bu.rep = r
}
+// String returns string representation of the binutils state for debug logging.
+func (bu *Binutils) String() string {
+ r := bu.get()
+ var llvmSymbolizer, addr2line, nm, objdump string
+ if r.llvmSymbolizerFound {
+ llvmSymbolizer = r.llvmSymbolizer
+ }
+ if r.addr2lineFound {
+ addr2line = r.addr2line
+ }
+ if r.nmFound {
+ nm = r.nm
+ }
+ if r.objdumpFound {
+ objdump = r.objdump
+ }
+ return fmt.Sprintf("llvm-symbolizer=%q addr2line=%q nm=%q objdump=%q fast=%t",
+ llvmSymbolizer, addr2line, nm, objdump, r.fast)
+}
+
// SetFastSymbolization sets a toggle that makes binutils use fast
// symbolization (using nm), which is much faster than addr2line but
// provides only symbol name information (no file/line).
@@ -111,6 +131,11 @@ func initTools(b *binrep, config string) {
defaultPath := paths[""]
b.llvmSymbolizer, b.llvmSymbolizerFound = findExe("llvm-symbolizer", append(paths["llvm-symbolizer"], defaultPath...))
b.addr2line, b.addr2lineFound = findExe("addr2line", append(paths["addr2line"], defaultPath...))
+ if !b.addr2lineFound {
+ // On MacOS, brew installs addr2line under gaddr2line name, so search for
+ // that if the tool is not found by its default name.
+ b.addr2line, b.addr2lineFound = findExe("gaddr2line", append(paths["addr2line"], defaultPath...))
+ }
b.nm, b.nmFound = findExe("nm", append(paths["nm"], defaultPath...))
b.objdump, b.objdumpFound = findExe("objdump", append(paths["objdump"], defaultPath...))
}
@@ -306,9 +331,9 @@ func (f *fileNM) SourceLine(addr uint64) ([]plugin.Frame, error) {
}
// fileAddr2Line implements the binutils.ObjFile interface, using
-// 'addr2line' to map addresses to symbols (with file/line number
-// information). It can be slow for large binaries with debug
-// information.
+// llvm-symbolizer, if that's available, or addr2line to map addresses to
+// symbols (with file/line number information). It can be slow for large
+// binaries with debug information.
type fileAddr2Line struct {
once sync.Once
file