Skip to content

angr: Add version 10.0.5 - #4756

Merged
luhenry merged 6 commits into
mainfrom
port/angr
Nov 11, 2026
Merged

luhenry merged 6 commits into
mainfrom
port/angr

Conversation

@luhenry

@luhenry luhenry commented Nov 9, 2026 •

Copy link
Copy Markdown
Member

Compiles angr.rustylib (Rust via setuptools-rust: claripy, icicle-emu, libafl, z3 bindings) and the C++ unicornlib linked against pyvex. Upstream publishes no riscv64 wheel.

Mirrors upstream's angr-release.yml.

Differs from upstream

  • musllinux dropped - no riscv64 musl Rust toolchain on rustup.rs, no z3-solver musllinux wheel
  • build frontend instead of build[uv] - the riscv64 runner has no host uv
  • Compiled dependencies forced to wheels from PyPI and pypi.riseproject.dev

Testing

  • Upstream's release check (install, import angr) plus tests/claripy, test_load_shellcode.py, test_fuzzer.py and sim/test_icicle.py
  • Deselected the tests that load binaries from the angr/binaries corpus

License: OK

Built on cp312-abi3.

luhenry added a commit that referenced this pull request Nov 9, 2026
no_std_time 0.16.1, reached through angr's exact libafl/libafl_bolts
=0.16.1 pins, gates `use core::arch::asm;` on aarch64/arm only, while
its riscv64 read_time_counter calls asm!("rdcycle ..."), so the crate
fails with "cannot find macro `asm` in this scope" on riscv64.

0.16.1 is the latest no_std_time release and LibAFL main is still
unfixed, so vendor the crates.io tarball, extend the import's cfg to
riscv64/riscv32, and wire it in via [patch.crates-io] with the
matching Cargo.lock delta (gotcha 300's pattern).
minibsod 0.16.1, reached through angr's exact libafl/libafl_bolts
=0.16.1 pins like no_std_time, defines dump_registers and write_crash
on Linux only for x86, x86_64, aarch64 and arm, while its generic
fallback is gated off for every target_os = "linux". linux/riscv64 so
gets neither and generate_minibsod fails with "cannot find function
`write_crash`/`dump_registers` in this scope".

0.16.1 is the latest minibsod release and LibAFL main is still
unfixed, so add Linux riscv64 implementations reading the pc and
x1..x31 from uc_mcontext.__gregs (same layout on glibc and musl), and
vendor the crate alongside no_std_time. The vendoring step is
generalized to both crates, and the Cargo.toml/Cargo.lock delta now
covers both.
_publish-wheel.yml now requires a matrix input (main's "publish:
Validate effective wheel targets"), but this PR branch forked before
that landed and angr has never been merged to main, so build-angr.yml
never picked up the matching one-line update every already-published
package's workflow got. The merge ref combines the new required-input
_publish-wheel.yml with this branch's old build-angr.yml, so any run
has failed startup with "Input matrix is required, but not provided".

Pass it the same way the mass-update commit did for every other
package's publish job.
…re test

17 of this leg's test failures collapse to two causes, neither a build
problem (the wheel itself builds and imports fine):

- test_real_execution_constraints_parse loads the angr/binaries
  fauxware corpus like the other deselected tests, but its test name
  doesn't contain "fauxware", so the existing -k filter missed it.

- IcicleEngine's edge-hitmap coverage tracking comes back all-zero on
  this riscv64 build: engine.process() runs and returns normally, but
  no edge is ever marked hit (test_icicle.py's three TestEdgeHitmap
  cases). Every LibAFL-backed fuzzer scenario depends on that
  coverage feedback end to end, so the entire tests/test_fuzzer.py
  file fails with it ("Emulator reported a failure").

Deselect test_real_execution_constraints_parse and TestEdgeHitmap, and
drop tests/test_fuzzer.py from the run, rather than mask a real
riscv64-specific gap in icicle's coverage instrumentation with an
unrelated-looking green check.
@luhenry
luhenry merged commit f803d5c into main Nov 11, 2026
6 checks passed
@luhenry
luhenry deleted the port/angr branch November 11, 2026 04:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant