Skip to content

Latest commit

 

History

History
1728 lines (1556 loc) · 107 KB

CHANGELOG.md

File metadata and controls

1728 lines (1556 loc) · 107 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

Added

  • Add 'lazy_symbolication' config
  • Add ability to list all probes in a program
  • Add ability to call print() with indexed maps to print single map values
  • Add LLVM 18 support
  • Add ability to call delete() with multiple arguments
  • Add for-each loops for iterating over map elements
  • Add optional systemd support

Changed

  • Better error message for args in mixed probes
  • Reproducible Builds: Do not store timestamps in gzip header
  • Parse DWARF using liblldb instead of libdw
  • Replace native 'bpf_get_stackid'
  • Disable func builtin for kretprobes and uretprobes when get_func_ip feature is not available
  • Attach probe to inlined functions

Deprecated

  • Deprecate sarg builtin

Removed

Fixed

  • Fix ability to interrupt bpftrace during probe attach
  • Fix field resolution on structs with anon union as first field
  • Fix security hole checking unpacked kernel headers
  • Fix alignment of atomic map counter update
  • Allow trailing semicolons and empty blocks in config syntax
  • Fix func builtin for kretprobes and uretprobes for kernels with working get_func_ip feature
  • Fix ustack for functions with prologue
  • Fix storing strings of differing lengths in a variable
  • Field analyser: resolve fields for array accesses
  • Fix error in dereferencing kernel double pointers

Docs

Tools

[0.20.0] 2024-01-22

Added

  • Add log2 histograms with finer granularity
  • Add a jiffies builtin for advanced usages
  • Emit better errors messages for invalid attachpoints
  • Add support for uprobe_multi link
  • Attach BTF to generated BPF programs
  • Add fentry/fexit aliases for kfunc/kretfunc
  • Add support for uprobe pid targeting
  • New builtin for getting the number of map elements
  • Add more helpful error messages for map operations
  • New config block syntax
  • Add support for kprobe:module:function

Changed

  • Standardize config and env var names

Deprecated

Removed

  • Remove snapcraft support

Fixed

  • Fix JSON output for cgroup_path
  • Fix silent truncation of 64-bit values in hist()
  • utils: use /data/local/tmp as temprary dir on Android
  • Fix uprobe multi probe for targets with wildcards
  • Fix symbolication on for 32-bit userspcae and 64-bit kernel
  • Fix retval for kretfunc/fexit
  • Fix attachment/listing of wildcarded module kfuncs
  • Fix uprobe attachment across container boundary
  • Fix generated BTF for older kernels

Docs

  • Fix one-liner tutorial for systems with BTF

Tools

  • Add PPID field to execsnoop.bt
  • Use strftime instead of elapsed in execsnoop.bt
  • Use strftime instead of elapsed in threadsnoop.bt
  • Increase PID field width and align to the right in threadsnoop.bt
  • Update runqlen.bt to remove runnable_weight field from cfs_rq struct.
  • Update mdflush.bt to use blkdev.h instead of genhd.h for non-BTF builds.
  • Add milliseconds to timestamp and align numbers to the right in killsnoop.bt

[0.19.0] 2023-09-19

Added

  • Rawtracepoint support wildcards and list show
  • Support all iterators
  • Improve working with all probe params (kfunc, uprobe)
  • Support func builtin for k(ret)func probes
  • Support casting int <-> int array
  • Support targeting all running processes for USDTs
  • Support targeting all running processes for uprobes/uretprobes

Changed

  • Make args a structure (instead of a pointer)
  • Improve user symbol resolution
  • uprobes: make C++ symbol demangling explicit
  • uprobe: improve C++ probes listing

Removed

  • Delete embedded build support and surrounding infra

Fixed

  • Fix resolving username for malformed /etc/passwd
  • Fix crashes when maps are concurrently modified
  • Fix alignment of byte arrays inside tuples
  • cmake: fix linking libbfd
  • Allow '+' in attach point path
  • Improve listing and 'probe' builtin for several probe types
  • Allow probe builtin with aliased software/hardware probes
  • Support executing symlinked binaries with -c
  • Add access to CLOCK_MONOTONIC with nsecs(monotonic)
  • iter: Skip structures with '__safe_trusted' suffix
  • Improve detection of unknown typedefs in ClangParser

[0.18.0] 2023-05-15

Added

  • Add iter:task_vma iterators detection
  • Support parsing bitfields from BTF/DWARF
  • Support printing entire structs
  • BTF support for tracepoints defined in modules
  • Add trailer to truncated strings
  • Enable watchpoint support for PowerPC
  • Add new function, offsetof, get the offset of the element in the struct
  • Add 'StackMode::raw' for ustack and kstack formatting
  • Add 'BPFTRACE_STACK_MODE' env variable

Changed

  • Improve attaching to uprobes with size 0
  • Support ringbuf output

Deprecated

Removed

Fixed

  • Simplify and fix probe index assignment
  • Handle colon in positional param used in attachpoint
  • Handle BPF load errors for multi-attachpoints
  • Respect BPFTRACE_STRLEN environment variable for all strings
  • Treat str() builtin's len parameter as int64
  • arm64: define the KASAN_SHADOW_SCALE_SHIFT macro
  • Fix segfaults in dwarf_parser

Docs

Tools

[0.17.0] 2023-01-30

Added

  • Support for 32-bit ARM systems
  • Support BTF for kernel modules
  • Add %rh option to print buffer as hex without \x
  • Add stdbool.h to built-in headers
  • Add strcontains builtin function, find a substring in a string

Changed

  • Raise minimum versions for libbpf and bcc and vendor them for local builds
  • Support comparison for integer arrays

Deprecated

Removed

  • Drop Ubuntu 19.10 lockdown detection

Fixed

  • Fix pointer/register loads on 32-bit architectures
  • Fix kprobe multi-attachment
  • Fix attaching to multiple USDT probes using the same wildcard
  • Fix pointer arithmetics codegen
  • Fix segfault for invalid AssignVarStatement visit
  • Better handling of missing function trace support files
  • Fix unroll ID reset
  • Support profile and interval probes in probe matcher
  • Fix BTF detection macro in tools/old/mdflush.bt

Docs

Tools

[0.16.0] 2022-08-30

Added

  • Add builtin: numaid
  • Add helper verifier error handling
  • Add builtin: pton
  • Add builtin: debugf
  • Add builtin: strerror

Changed

  • Move from BCC to libbpf
  • Add non-uprobe based BEGIN/END implementation
  • Helper errors (-k, -kk options) are now emitted to text or json output
  • kprobe offset verification is now optional, without requiring --unsafe

Deprecated

Removed

Fixed

  • Disallow different lhist bounds in a single map
  • Serialize empty histogram as an empty JSON array
  • Handle enum values in tracepoint format defs
  • Fix compound assignments with non-unary expr
  • Fix invalid LLVM IR in join builtin
  • Fix lexer buffer size check
  • Fix invalid LLVM IR as detected by tests
  • Fix builds against libbfd(binutils) >=2.39
  • Fix access to ctx

Docs

Tools

  • Add sslsnoop and ssllatency tools
  • Add undump tool.

[0.15.0] 2022-05-24

The 0.15.0 release has basic support for LLVM 14 but not all features work yet, see #2228

Added

  • Add option for unconditional hex output
  • Add builtin function: cgroup_path
  • Limit number of generated BPF programs
  • Support the octal format specifier (%o) in printf
  • Improve include paths resolution
  • Automatic type resolution from DWARF
  • Add builtin function: bswap
  • Print all maps to stdout on SIGUSR1
  • Add builtin function: skb_output

Changed

  • Use auto-resolution of library paths for tools
  • Improve handling empty attach points

Fixed

  • Fix precedence of multiplicative operations
  • Fix probe matching for uprobes with absolute address
  • Fix tools to work on new kernel versions
  • Fix uprobe target resolution
  • Fix using wildcards in kfunc
  • Improve handling of format strings
  • Fix codegen for buf

Tools

  • Update biosnoop.bt for kernel >=5.17

[0.14.1] 2021-12-29

Fixed

  • Fix precedence of multiplicative operations

[0.14.0] 2021-10-22

