Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: google/pprof
base: 94a9f03
Choose a base ref
...
head repository: google/pprof
compare: 4bb14d4
Choose a head ref
  • 8 commits
  • 21 files changed
  • 5 contributors

Commits on Apr 13, 2021

  1. Replace Base() with ObjAddr() in the plugin.ObjFile interface. (#622)

    Modify the plugin.ObjFile interface by replacing the "Base() uint64" method
    with an "ObjAddr(addr uint64) (uint64, error)" method. The latter computes
    the objdump address corresponding to the given runtime address.
    
    The change removes direct access to the base value, but enables us to delay
    computing the base until it is actually needed.
    gmarin13 committed Apr 13, 2021
    Configuration menu
    Copy the full SHA
    7c2eacd View commit details
    Browse the repository at this point in the history

Commits on Apr 23, 2021

  1. Delay base computation for ELF files until we have a sample address. (#…

    …623)
    
    We can use the sample's offset into the mapping to differentiate between small
    segments that are in the same file page when associating a segment with the
    mapping.
    gmarin13 committed Apr 23, 2021
    Configuration menu
    Copy the full SHA
    a266312 View commit details
    Browse the repository at this point in the history

Commits on May 4, 2021

  1. Ensure the workflow run fail if any job fails, but remaining matrix c…

    …onfigurations run if one matrix configuration fails. (#627)
    wyk9787 committed May 4, 2021
    Configuration menu
    Copy the full SHA
    3a04a4d View commit details
    Browse the repository at this point in the history

Commits on May 6, 2021

  1. Source listing handles missing binaries and addresses. (#628)

    * Source listing handles missing binaries and addresses.
    
    Some profiles can contain locations without an address, or reference
    binaries/libraries that are not available. Treat these better when
    producing source listings by using any source information present
    directly in the profile.Location.
    
    Details:
    
    If a location does not have an address, create a synthetic address
    that does not fall in a known mapping.
    
    If a location references an object file that is not found, use any
    file/line information baked directly in the location.
    
    Tweaked generated html to clicking for source lines that have no
    inlining/assembly to display.
    
    * Panic on attempt to synthesize address for Loc with non-zero addr.
    ghemawat committed May 6, 2021
    Configuration menu
    Copy the full SHA
    923b5ab View commit details
    Browse the repository at this point in the history

Commits on Jun 1, 2021

  1. feat(ui): add link to download profile to the UI (#634)

    * feat: add link to download profile to the UI
    
    * use space
    
    * use space
    
    * add semicolon
    sandangel committed Jun 1, 2021
    Configuration menu
    Copy the full SHA
    01bbb19 View commit details
    Browse the repository at this point in the history

Commits on Jun 9, 2021

  1. Refactor the matching of ELF program headers with profile mappings. (#…

    …635)
    
    Changed ProgramHeadersForMapping to get in a slice of program headers instead of
    an elf.File object.
    
    Moved the logic for matching headers by file offset to the elfexec package.
    
    Removed testelf package, as it didn't have that much reuse. Instead, defined the
    relevant test headers in the individual test files.
    
    Other refactoring inside binutils to simplify code.
    
    No functional changes.
    gmarin13 committed Jun 9, 2021
    Configuration menu
    Copy the full SHA
    a478d1d View commit details
    Browse the repository at this point in the history

Commits on Jul 15, 2021

  1. internal/report: error if filter argument has no matches (#631)

    list, weblist, disasm, and peek all take a regexp argument that acts as
    a filter.
    
    Currently if this filter results in no matches we simply generate an
    empty report, which can be confusing to users. Instead, explicitly treat
    this as an error condition that is clearly reported to users.
    
    Fixes #629
    prattmic committed Jul 15, 2021
    Configuration menu
    Copy the full SHA
    86eeefc View commit details
    Browse the repository at this point in the history

Commits on Jul 20, 2021

  1. Add support for matching split mappings to segments. (#641)

    * Remove the strict test on segment memory size.
    
    It's not precise in some corner cases. It assumes a mapping includes at most one
    segment, but the loader may map memory for the entire binary at first, and under
    the right circumstances, this test can select the wrong segment. The filtering
    by sample offset works more reliably.
    
    Also, the strict test on segment memory size is less effective after adding
    support for matching split mappings to segments.
    
    * Add support for matching split mappings to segments.
    
    Update ProgramHeadersForMapping to match a mapping to any segment with
    overlapping file offsets, except if:
    - if the mapping starts before the page aligned offset associated with a segment.
      There is no known instance where the loader would load the content of a segment
      to include preceding pages of the file that don't include any segment content.
      The mapping must be associated with an earlier segment in such cases.
    - if the mappings includes the last page of the segment, but not the full
      segment, and it includes additional pages after the segment end. It's more
      likely that the mapping is associated with the following segment in such cases.
    gmarin13 committed Jul 20, 2021
    Configuration menu
    Copy the full SHA
    4bb14d4 View commit details
    Browse the repository at this point in the history