1. 22 Mar, 2017 4 commits
  2. 21 Mar, 2017 4 commits
  3. 18 Mar, 2017 2 commits
  4. 16 Mar, 2017 2 commits
  5. 11 Mar, 2017 4 commits
    • Brenden Blanco's avatar
      Merge pull request #1032 from goldshtn/tools-tests · dd3867d3
      Brenden Blanco authored
      Smoke tests for the tools
      dd3867d3
    • Sasha Goldshtein's avatar
      tests: Add smoke tests for most tools · 5c41b39b
      Sasha Goldshtein authored
      This commit adds basic smoke tests for most tools in tools/ by
      running the tool with either a short duration, or interrupting it
      with a SIGINT after a short duration. The tests check the return
      value from the tool to detect any Python exceptions or other
      errors, but they do not read the standard error or standard output
      and parse the tool's result.
      
      Some tools are not covered by these smoke tests for reasons
      documented in the test itself:
      
      * btrfsdist and btrfsslower need btrfs
      * cachetop doesn't like to run without a terminal
      * dbslower, dbstat, and mysqld_qslower need a database engine
      * deadlock_detector allocates a huge amount of memory
      * softirqs doesn't work on new kernels and needs fixing (#1031)
      * ugc needs a USDT-enabled runtime with GC probes
      * zfsdist and zfsslower need zfs
      
      This is a good place to start, but clearly for some tools,
      especially those with a complex interface like trace and argdist,
      we need more than just basic smoke tests.
      5c41b39b
    • Sasha Goldshtein's avatar
      2febc297
    • 4ast's avatar
      Merge pull request #1044 from goldshtn/ausyscall · eea18dc8
      4ast authored
      syscount: Use ausyscalls if available to get syscall list
      eea18dc8
  6. 10 Mar, 2017 2 commits
  7. 09 Mar, 2017 5 commits
  8. 08 Mar, 2017 1 commit
  9. 07 Mar, 2017 2 commits
  10. 06 Mar, 2017 5 commits
  11. 05 Mar, 2017 3 commits
    • 4ast's avatar
      Merge pull request #1023 from dneiter/filetop_sort · 40b881c5
      4ast authored
      filetop: support specifying sort column via cmdline argument
      40b881c5
    • Rafael Fonseca's avatar
      cmake: Explicitly mark static libraries as such · dbea1378
      Rafael Fonseca authored
      Some distros (e.g Fedora) override the default behaviour of building
      static libraries to building dynamic ones instead. By explicitly
      building the correct libraries as static, we make sure BCC properly
      compiles everywhere.
      dbea1378
    • Paul Chaignon's avatar
      Fix bpf_dins_pkt rewrite in BinaryOperator · 47b74fe0
      Paul Chaignon authored
      Binary operator expressions where the left hand-side expression is a
      reference to the packet are replaced by a call to the bpf_dins_pkt
      helper. When replacing text, the Clang Rewriter tries to maintain a
      list of offsets between the original and the new position of tokens.
      
      Replacing the whole binary operator expression with the call to
      bpf_dins_pkt confuses the Rewriter and it is unable to track the new
      position of the right hand-side expression. Rewriting the binary
      operator expression in two times without rewriting the right
      hand-side expression itself solves the issue.
      47b74fe0
  12. 04 Mar, 2017 4 commits
  13. 03 Mar, 2017 2 commits
    • Brenden Blanco's avatar
      Merge pull request #1018 from GabrielGanne/python-xdp-return-values · b69fe977
      Brenden Blanco authored
      add XDP return values to python interface
      b69fe977
    • Sasha Goldshtein's avatar
      cc: Symbol resolution with multiple executable regions per module · f141d1b9
      Sasha Goldshtein authored
      The symbol resolution code used to assume for most purposes that
      there is a single executable region per module. When there were
      several, there was no crash, but symbols were not resolved correctly.
      The reason is that the symbol offsets are relative to the first
      executable region's start address, but bcc would resolve them
      relative to the region in which they appeared. For example, given
      the following regions and spans for a module libfoo.so loaded into
      some process:
      
        1000-2000 r-xp libfoo.so
        2000-3000 rw-p libfoo.so
        3000-4000 r-xp libfoo.so
        4000-5000 r--- libfoo.so
      
      Now, suppose there is a symbol bar() loaded at address 3500. In
      the binary on disk, bar() is at offset 2500 from the beginning of
      the module (but not the beginning of the 3000-4000 region!). When
      we look at the candidate regions, we find 3000-4000, and discover
      that 3500 lies within it. Then we subtract 3500-3000 to find the
      offset from the beginning of the region, get 500, and now look
      for a symbol that contains the relative address 500. As a result,
      we might find some random symbol in the region 1000-2000, and
      report that address 3500 corresponds to that random symbol rather
      than to bar().
      
      This commit fixes the situation by keeping only a single `Module`
      instance for each module, even if that module spans multiple
      executable regions. We remember all executable region start and
      end ranges so we can determine whether an address (like 3500 in
      the above example) lies within the module. But for the purpose of
      finding the actual symbol, we need only the offset from the start
      of the _first_ executable region, and then need to look up a symbol
      based on that.
      
      This was discovered and fixed while tracing .NET Core processes on
      Linux, where libcoreclr.so (the main CLR binary) has several
      executable regions. Resolving symbols from any but the first region
      would produce totally bogus results.
      f141d1b9