[SeaBIOS] [PATCH] checkstack: Handle conditional checks at start of functions

Kevin O'Connor kevin at koconnor.net
Wed Aug 10 21:05:58 CEST 2016


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 at 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
 
-- 
2.5.5




More information about the SeaBIOS mailing list