Skip to content

Latest commit

 

History

History
1876 lines (1702 loc) · 114 KB

CHANGELOG.md

File metadata and controls

1876 lines (1702 loc) · 114 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

Breaking Changes

Added

= Bump max supported LLVM version to 19

  • #3433
  • Add --dry-run CLI option
  • Enable avg map reads in kernel space (implicit casting)
  • Enable for-loops in multiple probes
  • For-loops: Allow sharing variables between the main probe and the loop's body
  • Parse C++ Class and Inheritance from Debug Info
  • Add an optional size parameter to path
  • Allow tuples to be used as map keys
  • Add has_key function for maps
  • Add ability to attach kprobes to inlined functions
  • Variable declarations with let
  • Support symbolizing enum values using %s specifier in printf()
  • Configuration option to suppress printing maps by default at program exit
  • Add symbol_source config to source uprobe locations from either DWARF or the Symbol Table
  • Introduce builtin to access percpu kernel data

Changed

  • Merge output into stdout when -lv
  • Stream output when printing maps
  • Only print kernel headers not found message if parsing fails
  • Add mandatory "stage" argument to the -d CLI option
  • Allow simultaneous use of -v and -d
  • Remove length limitations for the buf builtin function
  • Change delete API to accept a map and key as separate args
  • Symbolize enums when used in maps

Deprecated

Removed

  • Remove the -dd CLI option
  • Drop support for LLVM 12 and below
  • Remove ALLOW_UNSAFE_PROBE compiler flag

Fixed

  • Fix verifier error when array indexing through pointer
  • Fix segfault for multi-tracepoint probes
  • Fix verifier error from misaligned stack access when using strings as map keys
  • Fix min/max map functions
  • Fix stack mode for stack builtin
  • Fix lldb support in appimage builds
  • Fix parsing large unsigned int strings as positional params
  • Fix json formatting for strftime function
  • Fix BTF/DWARF parsing for structs contained in arrays
  • Fix integer comparisons and auto casting for scratch variables
  • Fix tuple resizing
  • Handle invalid BTF without crashing
  • Fix json formatting for hex values
  • Fix binary operations on integers always returning 64 bit values
  • Fix verifier error when comparing result of len()
  • Fix type back propagation for map keys
  • Fix crash by adding checks for bad var/map assignments
  • Fix field access and offsetof for strings that are builtin types
  • Fix crash when using castable per-cpu map types as map keys

Security

Docs

  • Remove mention of unsupported character literals

Tools

  • Fix bashreadline tool probe for dynamically linked readline

[0.21.0] 2024-06-21

Added

  • Add lazy_symbolication config option
  • 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
  • Add ability to attach uprobes to inlined functions
  • Enable count, sum, min, and max map reads in kernel space (implicit casting)
  • Add config option for handling missing probes
  • Support large arguments for printf() and print()
  • Add ability to call exit() with an exit code

Changed

  • Better error message for args in mixed probes
  • Reproducible Builds: Do not store timestamps in gzip header
  • Improve DWARF support, using liblldb instead of libdw
  • Use new hash function to reduce collisions when aggregating on stack traces
  • Disable func builtin for kretprobes and uretprobes when get_func_ip feature is not available
  • Move error printing from debug to verbose mode
  • Better error message when libbpf is too old
  • Allow trailing semicolons and empty blocks in config syntax
  • Allow attaching to spin_lock functions with mitigations to prevent deadlocks
  • Remove length limitations for strings coming out of str() and path()

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 alignment of atomic map counter update
  • Fix func builtin for kretprobes and uretprobes for kernels with working get_func_ip feature
  • Fix ustack missing the second-from-top stack frame in uprobes
  • Fix storing strings of differing lengths in a variable
  • Fix field resolution for structs in arrays
  • Fix error in dereferencing kernel double pointers
  • Fix variable corruption when used as map key
  • Fix crash when assigning a record type to a map
  • Fix type resolution for pointers with BTF_KIND_TYPE_TAG
  • Fix attachment of probes attaching to wildcarded and non-wildcarded kprobes

Security

  • Don't unpack kernel headers or look in tmp

Docs

Tools

  • Ignore warnings for missing probes

