Bug - (Conditional) jumps are not considered when statically checking for recursion
Description
When analyzing the call chains in an assembly program, the analyzer skips over jumps, conditional or unconditional, to other labels within the program. If this label is a top-level label (i.e., does not have a leading dot), the analyzer assumes that this is part of a different function and halts recursion analysis.
Priority
High - sub-labels are not well known and jumps for control flow are very common
Definition of done
-
when recursion analysis includes jumps in the flow graph, but asserts afterwards that at least one transition was a call -
(un)conditional jumps cause the target block to be incorporated into the body of the function, possibly using graphs like IDA's
Edited by Luc Everse