Conversation
`Loader.get_loader_symbolic_constraints` held cle's last `import claripy`. angr/angr#6550 folded claripy into angr and dropped the standalone package from angr's dependencies, so an environment that installs angr no longer has a top-level `claripy`. The guarded import falls through to its except branch there and the method logs "Please install claripy to get symbolic constraints" and returns []. It returned [] before that too. The value it tests, `Backend.mapped_base_symbolic`, is assigned in exactly one place -- `= 0` in `Backend.__init__` -- so the `isinstance(..., claripy.ast.BV)` check was never true. Nothing in cle, angr or angr-management calls the method or writes the attribute, and the docstring says "Do not use this method." cle is a dependency of angr, so it cannot follow #6550's `from angr import claripy` rule. Drop the dead method and the attribute that only fed it. The `aslr` flags stay: `aslr` is a documented `Loader` keyword and removing it would break callers that pass it.
|
THIS MESSAGE WAS GENERATED BY AN AUTOMATED PROCESS Validation record for head
Dead-code evidence, re-derived at this head:
CI prediction, written before the push. Anything red that is not named here is a defect in this validation, not a CI quirk:
Caveats: the 3 suite failures above are the missing |
|
THIS MESSAGE WAS GENERATED BY AN AUTOMATED PROCESS
import logging
logging.basicConfig(level=logging.ERROR, format="%(levelname)s | %(name)s | %(message)s")
import cle
ld = cle.Loader("binaries/tests/x86_64/fauxware", aslr=True)
print("cle.__version__ :", cle.__version__)
print("Loader.aslr :", ld.aslr)
try:
print("symbolic constraints :", ld.get_loader_symbolic_constraints())
except AttributeError as e:
print("symbolic constraints : AttributeError:", e)
print("mapped_base_symbolic :", getattr(ld.main_object, "mapped_base_symbolic", "<absent>"))Before — the guarded cle master 3812052After — the method and the attribute are gone, so there is no misleading log with this change |
|
Corpus decompilation diffs can be found at angr/dec-snapshots@master...angr/cle_811 |
THIS MESSAGE WAS GENERATED BY AN AUTOMATED PROCESS
Problem
Loader.get_loader_symbolic_constraintsholds cle's lastimport claripy. Theclarirs migration in angr (angr/angr#6550, merged
2026-09-03) folded claripy into angr — it is built into
angr.rustylib.claripyand exposed as
angr.claripy— and dropped the standaloneclaripypackagefrom angr's dependencies, so installing angr no longer installs it. Loading
binaries/tests/x86_64/fauxwarewithaslr=Truein such an environment andcalling the method:
The error asks the user to install a package angr no longer uses.
Root cause
The method returned
[]before the migration too. The value it tests,Backend.mapped_base_symbolic, is assigned in exactly one place —self.mapped_base_symbolic = 0inBackend.__init__— soisinstance(obj.mapped_base_symbolic, claripy.ast.BV)was never true and theloop never appended a constraint. Nothing in cle, angr or angr-management calls
the method or writes the attribute, and the docstring is "Do not use this
method."
Fix
Delete the method and the attribute that only fed it. cle is a dependency of
angr, so it cannot follow the migration's
from angr import claripyrule;dropping the dead code is how cle reaches zero
claripyreferences, whichgit grep -n claripynow confirms with exit 1. Theaslrflags stay:aslrisa documented
Loaderkeyword, so removing it would break callers that pass it,while removing the method breaks nobody. Nothing reads either flag after this
change; retiring them is a separate API change.
Testing
No regression test: the change removes dead code and adds no behaviour to
assert. The load above is the check — it prints that error and
[]on master andraises
AttributeErroron this head, and both captures are in the outputcomment. The cle suite is unchanged at 257 passed and 9 skipped, with the same 3
pre-existing failures master has.
Validation: #811 (comment)
session: sharpen