[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

Changed

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

Fixed

Tools

Documentation

  • Fix example links to only search bpftrace repo (71c9d29e) by Martin Schmidt <[email protected]>
  • Remove example link to a runtime test (560454a1) by Martin Schmidt <[email protected]>
  • Add link to example for interval and BEGIN/END (badf5653) by Martin Schmidt <[email protected]>
  • Add link to example for profile (ea6f706a) by Martin Schmidt <[email protected]>
  • Add links to examples for tracepoints (f6a3d26a) by Martin Schmidt <[email protected]>
  • Add links to examples for uprobe/uretprobe (5dd4bd8d) by Martin Schmidt <[email protected]>
  • Add links to examples for kprobe/kretprobe (c580ef26) by Martin Schmidt <[email protected]>
  • When installing from source on ubuntu and Fedora, non-root users need to add 'sudo' when executing 'make install' (3030046b) by mazhen <[email protected]>
  • docs: Add documentation for integer casts (f087abbd) by Daniel Xu <[email protected]>
  • Docs: Fix broken link (f76b8bbb) by Adam Jensen <[email protected]>
  • Docs: Add missing builtin functions (fd08a932) by Adam Jensen <[email protected]>

Internal

[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

Fixed

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

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 <[email protected]>
  • Change exit() to send SIGTERM to child processes (649cc86) by Matheus Marchini <[email protected]>
  • Make stats and avg signed (809dc46) by bas smit <[email protected]>
  • Refactor error printer to make severity level configurable (676a6a7) by bas smit <[email protected]>
  • Make output line-buffered by default (#894) (78e64ba) by Daniel Xu <[email protected]>
  • cmake: don't use language extensions (like gnu++14) (4ce4afc) by Matheus Marchini <[email protected]>
  • add file extension on README (545901c) by sangyun-han <[email protected]>
  • build: don't set -std flag manually (3cbc482) by Matheus Marchini <[email protected]>
  • Don't use random value on stack (b67452b) by Daniel Xu <[email protected]>
  • codegen: ensure logical OR and AND works with non-64-bit integers (69cbd85) by Matheus Marchini <[email protected]>
  • Allow child process to exit on attach_probe failure (#868) (ecf1bc8) by Adam Jensen <[email protected]>
  • json output: Make output more consistent (#874) (9d1269b) by Dan Xu <[email protected]>
  • Do not generate extra load for ++/-- for maps/variables (3f79fad) by Jiri Olsa <[email protected]>

Fixed

Documentation

Internal

[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 <[email protected]>
  • Add memory watchpoint probe type (#790) (854cd4b) by Dan Xu <[email protected]>
  • Add support for Go symbol names to uaddr (#805) (e6eb3dd) by Jason Keene <[email protected]>
  • add option for JSON output (5c6f20a) by Andreas Gerstmayr <[email protected]>
  • Add $# for number of positional arguments (ec8b61a) by Mark Drayton <[email protected]>
  • Add BPFTRACE_NO_USER_SYMBOLS environment variable (#800) (41d2c9f) by Dan Xu <[email protected]>
  • Add line numbers to parser error messages (a584752, 2233ea7) by bas smit <[email protected]>
  • Add new environment variable BPFTRACE_LOG_SIZE (2f7dc75, 7de1e84, 2f7dc75) by Ray Jenkins <[email protected]>

Changed

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

Fixed

Documentation

Internal

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

[0.9.1] 2019-06-25

Highlights

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

All Changes

Added

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

Changed

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

Fixed

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

Documentation

Internal

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

[0.9.0] 2019-03-16

Deprecated

Added

  • List usdt probes with -l (fa7d5f3) by Timothy J Fontaine [email protected]
  • Introduce perf formatting for ustack()/kstack() (db910b9) by Matheus Marchini [email protected]
  • Add increment and decrement operators (++/--) (c8d8a08, 6aa66a1, 223d8d8, 1f82aaf, 8c5c4ea) by Dale Hamel [email protected]
  • Add changelog file to keep track of unreleased changes (d11fb01) by Matheus Marchini [email protected]
  • Allow args with multiple tracepoints (a0a905f, 2df50d3, cddae1a) by Brendan Gregg [email protected]
  • Add elapsed builtin (0fde181) by Brendan Gregg [email protected]
  • Add support to demangle C++ symbols in userspace stack traces (872525c) by Augusto Caringi [email protected]
  • allow \r (e7f0584) by Brendan Gregg [email protected]
  • Use debuginfo files information when available (1132d42) by Augusto Caringi [email protected]
  • Add ustack([int limit])/kstack([int limit]) calls (08da997) by Matheus Marchini [email protected]
  • Allow custom provider name in USDT probe definition (361245c, 80d640a, 20ddfed, c3a6ff1) by Dale Hamel [email protected]
  • Detect kernel headers even if they are splitted into source/ and build/ directories (4d76385) by Kirill Smelkov [email protected]
  • Add support for arm64 (aarch64) (47fa8aa) by Ali Saidi [email protected]
  • Allow customizing stdout buffering mode via -b (1663b84) by Hongli Lai (Phusion) [email protected]
  • Add support to list tracepoint arguments (#323) (4a048fc) by Augusto Caringi [email protected]
  • Add ksym as a replacement for sym (50a66d2) by williangaspar [email protected]
  • Add kstack as a replacement for stack (e8b99cd, 840712b, f8f7ceb,6ec9a02) by williangaspar [email protected]
  • cmake: add BUILD_TESTING support (a56ab12) by Aleksa Sarai [email protected]
  • Add --version (61a4650, eab3675) by williangaspar [email protected]
  • Add hint to install docs and normalize format (c0084a2) by Daniel Xu [email protected]
  • Make bpftrace -l list sofware and hardware types (#44) (acd9a80) by Augusto Caringi [email protected]
  • Print program ID when the verbose option is enabled. (8e8258d) by David Calavera [email protected]

Changed

Fixed

  • Make sure we create map keys when we have all the typing information (971bd77) by Matheus Marchini [email protected]
  • Fix for new bpf_attach_kprobe signature (080bef8) by Matheus Marchini [email protected]
  • Fix string comparison improperly deallocating variables (ffa173a) by williangaspar [email protected]
  • Fix probe keys on maps when the map is used more than one time (df81736) by Matheus Marchini [email protected]
  • Fix using same variable name on multiple programs (61a14f2) by williangaspar [email protected]
  • Fix build on old compilers (644943a, 1b69272) by Kirill Smelkov [email protected]
  • Fix build with latest bcc (d64b36a) by williangaspar [email protected]
  • Don't throw warning for undefined types in tracepoint structure definition if args is not used (f2ebe1a) by Matheus Marchini [email protected]
  • Fix for 'redefinition of tracepoint' warning message (baaeade) by Augusto Caringi [email protected]
  • Minor fixes in our documentation (0667533) by Matheus Marchini [email protected]
  • Fix string comparison (5e114dd, 63acdb6) by williangaspar [email protected]
  • Prevent empty trigger functions to be optimized away with -O2 (#218) (9f2069b) by Augusto Caringi [email protected]
  • Fix -l behavior with shortcut probe names (2d30e31) by williangaspar [email protected]
  • Fix alpine docker build (#372) (2b83b67) by Dan Xu [email protected]
  • Fix tracepoint wildcards (946c785) by Brendan Gregg [email protected]
  • tests: fix codegen test fot call_hist (342fd6d) by Matheus Marchini [email protected]
  • docs: fix trivial typos (3da1980) by Xiaozhou Liu [email protected]
  • Fix symbol translation for func, sym, and stack (6276fb5) by Brendan Gregg [email protected]
  • Fix wrong package name in Ubuntu Dockerfile (f8e67a9) by xbe [email protected]
  • Fix wrong package name in build instructions (8e597de) by Daniel Xu [email protected]
  • Fix arguments and error messages for tracepoint shortcut t (0eddba7) by williangaspar [email protected]

Internal

  • Fix 'different signedness' warning messages in codegen call_[uk]stack.cpp (cb25318) by Augusto Caringi [email protected]
  • Fix 'signedness' warning message in tracepoint_format_parser.cpp (c3e562f) by Augusto Caringi [email protected]
  • Stop linking against bcc-loader-static (5fbb7a7) by Daniel Xu [email protected]
  • Speeding up runtime tests (60c5d96) by williangaspar [email protected]
  • docker: make sure debugfs is mounted (7dcfc47) by Zi Shen Lim [email protected]
  • Better coverage for variable_clear() (34fdded) by williangaspar [email protected]
  • Add missing space (c65e7c1) by puyuegang [email protected]
  • Ignore warnings on code generated by bison (a935942) by Matheus Marchini [email protected]
  • Ignore warnings from LLVM headers (b6c4fd6) by Matheus Marchini [email protected]
  • Downgrade back to c++14 (f6986d8) by Matheus Marchini [email protected]
  • Fix 'parameter not used' warning (2401ab3) by Matheus Marchini [email protected]
  • Fix new build warning msg after c++17 was enabled (e4cbe48) by Augusto Caringi [email protected]
  • Get rid of cmake CMP0075 policy warning (9b8208a) by Augusto Caringi [email protected]
  • Use C++17 instead of C++14 (4b4d5dc) by Alex Birch [email protected]
  • Re-enable more build warnings, fix related warnings #316 (8c383dc) by Augusto Caringi [email protected]
  • Define __BPF_TRACING__ before building (required for kernel 4.19+) (e0bf01d) by Kirill Smelkov [email protected]
  • Re-enable subset of build warnings and fix some related warnings #316 (f0f56b0) by Augusto Caringi [email protected]
  • Cleanup enforce_infinite_rmlimits : removed getrlimit() : Added error description using strerror() (d76465f) by T K Sourab [email protected]
  • use the new libbcc API: bcc_{create_map, prog_load} when possible (c03c39f) by Xiaozhou Liu [email protected]
  • resources: generate c++ file instead of c file (5e1350b) by Matheus Marchini [email protected]
  • docker: disable runtime tests on CI (0667b92) by Matheus Marchini [email protected]
  • Hide -inl.h header from interface (10a43d0) by Daniel Xu [email protected]

[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.