Added

  • Build time dependency on cereal
  • Build time dependency on asciidoctor for man page generation
  • Support microsecond timestamps in stftime()
  • Add _ as integer literal digit separator
  • Support for C style integer suffix in parser
  • Add C like pointer arithmetic
  • Automatic resolution of library paths for uprobes
  • Support positional parameters as integer literals
  • Access to uprobe arguments by name
  • Support variable strings size

Changed

  • Prevent LLVM from unrolling loops

Deprecated

Removed

Fixed

  • Fix memory leaks in struct types
  • Fix strncmp() when N is bigger than on-stack buffer
  • Fix strncmp() to check for NUL terminator
  • Fix unroll() with async calls
  • Fix string comparison codegen
  • Fix verifier error when accessing same tracepoint field twice
  • Fix reading too many bits for <64 bit kfunc args
  • Fix misaligned stack access for map keys

Tools

Documentation

  • Write new man page for bpftrace(8)

[0.13.1] 2021-12-29

Fixed

  • Fix precedence of multiplicative operations

[0.13.0] 2021-07-01

Added

  • Warn if attaching a kprobe to a non-traceable function
  • Support for -k[k] and elapsed in iter probes

Changed

  • Disallow accessing common tracepoint fields
  • Improve JSON printing (nested structs)
  • Return 1 from tracepoint probes
  • Preserve original order of struct types
  • Forbid casting from/to struct types

Deprecated

Removed

Fixed

  • Fix single arg wildcard probe listing
  • Fix --info reporting wrong libbpf build info
  • Reduce frequency of lost stack traces
  • Make kaddr() report failure for unknown kernel symbols
  • Fix false non-traceable function warnings
  • Fix memory leak in clang parser

Tools

Documentation

[0.12.1] 2021-04-16

Incorrect --info output bug fix release

[0.12.0] 2021-04-01

