platform/upstream/bcc.git
7 years agocc: Handle nested functions correctly when resolving symbols
Sasha Goldshtein [Thu, 23 Feb 2017 10:17:08 +0000 (10:17 +0000)]
cc: Handle nested functions correctly when resolving symbols

`ProcSyms::Module::find_addr` incorrectly resolves symbols when
functions are nested in each other. Specifically, this was discovered
with libpthread, where there are multiple symbols for `write`,
where `write_nocancel` is strictly nested inside `write`. Fix by
explicitly going backward until we reach a matching symbol -- see
details in `ProcSyms::Module::find_addr` comments.

7 years agoMerge pull request #999 from markdrayton/perf-map-anon
4ast [Wed, 22 Feb 2017 22:38:03 +0000 (14:38 -0800)]
Merge pull request #999 from markdrayton/perf-map-anon

Improve matching of file-backed memory mappings

7 years agoImprove matching of file-backed memory mappings
Mark Drayton [Wed, 22 Feb 2017 02:05:10 +0000 (02:05 +0000)]
Improve matching of file-backed memory mappings

Use the same rules as perf to determine if a mapping in /proc/pid/maps is
file-backed. This allows mappings in anonymous huge pages and so on to fall
back to resolving from /tmp/perf-pid.map, if appropriate.

ref: http://lxr.free-electrons.com/source/tools/perf/util/map.c#L28

7 years agoMerge pull request #996 from markdrayton/fix-find-buildid
4ast [Tue, 21 Feb 2017 22:42:44 +0000 (14:42 -0800)]
Merge pull request #996 from markdrayton/fix-find-buildid

Fix "for loop initial declarations only in C99" compile error

7 years agoMerge pull request #995 from pchaigno/patch-1
4ast [Tue, 21 Feb 2017 22:31:13 +0000 (14:31 -0800)]
Merge pull request #995 from pchaigno/patch-1

Fix minor error in test instructions

7 years agoFix "for loop initial declarations only in C99" compile error
Mark Drayton [Tue, 21 Feb 2017 22:25:57 +0000 (22:25 +0000)]
Fix "for loop initial declarations only in C99" compile error

7 years agoFix error in test instructions
Paul Chaignon [Tue, 21 Feb 2017 21:50:09 +0000 (22:50 +0100)]
Fix error in test instructions

7 years agoMerge pull request #967 from goldshtn/debuginfo
4ast [Tue, 21 Feb 2017 19:18:41 +0000 (11:18 -0800)]
Merge pull request #967 from goldshtn/debuginfo

External debuginfo support and general symbols overhaul

7 years agotests: Test debuginfo through debuglink and build-id sections
Sasha Goldshtein [Thu, 9 Feb 2017 20:59:47 +0000 (15:59 -0500)]
tests: Test debuginfo through debuglink and build-id sections

This commit introduces support for tests of the new debuglink and
build-id debuginfo resolution functionality. The tests build a
dummy.c file with a debuglink section, and again with a build-id
section, and make sure that the symbol resolution code can locate
the debug information correctly (in the binary's directory for
debuglink, and in /usr/lib/debug/.build-id for the build-id).

7 years agoFix symbol resolution by name (SymbolCache.resolve_name)
Sasha Goldshtein [Thu, 9 Feb 2017 21:32:56 +0000 (16:32 -0500)]
Fix symbol resolution by name (SymbolCache.resolve_name)

The implementation of `ProcSyms::resolve_name` was only valid for
kernel symbols, when there is no module. When a module was provided,
it would segfault due to the module being null. Fixed by making
`bcc_symcache_resolve_name` take an additional module parameter,
which, for kernel symbols, is simply null (`None` from Python).

7 years agocc: Resolve symbols from external debuginfo
Sasha Goldshtein [Thu, 9 Feb 2017 08:58:09 +0000 (03:58 -0500)]
cc: Resolve symbols from external debuginfo

Adds support for resolving symbols using external debuginfo files,
which can be retrieved from two locations. First, check the build-id
of the desired binary and look in /usr/lib/debug/.build-id according
to the build-id structure. Second, check the debuglink section of
the desired binary and look in /usr/lib/debug or in the binary's
current directory. These are the rules applied by GDB as well, but
GDB lets the user reconfigure the debug directory path from
/usr/lib/debug to something else; we do not support this.

These changes are based on the following description of how GDB
resolves external debuginfo:

https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html

