[ANNOUNCEMENT] libbpf v1.3.0 release

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Libbpf v1.3.0 has been released ([0]).

It has been over 4 months since the release of libbpf v1.2.2, and a
significant number of new features are now available.
So it looks like a good time for a new release.

A big thank you to all the contributors that are constantly making
libbpf a better BPF loader library!

Please find the summary of libbpf v1.3.0 changes below.

## User space-side features and APIs

- support for `netfilter` programs is added:
  - `SEC("netfilter")` is now available
  - API function `bpf_program__attach_netfilter()` is now available
- support for `tcx` BPF programs is added:
  - the following new SEC definitions are now available:
    - `SEC("tc/egress")`
    - `SEC("tc/ingress")`
    - `SEC("tcx/egress")`
    - `SEC("tcx/ingress")`
  - the following SEC definitions are now considered legacy:
    - `SEC("tc")`
    - `SEC("action")`
    - `SEC("classifier")`
  - functions `bpf_prog_attach_opts()` and `bpf_prog_query_opts()` are
    extended to work with `tcx` programs, plus two new API functions
    are added:
    - `bpf_prog_detach_opts()`
    - `bpf_program__attach_tcx()`
- support for multi-uprobe programs is added:
  - the following new SEC definitions are now available:
    - `SEC("uprobe.multi")`
    - `SEC("uprobe.multi.s")`
    - `SEC("uretprobe.multi")`
    - `SEC("uretprobe.multi.s")`
  - plus a new API function:
    - `bpf_program__attach_uprobe_multi()`
- support for section `SEC("usdt.s")` is added for sleepable `usdt`
  programs;
- support for Unix domain socket cgroup BPF programs is added the
  following new SEC definitions are now available:
  - `SEC("cgroup/connect_unix")`
  - `SEC("cgroup/sendmsg_unix")`
  - `SEC("cgroup/recvmsg_unix")`
  - `SEC("cgroup/getpeername_unix")`
  - `SEC("cgroup/getsockname_unix")`
- new `LIBBPF_OPTS_RESET()` utility macro;
- new `bpf_object__unpin()` function to complement existing `bpf_object__pin()`;
- new API functions for work with ring buffers:
  - `ring_buffer__ring()`
  - `ring__producer_pos()`
  - `ring__consumer_pos()`
  - `ring__avail_data_size()`
  - `ring__size()`
  - `ring__map_fd()`
  - `ring__consume()`
- `path_fd` support for `bpf_obj_pin()` and `bpf_obj_get()`;
- uprobe SEC matcher extended to allow golang symbols;
- uprobe support for symbols versioning;
- `bpf_map__set_value_size()` can now be used to resize memory mapped
  region for memory mapped maps;
- `struct bpf_xdp_query_opts` extended with `xdp_zc_max_segs` output field;
- basic BTF sanity check pass added to reject bogus BTF.

## BPF-side features and APIs

- triple-underscore flavors for kfunc relocation: like with CO-RE
  structs `___.*` suffix is ignored when kfunc relocations are
  resolved;
- `__percpu_kptr` macro definition in `bpf_helpers.h`;
- support for exception callbacks, use
  `__attribute__(btf_decl_tag("exception_callback:<func_name>"))`
  to specify exception callback for a program;

## Bug fixes

- fix for btf_dump__dump_type_data() when type contains bitfields;
- fix for correct work of offsetof() and container_of() macro with CO-RE;
- no longer attempt to load modules BTF when resolving CO-RE
  relocations if CAP_SYS_ADMIN are absent;
- regex based function search for "kprobe.multi/" programs no longer
  attempts to trace functions that cannot be traced;
- bpf_program__set_type() no longer resets sec_def if it is set to a
  custom fallback SEC handler;
- fix for memory leak possible after bpf_program__set_attach_target() call;

[0] https://github.com/libbpf/libbpf/releases/tag/v1.3.0
[1] Full Changelog: https://github.com/libbpf/libbpf/compare/v1.2.2...v1.3.0

Best regards,
Eduard






[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux