diff options
Diffstat (limited to 'src/cmd/vendor/github.com/google/pprof/profile/profile.go')
| -rw-r--r-- | src/cmd/vendor/github.com/google/pprof/profile/profile.go | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/cmd/vendor/github.com/google/pprof/profile/profile.go b/src/cmd/vendor/github.com/google/pprof/profile/profile.go index a0f53efe3e..350538bf43 100644 --- a/src/cmd/vendor/github.com/google/pprof/profile/profile.go +++ b/src/cmd/vendor/github.com/google/pprof/profile/profile.go @@ -109,10 +109,11 @@ type Mapping struct { // Location corresponds to Profile.Location type Location struct { - ID uint64 - Mapping *Mapping - Address uint64 - Line []Line + ID uint64 + Mapping *Mapping + Address uint64 + Line []Line + IsFolded bool mappingIDX uint64 } @@ -163,7 +164,7 @@ func ParseData(data []byte) (*Profile, error) { return nil, fmt.Errorf("decompressing profile: %v", err) } } - if p, err = ParseUncompressed(data); err != nil && err != errNoData { + if p, err = ParseUncompressed(data); err != nil && err != errNoData && err != errConcatProfile { p, err = parseLegacy(data) } @@ -180,6 +181,7 @@ func ParseData(data []byte) (*Profile, error) { var errUnrecognized = fmt.Errorf("unrecognized profile format") var errMalformed = fmt.Errorf("malformed profile format") var errNoData = fmt.Errorf("empty input file") +var errConcatProfile = fmt.Errorf("concatenated profiles detected") func parseLegacy(data []byte) (*Profile, error) { parsers := []func([]byte) (*Profile, error){ @@ -591,6 +593,9 @@ func (l *Location) string() string { if m := l.Mapping; m != nil { locStr = locStr + fmt.Sprintf("M=%d ", m.ID) } + if l.IsFolded { + locStr = locStr + "[F] " + } if len(l.Line) == 0 { ss = append(ss, locStr) } |