7 years agocc: Correctly treat PIE files as shared objects for symbols
Sasha Goldshtein [Thu, 9 Feb 2017 06:18:34 +0000 (01:18 -0500)]
cc: Correctly treat PIE files as shared objects for symbols

When resolving symbols, ProcSyms would treat position-independent
executables (PIE files) incorrectly, resulting in symbol resolution
failures. Specifically, PIE files are treated like shared objects
for ASLR, which means all symbol addresses in the file need to be
taken relative to the executable load address at runtime, the same
as with dynamic library shared objects.

The fix is in the `is_so()` method on `ProcSyms::Module`, which
now uses the correct `bcc_elf_is_shared` helper for testing if a
file is a shared object rather than just looking at the extension
".so", which is very brittle -- and wrong.

7 years agotrace: Migrate to new symbols API and remove addresses from stacks
Sasha Goldshtein [Thu, 9 Feb 2017 05:21:49 +0000 (00:21 -0500)]
trace: Migrate to new symbols API and remove addresses from stacks

7 years agooff{cpu,wake}time: Migrate to new symbols API and remove addresses
Sasha Goldshtein [Thu, 9 Feb 2017 05:20:56 +0000 (00:20 -0500)]
off{cpu,wake}time: Migrate to new symbols API and remove addresses

Remove addresses from stack output, as these are not used in the
vast majority of the cases.

7 years agouthreads: Migrate to new symbols API and include module name
Sasha Goldshtein [Thu, 9 Feb 2017 04:25:28 +0000 (23:25 -0500)]
uthreads: Migrate to new symbols API and include module name

7 years agostacksnoop: Migrate to new symbols API and remove addresses
Sasha Goldshtein [Thu, 9 Feb 2017 04:25:00 +0000 (23:25 -0500)]
stacksnoop: Migrate to new symbols API and remove addresses

7 years agostackcount: Migrate to new symbol resolution API
Sasha Goldshtein [Thu, 9 Feb 2017 04:24:23 +0000 (23:24 -0500)]
stackcount: Migrate to new symbol resolution API

7 years agoprofile: Migrate to new symbol API and remove addresses
Sasha Goldshtein [Thu, 9 Feb 2017 04:23:20 +0000 (23:23 -0500)]
profile: Migrate to new symbol API and remove addresses

The default profile output used to include stack addresses,
which are not used in 99+% of the cases.

7 years agomemleak: Migrate to new symbols resolution API
Sasha Goldshtein [Thu, 9 Feb 2017 04:22:06 +0000 (23:22 -0500)]
memleak: Migrate to new symbols resolution API

Remove usyms.py dependency and replace with new symbols API.

7 years agoSimplify BCC symbol resolution API
Sasha Goldshtein [Thu, 9 Feb 2017 01:56:09 +0000 (20:56 -0500)]
Simplify BCC symbol resolution API

The new API has two main methods: `sym` and `ksym` (the second is
a trivial wrapper of the first one). Both methods accept two
Boolean flags arguments: `show_module` and `show_address`. The first
controls whether the resulting symbol name should contain the name
of the symbol's module, in brackets. For kernel symbols, this is
simply "[kernel]". The second controls whether the resulting symbol
name should contain the instruction offset from the beginning of
the symbol, e.g. "start_thread+0x202".

7 years agoRemove usyms.py and redundant ProcessSymbols class
Sasha Goldshtein [Thu, 9 Feb 2017 01:54:56 +0000 (20:54 -0500)]
Remove usyms.py and redundant ProcessSymbols class

This class was obsolete and replaced by the SymbolCache class.

7 years agoMerge pull request #988 from goldshtn/usdt-addressed-arg
4ast [Tue, 21 Feb 2017 07:58:42 +0000 (23:58 -0800)]
Merge pull request #988 from goldshtn/usdt-addressed-arg

Support base + index * scale addressing for USDT arguments

7 years agoMerge pull request #992 from goldshtn/trace-argdist-usdt-arg
4ast [Mon, 20 Feb 2017 19:04:17 +0000 (11:04 -0800)]
Merge pull request #992 from goldshtn/trace-argdist-usdt-arg

trace, argdist: Treat small USDT arguments correctly

7 years agotrace, argdist: Treat small USDT arguments correctly
Sasha Goldshtein [Mon, 20 Feb 2017 15:42:57 +0000 (15:42 +0000)]
trace, argdist: Treat small USDT arguments correctly

