Skip to content
  1. Aug 22, 2018
  2. Aug 04, 2018
  3. Aug 03, 2018
    • Nico Weber's avatar
      convert some tabs to spaces · 0e815195
      Nico Weber authored
      llvm-svn: 338880
      0e815195
    • Dean Michael Berris's avatar
      [XRay][llvm] Load XRay Profiles · 13d04e76
      Dean Michael Berris authored
      Summary:
      This change implements the profile loading functionality in LLVM to
      support XRay's profiling mode in compiler-rt.
      
      We introduce a type named `llvm::xray::Profile` which allows building a
      profile representation. We can load an XRay profile from a file to build
      Profile instances, or do it manually through the Profile type's API.
      
      The intent is to get the `llvm-xray` tool to generate `Profile`
      instances and use that as the common abstraction through which all
      conversion and analysis can be done. In the future we can generate
      `Profile` instances from `Trace` instances as well, through conversion
      functions.
      
      Some of the key operations supported by the `Profile` API are:
      
      - Path interning (`Profile::internPath(...)`) which returns a unique path
        identifier.
      
      - Block appending (`Profile::addBlock(...)`) to add thread-associated
        profile information.
      
      - Path ID to Path lookup (`Profile::expandPath(...)`) to look up a
        PathID and return the original interned path.
      
      - Block iteration.
      
      A 'Path' in this context represents the function call stack in
      leaf-to-root order. This is represented as a path in an internally
      managed prefix tree in the `Profile` instance. Having a handle (PathID)
      to identify the unique Paths we encounter for a particular Profile
      allows us to reduce the amount of memory required to associate profile
      data to a particular Path.
      
      This is the first of a series of patches to migrate the `llvm-stacks`
      tool towards using a single profile representation.
      
      Depends on D48653.
      
      Reviewers: kpw, eizan
      
      Reviewed By: kpw
      
      Subscribers: mgorny, llvm-commits, hiraditya
      
      Differential Revision: https://reviews.llvm.org/D48370
      
      llvm-svn: 338825
      13d04e76
  4. Feb 01, 2017
    • Dean Michael Berris's avatar
      [XRay] Define the InstrumentationMap type · 0e8ababf
      Dean Michael Berris authored
      Summary:
      This change implements the instrumentation map loading library which can
      understand both YAML-defined instrumentation maps, and ELF 64-bit object
      files that have the XRay instrumentation map section. We break it out
      into a library on its own to allow for other applications to deal with
      the XRay instrumentation map defined in XRay-instrumented binaries.
      
      This type provides both raw access to the logical representation of the
      instrumentation map entries as well as higher level functions for
      converting a function ID into a function address.
      
      At this point we only support ELF64 binaries and YAML-defined XRay
      instrumentation maps. Future changes should extend this to support
      32-bit ELF binaries, as well as other binary formats (like MachO).
      
      As part of this change we also migrate all uses of the extraction logic
      that used to be defined in tools/llvm-xray/ to use this new type and
      interface for loading from files. We also remove the flag from the
      `llvm-xray` tool that required users to specify the type of the
      instrumentation map file being provided to instead make the library
      auto-detect the file type.
      
      Reviewers: dblaikie
      
      Subscribers: mgorny, varno, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D29319
      
      llvm-svn: 293721
      0e8ababf
  5. Jan 11, 2017
    • Dean Michael Berris's avatar
      [XRay] Define the library for XRay trace logs · d6c18657
      Dean Michael Berris authored
      Summary:
      In this change we move the definition of the log reading routines from
      the tools directory in LLVM to {include/llvm,lib}/XRay. We improve the
      documentation a little bit for the publicly accessible headers, and
      adjust the top-matter. This also leads to some refactoring and cleanup
      in the tooling code.
      
      In particular, we do the following:
      
        - Rename the class from LogReader to Trace, as it better represents
          the logical set of records as opposed to a log.
        - Use file type detection instead of asking the user to say what
          format the input file is. This allows us to keep the interface
          simple and encapsulate the logic of loading the data appropriately.
      
      In future changes we increase the API surface and write dedicated unit
      tests for the XRay library.
      
      Depends on D24376.
      
      Reviewers: dblaikie, echristo
      
      Subscribers: mehdi_amini, mgorny, llvm-commits, varno
      
      Differential Revision: https://reviews.llvm.org/D28345
      
      llvm-svn: 291652
      d6c18657
Loading