Commit Graph

1766 Commits (1634fa7188e40ed75da53517f1fdb7396c348c34)
 

Author SHA1 Message Date
dave-tucker 8b50a6a573 [codegen] Update libbpf to c1a6c770c46c6e78ad6755bf596c23a4e6f6b216
Update libbpf to c1a6c770c46c6e78ad6755bf596c23a4e6f6b216

Files changed:
M	aya-obj/src/generated/linux_bindings_aarch64.rs
M	aya-obj/src/generated/linux_bindings_armv7.rs
A	aya-obj/src/generated/linux_bindings_powerpc64.rs
M	aya-obj/src/generated/linux_bindings_riscv64.rs
A	aya-obj/src/generated/linux_bindings_s390x.rs
M	aya-obj/src/generated/linux_bindings_x86_64.rs
M	ebpf/aya-ebpf-bindings/src/aarch64/bindings.rs
M	ebpf/aya-ebpf-bindings/src/armv7/bindings.rs
A	ebpf/aya-ebpf-bindings/src/powerpc64/bindings.rs
A	ebpf/aya-ebpf-bindings/src/powerpc64/helpers.rs
M	ebpf/aya-ebpf-bindings/src/riscv64/bindings.rs
A	ebpf/aya-ebpf-bindings/src/s390x/bindings.rs
A	ebpf/aya-ebpf-bindings/src/s390x/helpers.rs
M	ebpf/aya-ebpf-bindings/src/x86_64/bindings.rs

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 months ago
Dave Tucker c34abd6418
Merge pull request #977 from dave-tucker/xtask-codegen-fix
chore(xtask): Create bindings dir
3 months ago
Dave Tucker b20b1f1b0a chore(xtask): Create bindings dir
If the bindings directory doesn't exist then create it.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 months ago
Dave Tucker 3bd71925cf
Merge pull request #976 from dave-tucker/fix-codegen-2
ci: Fix codegen and prep for s390/ppc64el
3 months ago
Dave Tucker 64ec062c84 ci: Fix codegen and prep for s390/ppc64el
Adds missing libelf headers that are now included
as part of libbpf-internal.h. Adds ppc64el and
s390x to the cross environment.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 months ago
Dave Tucker 3fc6f47281
Merge pull request #975 from dave-tucker/s390-ppc-codegen
chore(xtask): Add s390x and powerpc64 to codegen
3 months ago
Billy McFall 62efed1853 chore(xtask): Add s390x and powerpc64 to codegen
This commit adds the s390x and powerpc architectures
to codegen. This will enable an upcoming PR to add
support for aya to support theses architectures
in both aya and aya-ebpf.

Co-authored-by: Dave Tucker <dave@dtucker.co.uk>
Signed-off-by: Billy McFall <22157057+Billy99@users.noreply.github.com>
3 months ago
Tamir Duberstein bfafe9e786 public-api: regenerate
See https://github.com/rust-lang/rust/commit/ec201b86.
3 months ago
Tamir Duberstein 35aa9ac1a5 public-api: regenerate
See https://github.com/Enselic/cargo-public-api/pull/584.