trace and argdist currently only work correctly for USDT arguments
whose size is exactly 8 bytes. Smaller types, such as chars, shorts,
ints (signed or unsigned) are not treated correctly. The reason is
that the produced program would invoke the `bpf_usdt_readarg` helper
with the address of a u64 local variable, and then cast that variable
to the user-specified type derived from the format string. However,
the `bpf_usdt_readarg` rewriting then passes `sizeof(u64)` to the
generated `bpf_..._readarg` macro, which then fails to read anything
because the provided size doesn't match the argument size it knows
about.

The fix is fairly easy: instead of declaring a u64 unconditionally
and reading into that variable with `bpf_usdt_readarg`, declare a
variable that has the correct type according to what we know about
the USDT probe.

7 years agoMerge pull request #989 from pchaigno/fix-fd-leak
4ast [Mon, 20 Feb 2017 07:16:24 +0000 (23:16 -0800)]
Merge pull request #989 from pchaigno/fix-fd-leak

Fix file descriptor leak

7 years agoFix file descriptor leak
Paul Chaignon [Mon, 20 Feb 2017 07:00:28 +0000 (08:00 +0100)]
Fix file descriptor leak

7 years agoSupport base + index * scale addressing for USDT arguments
Sasha Goldshtein [Sun, 19 Feb 2017 20:29:45 +0000 (20:29 +0000)]
Support base + index * scale addressing for USDT arguments

It turns out that some software will have USDT probe arguments
referencing memory using the full `nnn@(%basereg + %idxreg * scale`
syntax. This is represented as `nnn@(%basereg,%idxreg,scale)` in
the `NT_STAPSDT` note, encountered in building a recent version of
PostgreSQL on FC25.

This format is now recognized by the USDT parser, and the correct
BPF code is emitted to retrieve arguments that reference memory
using this full addressing syntax.`

7 years agoMerge pull request #972 from r4f4/fix-llcstat
Brenden Blanco [Thu, 16 Feb 2017 22:56:52 +0000 (14:56 -0800)]
Merge pull request #972 from r4f4/fix-llcstat

llcstat: fix TypeError on python3

7 years agoMerge pull request #970 from goldshtn/db-tools
Brendan Gregg [Thu, 16 Feb 2017 19:45:31 +0000 (11:45 -0800)]
Merge pull request #970 from goldshtn/db-tools

dbslower and dbstat

7 years agoMerge branch 'master' into db-tools
Brendan Gregg [Thu, 16 Feb 2017 18:34:49 +0000 (10:34 -0800)]
Merge branch 'master' into db-tools

7 years agoMerge pull request #971 from goldshtn/syscount
Brenden Blanco [Thu, 16 Feb 2017 16:19:44 +0000 (08:19 -0800)]
Merge pull request #971 from goldshtn/syscount

syscount: Summarize syscall counts and latencies

7 years agoMerge pull request #982 from irregulator/master
Brenden Blanco [Thu, 16 Feb 2017 16:16:26 +0000 (08:16 -0800)]
Merge pull request #982 from irregulator/master

Adds zlib1g-dev Debian package build dependency

7 years agoAdds zlib1g-dev Debian package build dependency
Alexandros [Thu, 16 Feb 2017 10:47:27 +0000 (12:47 +0200)]
Adds zlib1g-dev Debian package build dependency

When building from source in Debian, zlib1g-dev is needed or else
'/usr/bin/ld: cannot find -lz' error will occur.

7 years agosyscount: Summarize syscall counts and latencies
Sasha Goldshtein [Thu, 9 Feb 2017 15:11:50 +0000 (10:11 -0500)]
syscount: Summarize syscall counts and latencies

This new tool attaches to the raw_syscalls:sys_enter and sys_exit
tracepoints, and collects frequency counts and optionally latencies
of syscalls (aggregated by syscall or by process). It is a fairly
natural and efficient extension of Brendan Gregg's syscount from
perf-tools. Options include latency tracing, interval printouts,
process filtering, summarizing only failed syscalls, and more.

NOTE:
The translation of syscall numbers to names is performed using a
static list, borrowed from strace sources. It is accurate up to
syscall 313, and does not include the bpf() syscall, for example.
Also, it is only relevant for x86_64.

Basic example:

```
$ syscount -P
Tracing syscalls, printing top 10... Ctrl+C to quit.
[10:13:21]
PID    COMM               COUNT
30216  sshd                 533
31391  vi                   494
25188  screen               134
25776  mysqld                24
31394  python                10
494    systemd-journal        5
^C

