History log of /seL4-l4v-master/graph-refine/stack_logic.py
Revision Date Author Comments
# b2ddb1f6 11-Mar-2020 Gerwin Klein <gerwin.klein@data61.csiro.au>

convert license headers to SPDX


# 4954637c 17-Dec-2019 Edward Pierzchalski <ed.pierzchalski@data61.csiro.au>

graph-refine: fix bitrot

Removes 'def_p_regs', a symbol that doesn't exist.

Blacklists 'arm_swi_syscall', a function defined in assembly that isn't
called by any C function, but which calls 'c_handle_syscall', another
blacklisted function.

Renames the special pointer return variable from 'r0_input' to
'ret_addr_input', to match upstream HOL.


# ae17ea94 11-Jul-2018 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Factor out a common substitution pattern.


# 6ea3a594 01-Jul-2018 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Support some more instructions and stack cases.

Firstly, handle some more instruction forms that are showing up
in the source & binary.

Secondly, adjust the way that conditional path comparisons are
handled in stack_logic. This whole calculation is mostly an
over-precise way of trying to work around the presence of
non-returning function calls. Downstream from these we compute
stack offsets which are conditional on the impossible path, which
then need to be simplified. This new formulation seems to handle
the new cases, but may need to be strengthened yet again.


# 44d5099c 29-May-2018 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

squash


# 1cef6ef5 29-May-2018 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

stack analysis: more diagnostic information.

Add some more information to the default channel when doing
stack analysis. It's silly to go digging through the various
debug mechanisms only to discover an extra function inlined
in a funny place.


# facf1d71 11-Apr-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Tweaks for loop_bounds variants in stack_logic.


# 35c01de9 09-Apr-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

More diagnostic info.


# 1c32c025 06-Apr-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Helper for finding problematic clones.


# ff630bbf 06-Mar-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Fix problem with stack analysis, inst funs.

Apparently stack analysis of some functions was being blocked by
the presence of instruction functions, leading to dumb errors down
the line.


# d785972e 01-Mar-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Fix a stack_logic issue, problem not solved.

Of course, the real issue here is that we don't have stack
preservation across these clone function calls, so we don't
know what to expect on the far side.


# a2c13715 23-Feb-2017 Thomas Sewell <Thomas.Sewell@data61.csiro.au>

Very odd bugfix.


# 8d899f04 25-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Handle conditionals better in stack offs analysis.


# e5da1c43 25-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Start trying to address clones in stack anaysis.


# c84c912f 19-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

More descriptive assertion on stack calc.


# 09ad0171 09-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Two major tweaks to var cycle analysis.

Firstly, var cycle analysis is now generally much better at handling
masking problems, e.g. when a linear variable is repeatedly masked off
or cast up and down, interspersed with other arithmetic.

Secondly, var cycle analysis detects dead paths within loops with some
vague approximation of const-propagation, which in particular allows an
offset value pageBitsForSize (SectionBits) in map_kernel_window to be
recognised as a constant offset.


# 929697ff 04-Jan-2017 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Split inner instructions into pairs.

Create extra functions l_impl'isb, r_impl'isb etc instead of just impl'isb.
This means that rep_graph's function pair mechanism can figure out how to
orient the function pair, which avoids weird bugs.


# d648ff9d 29-Dec-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Fix a bug with stack pointers in var analysis.

To do loop var analysis on stack slots, we 'virtualise' some nodes
to what they would be if stack slots were variables. Along the way,
the stack pointers themselves disappear, which is a problem if a
stack-relative address has been saved into a register other than the
stack pointer. To fix this we insert some redundant lvals in our
fake nodes.


# f6fb4f89 28-Dec-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Slight tweak to loop analysis.

In particular, handle the case where a constant value is repeatedly
computed and stored somewhere, e.g. a constant stack value being
retrieved into a register.


# 1d0919e9 20-Dec-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Minor bugfixes.


# 189b2c12 20-Dec-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Allow stack virtualisation failures.

Todo, recurse on these to learn more, eliminate these failures
and thus approximate Magnus' solution to the problem.


# fb24ee54 12-Dec-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Assume functions with symbols respect the stack.

This supports some functions whose symbols and bodies are defined
directly in assembly, the current such culprit being lockTLBEntryCritical.


# d6810c5a 18-Oct-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Adjust approach to splittables.

Generate splittable information lazily and store in cached_analysis
of problem. Also check for complex loops at a slightly different
point.

Also replace an experimental better split point detector in logic
with another experimental one which also doesn't work perfectly yet.


# 7dccc012 12-Oct-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Fix previous; include a compatibility workaround.

Fixes a bug in previous.

Also adds a hook whereby a target can request a previous level of
compatibility with functions that contain ASM statements and other
non-calling-convention compatible functions that may dangerously
adjust the stack pointer.

(The previous level of compatibility is actually unsound, because
it assumed that e.g. the fastpath restore assembly block did not
do what it did.)


# 889f82cb 12-Oct-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Experimental: ignore unmatched ASM functions.

This may allow an (unreliable) WCET estimate of some code which
we haven't properly made sense of yet.


# a3503872 09-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Report timeouts correctly in parallel.

The case where a parallel solver timed out or failed needs to be handled
carefully, permitting the other solvers to possibly solve the problem.


# e0c2cd89 08-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Minor fixes.


# b43b12cd 04-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Hacky support for 8-bit reads in loops.

The (heuristic) stack variable estimation now sort-of supports reads of 8-bit
words inside loops, by just taking a slice of another word.


# c0745416 04-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Minor updates.


# 16d011ac 02-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Activate inst_logic for seL4-example, fixups.


# 4a687109 02-Aug-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

New feature: instruction specs.

Adds bodies for instruction'mcr* and asm_instruction'mcr* etc functions.
Handles mcr and mrc forms already. These bodies just map to impl'mcr_
functions, but the mapping eliminates irrelevant complexity (some synonyms and
also the details of which register holds args/rets). Works for a couple of
functions.


# 5cb52d39 06-Jun-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Improve some diagnostics.


# da422b7f 08-May-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Support 64-bit loads and stores.


# 4871f9df 31-Mar-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Recognise new instruction'mcr function types.


# d47f114c 11-Oct-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Bugfix.


# be8155ec 08-Oct-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Bugfixes.


# fafdb57b 08-Oct-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Addendum to previous in stack_logic.


# ceeb63ab 08-Oct-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Capture un-paired functions in some analyses.

Functions callable from functions tagged 'ASM' should be analysed
in ASM analysis phases also. Tongue twist that.


# b881dd6c 06-Oct-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

More caching & bugfixes.


# 9f3201a1 06-Oct-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Handle un-paired functions for stack analysis.


# 25b5a409 30-Sep-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Further bugfixes for linked problems.


# 104bb32d 08-Sep-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Improve documentation and output.


# 3d6869e3 24-Aug-2015 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Import of graph-refine tool.