#
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.
|