Преглед на файлове

Release aya-obj v0.2.1

Signed-off-by: Dave Tucker <[email protected]>
Dave Tucker преди 5 месеца
родител
ревизия
12b2cdca65
променени са 4 файла, в които са добавени 113 реда и са изтрити 7 реда
  1. 110 4
      aya-obj/CHANGELOG.md
  2. 1 1
      aya-obj/Cargo.toml
  3. 1 1
      aya/Cargo.toml
  4. 1 1
      test/integration-test/Cargo.toml

+ 110 - 4
aya-obj/CHANGELOG.md

@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
-## 0.2.0 (2024-10-09)
+## 0.2.1 (2024-11-01)
 
 ### New Features
 
@@ -15,8 +15,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
    updating to a new Aya release less of a burden. These aliases are marked
    as deprecated since we'll likely remove them in a later release.
 
+### Bug Fixes
+
+ - <csr-id-ca0c32d1076af81349a52235a4b6fb3937a697b3/> Fill bss maps with zeros
+   The loader should fill bss maps with zeros according to the size of the
+   ELF section.
+   Failure to do so yields weird verifier messages as follows:
+   
+   ```
+   cannot access ptr member ops with moff 0 in struct bpf_map with off 0 size 4
+   ```
+   
+   Reference to this in the cilium/ebpf code is here [1].
+   I could not find a reference in libbpf.
+
 ### Other
 
+ - <csr-id-366c599c2083baf72c40c816da2c530dec7fd612/> cgroup_iter_order NFPROTO* nf_inet_hooks
+   Adds the following to codegen:
+   - `bpf_cgroup_iter_order`: used in `bpf_link_info.iter.group.order`
+   - `NFPROTO_*`: used in `bpf_link_info.netfilter.pf`
+   - `nf_inet_hooks`: used in `bpf_link_info.netfilter.hooknum`
+   
+   Include `linux/netfilter.h` in `linux_wrapper.h` for `NFPROTO_*` and
+   `nf_inet_hooks` to generate.
  - <csr-id-fbb09304a2de0d8baf7ea20c9727fcd2e4fb7f41/> revamp MapInfo be more friendly with older kernels
    Adds detection for whether a field is available in `MapInfo`:
    - For `map_type()`, we treturn new enum `MapType` instead of the integer
@@ -79,9 +101,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 <csr-read-only-do-not-edit/>
 
