From 58734039bdddbdfd3c7cd4f9fc232a75f5cef32a Mon Sep 17 00:00:00 2001 From: Hyang-Ah Hana Kim Date: Fri, 23 Mar 2018 15:00:34 +0000 Subject: [PATCH] Revert "cmd/vendor/.../pprof: refresh from upstream@a74ae6f" This reverts commit c6e69ec7f930191022f1369761a680eecc2e89f1. Reason for revert: Broke builders. #24508 Change-Id: I66abff0dd14ec6e1f8d8d982ccfb0438633b639d Reviewed-on: https://go-review.googlesource.com/102316 Reviewed-by: Hyang-Ah Hana Kim --- .../pprof/internal/binutils/addr2liner.go | 25 +++++--------- .../pprof/internal/binutils/binutils.go | 11 ++----- .../pprof/internal/binutils/binutils_test.go | 4 ++- .../internal/binutils/testdata/build_mac.sh | 31 ------------------ .../internal/binutils/testdata/exe_mac_64 | Bin 8648 -> 0 bytes .../exe_mac_64.dSYM/Contents/Info.plist | 20 ----------- .../Contents/Resources/DWARF/exe_mac_64 | Bin 8840 -> 0 bytes .../internal/binutils/testdata/lib_mac_64 | Bin 4496 -> 0 bytes .../lib_mac_64.dSYM/Contents/Info.plist | 20 ----------- .../Contents/Resources/DWARF/lib_mac_64 | Bin 8934 -> 0 bytes .../google/pprof/internal/driver/driver.go | 2 +- .../google/pprof/internal/driver/fetch.go | 3 +- .../pprof/internal/driver/interactive.go | 9 ++--- .../google/pprof/internal/elfexec/elfexec.go | 2 +- .../google/pprof/third_party/svgpan/svgpan.go | 2 +- src/cmd/vendor/vendor.json | 4 +-- 16 files changed, 23 insertions(+), 110 deletions(-) delete mode 100755 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/build_mac.sh delete mode 100755 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64 delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Info.plist delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Resources/DWARF/exe_mac_64 delete mode 100755 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64 delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Info.plist delete mode 100644 src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Resources/DWARF/lib_mac_64 diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/addr2liner.go b/src/cmd/vendor/github.com/google/pprof/internal/binutils/addr2liner.go index c0661bf4aa..71e471b5d6 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/addr2liner.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/binutils/addr2liner.go @@ -41,11 +41,9 @@ type addr2Liner struct { rw lineReaderWriter base uint64 - // nm holds an addr2Liner using nm tool. Certain versions of addr2line - // produce incomplete names due to - // https://sourceware.org/bugzilla/show_bug.cgi?id=17541. As a workaround, - // the names from nm are used when they look more complete. See addrInfo() - // code below for the exact heuristic. + // nm holds an NM based addr2Liner which can provide + // better full names compared to addr2line, which often drops + // namespaces etc. from the names it returns. nm *addr2LinerNM } @@ -217,22 +215,17 @@ func (d *addr2Liner) addrInfo(addr uint64) ([]plugin.Frame, error) { return nil, err } - // Certain versions of addr2line produce incomplete names due to - // https://sourceware.org/bugzilla/show_bug.cgi?id=17541. Attempt to replace - // the name with a better one from nm. + // Get better name from nm if possible. if len(stack) > 0 && d.nm != nil { nm, err := d.nm.addrInfo(addr) if err == nil && len(nm) > 0 { - // Last entry in frame list should match since it is non-inlined. As a - // simple heuristic, we only switch to the nm-based name if it is longer - // by 2 or more characters. We consider nm names that are longer by 1 - // character insignificant to avoid replacing foo with _foo on MacOS (for - // unknown reasons read2line produces the former and nm produces the - // latter on MacOS even though both tools are asked to produce mangled - // names). + // Last entry in frame list should match since + // it is non-inlined. As a simple heuristic, + // we only switch to the nm-based name if it + // is longer. nmName := nm[len(nm)-1].Func a2lName := stack[len(stack)-1].Func - if len(nmName) > len(a2lName)+1 { + if len(nmName) > len(a2lName) { stack[len(stack)-1].Func = nmName } } 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 94edd0711a..390f952feb 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 @@ -111,11 +111,6 @@ 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...)) } @@ -311,9 +306,9 @@ func (f *fileNM) SourceLine(addr uint64) ([]plugin.Frame, error) { } // fileAddr2Line implements the binutils.ObjFile interface, using -// 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. +// '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 diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils_test.go b/src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils_test.go index 9f11719694..0317cf5126 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils_test.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/binutils/binutils_test.go @@ -265,6 +265,8 @@ func TestObjFile(t *testing.T) { func TestMachoFiles(t *testing.T) { skipUnlessDarwinAmd64(t) + t.Skip("Disabled because of issues with addr2line (see https://github.com/google/pprof/pull/313#issuecomment-364073010)") + // Load `file`, pretending it was mapped at `start`. Then get the symbol // table. Check that it contains the symbol `sym` and that the address // `addr` gives the `expected` stack trace. @@ -289,7 +291,7 @@ func TestMachoFiles(t *testing.T) { {"lib normal mapping", "lib_mac_64", 0, math.MaxUint64, 0, 0xfa0, "_bar", []plugin.Frame{ - {Func: "bar", File: "/tmp/lib.c", Line: 5}, + {Func: "bar", File: "/tmp/lib.c", Line: 6}, }}, } { t.Run(tc.desc, func(t *testing.T) { diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/build_mac.sh b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/build_mac.sh deleted file mode 100755 index 5ec98f39b5..0000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/build_mac.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -x - -# This is a script that generates the test MacOS executables in this directory. -# It should be needed very rarely to run this script. It is mostly provided -# as a future reference on how the original binary set was created. - -set -o errexit - -cat </tmp/hello.cc -#include - -int main() { - printf("Hello, world!\n"); - return 0; -} -EOF - -cat </tmp/lib.c -int foo() { - return 1; -} - -int bar() { - return 2; -} -EOF - -cd $(dirname $0) -rm -rf exe_mac_64* lib_mac_64* -clang -g -o exe_mac_64 /tmp/hello.c -clang -g -o lib_mac_64 -dynamiclib /tmp/lib.c diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64 b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64 deleted file mode 100755 index dba1ae15817595eb443322f6ae4ce9e67e400b90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8648 zcmeHNO=}ZD7@k-^>Sxo7_|3LhsiN7m)mjm;RfAEBR;?ff8Ji|G!A(+kx7zBZQalt9 zdiLnqga5#Tf(n9y7k_|?g5E`n@p)!vo844B3c|eb?(8%3&NDO5%tChGy!r9%=PDr* zO+w5p6GF7WpDY*Rp0IEy#AbLFF6Gd`$;?RR!a3H)EfI&mMdW#pKq-eamxtpas(&(G zCp5;~#0u?Id|NaDF?C8F zt2%PRcmK#2((rt+e`wTSji)Q5bVmQimqdTYH|u!fC?C&V6xW}F!Bc0?WKNt4&#=|7 zPGH(gJsI*u=hcqqEX@Eb7`qweCSq-tCDhSRqhuVlXL}KN9m>8oA?8u8g%81LTmzl4 zYjla?x7LaNvFAZYZ9r+kIfgyyxwccv+4*TF4@}z%=RAhqy>9R6Kl=3kqlZqd>-6fK zs7u1ddW;O`bEh!tV4Ya6>ep~C)mqTbw%~kyz_b$eu`&L|Y0oc|Q^!)6M=3`(A$GyZ zf7J@syjx@HW6UUE6fg=H1&jhl0i%FXz$oyq6}Xh0`r+(0>B#6^7hRIAmp1;?rGwQf~iC*Q`O z_3Axh8*gCIlE0t%p1U6<{f_>v&3nGXtV7SF>J1Qo9Z?n0%RKrfq7~-eC}0#Y3K#{9 z0!9I&fKk9GU=%P47zK<1MuGocf!6lqc`l;0pUFOz43|0NhmpKK?;_LaCR_XE1QO8x zxXL?j{CZLd-r$uq^cqqOif9MU;o6~sQ>@~ diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Info.plist b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Info.plist deleted file mode 100644 index b6f8ea3fb7..0000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleIdentifier - com.apple.xcode.dsym.exe_mac_64 - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - dSYM - CFBundleSignature - ???? - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Resources/DWARF/exe_mac_64 b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Resources/DWARF/exe_mac_64 deleted file mode 100644 index 2cb0e3bf31e384571a684c72d0b942ba195c969c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8840 zcmeI2&u`R56vxNASsGZngx|FE;L=nI2-eGw0|}^P#ik^XmWYO*myx|YY>d3NWqTn( zNX?-Ks;Y-xbF8=^^@`M6{{bWpz4TAu(gPAFkf864-)tT4E^JTbFfW>U^W)9OQ!i1%e$ErInqVol zJa1_S+&pw0Q32q`GG(Z&XRDmYN!N*cO?lpZ;%(_gq*bu>a*T3ibE$;fa16kj^9={O}*IZeiq1w^o zx;}@*d858u#}+bJ&-bk>?oq|&-1m6A)^P%lhed-l6{6EweZ z1puGr;l9h(|9uV?7rwnT*H}<{*v#E0P4Fynk&~Sla()Le=ykn*xaa)bVt`{7k&5rPac+m9C%9Z(h{^Mw5KryfC;x>P+RZ%g1@R_nJ}*Y($;~og zetS=(_j{Rmdk;}zh*S3)ICq*DlAm9TcxryF_wa^XMmK8(v;tZIt$m zKr5gX&4c2I$+Q<#o9UtC)`I#j zu%}eqHh%M$LK#Nvmkh`lo_^s;dhhc9eojbFB(du}B-c+*LOY<%Qkn;NZ15$%>V)%4K%~?g;-qCKcB(4sH~(FIo>ob&%XYXgw6rb#*Md9WZ#+Pac@=B(#61fEb3RkMU_N2^6!lJZMP-FCzQ*g8jO{t*P4>Z7(>^ICrdzWa|}q+EvwP*E`rq_IsoIt?MFUbC-A@v*tUQtJH&y&HHPs8|JO%eTjLPiYoa| zy$l1B80X*_xeA)yX!-XM=jM>XyR+v!FrPLvEz-w)9{vzc)G@p;kEcHx_(83ezniZPfRG5g4rkvShO?M&Xv}w7vkX`UECZGS%YbFTGGH073|Iy% z1OGDvkJn#+en;W9b(G1jiiDVgYU?PJoU{7z@tNDy%aoRMqkXxiuAhJon;NOXKV@M` zL8p(^I~|$!DqXplmSGlEhglTDhS^AnUBS8U~Jr%T< i`X#^BzxCX8i(PlcDN_h9t`tfocRAmQ`iCd!d;SJVA9g|j diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Info.plist b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Info.plist deleted file mode 100644 index ad5e020468..0000000000 --- a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleIdentifier - com.apple.xcode.dsym.lib_mac_64 - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - dSYM - CFBundleSignature - ???? - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Resources/DWARF/lib_mac_64 b/src/cmd/vendor/github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Resources/DWARF/lib_mac_64 deleted file mode 100644 index e466c1342e3f5be57c4aa21e2745bcdd21b1e817..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8934 zcmeI2&rj4q6vwCgLxJJ~k|2sP)nI}~wi|y%&sdm{^t(#Tqi;(qM^%X{7t&tZPTGNOZRhOF1RlvdnT+bvPsUGiWencpkU zo2cD>dMnLG2hfmGYqyka_sen{KDj*e*3P=T{0#X5~fK)&# zAQjk+3fzLEQv?tD6y;}bAJhsw{o@g}qDRX`KPdvtnEKa1KLY2)BrAs-U>&~Wg zod^1IUCRDFa7~_IXS6q+8&)r>Q{5wQvY+lJ>D*;iWx0;wd8;-(J%2-6v4YU{Tx}>{ z$QQJMq625xgF^*y@@Izfr%w=+UXPX6=R%0q4a2e447a40Jv|JHdfATdS72wnWf<|w zj-~s4;4SGOqZPP@qnox{iEJm-BP)zbMr5!(K>bna$vb0{xX-9G7W{MrE#7-r5AVNQ z+)$r{8!BptpF1!upvApJW1>NedyFQy$U#eTe}mP=U>ts4f`+@MkUj8OLl*v2=*4*y a*5mu5_!y5n0msNM2ZkBF76&s8Z}|rxW9=pY diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/driver.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/driver.go index f4248fd8c7..c2b1cd082b 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/driver.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/driver.go @@ -138,7 +138,7 @@ func generateReport(p *profile.Profile, cmd []string, vars variables, o *plugin. // Output to specified file. o.UI.PrintErr("Generating report in ", output) - out, err := o.Writer.Open(output) + out, err := os.Create(output) if err != nil { return err } diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/fetch.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/fetch.go index ec2745f363..2b1d90dafd 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/fetch.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/fetch.go @@ -534,8 +534,7 @@ func convertPerfData(perfPath string, ui plugin.UI) (*os.File, error) { return nil, err } deferDeleteTempFile(profile.Name()) - cmd := exec.Command("perf_to_profile", "-i", perfPath, "-o", profile.Name(), "-f") - cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr + cmd := exec.Command("perf_to_profile", perfPath, profile.Name()) if err := cmd.Run(); err != nil { profile.Close() return nil, fmt.Errorf("failed to convert perf.data file. Try github.com/google/perf_data_converter: %v", err) diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/interactive.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/interactive.go index bebfbbec1e..b893697b62 100644 --- a/src/cmd/vendor/github.com/google/pprof/internal/driver/interactive.go +++ b/src/cmd/vendor/github.com/google/pprof/internal/driver/interactive.go @@ -149,14 +149,9 @@ func greetings(p *profile.Profile, ui plugin.UI) { numLabelUnits := identifyNumLabelUnits(p, ui) ropt, err := reportOptions(p, numLabelUnits, pprofVariables) if err == nil { - rpt := report.New(p, ropt) - ui.Print(strings.Join(report.ProfileLabels(rpt), "\n")) - if rpt.Total() == 0 && len(p.SampleType) > 1 { - ui.Print(`No samples were found with the default sample value type.`) - ui.Print(`Try "sample_index" command to analyze different sample values.`, "\n") - } + ui.Print(strings.Join(report.ProfileLabels(report.New(p, ropt)), "\n")) } - ui.Print(`Entering interactive mode (type "help" for commands, "o" for options)`) + ui.Print("Entering interactive mode (type \"help\" for commands, \"o\" for options)") } // shortcuts represents composite commands that expand into a sequence 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 297bb24b1c..7e42c88d14 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 @@ -218,7 +218,7 @@ func GetBase(fh *elf.FileHeader, loadSegment *elf.ProgHeader, stextOffset *uint6 // So the base should be: if stextOffset != nil && (start%pageSize) == (*stextOffset%pageSize) { // perf uses the address of _stext as start. Some tools may - // adjust for this before calling GetBase, in which case the page + // adjust for this before calling GetBase, in which case the the page // alignment should be different from that of stextOffset. return start - *stextOffset, nil } diff --git a/src/cmd/vendor/github.com/google/pprof/third_party/svgpan/svgpan.go b/src/cmd/vendor/github.com/google/pprof/third_party/svgpan/svgpan.go index 6ca08adedb..e7639a388e 100644 --- a/src/cmd/vendor/github.com/google/pprof/third_party/svgpan/svgpan.go +++ b/src/cmd/vendor/github.com/google/pprof/third_party/svgpan/svgpan.go @@ -12,7 +12,7 @@ const JSSource = ` * ====================== * * Given an unique existing element with id "viewport" (or when missing, the - * first g-element), including the library into any SVG adds the following + * first g-element), including the the library into any SVG adds the following * capabilities: * * - Mouse panning diff --git a/src/cmd/vendor/vendor.json b/src/cmd/vendor/vendor.json index 1f823fc648..2f75ee7158 100644 --- a/src/cmd/vendor/vendor.json +++ b/src/cmd/vendor/vendor.json @@ -9,8 +9,8 @@ { "canonical": "github.com/google/pprof", "local": "github.com/google/pprof", - "revision": "a74ae6fb3cd7047c79272e3ea0814b08154a2d3c", - "revisionTime": "2018-03-20T17:03:05Z" + "revision": "9e20b5b106e946f4cd1df94c1f6fe3f88456628d", + "revisionTime": "2017-11-08T17:47:23Z" }, { "canonical": "golang.org/x/arch/x86/x86asm", -- 2.50.0