angr.ailment.tagged_object

Python-side marker for the legacy isinstance(x, TaggedObject) checks.

We can get rid of this base class once IncompleteSwitchCaseHeadStatement is migrated to Rust.

class angr.ailment.tagged_object.TagDict

Bases: TypedDict

Schema for the .tags mapping on AIL data classes.

Only primitive-valued tags survive the Rust port. reg_vvars was promoted to a dedicated field on VirtualVariable. Variable information (variable, variable_offset, reference_*) now lives in a side VariableMap (see angr.analyses.decompiler.variable_map).

always_propagate: NotRequired[bool]
block_idx: NotRequired[int]
deref_src_addr: NotRequired[int]
extra_def: NotRequired[bool]
extra_defs: NotRequired[list[int]]
ins_addr: NotRequired[int]
is_prototype_guessed: NotRequired[bool]
keep_in_slice: NotRequired[bool]
orig_ins_addr: NotRequired[int]
reg_name: NotRequired[str]
uninitialized: NotRequired[bool]
vex_block_addr: NotRequired[int]
vex_stmt_idx: NotRequired[int]
write_size: NotRequired[int]
class angr.ailment.tagged_object.TaggedObject

Bases: object

Marker class for backward-compatible isinstance(x, TaggedObject) checks.

The real hierarchy has no shared base anymore; this class only exists so legacy isinstance checks keep returning the same result.

Some legacy code does __hash__ = ailment.statement.TaggedObject.__hash__ to opt in to the cached-hash machinery. We expose a pure-Python __hash__ here so that idiom keeps working.

idx: int
tags: Any