Added

  • Add path builtin
  • Allow wildcards for tracepoint categories
  • Add wildcard support for kfunc probe types
  • Add builtin function: strftime
  • Fix printf not allowing format specifiers to be directly followed by alphabetic characters
  • Fix top and div arguments of print() not working for Type::avg maps
  • Add an option to disable warning messages
  • Support scientific notation for integer literals
  • List retprobes
  • Resolve unknown typedefs using BTF and give a hint when a type cannot be found
  • Support multi-matched globbed targets for uprobe and ustd probes
  • Positional parameters: support numbers as strings and params as string literals
  • Support for tracepoint __data_loc fields
  • Set addrspace info for various builtins
  • Support watchpoint for kernel space address
  • Support for pointer to pointer
  • Support for uprobe refcounts
  • Add basic options and documentations for fuzzing
  • Disable str($# + 1)
  • Array improvements (support assignment to variables and usage as a map key)
  • Add builtin function: macaddr
  • Add support for usdt arguments utilising the index register and scale
  • Add basic mips64 support
  • Printing structures
  • Array indexing on pointers

Changed

  • Warn if using print on stats maps with top and div arguments
  • Prefer BTF data if available to resolve tracepoint arguments
  • Improve error messages for kfunc probe types
  • Better handling of empty usdt namespaces
  • Switch nsecs to ktime_get_boot_ns
  • Tracepoint __data_loc fields are renamed from args->data_loc_name to args->name
  • Change a part of the message of '-v' output
  • Improve tuple assignment error message
  • Remove "BTF: using data from ..." message when using -v flag
  • Add -q option for quiet
  • Optimize unknown/incomplete types resolution
  • Do not check size of the format string of printf
  • Unify semantics of wildcards in probe listing and attachement
  • Improve codegen for structs and arrays
  • Do not unpack in-kernel headers if system has BTF

Deprecated

Removed

  • Disable some kfunc probes whose tracing crashes

Fixed

  • Fix negative overflow bug and unstable tests in PR #1416
  • Fix print outputs nothing when used on hist() maps with large top args
  • Fix array indexing regression
  • Fix type resolution for struct field access via variables
  • Fix wrong setting of vmlinux_location.raw when offset kprobe used
  • Fix pointer arithmetic for positional parameters
  • SEGV when using perf format for stacks
  • Fix llvm errors of PositonalParameter
  • Error if Positional Params num is zero
  • Fix LNOT
  • Fix invalid cast handling in tuple
  • Check string comparison size
  • Fix a possible integer overflow
  • Printing of small integers with printf
  • Fix bitfield access for big endian
  • Error if using negative length in str() and buf()
  • Only create int type Identifier when it is used in sizeof()
  • Check exponent value can be expressed in uint64_t
  • Fix tracing of usdt probes across namespaces
  • Disable reg() for kfunc
  • Fix several undefined behavior
  • Fix invalid size crash when using strftime() inside a tuple
  • Don't create a tuple if an element size if zero
  • Support clear() and delete() on a count()-based map without a key
  • Add workaround for too deep or long macros
  • Fix attaching to usdt probes in shared libraries
  • Fix attaching to multiple usdt probe locations with the same label
  • Fix signed extension of usdt arguments to the internal 64-bit integer type

Tools

  • Hook up execsnoop.bt script onto execveat call
  • Support new capabilities for capable.bt
  • Add disk field to biosnoop

Documentation

  • Document uptr() and kptr() function

[0.11.4] 2020-11-14

Alpine build bug fix release

[0.11.3] 2020-11-13

bcc 0.17 support release

Changed

Detect 7 arg bpf_attach_uprobe() API

[0.11.2] 2020-10-30

LLVM 11 support release

Added

Add LLVM11 build support

[0.11.1] 2020-09-22

Bug fix release for the Docker build

Fixed

  • Don't strip END_trigger

[0.11.0] 2020-07-15

All Changes

Added

  • Allow uprobe placement on arbitrary addresses when --unsafe is used
  • Support for s390x
  • buf a new function that makes it possible to safely print arbitrary binary data
  • A new function, sizeof, which returns the size of an expression, similar to sizeof in C
  • C style while loop support, while ($a < 100) { $a++ }
  • Using a BTF enum value will pull in the entire enum definition
  • Add support of using positional params in unroll and increase the unroll limit to 100
  • Support for piping scripts in via stdin
  • Don't require <linux/types.h> if --btf is specified
  • Silence errors about modprobe not being found
  • With --btf, do not use <linux/types.h> for resolving tracepoint defs
  • Add environment variable, BPFTRACE_PERF_RB_PAGES, to tune perf ring buffer size
  • Add --usdt-file-activation to activate usdt semaphores by file name
  • Introduce -k and -kk options. Emit a warning when a bpf helper returns an error
  • Add tuples to language
  • Add support for listing struct/union/enum definitions using BTF
  • Add libbpf build into in --info
  • Add support for time units us and hz for probe interval
  • Add support for non-map print()
  • Enable printf, cat and system to have more than 7 arguments
  • Enable the ternary operator to evaluate builtin calls

Changed

  • Require C++17 and CMake 3.8 for building bpftrace
  • Allow positional parameters in probe attachpoint definitions
  • Only list uprobe and usdt probes when -p is given
  • Remove address space memory limit

Deprecated

Removed

  • Drop LLVM 5 support
  • Remove the --btf option

Fixed

  • Various big endian related fixes
  • Type check the cond of if and ternary statements
  • Fix usdt reads in various architecture
  • Attach to duplicated USDT markers
  • Fix KBUILD_MODNAME
  • Fix ntop() not accepting tracepoint arguments
  • Fix attaching to usdt probes in multiple binaries
  • Decrement usdt semaphore count after bpftrace execution
  • Reduce high memory consumption when using usdt semaphore
  • Remove registers that are not in struct pt_regs (x86-64)
  • Ignore trailing kernel module annotation for k[ret]probe's

Tools

Documentation

  • Clean up README
  • Add missing struct keyword to examples in the one liner tutorial

[0.10.0] 2020-04-12

Highlights

kfuncs

Improved kprobes which are near zero overhead and use BTF to derive argument names and types:

bpftrace -e 'kfunc:fget { printf("fd %d\n", args->fd);  }'

C++ Symbol demangling

bpftrace can now demangle C++ symbols in binaries:

bpftrace -e 'uprobe:./a.out:"foo()" {printf("ok\n");}

if else control flow

Support for if else has been added, making it possible to write:

if (cond) {
  ...
} else if (cond) {
  ...
}

Instead of:

if (cond) {
  ...
} else {
  if (cond) {
    ...
  }
}

LLVM 9 & 10

Support for LLVM 9 and LLVM 10 has been added.

Docker images

Docker images containing a static build are now available on quay.io.

All Changes

Added

  • Add kfunc/kretfunc description to docs/reference_guide.md (e3b9518b) by Jiri Olsa <jolsa@kernel.org>
  • Add kfunc/kretfunc probe tests (bbf2083a) by Jiri Olsa <jolsa@kernel.org>
  • Add test_btf class to setup BTF data (ecbd66b7) by Jiri Olsa <jolsa@kernel.org>
  • Fortify exported functions with has_data check (083bcf9f) by Jiri Olsa <jolsa@kernel.org>
  • Detect btf feature via BTF class (a9450425) by Jiri Olsa <jolsa@kernel.org>
  • Add support to filter kfunc list (a98b3f02) by Jiri Olsa <jolsa@kernel.org>
  • List kfunc functions (75a0f9c7) by Jiri Olsa <jolsa@kernel.org>
  • Generate load code for kfunc/kretfunc arguments (30f699b1) by Jiri Olsa <jolsa@kernel.org>
  • Resolve kfunc arguments in semantic analyser (de2f6c1d) by Jiri Olsa <jolsa@kernel.org>
  • Resolve kfunc arguments in BTF field analyser (8cd3fb50) by Jiri Olsa <jolsa@kernel.org>
  • Add single_provider_type function (3a6325e5) by Jiri Olsa <jolsa@kernel.org>
  • Factor out builtin_args_tracepoint function (e33c246e) by Jiri Olsa <jolsa@kernel.org>
  • Add BTF::resolve_args function to resolve kfunc arguments (69c8fd45) by Jiri Olsa <jolsa@kernel.org>
  • Load and attach kfunc/kretfunc programs (126a9edd) by Jiri Olsa <jolsa@kernel.org>
  • Add missing ProbeType::watchpoint to probetypeName function (343165b1) by Jiri Olsa <jolsa@kernel.org>
  • Allow to specify kernel include dirs (1e987f45) by Jiri Olsa <jolsa@kernel.org>
  • Feature detect probe_read_{kernel,user} (b7c236f9) by bas smit <bas@baslab.org>
  • Add support for using demangled symbols in uretprobe names (269033de) by Masanori Misono <m.misono760@gmail.com>
  • Implement else if control flow (34fc2801) by Daniel Xu <dxu@dxuuu.xyz>
  • detect lockdown mode (37d28c26) by bas smit <bas@baslab.org>
  • Extend info flag with system/build info (73abef68) by bas smit <bas@baslab.org>
  • Add support for C++ mangled symbols in uprobe names #687 (e8656cbd) by Augusto Caringi <acaringi@redhat.com>

Changed

  • Allow hex/octal positional parameters (ef20128b) by bas smit <bas@baslab.org>
  • Allow negative positional parameters (babf057e) by bas smit <bas@baslab.org>
  • Make positionalparameters literal to avoid warnings (0859fc6b) by bas smit <bas@baslab.org>
  • Make exit() terminate current probe (6334c23d) by bas smit <bas@baslab.org>
  • Improve an error message when trying to use 'args' other than tracepoint (e303048c) by Masanori Misono <m.misono760@gmail.com>
  • Disable a symbol name cache if ASLR is enabled and -c option is not given (4651255b) by Masanori Misono <m.misono760@gmail.com>
  • Remove deprecated builtins (2667b8a2) by bas smit <bas@baslab.org>

Fixed

Tools

Documentation

Internal

  • Remove codegen tests warning (f18746af) by bas smit <bas@baslab.org>
  • build: document libbcc linking (#1252) (4dadd515) by bas smit <bas@baslab.org>
  • cmake: bail on unsupported architectures (4ae387f0) by Daniel Xu <dxu@dxuuu.xyz>
  • Revert "Only link agains libbpf if it exists (#1247)" (04ecb731) by bas smit <bas@baslab.org>
  • Only link agains libbpf if it exists (#1247) (a3febcb8) by bas smit <bas@baslab.org>
  • Align libbpf.h (229eef6c) by bas smit <bas@baslab.org>
  • Sync libbpf with v5.6 (0b369fe6) by bas smit <bas@baslab.org>
  • Add runtime tests for ternary (2efcdb29) by Masanori Misono <m.misono760@gmail.com>
  • Use BPFtrace::error for TracepointFormatParser errors (#1243) (9106e10c) by Martin Schmidt <martin.schmidt@epita.fr>
  • codegen: Send map id instead of ident string for async events (9a063adc) by bas smit <bas@baslab.org>
  • ci: Add LLVM 10 (696e16ce) by Masanori Misono <m.misono760@gmail.com>
  • Add codegen test for LLVM 10 (33fe3ee4) by Masanori Misono <m.misono760@gmail.com>
  • Suppress -Winconsistent-missing-override warning (2044c53d) by Masanori Misono <m.misono760@gmail.com>
  • Use CreateMemCpy that takes MaybeAlign in LLVM 10 (a67fd22d) by Masanori Misono <m.misono760@gmail.com>
  • Don't over-read usdt arguments (1711ec70) by Daniel Xu <dxu@dxuuu.xyz>
  • Add proper bcc prefix for bcc headers (977d5851) by Jiri Olsa <jolsa@kernel.org>
  • Use urandom instead of random (23603bfc) by Masanori Misono <m.misono760@gmail.com>
  • tests: fix llmv 5 tests (449b33a4) by bas smit <bas@baslab.org>
  • codegen: correctly copy and "usym" map (f7a9d9e2) by bas smit <bas@baslab.org>
  • codegen: Use map type in perf_event signature (0a27eeb5) by bas smit <bas@baslab.org>
  • codegen: avoid usym copy on map assignment (25116d21) by bas smit <bas@baslab.org>
  • codegen: deduplicate usym code (078a8236) by bas smit <bas@baslab.org>
  • codegen: fix strncmp type issues (e523e2c7) by bas smit <bas@baslab.org>
  • codegen: ensure getmapkey stores with equal types (1822cfde) by bas smit <bas@baslab.org>
  • codegen: fix deleteElem typing issues (0c6403bc) by bas smit <bas@baslab.org>
  • codegen: clang-format join (e641b115) by bas smit <bas@baslab.org>
  • codegen: memset takes an i8 value (d2a70f98) by bas smit <bas@baslab.org>
  • codegen: remove useless literal handling from signal (3bbbfe24) by bas smit <bas@baslab.org>
  • codegen: fix probe_read typing issue (eca43df2) by bas smit <bas@baslab.org>
  • codegen: fix sarg type issue (09152138) by bas smit <bas@baslab.org>
  • codegen: fix probe_read_str typing issues (914c87e2) by bas smit <bas@baslab.org>
  • codegen: fix reg typing issue (0c66f2f5) by bas smit <bas@baslab.org>
  • parser: Do not remove empty probe arguments (ae4fe7fb) by Daniel Xu <dxu@dxuuu.xyz>
  • cmake: Link against libz when searching for btf_dump__new (6323d8fb) by Daniel Xu <dxu@dxuuu.xyz>
  • snapcraft: add arm64 to build architectures (2b0faa3e) by Colin Ian King <colin.king@canonical.com>
  • cmake: Control manpages generation (ef39ed0f) by Ovidiu Panait <ovpanait@gmail.com>
  • Don't check str arg length for cgroupid (aa94d9b3) by Chris Hunt <chrahunt@gmail.com>
  • Track current function name during analysis (d1f23cab) by Chris Hunt <chrahunt@gmail.com>
  • Remove unused srclines_ (ce9c4179) by Chris Hunt <chrahunt@gmail.com>
  • Remove unused print_map_lhist (7c32b827) by Chris Hunt <chrahunt@gmail.com>
  • Remove leftover print_hist declaration (63f4f029) by Chris Hunt <chrahunt@gmail.com>
  • Remove leftover print_lhist declaration (8008c5a9) by Chris Hunt <chrahunt@gmail.com>
  • Add apt-transport-https for xenial build (8bcf0c04) by Dale Hamel <dale.hamel@shopify.com>
  • Add the snapcraft yaml rules to allow bpftrace to be built as a snap. (c2eceeb3) by Colin Ian King <colin.king@canonical.com>
  • Revert "Require C++17 to build" (24f97308) by bas smit <bas@baslab.org>
  • Fix tracepoint expansion regression (b4f0c204) by Daniel Xu <dxu@dxuuu.xyz>
  • codegen: fix map typing (11814f29) by bas smit <bas@baslab.org>
  • codegen: Update LLVM5 codegen tests (c4f147d3) by bas smit <bas@baslab.org>
  • codegen: fix argX type issue (c04bad20) by bas smit <bas@baslab.org>
  • codegen: Fix comm typing issues (5926429d) by bas smit <bas@baslab.org>
  • codegen: Fix stackid typing issues (a7ba4a1e) by bas smit <bas@baslab.org>
  • codegen: Fix exit typing issues (f676b9c5) by bas smit <bas@baslab.org>
  • codegen: Fix ntop typing issues (ac792f58) by bas smit <bas@baslab.org>
  • codegen: Fix usym typing issues (2e84b52d) by bas smit <bas@baslab.org>
  • irbuilder: Add struct storage (1fbccf1b) by bas smit <bas@baslab.org>
  • Strengthen tracepoint format parsing (a2e3d5db) by Jiri Olsa <jolsa@kernel.org>
  • cmake: use *_LIBRARIES when testing for libbfd version (b1200771) by Daniel Xu <dxu@dxuuu.xyz>
  • Handle escaped double quotes in AttachPointParser (b98b281d) by Daniel Xu <dxu@dxuuu.xyz>
  • Support :s in quoted string (c230fc42) by Daniel Xu <dxu@dxuuu.xyz>
  • Add parser tests for trailing non-numeric characters (c0b8644f) by Daniel Xu <dxu@dxuuu.xyz>
  • Update AttachPoint::name to print out watchpoints correctly (dd2312c7) by Daniel Xu <dxu@dxuuu.xyz>
  • Unify ast::AttachPoint::addr and ast::AttachPoint::address (71f4205f) by Daniel Xu <dxu@dxuuu.xyz>
  • Fix semantic analyser unit tests (39d4a493) by Daniel Xu <dxu@dxuuu.xyz>
  • Fix runtime tests (1612af97) by Daniel Xu <dxu@dxuuu.xyz>
  • Update callee interfaces (78c04b01) by Daniel Xu <dxu@dxuuu.xyz>
  • Move AttachPoint parsing logic out of bison (43a72e37) by Daniel Xu <dxu@dxuuu.xyz>
  • tests: cmake: Fix build with ninja (f1fc5190) by Ovidiu Panait <ovpanait@gmail.com>
  • bpffeature: move macros to header (860ac6d4) by bas smit <bas@baslab.org>
  • bpffeature: delete copy/move constructors/assign (ac5e0025) by bas smit <bas@baslab.org>
  • bpffeature: cleanup report (af780eb1) by bas smit <bas@baslab.org>
  • bpffeature: detect supported program types (ce5bbb78) by bas smit <bas@baslab.org>
  • bpffeature: detect supported map types (437df58d) by bas smit <bas@baslab.org>
  • bpffeature: remove boilerplate (ac4ad41c) by bas smit <bas@baslab.org>
  • Avoid calling "slow" regex constructor (fc88784e) by bas smit <bas@baslab.org>
  • CreateMemSet: llvm10: Fix compilation errors (6f81111c) by Ovidiu Panait <ovidiu.panait@windriver.com>
  • Discard return value for emitAndFinalize() (29caf4b7) by Daniel Xu <dxu@dxuuu.xyz>
  • Require C++17 to build (458bf66d) by Daniel Xu <dxu@dxuuu.xyz>
  • Make docker run command more generic (#1182) (c67730c4) by Connor Nelson <Connor@ConnorNelson.com>
  • Use host network when building docker image (23c29ff1) by Daniel Xu <dxu@dxuuu.xyz>
  • fix typo (92f25f95) by zeil <nonamezeil@gmail.com>
  • Resolve USDT binaries relative to mount namespace (3bb4a9fd) by Dale Hamel <dale.hamel@shopify.com>
  • Add docker images as options in install.md (30756be7) by Dale Hamel <dale.hamel@srvthe.net>
  • Add "edge" build, push master to :latest and :edge (b0e6bdc7) by Dale Hamel <dale.hamel@shopify.com>
  • ast: add missing parameter name (f156a0fb) by bas smit <bas@baslab.org>
  • Add the Japanese translation version of the one-liner tutorial (78621fb1) by Masanori Misono <m.misono760@gmail.com>
  • Revert "No need to promote scalars to 64-bit" (9a9d1451) by Dale Hamel <dale.hamel@shopify.com>
  • fix build error (ed48e795) by bas smit <bas@baslab.org>
  • Make BEFORE clause in runtime tests synchronous (77f93dbc) by Dale Hamel <dale.hamel@shopify.com>
  • Only need to rebuild codegen tests if C++ files change (d0792c06) by Alastair Robertson <alastair@ajor.co.uk>
  • Replace tabs with spaces (f4e377a1) by Alastair Robertson <alastair@ajor.co.uk>
  • No need to promote scalars to 64-bit (8af25ae9) by Alastair Robertson <alastair@ajor.co.uk>
  • Regenerate codegen_includes.cpp when files it references are updated (d6d0e836) by Alastair Robertson <alastair@ajor.co.uk>
  • ci: Add LLVM 9 (42dab3c9) by bas smit <bas@baslab.org>
  • codegen: add LLVM-9 rewriter exceptions (681d1850) by bas smit <bas@baslab.org>
  • codegen: LLVM9 rewriter (3ec8af95) by bas smit <bas@baslab.org>
  • codegen: Rewrite tests (aefc89e7) by bas smit <bas@baslab.org>
  • codegen: Remove version dependence from codegen (cd3ab819) by bas smit <bas@baslab.org>
  • Add STATIC_LIBC=ON to Docker build scripts (6ef3af3c) by Alastair Robertson <alastair@ajor.co.uk>
  • Support pushing docker images to quay.io from github actions (b8ab21ae) by Dale Hamel <dale.hamel@shopify.com>
  • Add xenial to CI build (153e61ef) by Ace Eldeib <alexeldeib@gmail.com>
  • Only send IRC notifications for build failures on master (471e79b7) by Alastair Robertson <alastair@ajor.co.uk>
  • vagrant: fix formatting (e8a14566) by bas smit <bas@baslab.org>
  • vagrant: Add fedora 31 (c2354a78) by bas smit <bas@baslab.org>
  • vagrant: Update ubuntu boxes (9610895c) by bas smit <bas@baslab.org>
  • Add Dockerfile.release for bpftrace docker image on quay.io (c2568ee5) by Dale Hamel <dale.hamel@shopify.com>
  • Mark context accesses as volatile (56d4721e) by Masanori Misono <m.misono760@gmail.com>
  • Cast ctx automatically depending on a program type (0e4282e1) by Masanori Misono <m.misono760@gmail.com>
  • Access context fields directly (3a910814) by Masanori Misono <m.misono760@gmail.com>
  • Error if trying to use context as a map key/value (b7d2510b) by Masanori Misono <m.misono760@gmail.com>
  • Introduce Type::ctx (f05b4cda) by Masanori Misono <m.misono760@gmail.com>
  • No need to check result of check_assignment (f04c1ad9) by Alastair Robertson <alastair@ajor.co.uk>
  • Add workaround to remove duplicate entries in uprobe symbols listing (8f5e90f4) by Augusto Caringi <acaringi@redhat.com>
  • cmake: add GNUInstallDirs support (2f380013) by Ovidiu Panait <ovpanait@gmail.com>
  • Allow running tests as non-root (again) (efa2da20) by Daniel Xu <dxu@dxuuu.xyz>
  • Report kernel instruction limit (76770de3) by bas smit <bas@baslab.org>
  • Add missing include to btf.h (145041ec) by Augusto Caringi <acaringi@redhat.com>

[0.9.4] 2020-02-04

Highlights

  • New calls: signal, override, strncmp
  • Support for attaching to kprobes at an offset
  • Support for struct bitfields

All Changes

Added

Changed

  • Take first binary match for PATH lookup on uprobe and USDT (ec5c2c3) by Daniel Xu <dxu@dxuuu.xyz>
  • Infer uaddr pointer type from ELF symbol size (59b0659) by bas smit <bas@baslab.org>
  • Rename override_return to override (96cb4b5) by bas smit <bas@baslab.org>
  • Runtime feature testing (17f3c82) by bas smit <bas@baslab.org>
  • Silenced unsigned/signed comparison warning (75101f9) by Daniel Xu <dxu@dxuuu.xyz>
  • error message for verification buffer size (41c0ab8) by Gordon Marler <gmarler@bloomberg.net>
  • Reimplement elapsed using a hidden map (2613ea6) by bas smit <bas@baslab.org>
  • Remove dependency on 'command' shell builtin (3f7a94a) by Adam Jensen <acjensen@gmail.com>
  • Make parsing fail if lexing fails (d092cb1) by Alastair Robertson <alastair@ajor.co.uk>
  • Limit increment/decrement to variables (c126441) by bas smit <bas@baslab.org>
  • Only warn about missing BTF info in debug mode (f84ae5c) by Daniel Xu <dxu@dxuuu.xyz>
  • Allow uretprobe at an address (f0785b5) by bas smit <bas@baslab.org>
  • fix uprobe address on short name (f7ed963) by bas smit <bas@baslab.org>
  • Reverse return value of strncmp (384640e) by Jay Kamat <jaygkamat@gmail.com>
  • Make strcmp return 0 on match (8d9069c) by bas smit <bas@baslab.org>
  • Differentiate between regular structs and typedef'd structs (8d34209) by Alastair Robertson <alastair@ajor.co.uk>

Fixed

  • Support "." in attach point function argument (c532159) by Daniel Xu <dxu@dxuuu.xyz>
  • clang_parser: workaround for asm_inline in 5.4+ kernel headers (c30e4dd) by Andreas Gerstmayr <agerstmayr@redhat.com>
  • Consider signed array (9bb6a8b) by Masanori Misono <m.misono760@gmail.com>
  • Support anonymous struct/union in BTF::type_of() (36d9914) by Masanori Misono <m.misono760@gmail.com>
  • Allow resolving binary paths in different mount ns (124e569) by Dale Hamel <dale.hamel@shopify.com>
  • Avoid useless allocations in strncmp (551664e) by bas smit <bas@baslab.org>
  • Avoid comparing past string length (b10dc32) by bas smit <bas@baslab.org>
  • Call llvm.lifetime.end after memcpy if the expression is not a variable (8b2d219) by Masanori Misono <m.misono760@gmail.com>
  • bug: Strip newlines from log message (361d1fc) by bas smit <bas@baslab.org>
  • Fix buggy signed binop warnings (e87897c) by Daniel Xu <dxu@dxuuu.xyz>
  • Reuse cat and system ID when expanding probes (79aada5) by bas smit <bas@baslab.org>
  • Remove unneeded probe_reads from strcmp (43b4e4c) by bas smit <bas@baslab.org>
  • Fix func variable in uprobe (d864f18) by Masanori Misono <m.misono760@gmail.com>
  • Add space for the error message about kernel.perf_event_max_stack (de2a7a8) by Kenta Tada <Kenta.Tada@sony.com>
  • Improve uprobe/usdt visitor error handling and messaging (5005902) by Adam Jensen <acjensen@gmail.com>
  • Fix some semantic analyser crashes (b11dc75) by Alastair Robertson <alastair@ajor.co.uk>
  • Fix codegen for modulo operation (fe0ed5a) by Daniel Xu <dxu@dxuuu.xyz>

Documentation

Internal

[0.9.3] 2019-11-22

Highlights

  • Allow attaching to uprobes at an offset
  • BTF support
  • integer casts
  • integer pointer casts

All Changes

Added

Changed

  • Use the same shebang for all tools (78eb451) by bas smit <bas@baslab.org>
  • Change exit() to send SIGTERM to child processes (649cc86) by Matheus Marchini <mmarchini@netflix.com>
  • Make stats and avg signed (809dc46) by bas smit <bas@baslab.org>
  • Refactor error printer to make severity level configurable (676a6a7) by bas smit <bas@baslab.org>
  • Make output line-buffered by default (#894) (78e64ba) by Daniel Xu <dxu@dxuuu.xyz>
  • cmake: don't use language extensions (like gnu++14) (4ce4afc) by Matheus Marchini <mmarchini@netflix.com>
  • add file extension on README (545901c) by sangyun-han <sangyun628@gmail.com>
  • build: don't set -std flag manually (3cbc482) by Matheus Marchini <mat@mmarchini.me>
  • Don't use random value on stack (b67452b) by Daniel Xu <dxu@dxuuu.xyz>
  • codegen: ensure logical OR and AND works with non-64-bit integers (69cbd85) by Matheus Marchini <mat@mmarchini.me>
  • Allow child process to exit on attach_probe failure (#868) (ecf1bc8) by Adam Jensen <acjensen@gmail.com>
  • json output: Make output more consistent (#874) (9d1269b) by Dan Xu <dxu@dxuuu.xyz>
  • Do not generate extra load for ++/-- for maps/variables (3f79fad) by Jiri Olsa <jolsa@kernel.org>

Fixed

  • semantic_analyser: validate use of calls as map keys (b54c085) by Matheus Marchini <mat@mmarchini.me>
  • codegen: fix rhs type check for binop (2d87213) by Daniel Xu <dxu@dxuuu.xyz>
  • Fix map field access (a9acf92) by Jiri Olsa <jolsa@kernel.org>
  • Correctly parse enums (59d0b0d) by Daniel Xu <dxu@dxuuu.xyz>
  • Allow build from uncommon bcc installation (9986329) by Jiri Olsa <jolsa@kernel.org>
  • Fix sigint handling under heavy load (0058d41) by Augusto Caringi <acaringi@redhat.com>
  • Assign default value to elem_type to avoid undefined behavior. (a0b8722) by Florian Kuebler <kuebler@google.com>
  • Strip trailing newline from error message (5315eee) by bas smit <bas@baslab.org>
  • Use strerror to improve cgroupid error message (72de290) by bas smit <bas@baslab.org>
  • Initialize member variable (4dd8bb8) by Daniel Xu <dxu@dxuuu.xyz>
  • Fix umask build issue (#861) (24de62a) by Michael Würtinger <michael@wuertinger.de>
  • Handle SIGTERM gracefully (#857) (fb47632) by Dan Xu <dxu@dxuuu.xyz>
  • json output: suppress output if map is not initialized (348975b) by Andreas Gerstmayr <agerstmayr@redhat.com>
  • fix 'designated initializers' build errors (#847) (4910e75) by Alek P <alek-p@users.noreply.github.com>
  • remove invalid 'unused attribute' (9bf8204) by Matheus Marchini <mat@mmarchini.me>

Documentation

Internal

  • Add tests for sargX builtin (774a7a6) by Adam Jensen <acjensen@gmail.com>
  • Add test (0c08b1d) by Daniel Xu <dxu@dxuuu.xyz>
  • Avoid leaking state between cmake tests (625269f) by bas smit <bas@baslab.org>
  • Avoid testing for FOUR_ARGS_SIGNATURE on systems without bfd (cd1d231) by bas smit <bas@baslab.org>
  • Unset CMAKE_REQUIRED_LIBRARIES to avoid influencing tests (ab0665b) by bas smit <bas@baslab.org>
  • Define PACKAGE to make libbfd happy (d165396) by Daniel Xu <dxu@dxuuu.xyz>
  • Fix 'may be used uninitialized' build warning in bfd-disasm.cpp (ffd203b) by Augusto Caringi <acaringi@redhat.com>
  • Change "variable.tracepoint arg casts in predicates" runtime test (9aae057) by Jiri Olsa <jolsa@kernel.org>
  • bfd-disasm: fix LIBBFD_DISASM_FOUR_ARGS_SIGNATURE (7d62627) by Matheus Marchini <mmarchini@netflix.com>
  • semantic_analyser: fix gcc build error on xenial (0e6014a) by Matheus Marchini <mmarchini@netflix.com>
  • Prevent forks from notifying the IRC channel (ca93440) by Daniel Xu <dxu@dxuuu.xyz>
  • Add runtime tests for uprobe offset/address (d9c2bab) by Jiri Olsa <jolsa@kernel.org>
  • Bypass the uprobe align check in unsafe mode (18b9635) by Jiri Olsa <jolsa@kernel.org>
  • Adding tests for uprobe offset definitions (d894d0e) by Jiri Olsa <jolsa@kernel.org>
  • Add BfdDisasm class (8198628) by Jiri Olsa <jolsa@kernel.org>
  • Add Disasm class (6f7bc6f) by Jiri Olsa <jolsa@kernel.org>
  • Add support to check for libbfd/libopcodes libraries (542f2b9) by Jiri Olsa <jolsa@kernel.org>
  • Add resolve_offset_uprobe functions (7be4143) by Jiri Olsa <jolsa@kernel.org>
  • Add address and func_offset to ast::AttachPoint and Probe classes (893201a) by Jiri Olsa <jolsa@kernel.org>
  • Fix sigint under heavy load runtime test (4f7fd67) by Daniel Xu <dxu@dxuuu.xyz>
  • Notify irc channel on build failures (83b5684) by Daniel Xu <dxu@dxuuu.xyz>
  • Add BTF class (43530aa) by Jiri Olsa <jolsa@kernel.org>
  • Read every BTF type (67dbe3f) by Daniel Xu <dxu@dxuuu.xyz>
  • Disable codegen.logical_and_or_different_type test in alpine CI (5271e6c) by Daniel Xu <dxu@dxuuu.xyz>
  • Warn when doing signed division (#910) (fff3b05) by Daniel Xu <dxu@dxuuu.xyz>
  • Add short option for --btf and update usage (88dbe47) by Daniel Xu <dxu@dxuuu.xyz>
  • Add BTF tests (47621bb) by Jiri Olsa <jolsa@kernel.org>
  • Add ClangParser::parse_btf_definitions function (54cf4ab) by Jiri Olsa <jolsa@kernel.org>
  • Add SizedType::operator!= function (8cb79f9) by Jiri Olsa <jolsa@kernel.org>
  • Add ClangParserHandler::check_diagnostics function (3e75475) by Jiri Olsa <jolsa@kernel.org>
  • Add ClangParser::visit_children function (4842ccf) by Jiri Olsa <jolsa@kernel.org>
  • Add BTF::c_def function (02a2d0d) by Jiri Olsa <jolsa@kernel.org>
  • Add Expression::resolve string set (0779333) by Jiri Olsa <jolsa@kernel.org>
  • Add curtask task_struct cast type for field access (80cb0d7) by Jiri Olsa <jolsa@kernel.org>
  • test: fix watchpoint runtime test flakiness (88fc1b8) by Matheus Marchini <mmarchini@netflix.com>
  • Disable sign checking for division binop (8084463) by bas smit <bas@baslab.org>
  • Add ability to test for warnings (b19ebb6) by bas smit <bas@baslab.org>
  • Revert "Signed types (#834)" (6613a14) by Daniel Xu <dxu@dxuuu.xyz>
  • Signed types (#834) (446facb) by bas smit <bas@baslab.org>
  • test: fix flaky 32-bit tp runtime test (c0d94c8) by Matheus Marchini <mat@mmarchini.me>
  • travis: use bionic and enable runtime tests (57c5a55) by Matheus Marchini <mat@mmarchini.me>
  • test: print bpftrace script when codegen test fails (b0c4902) by Matheus Marchini <mat@mmarchini.me>
  • tests: add test for cat with fmt str (#842) (b3143a6) by Matheus Marchini <mat@mmarchini.me>
  • Fix tests (#844) (fd0ec92) by bas smit <bas@baslab.org>

[0.9.2] 2019-07-31

Highlights

  • New environment variables (BPFTRACE_NO_USER_SYMBOLS, BPFTRACE_LOG_SIZE)
  • New probe type: memory watchpoint
  • Support for JSON output

All Changes

Added

  • Add vargs support for cat() builtin (similar to system) (7f1aa7b) by Augusto Caringi <acaringi@redhat.com>
  • Add memory watchpoint probe type (#790) (854cd4b) by Dan Xu <dxu@dxuuu.xyz>
  • Add support for Go symbol names to uaddr (#805) (e6eb3dd) by Jason Keene <jasonkeene@gmail.com>
  • add option for JSON output (5c6f20a) by Andreas Gerstmayr <andreas@gerstmayr.me>
  • Add $# for number of positional arguments (ec8b61a) by Mark Drayton <mdrayton@gmail.com>
  • Add BPFTRACE_NO_USER_SYMBOLS environment variable (#800) (41d2c9f) by Dan Xu <dxu@dxuuu.xyz>
  • Add line numbers to parser error messages (a584752, 2233ea7) by bas smit <bas@baslab.org>
  • Add new environment variable BPFTRACE_LOG_SIZE (2f7dc75, 7de1e84, 2f7dc75) by Ray Jenkins <ray.jenkins@segment.com>

Changed

  • Terminate when map creation fails (6936ca6) by bas smit <bas@baslab.org>
  • Print more descriptive error message on uprobe stat failure (0737ec8) by Dan Xu <dxu@dxuuu.xyz>
  • Allow '#' in attach point path (2dfbc93) by Dan Xu <dxu@dxuuu.xyz>
  • Disable func, retval and reg for tracepoints since tracepoints can't access this information (7bfc0f8) by bas smit <bas@baslab.org>

Fixed

  • Skip keys which were removed during iteration on print (bfd1c07) by Andreas Gerstmayr <agerstmayr@redhat.com>
  • Fix exiting prematurely on strace attach (a584752..0e97b2c) by Jay Kamat <jaygkamat@gmail.com>
  • Fix unused variable warnings (9d07eb5) by Daniel Xu <dxu@dxuuu.xyz>
  • Fix alignment issues on ntop (2006424) by Matheus Marchini <mat@mmarchini.me>
  • Fix BEGIN being triggered multiple times when bpftrace is run a second time (14bc835) by bas smit <bas@baslab.org>
  • Fix crash when using $0 (b41d66d) by Alastair Robertson <alastair@ajor.co.uk>
  • Fix tcp tools printing errors (206b36c) by bas smit <bas@baslab.org>

Documentation

Internal

  • Fix failing test (086c018) by bas smit <bas@baslab.org>
  • Collapse bcc symbol resolvers by process executable (63ff8b0) by Daniel Xu <dxu@dxuuu.xyz>
  • Remove unneeded probe read (7d0aa99) by bas smit <bas@baslab.org>
  • Fix runtime test parser to not break with commented out tests (#824) (b73c963) by Augusto Mecking Caringi <acaringi@redhat.com>
  • bpftrace: optimize resolve_kname (#765) (ec5278d) by Matheus Marchini <mat@mmarchini.me>
  • Resolve symbol names using bcc_elf_foreach_sym (#811) (a2d9298) by Jason Keene <jasonkeene@gmail.com>
  • Add basic editorconfig for defining style (#775) (5b20829) by Jay Kamat <jaygkamat@gmail.com>
  • Auto-generate list of includes for codegen tests (e3b8ecd) by Alastair Robertson <alastair@ajor.co.uk>
  • Do not emit GEP instruction when pushing string literals to stack (#667) (e98530c) by Michał Gregorczyk <michalgr@users.noreply.github.com>
  • tool style tweaks (8bb0940) by Brendan Gregg <bgregg@netflix.com>
  • Clean up unused variable (#787) (8627e84) by Dan Xu <dxu@dxuuu.xyz>
  • Make member variables end with underscores (c76a8e4) by Alastair Robertson <alastair@ajor.co.uk>
  • Fail in case there's unresolved type in definitions (ecb7a1b, 2239756, a6a4fb3) by Jiri Olsa <jolsa@kernel.org>

[0.9.1] 2019-06-25

Highlights

  • Introduce compound assignment operators (+= and friends) (7f26468) by Matheus Marchini <mat@mmarchini.me>
  • Add support for arrays and IPv6 for the ntop builtin function (c9dd10f) by Matheus Marchini <mat@mmarchini.me>
  • Add basic support to enums (treat them as constants) (e4cb6ce) by Matheus Marchini <mat@mmarchini.me>
  • Add macro definition support (8826470,af67b56,14e892b) by Matheus Marchini <mat@mmarchini.me>, Javier Honduvilla Coto <javierhonduco@gmail.com>
  • Add support for arrays and IPv6 for the ntop builtin function (c9dd10f) by Matheus Marchini <mat@mmarchini.me>
  • Allow comparison of two string variables (7c8e8ed) by williangaspar <williangaspar360@gmail.com>
  • Add pre and post behavior to ++ and -- operators (f2e1345...9fea147) by Alastair Robertson <alastair@ajor.co.uk>
  • [BREAKING CHANGE] Ban kprobes that cause CPU deadlocks (40cf190) by Javier Honduvilla Coto <javierhonduco@gmail.com>
  • [BREAKING CHANGE] Add unsafe-mode and make default execution mode safe-mode (981c3cf,4ce68cd) by Daniel Xu <dxu@dxuuu.xyz>

All Changes

Added

  • Introduce compound assignment operators (+= and friends) (7f26468) by Matheus Marchini <mat@mmarchini.me>
  • Add KBUILD_MODNAME (a540fba) by Brendan Gregg <bgregg@netflix.com>
  • Add flags for include paths and files (--include and -I, respectively) (632652f) by Matheus Marchini <mat@mmarchini.me>
  • List uprobes with -l (122ef6e) by Matheus Marchini <mat@mmarchini.me>
  • Add BPFTRACE_MAX_PROBES environment variable (ddb79df) by Matheus Marchini <mat@mmarchini.me>
  • Add option to redirect trace output to file (462a811) by bas smit <bas@baslab.org>
  • Add script to check kernel requirements (ac19743) by bas smit <bas@baslab.org>
  • Add USDT wildcard matching support (82dbe4e...3725edf,648a65a) by Dale Hamel <dale.hamel@srvthe.net>
  • Add support for arrays and IPv6 for the ntop builtin function (c9dd10f,24a463f) by Matheus Marchini <mat@mmarchini.me>
  • Add 'cat' builtin (ae1cfc9,ef9baf8) by Augusto Caringi <acaringi@redhat.com>
  • Add array indexing operator [] for one-dimensional, constant arrays (ec664a1) by Dale Hamel <dalehamel@users.noreply.github.com>
  • Allow dots to truncate fields in printf (0f636c9) by Brendan Gregg <bgregg@netflix.com>
  • Add BPFTRACE_MAP_KEYS_MAX environment variable, and increase default map keys limit to 4096 (fab8bf6) by Brendan Gregg <bgregg@netflix.com>
  • Add support for delimiters in join() statement (eb40386) by Jason Koch <jkoch@netflix.com>
  • Add basic support to enums (treat them as constants) (e4cb6ce) by Matheus Marchini <mat@mmarchini.me>
  • Add macro definition support (8826470,af67b56,14e892b) by Matheus Marchini <mat@mmarchini.me>, Javier Honduvilla Coto <javierhonduco@gmail.com>
  • Add hardware:branch-misses (9631623) by Jason Koch <jkoch@netflix.com>
  • Allow comparison of two string variables (7c8e8ed) by williangaspar <williangaspar360@gmail.com>

Changed

  • Add pre and post behavior to ++ and -- operators (f2e1345...9fea147) by Alastair Robertson <alastair@ajor.co.uk>
  • Parse negative integer literals correctly (108068f) by Daniel Xu <dxu@dxuuu.xyz>
  • Tools improvements (9dbee04,a189c36) by Brendan Gregg <bgregg@netflix.com>
  • USAGE message trim (18d63b0) by Brendan Gregg <bgregg@netflix.com>
  • Allow probe builtin for BEGIN and END probes (3741efe) by bas smit <bas@baslab.org>
  • Default -d and -dd output to stdout (ecea569) by Jay Kamat <jaygkamat@gmail.com>
  • Return with error code if clang finds an error while parsing structs/enums/macros/includes (364849d) by Matheus Marchini <mat@mmarchini.me>
  • Restore map key validation (7826ee3) by Alastair Robertson <alastair@ajor.co.uk>
  • Add /usr/include to default header search path (32dd14b) by Javier Honduvilla Coto <javierhonduco@gmail.com>
  • More information in error message when failing to open script file (3b06e5f) by Alastair Robertson <alastair@ajor.co.uk>
  • [BREAKING CHANGE] Add unsafe-mode and make default execution mode safe-mode (981c3cf,4ce68cd) by Daniel Xu <dxu@dxuuu.xyz>
  • Safety measure for LLVM out of memory issue (6b53e4a) by Brendan Gregg <bgregg@netflix.com>
  • Allow non-zero lhist min value (51fdb6a) by bas smit <bas@baslab.org>
  • Improvements in startup speed (5ed8717,1ffb50f) by Matheus Marchini <mat@mmarchini.me>
  • When using -c, spawn the child process only when the tracing is ready (e442e9d) by Jiri Olsa <jolsa@kernel.org>
  • Allow more pointers as ints (3abc93e) by Brendan Gregg <bgregg@netflix.com>
  • Validate that PID (received via -p) is an integer (48206ad) by Javier Honduvilla Coto <javierhonduco@gmail.com>
  • Promote map keys to 64-bit (e06e39d) by Brendan Gregg <bgregg@netflix.com>
  • Add hint when traced PID is not running (9edb3e1) by Javier Honduvilla Coto <javierhonduco@gmail.com>
  • Allow pointers in printf, mapkeys, and filters (0202412,280f1c6) by Brendan Gregg <bgregg@netflix.com>
  • Allow ksym() lookups on function pointers (2139d46) by Brendan Gregg <bgregg@netflix.com>
  • [BREAKING CHANGE] Ban kprobes that cause CPU deadlocks (40cf190) by Javier Honduvilla Coto <javierhonduco@gmail.com>

Fixed

  • Workaround for asm goto in Kernel 5+ headers (60263e1) by Matheus Marchini <mat@mmarchini.me>
  • Properly handle invalid args utilization (13c2e2e) by Augusto Caringi <acaringi@redhat.com>
  • Fix abort caused by lhist with incorrect number of arguments (41036b9) by bas smit <bas@baslab.org>
  • Fix anonymous struct parsing (ea63e8b) by Alastair Robertson <alastair@ajor.co.uk>
  • Fix code generation for bitwise and logical not on integer values (f522296) by synth0 <synthkaf@outlook.com>
  • Fix typo in type mismatch error message (83924f8) by Jay Kamat <jaygkamat@gmail.com>
  • Fix clearing action for some aggregations (dcd657e) by Javier Honduvilla Coto <javierhonduco@gmail.com>
  • Fix possible crash if an invalid char is used in search (c4c6894) by Augusto Caringi <acaringi@redhat.com>
  • Fix headers includes by using -isystem rather than -I (32daaa2) by Javier Honduvilla Coto <javierhonduco@gmail.com>
  • Fix exit() function bypassing END probe processing #228 (f63e1df,e4c418e,5cce746) by Augusto Caringi <acaringi@redhat.com>
  • Fix order in which probes fire (a4bf870) by John Gallagher <john.gallagher@delphix.com>
  • Stop throwing 'failed to initialize usdt context for path' error message (1fa3d3c) by Augusto Caringi <acaringi@redhat.com>
  • Fix stringification of ntop keys in maps (598050e) by Matheus Marchini <mat@mmarchini.me>
  • Fix parsing of forward-decl structs inside structs (354c919) by Matheus Marchini <mat@mmarchini.me>
  • Fix struct definition from headers (4564d55) by Matheus Marchini <mat@mmarchini.me>
  • Avoid crash if incorrect command line option is used (aa24f29) by Augusto Caringi <acaringi@redhat.com>
  • Fix clang_parser for LLVM 8+ (80ce138) by Matheus Marchini <mat@mmarchini.me>
  • Fix semicolon being required in some cases after if statements (13de974) by Matheus Marchini <mat@mmarchini.me>
  • Throw error message if argN or retval is used with incorrect probe type (b40354c) by Augusto Caringi <acaringi@redhat.com>
  • Fix USDT listing (-l) without a search pattern (af01fac) by Javier Honduvilla Coto <javierhonduco@gmail.com>
  • Add missing space to error message (e1f5f14) by Alastair Robertson <alastair@ajor.co.uk>
  • Fix unroll in some cases (mostly when the generated code was large) (702145c) by Matheus Marchini <mat@mmarchini.me>

Documentation

Internal

  • [tests] add missing tests to codegen.cpp (012ebda) by Matheus Marchini <mat@mmarchini.me>
  • tests: add runtime tests for regression bugs (ee57b6f) by Matheus Marchini <mat@mmarchini.me>
  • vagrant: add Ubuntu 19.04 box (60e6d0a) by Matheus Marchini <mat@mmarchini.me>
  • docker: add Fedora 30 (9ccafa0) by Zi Shen Lim <zlim.lnx@gmail.com>
  • Add Vagrantfile for ubuntu (b221f79) by bas smit <bas@baslab.org>
  • tests: fix and improve runtime tests (c7b3b2f) by Matheus Marchini <mat@mmarchini.me>
  • Clean up includes in clang_parser (374c240) by Daniel Xu <dxu@dxuuu.xyz>
  • Remove double check_nargs call (c226c10) by bas smit <bas@baslab.org>
  • Fix call.system runtime test (3b4f578) by Daniel Xu <dxu@dxuuu.xyz>
  • Fix call.str runtime test (8afbc22) by Daniel Xu <dxu@dxuuu.xyz>
  • Fix k[ret]probe_order runtime tests (27a334c) by Daniel Xu <dxu@dxuuu.xyz>
  • Remove old TODO (5be3752) by Alastair Robertson <alastair@ajor.co.uk>
  • Add clang_parser::parse_fail test (6fd7aac) by Jiri Olsa <jolsa@kernel.org>
  • Fix some bugs with positional parameters (13fb175) by Alastair Robertson <alastair@ajor.co.uk>
  • Fix runtime tests (a05ee59) by bas smit <bas@baslab.org>
  • Enable multiline matching for runtime test regex (c8763e4) by bas smit <bas@baslab.org>
  • Add environment var support to runtime tests (543513e) by bas smit <bas@baslab.org>
  • Disable codegen.printf_offsets test for LLVM5 CI build (ea8a7e4) by Alastair Robertson <alastair@ajor.co.uk>
  • Fix LLVM 5 tests (938e79b) by Alastair Robertson <alastair@ajor.co.uk>
  • Refactor find_wildcard_matches() to allow for proper testing (371c7cf) by Alastair Robertson <alastair@ajor.co.uk>
  • tests: Use Python 3 for integration tests + test fix (#651) (4b0e477) by Javier Honduvilla Coto <javierhonduco@gmail.com>
  • Add --unsafe to more runtime tests (8b2234a) by Daniel Xu <dxu@dxuuu.xyz>
  • Fix 'ignoring return value' build warning (bdc9f16) by Augusto Caringi <acaringi@redhat.com>
  • Fix 'signed overflow' related build warning (0ece2a9) by Augusto Caringi <acaringi@redhat.com>
  • Fix UnboundLocalError on skipped test (03958cb) by John Gallagher <john.gallagher@delphix.com>
  • Use getopt_long instead of getopt (d732298) by Daniel Xu <dxu@dxuuu.xyz>
  • Fix docs typo (05bf095) by bas smit <bas@baslab.org>
  • check explicitly for systemtap sys/sdt.h and ignore if not present (831633d) by Jason Koch <jkoch@netflix.com>
  • Suppress build warning in GCC >=8 caused by #474 (71d1cd5) by Augusto Caringi <acaringi@redhat.com>
  • Remove more tabs (e9594dd) by Alastair Robertson <alastair@ajor.co.uk>
  • Convert tabs to spaces (585e8b5) by Alastair Robertson <alastair@ajor.co.uk>
  • Add existence tests for kstack, kstack() and ustack() (954d93d) by Alastair Robertson <alastair@ajor.co.uk>
  • [tests] more runtime tests enhancements (#586) (249c7a1) by Matheus Marchini <mat@mmarchini.me>
  • Codegen: Fix assigning non-struct "internal" values to maps (4020a5c) by Alastair Robertson <alastair@ajor.co.uk>
  • Fix typo on LLVM_REQUESTED_VERSION macro in CMakeLists.txt (82dbe4e) by Quentin Monnet <quentin.monnet@netronome.com>
  • Fix build warning (a77becb) by Alastair Robertson <alastair@ajor.co.uk>
  • [tests] allow tests to be skipped if a given condition is not met (59fa32a) by Matheus Marchini <mat@mmarchini.me>
  • [tests] make other.if_compare_and_print_string less flaky (840bbb3) by Matheus Marchini <mat@mmarchini.me>
  • Fix compile warnings and mark more functions as const (cfb058d) by Alastair Robertson <alastair@ajor.co.uk>
  • Misc readability fixes (9581e01) by Fangrui Song <i@maskray.me>
  • build: unify dockerfiles under a bionic image (445fb61) by Matheus Marchini <mat@mmarchini.me>
  • [tests] fix and enhance runtime tests (ea5deb9) by Matheus Marchini <mat@mmarchini.me>
  • [tests] add test script to run tools with -d (4ff113d) by Matheus Marchini <mat@mmarchini.me>
  • [clang_parser] decouple kernel cflags from the parser method (ad753d5) by Matheus Marchini <mat@mmarchini.me>
  • Address TODO items related to objdump dependency (382b9b7) by Adam Jensen <acjensen@gmail.com>
  • Fall back to objdump/grep if bcc is older (fdd02ec) by Adam Jensen <acjensen@gmail.com>
  • [clang_parser] pass BPFtrace as arg instead of StructMap (a0af75f) by Matheus Marchini <mat@mmarchini.me>
  • [ast] introduce Identifier type to AST (389d55f) by Matheus Marchini <mat@mmarchini.me>
  • use CMAKE_SYSTEM_PROCESSOR when selecting whether to include x86_64 or aarch64 sources (0ea7a63) by Michał Gregorczyk <michalgr@fb.com>
  • Clearify error message for mismatched llvm. (9b77fee) by George Slavin <george.r.slavin@gmail.com>
  • Add more info to LLVM mismatch error message (1e3b1be) by George Slavin <george.r.slavin@gmail.com>
  • Allow 0 as kernel version during first attempt to call bcc_prog_load (13499ac) by Michał Gregorczyk <michalgr@fb.com>
  • Fix bpftrace_VERSION_MINOR in CMakeLists.txt (8 -> 9) (13321eb) by Matheus Marchini <mat@mmarchini.me>
  • Fix version information when not building inside a git repo (#489) (1f33126) by Augusto Caringi <acaringi@redhat.com>
  • Do not try to load bpf program with unknown kernel version (2c00b7f) by Michał Gregorczyk <michalgr@fb.com>
  • Add better checks for llvm version (4fe081e) by George Slavin <george.r.slavin@gmail.com>
  • Fix deprecated stack warning in builtin_stack test (a1aaed8) by George Slavin <george.r.slavin@gmail.com>
  • add test for 32-bit tp args (77f7cb7) by Brendan Gregg <bgregg@netflix.com>
  • tests: add some basic integration tests (e9805af) by Javier Honduvilla Coto <javierhonduco@gmail.com>
  • Fix and simplify lexer.l (57bae63) by Fangrui Song <i@maskray.me>
  • Fix 2 clang warnings: -Wmismatched-tags and -Wpessimizing-move (18da040) by Fangrui Song <i@maskray.me>
  • Revert "Stop linking against bcc-loader-static" (5b6352c) by Alastair Robertson <alastair@ajor.co.uk>
  • fix typo on BPF_FUNC_get_current_cgroup_id missing message (27371c3) by Jason Koch <jkoch@netflix.com>
  • propagate HAVE_GET_CURRENT_CGROUP_ID to ast modules (57e30da) by Jason Koch <jkoch@netflix.com>
  • Add missing include (5763dc2) by Michał Gregorczyk <michalgr@fb.com>
  • No need for if when we're not doing anything (a65ad14) by Alastair Robertson <alastair@ajor.co.uk>
  • Make indirect* related data static (24d9dd2) by Jiri Olsa <jolsa@kernel.org>
  • Fix issues, add tests and improve reliability of positional parameters (acec163,f2e1345) by Matheus Marchini <mat@mmarchini.me>

[0.9.0] 2019-03-16

Deprecated

Added

Changed

Fixed

Internal

[0.8.0] - 2019-01-06

This is a release to aid packaging. bpftrace has not reached a 1.0 release status yet, as there are still development changes and things to fix. But what is here should be tremendously useful, provided you bear in mind that there will be some changes made to the programming language and command line options between now and a 1.0 release, so any tools or documentation written will become out of date and require changes. If you are anxiously waiting a 1.0 release, please consider contributing so that it can be released sooner.