- - 19 commits contributed to the release.
- - 223 days passed between releases.
- - 10 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 25 commits contributed to the release over the course of 241 calendar days.
+ - 247 days passed between releases.
+ - 12 commits were understood as [conventional](https://www.conventionalcommits.org).
  - 0 issues like '(#ID)' were seen in commit messages
 
 ### Commit Details
@@ -91,6 +113,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 <details><summary>view details</summary>
 
  * **Uncategorized**
+    - Merge pull request #1073 from dave-tucker/reloc-bug ([`b2ac9fe`](https://github.com/aya-rs/aya/commit/b2ac9fe85db6c25d0b8155a75a2df96a80a19811))
+    - Fill bss maps with zeros ([`ca0c32d`](https://github.com/aya-rs/aya/commit/ca0c32d1076af81349a52235a4b6fb3937a697b3))
+    - Merge pull request #1055 from aya-rs/codegen ([`59b3873`](https://github.com/aya-rs/aya/commit/59b3873a92d1eb49ca1008cb193e962fa95b3e97))
+    - [codegen] Update libbpf to 80b16457cb23db4d633b17ba0305f29daa2eb307 ([`f8ad84c`](https://github.com/aya-rs/aya/commit/f8ad84c3d322d414f27375044ba694a169abfa76))
+    - Cgroup_iter_order NFPROTO* nf_inet_hooks ([`366c599`](https://github.com/aya-rs/aya/commit/366c599c2083baf72c40c816da2c530dec7fd612))
+    - Release aya-obj v0.2.0, aya v0.13.0, safety bump aya v0.13.0 ([`c169b72`](https://github.com/aya-rs/aya/commit/c169b727e6b8f8c2dda57f54b8c77f8b551025c6))
     - Appease clippy ([`aa240ba`](https://github.com/aya-rs/aya/commit/aa240baadf99d3fea0477a9b3966789b0f4ffe57))
     - Merge pull request #1007 from tyrone-wu/aya/info-api ([`15eb935`](https://github.com/aya-rs/aya/commit/15eb935bce6d41fb67189c48ce582b074544e0ed))
     - Revamp MapInfo be more friendly with older kernels ([`fbb0930`](https://github.com/aya-rs/aya/commit/fbb09304a2de0d8baf7ea20c9727fcd2e4fb7f41))
@@ -112,6 +140,84 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
     - Rename BpfSectionKind to EbpfSectionKind ([`cf3e2ca`](https://github.com/aya-rs/aya/commit/cf3e2ca677c81224368fb2838ebc5b10ee98419a))
 </details>
 
+## 0.2.0 (2024-10-09)
+
+<csr-id-fbb09304a2de0d8baf7ea20c9727fcd2e4fb7f41/>
+<csr-id-88f5ac31142f1657b41b1ee0f217dcd9125b210a/>
+<csr-id-1634fa7188e40ed75da53517f1fdb7396c348c34/>
+<csr-id-b513af12e8baa5c5097eaf0afdae61a830c3f877/>
+<csr-id-b06ff402780b80862933791831c578e4c339fc96/>
+<csr-id-4dc4b5ccd48bd86e2cc59ad7386514c1531450af/>
+<csr-id-eef7346fb2231f8741410381198015cceeebfac9/>
+
+### New Features
+
+ - <csr-id-8c79b71bd5699a686f33360520aa95c1a2895fa5/> Rename Bpf to Ebpf
+   And BpfLoader to EbpfLoader.
+   This also adds type aliases to preserve the use of the old names, making
+   updating to a new Aya release less of a burden. These aliases are marked
+   as deprecated since we'll likely remove them in a later release.
+
+### Other
+
+ - <csr-id-fbb09304a2de0d8baf7ea20c9727fcd2e4fb7f41/> revamp MapInfo be more friendly with older kernels
+   Adds detection for whether a field is available in `MapInfo`:
+   - For `map_type()`, we treturn new enum `MapType` instead of the integer
+     representation.
+   - For fields that can't be zero, we return `Option<NonZero*>` type.
+   - For `name_as_str()`, it now uses the feature probe `bpf_name()` to
+     detect if field is available.
+     Although the feature probe checks for program name, it can also be
+     used for map name since they were both introduced in the same commit.
+ - <csr-id-88f5ac31142f1657b41b1ee0f217dcd9125b210a/> revamp ProgramInfo be more friendly with older kernels
+   Purpose of this commit is to add detections for whether a field is
+   available in `ProgramInfo`.
+   - For `program_type()`, we return the new enum `ProgramType` instead of
+     the integer representation.
+   - For fields that we know cannot be zero, we return `Option<NonZero*>`
+     type.
+   - For `name_as_str()`, it now also uses the feature probe `bpf_name()`
+     to detect if field is available or not.
+   - Two additional feature probes are added for the fields:
+     - `prog_info_map_ids()` probe -> `map_ids()` field
+     - `prog_info_gpl_compatible()` probe -> `gpl_compatible()` field
+   
+   With the `prog_info_map_ids()` probe, the previous implementation that
+   I had for `bpf_prog_get_info_by_fd()` is shortened to use the probe
+   instead of having to make 2 potential syscalls.
+   
+   The `test_loaded_at()` test is also moved into info tests since it is
+   better related to the info tests.
+ - <csr-id-1634fa7188e40ed75da53517f1fdb7396c348c34/> add conversion u32 to enum type for prog, link, & attach type
+   Add conversion from u32 to program type, link type, and attach type.
+   Additionally, remove duplicate match statement for u32 conversion to
+   `BPF_MAP_TYPE_BLOOM_FILTER` & `BPF_MAP_TYPE_CGRP_STORAGE`.
+   
+   New error `InvalidTypeBinding<T>` is created to represent when a
+   parsed/received value binding to a type is invalid.
+   This is used in the new conversions added here, and also replaces
+   `InvalidMapTypeError` in `TryFrom` for `bpf_map_type`.
+ - <csr-id-b513af12e8baa5c5097eaf0afdae61a830c3f877/> add archs powerpc64 and s390x to aya
+   bpfman, a project using aya, has a requirement to support powerpc64 and
+   s390x architectures. Adding these two architectures to aya.
+ - <csr-id-b06ff402780b80862933791831c578e4c339fc96/> Generate new bindings
+
+### Test
+
+ - <csr-id-4dc4b5ccd48bd86e2cc59ad7386514c1531450af/> adjust test to not use byte arrays
+   Where possible, replace the hardcoded byte arrays in the tests with the
+   structs they represent, then convert the structs to byte arrays.
+ - <csr-id-eef7346fb2231f8741410381198015cceeebfac9/> adjust test byte arrays for big endian
+   Adding support for s390x (big endian architecture) and found that some
+   of the unit tests have structures and files implemented as byte arrays.
+   They are all coded as little endian and need a bug endian version to
+   work properly.
+
+### New Features (BREAKING)
+
+ - <csr-id-fd48c55466a23953ce7a4912306e1acf059b498b/> Rename BpfRelocationError -> EbpfRelocationError
+ - <csr-id-cf3e2ca677c81224368fb2838ebc5b10ee98419a/> Rename BpfSectionKind to EbpfSectionKind
+
 ## 0.1.0 (2024-02-28)
 
 <csr-id-b3e7ef741c5b8d09fc7dc8302576f8174be75ff4/>

+ 1 - 1
aya-obj/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name = "aya-obj"
-version = "0.2.0"
+version = "0.2.1"
 description = "An eBPF object file parsing library with BTF and relocation support."
 keywords = ["bpf", "btf", "ebpf", "elf", "object"]
 readme = "README.md"

+ 1 - 1
aya/Cargo.toml

@@ -15,7 +15,7 @@ edition.workspace = true
 [dependencies]
 assert_matches = { workspace = true }
 async-io = { workspace = true, optional = true }
-aya-obj = { path = "../aya-obj", version = "^0.2.0", features = ["std"] }
+aya-obj = { path = "../aya-obj", version = "^0.2.1", features = ["std"] }
 bitflags = { workspace = true }
 bytes = { workspace = true }
 libc = { workspace = true }

+ 1 - 1
test/integration-test/Cargo.toml

@@ -13,7 +13,7 @@ anyhow = { workspace = true, features = ["std"] }
 assert_matches = { workspace = true }
 aya = { path = "../../aya", version = "^0.13.0", default-features = false }
 aya-log = { path = "../../aya-log", version = "^0.2.1", default-features = false }
-aya-obj = { path = "../../aya-obj", version = "^0.2.0", default-features = false }
+aya-obj = { path = "../../aya-obj", version = "^0.2.1", default-features = false }
 env_logger = { workspace = true }
 epoll = { workspace = true }
 futures = { workspace = true, features = ["std"] }