mirror of https://github.com/golang/go.git
Currently, cmd/internal/objfile provides dissassembly routines for
various architectures, which depend on dissassemblers from x/arch.
cmd/internal/objfile is imported in tools that need dissassembly
(objdump, pprof) and tools that don't need dissassembly (nm,
addr2line). Adding/improving disassembly support for more
architectures can cause binary size increase, and for some tools
(nm, addr2line) it is not necessary.
This CL breaks out dissassembly routines to a different package,
which is only imported in tools that need dissassembly. Other
tools can depend on cmd/internal/objfile without the disassembly
code from x/arch.
This reduces binary sizes for those tools. On darwin/arm64,
old new
cmd/addr2line 4554418 3648882 -20%
cmd/addr2line (-ldflags=-w) 3464626 2641650 -24%
cmd/nm 4503874 3616722 -20%
cmd/nm (-ldflags=-w) 3430594 2609490 -24%
For #70699.
Change-Id: Ie45d5d5c5500c5f3882e8b3c4e6eb81f0d815292
Reviewed-on: https://go-review.googlesource.com/c/go/+/634916
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
|
||
|---|---|---|
| .. | ||
| testdata | ||
| README | ||
| doc.go | ||
| pprof.go | ||
| pprof_test.go | ||
| readlineui.go | ||
README
This directory is the copy of Google's pprof shipped as part of the Go distribution. The bulk of the code is vendored from github.com/google/pprof and is in ../vendor/github.com/google/pprof. Two important notes: 1. Using github.com/google/pprof directly (for example, after installing with "go get") should work with Go programs, but we cannot guarantee that. What we test is that the "go tool pprof" shipped with each Go release works with programs from that release. 2. Pprof is used inside Google for C++, Java, and Go programs. Because it was developed for that broader context, it is overgeneralized when used here for the specific use case of profiling standard Go programs. However, we've left the abstractions intact in order to share updates between our vendored copy and Google's internal one. Please do not take the level of abstraction in this program as an example to follow in your own.