it is exposed as a new attribute, id, since it can be used to uniquely identify the block, whereas the pure address can be shared among many blocks in the presence of really weird instructions, such as POPCC.
This also switches the cfg edges to use the id/context address and not the bare bones address. And the same applies to the block mapping. The only place that wasn't changed was the list of blocks changed in FunctionRelationalAnalysis, that felt like a much bigger change and I wasn't sure it was needed.
Some whitespace changes snuck in because of my editor settings, apologies.
it is exposed as a new attribute,
id
, since it can be used to uniquely identify the block, whereas the pure address can be shared among many blocks in the presence of really weird instructions, such asPOPCC
.This also switches the cfg edges to use the id/context address and not the bare bones address. And the same applies to the block mapping. The only place that wasn't changed was the list of blocks changed in FunctionRelationalAnalysis, that felt like a much bigger change and I wasn't sure it was needed.
Some whitespace changes snuck in because of my editor settings, apologies.