Constant values are no longer considered part of the API.
3 months ago
belohnung 38d8e32baa fix(aya): fix panic when creating map on custom ubuntu kernel 3 months ago
Tamir Duberstein 78acd74bad Appease clippy
```
error: match can be simplified with `.unwrap_or_default()`
   --> aya/src/util.rs:157:13
    |
157 | /             match s.map(str::parse).transpose() {
158 | |                 Ok(option) => option,
159 | |                 Err(ParseIntError { .. }) => None,
160 | |             }
    | |_____________^ help: replace it with: `s.map(str::parse).transpose().unwrap_or_default()`
```
3 months ago
dependabot[bot] bf20a8c892
Merge pull request #965 from aya-rs/dependabot/cargo/cargo-crates-f36f6a6c13 3 months ago
dependabot[bot] 37777a0d5a
build(deps): update public-api requirement in the cargo-crates group
Updates the requirements on [public-api](https://github.com/Enselic/cargo-public-api) to permit the latest version.

Updates `public-api` to 0.33.1
- [Release notes](https://github.com/Enselic/cargo-public-api/releases)
- [Changelog](https://github.com/Enselic/cargo-public-api/blob/main/rustdoc-json/CHANGELOG.md)
- [Commits](https://github.com/Enselic/cargo-public-api/compare/public-api-v0.33.1...public-api-v0.33.1)

---
updated-dependencies:
- dependency-name: public-api
  dependency-type: direct:production
  dependency-group: cargo-crates
...

Signed-off-by: dependabot[bot] <support@github.com>
3 months ago
Tamir Duberstein 781914f058 Don't deny unused_qualifications
Nightly added stuff to the prelude.
4 months ago
tyrone-wu 5e13283f59 fix: fix rustdocs-args ordering in taplo to -D warnings
This fixes the current rustdoc build error by correcting the ordering of
`rustdoc-args` to `-D warnings`. Additionally, this also removes the
`recorder_arrays` field (defaults to false) so that the order is not
modified, which is what caused the error in the first place.
4 months ago
dependabot[bot] 0ec87f6e4f
Merge pull request #955 from aya-rs/dependabot/cargo/cargo-crates-d36358862b 4 months ago
dependabot[bot] dd92b41a59
build(deps): bump the cargo-crates group with 2 updates
Updates the requirements on [nix](https://github.com/nix-rust/nix) and [object](https://github.com/gimli-rs/object) to permit the latest version.

Updates `nix` to 0.28.0
- [Changelog](https://github.com/nix-rust/nix/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nix-rust/nix/compare/v0.28.0...v0.28.0)

Updates `object` to 0.35.0
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.35.0...0.35.0)

---
updated-dependencies:
- dependency-name: nix
  dependency-type: direct:production
  dependency-group: cargo-crates
- dependency-name: object
  dependency-type: direct:production
  dependency-group: cargo-crates
...

Signed-off-by: dependabot[bot] <support@github.com>
4 months ago
Tamir Duberstein 4e843a3523 Remove deny(pointer_structural_match)
```
warning: lint `pointer_structural_match` has been removed: converted into hard error, see RFC #3535 <https://rust-lang.github.io/rfcs/3535-constants-in-patterns.html> for more information
  --> aya/src/lib.rs:57:5
   |
57 |     pointer_structural_match,
   |     ^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(renamed_and_removed_lints)]` on by default
```
4 months ago
Tamir Duberstein 683cedfe48 Appease clippy
warning: doc list item missing indentation
  --> test/integration-test/build.rs:20:5
   |
20 | /// prevent their use for the time being.
   |     ^
   |
   = help: if this is supposed to be its own paragraph, add a blank line
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation
   = note: `#[warn(clippy::doc_lazy_continuation)]` on by default
help: indent this line
   |
20 | ///   prevent their use for the time being.
   |     ++
4 months ago
Tamir Duberstein 3808ad5520 Reduce dependabot toil 4 months ago
Alessandro Decina bde4b5f86b
Merge pull request #938 from swananan/enhance_urpobe_symbol_lookup
aya: add symbol lookup in associated debug files
4 months ago
Alessandro Decina c7898c596f Fix clippy 4 months ago
swananan 462514ed4c aya: adjust symbol lookup tests for object crate alignment requirements
The object::File::parse API requires parameter to be aligned with 8 bytes.
Adjusted the Vec in the tests with miri to meet this requirement.
4 months ago
Alessandro Decina a2c8fcab4e aya: bless API changes
The equivalent crate has a blanket implementation smh. We don't depend
on it directly it's pulled in by the object crate.
4 months ago
dependabot[bot] 040e47c28b
Merge pull request #924 from aya-rs/dependabot/github_actions/production-dependencies-e915e9eb26 4 months ago
dependabot[bot] 5d0cefce8a
Merge pull request #930 from aya-rs/dependabot/cargo/production-dependencies-9eca24263e 4 months ago
swananan e6e1bfeb58 aya: add symbol lookup in associated debug files
This change enhances the logic for symbol lookup in uprobe or uretprobe.
If the symbol is not found in the original binary, the search continues
in the debug file associated through the debuglink section. Before
searching the symbol table, it compares the build IDs of the two files.
The symbol lookup will only be terminated if both build IDs exist and do
not match. This modification does not affect the existing symbol lookup
logic.

Refs: #936
4 months ago
dependabot[bot] e34e8536d4
build(deps): bump DavidAnson/markdownlint-cli2-action
Bumps the production-dependencies group with 1 update: [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action).


Updates `DavidAnson/markdownlint-cli2-action` from 15 to 16
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](https://github.com/davidanson/markdownlint-cli2-action/compare/v15...v16)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
5 months ago
dependabot[bot] dc9ed22aeb
build(deps): update object requirement
Updates the requirements on [object](https://github.com/gimli-rs/object) to permit the latest version.

Updates `object` to 0.34.0
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.34.0...0.34.0)

---
updated-dependencies:
- dependency-name: object
  dependency-type: direct:production
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
5 months ago
Tamir Duberstein e4f9ed8d79 Allowlist expected cfgs
See https://doc.rust-lang.org/nightly/cargo/reference/build-scripts.html#rustc-check-cfg.
5 months ago
Tamir Duberstein b603c665a9 Deny warnings 5 months ago
Alessandro Decina d0e9b95aa5
Merge pull request #928 from seanyoung/io-error
Expose io_error in SyscallError
5 months ago
Tamir Duberstein a11b61ebfd s/MiriSafeFd/MockableFd/
The need for this type isn't specific to Miri; it is necessary on
toolchains containing https://github.com/rust-lang/rust/pull/124210 - it
just so happens that today this is nightly only, and so is Miri.
5 months ago
Tamir Duberstein cb6d3bd75d Remove miri ignores
These only warn now:

```
test maps::hash_map::hash_map::tests::test_iter ... warning: integer-to-pointer cast
   --> aya/src/maps/hash_map/hash_map.rs:304:15
    |
304 |         match unsafe { attr.__bindgen_anon_2.key } as *const T {
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ integer-to-pointer cast
    |
    = help: This program is using integer-to-pointer casts or (equivalently) `ptr::with_exposed_provenance`,
    = help: which means that Miri might miss pointer bugs in this program.
    = help: See https://doc.rust-lang.org/nightly/std/ptr/fn.with_exposed_provenance.html for more details on that operation.
    = help: To ensure that Miri does not miss bugs in your program, use Strict Provenance APIs (https://doc.rust-lang.org/nightly/std/ptr/index.html#strict-provenance, https://crates.io/crates/sptr) instead.
    = help: You can then pass the `-Zmiri-strict-provenance` flag to Miri, to ensure you are not relying on `with_exposed_provenance` semantics.
    = help: Alternatively, the `-Zmiri-permissive-provenance` flag disables this warning.
    = note: BACKTRACE on thread `maps::hash_map:`:
    = note: inside `maps::hash_map::hash_map::tests::bpf_key::<i32>` at aya/src/maps/hash_map/hash_map.rs:304:15: 304:63
```
5 months ago
Tamir Duberstein 35962a4794 Document miri skip reasons 5 months ago
Tamir Duberstein 7a7d16885a Avoid crashing under Miri
See https://github.com/rust-lang/rust/pull/124210.
5 months ago
Tamir Duberstein 7e1666fb83 Deduplicate test helpers 5 months ago
Tamir Duberstein 58e154e1bc Reduce duplication 5 months ago
Alessandro Decina e5d107dd50
Merge pull request #900 from catalin-h/log_init_from_program_id
aya-log: allow re-attach and read previously created logs
5 months ago
Alessandro Decina 8830c0bc20 docs(aya-log): reword rustdocs a bit 5 months ago
Alessandro Decina 60abea54ce chore(aya-log): bless API 5 months ago
Catalin Horghidan e66f9540c9 aya-log: allow re-attach and read previously created logs
This feature is useful if someone wants to view the log contents
of a program that is already running. For e.g. a pinned program
or an XDP program attached to a net interface.
5 months ago
Alessandro Decina fc2eb70163 chore(ci): remove macos workaround now that LLVM18 is in brew 5 months ago
Alessandro Decina f089a37626 chore(ci): fix bpf-linker link failure on macos
Force bpf-linker to always be rebuilt/relinked. Before this change we
were always installing latest llvm from brew, but not always rebuilding
bpf-linker, which could lead to:

Run cargo install bpf-linker --git https://github.com/aya-rs/bpf-linker.git --rev 821f92990074cb7e950e25129dcd55e20424cede --no-default-features
    Updating git repository `https://github.com/aya-rs/bpf-linker.git`
     Ignored package `bpf-linker v0.9.10 (https://github.com/aya-rs/bpf-linker.git?rev=821f92990074cb7e950e25129dcd55e20424cede#821f9299)` is already installed, use --force to override

And then:

warning: integration-test@0.1.0: error: linking with `bpf-linker` failed: signal: 6 (SIGABRT)
warning: integration-test@0.1.0:   = note: dyld[17642]: Library not loaded: '/usr/local/opt/z3/lib/libz3.4.12.dylib'
warning: integration-test@0.1.0:             Referenced from: '/Users/runner/.cargo/bin/bpf-linker'
5 months ago
tyrone-wu 1cf3d3c222 public-api: added new api for RetProbeContext 5 months ago
tyrone-wu 6988dac159 test/integration-ebpf: added integration tests for kretprobe & uretprobe
Added integration test methods for kretprobe and uretprobe with their
appropriate contexts.
5 months ago
tyrone-wu b84ede10b9 aya-ebpf/macros: separate probe to probe ctx & retprobe to retprobe ctx
Added logic in expand function in both kprobe.rs and uprobe.rs for valid
macros. Now, kprobe & uprobe proc macros only accept ProbeContext, and
kretprobe & uretprobe only accept RetProbeContext.

Ref: #700
5 months ago
tyrone-wu 2d38b23b99 aya-ebpf/programs: moved ret from ProbeContext into new RetProbeContext
Created retprobe.rs to hold RetProbeContext and moved the ret from
ProbeContext in probe.rs into RetProbeContext. Now, only kprobe (which
uses ProbeContext) can access args, and kretprobe (which uses
RetProbeContext) can access ret.

Fixes: #700
5 months ago
Tamir Duberstein ac58601fb9 Revert "Disable false-positive clippy lint"
This reverts commit b552c83300.

Upstream fixed the false positive in
https://github.com/rust-lang/rust-clippy/commit/62fd1d5377c0bb917761b9f.
5 months ago
Tamir Duberstein 57cd35172f Appease clippy
```
  warning: casting `u8` to `u64` may become silently lossy if you later change the type
  warning: casting `u16` to `u64` may become silently lossy if you later change the type
  warning: casting `u32` to `u64` may become silently lossy if you later change the type
  warning: casting `i64` to `u64` may lose the sign of the value
  warning: casting `i8` to `i64` may become silently lossy if you later change the type
  warning: casting `i64` to `u64` may lose the sign of the value
  warning: casting `i16` to `i64` may become silently lossy if you later change the type
  warning: casting `i32` to `i64` may become silently lossy if you later change the type
     --> ebpf/aya-ebpf/src/helpers.rs:753:27
      |
  753 |                   PrintkArg(x as $via as u64)
      |                             ^
  ...
  759 | / impl_integer_promotion!(
  760 | |   char:  via u64,
  761 | |   u8:    via u64,
  762 | |   u16:   via u64,
  ...   |
  770 | |   isize: via i64,
  771 | | );
      | |_- in this macro invocation
      |
      = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless
      = note: this warning originates in the macro `impl_integer_promotion` (in Nightly builds, run with -Z macro-backtrace for more info)
```

Pass an array of bytes instead of u64 to avoid clippy sign warnings.
5 months ago