Recent versions of gcc will sometimes place conditional checks in the code prior to setting up the function's stack frame. Handle this case correctly.
Signed-off-by: Kevin O'Connor kevin@koconnor.net --- scripts/checkstack.py | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/scripts/checkstack.py b/scripts/checkstack.py index 5d9b0bf..255768a 100755 --- a/scripts/checkstack.py +++ b/scripts/checkstack.py @@ -153,6 +153,11 @@ def main(): if '%esp' in insn or insn.startswith('leal'): # Still part of initial header continue + if not stackusage and ( + insn.startswith('test') or insn.startswith('cmp') + or insn.startswith('j')): + # There may be conditional checks prior to stack frame + continue cur.basic_stack_usage = stackusage atstart = 0