$ syscount -L
Tracing syscalls, printing top 10... Ctrl+C to quit.
[10:13:34]
SYSCALL                   COUNT        TIME (us)
select                      132      1902458.009
nanosleep                   166        11136.305
write                        89           41.308
ftruncate                     1           33.217
stat                          1           22.117
fstat                         1            6.134
[unknown: 321]               28            4.553
ioctl                         7            4.544
wait4                       166            3.962
timerfd_settime               1            3.786
^C
```

Related: #786

7 years agoREADME: Add dbstat and dbslower and minor fix-ups
Sasha Goldshtein [Thu, 9 Feb 2017 15:25:20 +0000 (10:25 -0500)]
README: Add dbstat and dbslower and minor fix-ups

7 years agodbstat: Collect histograms of MySQL/PostgreSQL query latencies
Sasha Goldshtein [Thu, 9 Feb 2017 11:21:43 +0000 (06:21 -0500)]
dbstat: Collect histograms of MySQL/PostgreSQL query latencies

This tool traces MySQL/PostgreSQL queries, and aggregates their
latencies into a histogram. The histogram is then printed when the
tool is stopped, or at user-specified intervals.

7 years agodbslower: MySQL/PostgreSQL query tracing tool
Sasha Goldshtein [Thu, 9 Feb 2017 10:44:43 +0000 (05:44 -0500)]
dbslower: MySQL/PostgreSQL query tracing tool

This tool traces MySQL/PostgreSQL queries, including an optional
minimum duration threshold. This is based on `mysqld_qslower` but
adapted to automatically detect MySQL/PostgreSQL processes, and a
couple of other code fixes.

I believe at this time, `mysqld_qslower` can be retired, as this
tool completely supersedes it.

7 years agoMerge pull request #974 from r4f4/fix-undo
Brenden Blanco [Wed, 15 Feb 2017 16:45:29 +0000 (08:45 -0800)]
Merge pull request #974 from r4f4/fix-undo

Revert "undo rebase"

7 years agoRevert "undo rebase"
Rafael Fonseca [Wed, 15 Feb 2017 16:28:26 +0000 (17:28 +0100)]
Revert "undo rebase"

This reverts commit a112514cba8e4844c405e3f1bd341289c4d2a158.

The changes the commit reverted are legit and should not have been
reverted.

7 years agoMerge pull request #969 from goldshtn/clock-monotonic
Brenden Blanco [Wed, 15 Feb 2017 15:10:56 +0000 (07:10 -0800)]
Merge pull request #969 from goldshtn/clock-monotonic

Move monotonic_time to BPF class, use CLOCK_MONOTONIC

7 years agollcstat: fix TypeError on python3
Rafael Fonseca [Wed, 15 Feb 2017 14:20:52 +0000 (15:20 +0100)]
llcstat: fix TypeError on python3

The bytes object has no __format__ method of its own, inheriting it from
object, so an exception is thrown in python3 when it's passed to a
formatted string since formatting instructions are type specific.

$: ./llcstat
Running for 10 seconds or hit Ctrl-C to end.
PID      NAME             CPU     REFERENCE         MISS    HIT%
Traceback (most recent call last):
  File "./llcstat", line 108, in <module>
    (float(hit) / float(v.value)) * 100.0))
TypeError: non-empty format string passed to object.__format__

7 years agoMerge pull request #968 from mslusarz/deb-pkg-config
Brenden Blanco [Tue, 14 Feb 2017 21:46:28 +0000 (13:46 -0800)]
Merge pull request #968 from mslusarz/deb-pkg-config

Add pkg-config file to Debian packages.

7 years agoAdd pkg-config file to Debian packages.
Marcin Åšlusarz [Tue, 14 Feb 2017 20:05:49 +0000 (21:05 +0100)]
Add pkg-config file to Debian packages.

7 years agoMerge pull request #942 from r4f4/fix-filetop
Brenden Blanco [Tue, 14 Feb 2017 16:50:53 +0000 (08:50 -0800)]
Merge pull request #942 from r4f4/fix-filetop

filetop: Fix TypeError by not mixing bytes and str.

7 years agofiletop: Fix TypeError by not mixing bytes and str.
Rafael Fonseca [Mon, 6 Feb 2017 16:07:28 +0000 (17:07 +0100)]
filetop: Fix TypeError by not mixing bytes and str.

When executing the filetop command tool, the following message was
generated:

Traceback (most recent call last):
  File "/usr/share/bcc/tools/filetop", line 190, in <module>
    name = name[:-3] + "..."
TypeError: can't concat bytes to str

Also, by decoding the bytes we print the strings without a leading "b'"
making the output more readable.

7 years agoMerge pull request #871 from zhiyisun/patch
Brenden Blanco [Tue, 14 Feb 2017 08:19:18 +0000 (00:19 -0800)]
Merge pull request #871 from zhiyisun/patch

Add optional kernel flags for running networking examples in INSTALL.md

7 years agoMerge branch 'master' into patch
Brenden Blanco [Tue, 14 Feb 2017 08:18:43 +0000 (00:18 -0800)]
Merge branch 'master' into patch

7 years agoMerge pull request #949 from ShelbyFrances/trace_enhancements
Brenden Blanco [Tue, 14 Feb 2017 02:15:08 +0000 (18:15 -0800)]
Merge pull request #949 from ShelbyFrances/trace_enhancements

tools/trace accepts abspath arguments to -I (and some doc tweaks)

7 years agoMerge pull request #956 from r4f4/fix-ucalls
Brenden Blanco [Tue, 14 Feb 2017 02:14:20 +0000 (18:14 -0800)]
Merge pull request #956 from r4f4/fix-ucalls

Fix ucalls

7 years agoMerge pull request #965 from r4f4/fix-tools-py2
Brenden Blanco [Tue, 14 Feb 2017 02:06:50 +0000 (18:06 -0800)]
Merge pull request #965 from r4f4/fix-tools-py2

fixes #962 - fix lambda on both py2 and py3

7 years agoMerge pull request #920 from pchaigno/pid-filter-gethostlatency
Brendan Gregg [Mon, 13 Feb 2017 22:39:02 +0000 (14:39 -0800)]
Merge pull request #920 from pchaigno/pid-filter-gethostlatency

gethostlatency: Filter by process ID

7 years agogethostlatency: Filter on PID
Paul Chaignon [Mon, 23 Jan 2017 21:43:10 +0000 (22:43 +0100)]
gethostlatency: Filter on PID

7 years agoMerge pull request #964 from goldshtn/utools-missing-probes
4ast [Mon, 13 Feb 2017 20:46:52 +0000 (12:46 -0800)]
Merge pull request #964 from goldshtn/utools-missing-probes

u* tools: Gracefully handle missing probes

7 years agotools: Document use of -I <path> in trace, argdist
ShelbyFrances [Wed, 8 Feb 2017 02:56:53 +0000 (05:56 +0300)]
tools: Document use of -I <path> in trace, argdist

7 years agotools: support -I abspath in trace, argdist
ShelbyFrances [Wed, 8 Feb 2017 02:56:52 +0000 (05:56 +0300)]
tools: support -I abspath in trace, argdist

7 years agotools/trace: Document DSO tracing in tools/trace_example.txt
ShelbyFrances [Wed, 8 Feb 2017 02:56:37 +0000 (05:56 +0300)]
tools/trace: Document DSO tracing in tools/trace_example.txt

7 years agou* tools: Gracefully handle missing probes
Sasha Goldshtein [Wed, 8 Feb 2017 21:02:11 +0000 (16:02 -0500)]
u* tools: Gracefully handle missing probes

When the target process is missing the required USDT probes, it can
be a simple mistake (e.g. attaching a script as Java to a Python
process), or a runtime that is not instrumented with the required
probes. Attempt to gracefully handle the error and print a helpful
message instructing the user why the error might have occurred.

```
$ uthreads -l java $(pidof python)
Error attaching USDT probes: the specified pid might not contain
the given language's runtime, or the runtime was not built with the
required USDT probes. Look for a configure flag similar to
--with-dtrace or --enable-dtrace. To check which probes are present
in the process, use the tplist tool.
```

7 years agoMerge pull request #963 from goldshtn/utools-php
4ast [Mon, 13 Feb 2017 15:58:06 +0000 (07:58 -0800)]
Merge pull request #963 from goldshtn/utools-php

u* tools: PHP support

7 years agoMerge pull request #961 from goldshtn/ugc-filters
4ast [Mon, 13 Feb 2017 15:57:22 +0000 (07:57 -0800)]
Merge pull request #961 from goldshtn/ugc-filters

ugc: Add -M for minimum time and -F for text filtering

7 years agofixes #962 - fix lambda on both py2 and py3
Rafael Fonseca [Mon, 13 Feb 2017 15:04:33 +0000 (16:04 +0100)]
fixes #962 - fix lambda on both py2 and py3

See: https://www.python.org/dev/peps/pep-3113/

7 years agoucalls: fix lambda syntax on python3
Rafael Fonseca [Mon, 13 Feb 2017 14:52:04 +0000 (15:52 +0100)]
ucalls: fix lambda syntax on python3

$ ucalls
  File "./ucalls", line 239
    data = map(lambda (k, v): (k.clazz + "." + k.method,
                      ^
SyntaxError: invalid syntax

See: https://www.python.org/dev/peps/pep-3113/

7 years agoucalls: fix map behaviour on python3
Rafael Fonseca [Mon, 13 Feb 2017 14:46:54 +0000 (15:46 +0100)]
ucalls: fix map behaviour on python3

On python3 map returns a generator instead of a list. This fixes the
following error:

Traceback (most recent call last):
  File "./ucalls", line 280, in <module>
    data = get_data()   # [(function, (num calls, latency in ns))]
  File "./ucalls", line 255, in get_data
    data.extend(syscalls)
AttributeError: 'map' object has no attribute 'extend'

7 years agoMerge pull request #959 from r4f4/fix-uobjnew
Brenden Blanco [Fri, 10 Feb 2017 17:44:17 +0000 (09:44 -0800)]
Merge pull request #959 from r4f4/fix-uobjnew

Fix uobjnew and ustat on python3

7 years agoMerge pull request #953 from Appdynamics/master
Brenden Blanco [Fri, 10 Feb 2017 17:27:53 +0000 (09:27 -0800)]
Merge pull request #953 from Appdynamics/master

Debian jessie .deb build config and automated test fixes.

7 years agoustat: fix lambda syntax on python3.
Rafael Fonseca [Fri, 10 Feb 2017 12:56:02 +0000 (13:56 +0100)]
ustat: fix lambda syntax on python3.

$ ./ustat
  File "./ustat", line 242
    counts = sorted(counts.items(), key=lambda (_, v):
                                               ^
SyntaxError: invalid syntax

7 years agouobjnew: fix lambda syntax in python3
Rafael Fonseca [Fri, 10 Feb 2017 12:51:31 +0000 (13:51 +0100)]
uobjnew: fix lambda syntax in python3

$ ./uobjnew
  File "./uobjnew", line 150
    data = sorted(data.items(), key=lambda (k, v): v.num_allocs)
                                           ^
SyntaxError: invalid syntax

7 years agousdt: convert text from bytes to str
Rafael Fonseca [Fri, 10 Feb 2017 12:50:13 +0000 (13:50 +0100)]
usdt: convert text from bytes to str

This fixes a TypeError in python 3, e.g, when executing uobjnew

Traceback (most recent call last):
  File "./uobjnew", line 134, in <module>
    bpf = BPF(text=program, usdt_contexts=[usdt])
  File "/usr/lib/python3.5/site-packages/bcc/__init__.py", line 224, in __init__
    text = usdt_text + text
TypeError: can't concat bytes to str

7 years agoMerge pull request #958 from iovisor/dpkg-deb-compress
4ast [Thu, 9 Feb 2017 23:56:08 +0000 (15:56 -0800)]
Merge pull request #958 from iovisor/dpkg-deb-compress

Use fast compression in test deb builds

7 years agoUse fast compression in test deb builds
Brenden Blanco [Thu, 9 Feb 2017 22:58:33 +0000 (14:58 -0800)]
Use fast compression in test deb builds

Builds on GCE/ubuntu image were taking a long time due to combination of
disk speed/single core, and the default dpkg-deb compression level
(-z9). The dpkg-deb alone step was taking up to 5 minutes. Reduce to ~1
minute by forcing -z1. Unfortunately, it was not obvious how to capture
the option in debuild command, so this is a bit hacky.

Signed-off-by: Brenden Blanco <bblanco@gmail.com>
7 years agoMerge pull request #957 from iovisor/misc_fixes
4ast [Thu, 9 Feb 2017 20:44:09 +0000 (12:44 -0800)]
Merge pull request #957 from iovisor/misc_fixes

Fixes for LLVM4+, python3

7 years agopython3 compat: tracepoint fixes
Brenden Blanco [Thu, 9 Feb 2017 20:03:55 +0000 (12:03 -0800)]
python3 compat: tracepoint fixes

Signed-off-by: Brenden Blanco <bblanco@gmail.com>
7 years agopython3 compat: add missing str->bytes conversion
Brenden Blanco [Thu, 9 Feb 2017 19:21:15 +0000 (11:21 -0800)]
python3 compat: add missing str->bytes conversion

Signed-off-by: Brenden Blanco <bblanco@gmail.com>
7 years agoFix for test_log_buf to work with python3
Brenden Blanco [Thu, 9 Feb 2017 19:11:23 +0000 (11:11 -0800)]
Fix for test_log_buf to work with python3

In python3, output needs to be converted from ascii to str before the
"error_msg in str" test will succeed. This change should be backwards
compatible with python2.

Signed-off-by: Brenden Blanco <bblanco@gmail.com>
7 years agoStyle fixes for loader.cc
Brenden Blanco [Thu, 9 Feb 2017 18:59:16 +0000 (10:59 -0800)]
Style fixes for loader.cc

Diff generated by clang-format

Signed-off-by: Brenden Blanco <bblanco@gmail.com>
7 years agoUse builtin clang::CompilerInvocation object
Brenden Blanco [Thu, 9 Feb 2017 18:56:03 +0000 (10:56 -0800)]
Use builtin clang::CompilerInvocation object

Recent llvm changed the calling convention of setInvocation, breaking
3.9/4.0 compatibility. This new approach works for both.

Signed-off-by: Brenden Blanco <bblanco@gmail.com>
7 years agoExplicitly mark b functions as nounwind
Brenden Blanco [Thu, 9 Feb 2017 18:53:29 +0000 (10:53 -0800)]
Explicitly mark b functions as nounwind

Without marking as nounwind, recent llvm started generating .eh_frame
section, which is invalid for bpf target jit.

Signed-off-by: Brenden Blanco <bblanco@gmail.com>
7 years agoMark additional helper function as inline
Brenden Blanco [Thu, 9 Feb 2017 18:52:40 +0000 (10:52 -0800)]
Mark additional helper function as inline

Signed-off-by: Brenden Blanco <bblanco@gmail.com>
7 years agoMerge pull request #916 from pchaigno/use-pid-to-resolve-lib
Brenden Blanco [Thu, 9 Feb 2017 18:21:03 +0000 (10:21 -0800)]
Merge pull request #916 from pchaigno/use-pid-to-resolve-lib

Use PID to resolve path of target libraries

7 years agoMerge pull request #951 from r4f4/fix-trace-py3
Brenden Blanco [Thu, 9 Feb 2017 18:18:20 +0000 (10:18 -0800)]
Merge pull request #951 from r4f4/fix-trace-py3

trace: fix for python3

7 years agoMerge pull request #952 from ColinIanKing/master
Brenden Blanco [Thu, 9 Feb 2017 18:13:23 +0000 (10:13 -0800)]
Merge pull request #952 from ColinIanKing/master

snapcraft: add in some missing tools from the snapcraft apps list

7 years agoMerge pull request #955 from r4f4/fix-tplist
4ast [Thu, 9 Feb 2017 17:02:03 +0000 (09:02 -0800)]
Merge pull request #955 from r4f4/fix-tplist

tplist: don't fail if no verbosity is supplied

7 years agoMerge pull request #954 from brendangregg/master
Brenden Blanco [Thu, 9 Feb 2017 15:58:00 +0000 (07:58 -0800)]
Merge pull request #954 from brendangregg/master

update tools pic

7 years agotplist: don't fail if no verbosity is supplied
Rafael Fonseca [Thu, 9 Feb 2017 15:20:24 +0000 (16:20 +0100)]
tplist: don't fail if no verbosity is supplied

Initialise the verbosity argument to 0, so that when no verbosity is
provided we don't fail with

$ tplist
kvmmmu:kvm_mmu_pagetable_walk
unorderable types: NoneType() > int()

7 years agoStill figuring out anchors in markdown.
Michael Przybylski [Fri, 20 Jan 2017 15:55:07 +0000 (07:55 -0800)]
Still figuring out anchors in markdown.

7 years agoStill figuring out anchors in markdown.
Michael Przybylski [Fri, 20 Jan 2017 15:53:56 +0000 (07:53 -0800)]
Still figuring out anchors in markdown.

7 years agoBuilding on Debian Jessie
Michael Przybylski [Fri, 20 Jan 2017 15:29:58 +0000 (07:29 -0800)]
Building on Debian Jessie

Minor debian/control file updates
Added Debian - Source section to INSTALL.md

7 years agoYanked all libbcc.so tests out of test/lua/test_standalone.sh
Michael Przybylski [Fri, 20 Jan 2017 09:10:27 +0000 (01:10 -0800)]
Yanked all libbcc.so tests out of test/lua/test_standalone.sh

On 30 April 2016 Vicent Marti modified src/lua/CMakeLists.txt to
statically link libbcc into bcc-lua.  This causes one of the tests
in test/lua/test_standalone.sh to fail, and renders all of the tests
related to libbcc.so obsolete.

7 years agoFixed TestUprobes.test_simple_library() in test_uprobes.lua
Michael Przybylski [Fri, 20 Jan 2017 07:54:03 +0000 (23:54 -0800)]
Fixed TestUprobes.test_simple_library() in test_uprobes.lua

7 years agoFixed failing test_simple_library() in test_uprobes.py
Michael Przybylski [Fri, 20 Jan 2017 07:21:07 +0000 (23:21 -0800)]
Fixed failing test_simple_library() in test_uprobes.py

7 years agoDebian jessie compile/test work in progress.
Michael Przybylski [Thu, 12 Jan 2017 17:04:44 +0000 (09:04 -0800)]
Debian jessie compile/test work in progress.

7 years agoUpdate tools to use new BPF.monotonic_time method
Sasha Goldshtein [Thu, 9 Feb 2017 09:19:53 +0000 (04:19 -0500)]
Update tools to use new BPF.monotonic_time method

7 years agoMove monotonic_time to BPF class, use CLOCK_MONOTONIC
Sasha Goldshtein [Thu, 9 Feb 2017 09:18:04 +0000 (04:18 -0500)]
Move monotonic_time to BPF class, use CLOCK_MONOTONIC

This allows all the tools (currently: trace and memleak) to use the
`monotonic_time` facility, with the fix to use `CLOCK_MONOTONIC`
instead of `CLOCK_MONOTONIC_RAW`. Resolves #931.

7 years agoupdate tools pic
Brendan Gregg [Thu, 9 Feb 2017 07:49:21 +0000 (23:49 -0800)]
update tools pic

7 years agou* tools: PHP support
Sasha Goldshtein [Wed, 8 Feb 2017 19:32:51 +0000 (14:32 -0500)]
u* tools: PHP support

Introduce PHP support to ucalls, uflow, and ustat. The PHP probes
used are for function entry and exit, file compile (~ class load),
and exception throw. This requires a PHP runtime built with the
`--enable-dtrace` configure switch. Some probes also require
USE_ZEND_DTRACE=1.

Resolves #945.

7 years agotrace: fix for python3
Rafael Fonseca [Wed, 8 Feb 2017 15:14:31 +0000 (16:14 +0100)]
trace: fix for python3

xrange does not exist in py3.

7 years agosnapcraft: add in some missing tools from the snapcraft apps list
Colin Ian King [Wed, 8 Feb 2017 18:29:05 +0000 (18:29 +0000)]
snapcraft: add in some missing tools from the snapcraft apps list

Add in capable, deadlock-detector, llcstat, mountsnoop, profile,
runqlen, solisten, tplist, ucalls, uflow, ugc, uobjnew, ustat
and uthreads. Includes some re-ordering as well.

Signed-off-by: Colin Ian King <colin.king@canonical.com>
7 years agougc: Add -M for minimum time and -F for text filtering
Sasha Goldshtein [Wed, 8 Feb 2017 18:22:40 +0000 (13:22 -0500)]
ugc: Add -M for minimum time and -F for text filtering

Filter out collections that are shorter than x milliseconds by using
`ugc -M x`. Display only collections that contain a certain string s
in their description by using `ugc -F s`. The latter option is not
implemented in the kernel, but rather just before printing the event
in the user script (for simplicity), and documented as such.

7 years agoMerge pull request #948 from shodoco/master
4ast [Wed, 8 Feb 2017 16:37:11 +0000 (08:37 -0800)]
Merge pull request #948 from shodoco/master

bcc: add support for lpm trie map type

7 years agobcc: update kernel-versions.md for lpm trie change
Huapeng Zhou [Wed, 8 Feb 2017 07:27:20 +0000 (23:27 -0800)]
bcc: update kernel-versions.md for lpm trie change

7 years agobcc: add support for lpm trie map type
Huapeng Zhou [Tue, 7 Feb 2017 23:03:32 +0000 (15:03 -0800)]
bcc: add support for lpm trie map type