noreturn

incomplete_block(Block:address)

This module performs an early noreturn analysis after code inference but before use-def analysis begins. It is intended to eliminate CFG edges that may otherwise produce spurious def_used instances.

direct_or_pcrel_jump(Src:address, Dest:address)

segment_target_range(Beg:address, End:address, Tmax:address)

The segment between [Beg,End] does not have any indirect targets or return instructions and all the direct targets are between Beg and Tmax

If End > Tmax, then we can say that the segment is self-contained, which means that the only way to step out of it is through a fallthrough in the last block

self_contained_segment(Beg:address, End:address)

no_return_block(EA:address)

No-return blocks.

This is a underapproximation, since it cannot propagate through jumptables or indirect calls (which are not yet resolved), or could call library functions that are not known to be no-return.

The only situation where it would generate false-positive noreturns is if a “known noreturn” library function does, in fact, return.

no_return_call_refined(EA:address)

Calls to known no return functions or their PLT blocks.

no_return_call_propagated(EA:address)

Calls to noreturn blocks.