Commit Graph

1337 Commits

Author SHA1 Message Date
Rafal Kolanski af40ad80e9 Verification support for PR #406: lazy VCPU switching for arm-hyp 2016-10-17 15:21:40 +11:00
Matthew Brecknell 0212696e60 VER-643: make regression compatible with psutil 4.1.0+
At version 4.1.0, the Python psutil package changed the way it reports
CPU times for processes. This commit ensures that regression tests are
compatible with both old and new psutil APIs.
2016-10-07 09:23:20 +11:00
Thomas Sewell 9a28e3c777 Fix a bug with strengthen rules.
Adding optional tracing makes the bug clear; the subgoals of the
rules are attacked in the opposite order, so congruence-style rules
which introduce extra assumptions would have the (schematic)
assumptions unified out of order. Fixed.
2016-10-06 15:37:09 +11:00
Thomas Sewell 4b7965505f Fixes to WPC for multiple resolution.
WPC was written somewhat conservatively to raise exceptions if
something surprising happens. One surprising thing is multiple
higher-order resolution candidates, caused by such things as
a previous precondition of the form "?P x y None None". This isn't
really a problem, so a slight tweak should suppress the exception.
2016-10-05 12:11:43 +11:00
Matthew Brecknell a3714e8190 SELFOUR-276: Finish proofs for maximum controlled priority (MCP)
To finish the proof of refinement to C, the specification for checkPrio
needed strengthening: the checkPrio spec now takes a machine word
argument. In the spec, priorities are still stored as 8-bit quantities,
however. Once the spec was strenthened, it was possible to remove some
redundant checks and mask operations from the C code.

A thread's maximum controlled priority (MCP) determines the maximum
thread priority or MCP it can assign to another thread (or itself).
2016-10-05 02:43:41 +11:00
Joel Beeren b352769016 SELFOUR-276: Prove refinement to Haskell for MCP
Also includes fixes to specs and invariants, and initial progress
towards C refinement.

A thread's maximum controlled priority (MCP) determines the maximum
thread priority or MCP it can assign to another thread (or itself).
2016-10-05 02:43:41 +11:00
Sophie Taylor 20539620f9 SELFOUR-276: Add MCP to specs and invariants
A thread's maximum controlled priority (MCP) determines the maximum
thread priority or MCP it can assign to another thread (or itself).
2016-10-05 02:43:41 +11:00
Matthew Brecknell 31f47e477e clib: ccorres_rewrite rules for trivial guards and conditionals 2016-10-05 02:43:41 +11:00
Matthew Brecknell 92148ce8e7 Word_Lib: lemmas comparing different word sizes 2016-10-05 02:43:41 +11:00
Matthew Brecknell 569cd2822e thydeps: support Perl version 5.24
Perl version 5.24 no longer allows use of $_ as a lexical variable.
2016-10-04 12:04:36 +11:00
Xin Gao 00f64879de Merge pull request #110 in SEL4/l4v from SELFOUR-421-rebased to master
* commit '8d4a8eb238090999b4b41f588d5fa63453d58ae8':
  SELFOUR-421: fix coding style
  SELFOUR-421: fix drefine
  SELFOUR-421: add device bit in UntypedCap and FrameCap in capdl
  SELFOUR-421: infoflow and infoflow_c builds
  SELFOUR-421: crefine builds
  SELFOUR-421: commit before change abstract again
  SELFOUR-421: fix refine
  SELFOUR-421: a defend version before wild changes
  SELFOUR-421: new haskell spec after UserDataDevice changes
  SELFOUR-421: broken crefine after conversation with gerwin
  SELFOUR-421: up to VSpace_C done
  SELFOUR-421: temp work in CSpace_C
  SELFOUR-421: fixed Refine after merge with master
  SELFOUR-421: retranslate haskell after merge with master
  SELFOUR-421: random uncommitted stuff before merge
  SELFOUR-421: retranslate haskell for fixed range check
  SELFOUR-421: refine done
  SELFOUR-421: added check to decoding asid control invocations and stole an asid bit from the high bits not the low ones
  SELFOUR-421: AInvs done, no added invariants yet
  SELFOUR-421: first attempt at abstract spec
2016-09-23 04:17:09 +00:00
Xin,Gao 8d4a8eb238 SELFOUR-421: fix coding style 2016-09-22 19:23:28 +10:00
Xin,Gao 8f3a4dee31 SELFOUR-421: merge with master, fix wholesystem proofs 2016-09-22 19:23:19 +10:00
Xin,Gao 113315d9a6 SELFOUR-421: merge and fix up to ArmConfidentiality proof 2016-09-22 19:21:56 +10:00
Xin,Gao 56dff5a787 SELFOUR-421: fix drefine 2016-09-22 19:11:37 +10:00
Xin,Gao e00e4c4e64 SELFOUR-421: add device bit in UntypedCap and FrameCap in capdl 2016-09-22 19:11:37 +10:00
Xin,Gao 252ce8df4c SELFOUR-421: infoflow and infoflow_c builds 2016-09-22 19:11:37 +10:00
Xin,Gao 328846ee1a SELFOUR-421: crefine builds 2016-09-22 19:11:37 +10:00
Xin,Gao ba03caf644 SELFOUR-421: commit before change abstract again 2016-09-22 19:11:37 +10:00
Xin,Gao 7784e80940 SELFOUR-421: fix refine 2016-09-22 19:11:36 +10:00
Xin,Gao c3be923ca0 SELFOUR-421: a defend version before wild changes 2016-09-22 19:11:36 +10:00
Joel Beeren ec57875566 SELFOUR-421: new haskell spec after UserDataDevice changes 2016-09-22 19:11:36 +10:00
Joel Beeren 99a4c5380c SELFOUR-421: broken crefine after conversation with gerwin 2016-09-22 19:11:36 +10:00
Joel Beeren 5cac23733b SELFOUR-421: up to VSpace_C done 2016-09-22 19:11:36 +10:00
Joel Beeren 1ef5bdf681 SELFOUR-421: temp work in CSpace_C 2016-09-22 19:11:36 +10:00
Joel Beeren 765d8aa88e SELFOUR-421: fixed Refine after merge with master 2016-09-22 19:11:36 +10:00
Joel Beeren 78bd770240 SELFOUR-421: retranslate haskell after merge with master 2016-09-22 19:11:36 +10:00
Joel Beeren 9617e22ce6 SELFOUR-421: random uncommitted stuff before merge 2016-09-22 19:11:36 +10:00
Joel Beeren 773684bcd1 SELFOUR-421: retranslate haskell for fixed range check 2016-09-22 19:11:36 +10:00
Joel Beeren df877769fc SELFOUR-421: refine done 2016-09-22 19:11:36 +10:00
Joel Beeren 0d787cf1c6 SELFOUR-421: added check to decoding asid control invocations and stole an asid bit from the high bits not the low ones 2016-09-22 19:11:36 +10:00
Joel Beeren 3c223b42fe SELFOUR-421: AInvs done, no added invariants yet 2016-09-22 19:11:29 +10:00
Joel Beeren 5e16ec5617 SELFOUR-421: first attempt at abstract spec 2016-09-22 19:11:16 +10:00
Gerwin Klein 67269edb13 docs: update installation instructions
The bitfield generator in seL4/ now also depends on the `six` package.
2016-09-18 16:36:03 +10:00
Michael Norrish 6b5d1b5e5d Allow empty top-level declarations, consisting of bare semi 2016-09-09 14:14:32 +10:00
Alejandro Gomez-Londono 6ed990f1da VER-520: Change (>>) for (>>_)
This is a know issue that was naively solved using `infixl ">>_"`
which effectively does nothing since "_" has an special meaning.
`infixl ">>'_"` was introduced to fix the issue. has a special meaning

  tags: [VER-520]
2016-09-05 16:56:13 +10:00
Matthew Brecknell 28c0c2ed1e merge master into c-parser multi_arch_refactor 2016-09-02 23:40:44 +10:00
Matthew Brecknell 034232a704 trivial: remove debug tracing code 2016-09-02 23:38:40 +10:00
Matthew Brecknell 945ee811c3 CParser multi_arch_refactor: build standalone parser in dir named after arch
Architecture names follow L4V_ARCH-style naming conventions ('ARM', 'FAKE64').
However, the standalone parser does not make use of the L4V_ARCH environment
variable.

The standalone-parser Makefile builds all architectures at once, producing
binaries at 'ARM/c-parser', 'FAKE64/c-parser', and similarly for the tokenizer.

There are also wrapper scripts 'c-parser' and 'tokenizer' in the
standalone-parser directory, which take an architecture on the command line.

The make_munge.sh script calls the appropriate binary parser directly.
2016-09-02 23:38:40 +10:00
Thomas Sewell 2515f8c2e0 Allow use of previous enum values in enums.
This is apparently valid C:
enum {
  One,
  Two = One + 1,
};

It's easy to support this by using the partially modified enum
environment in evaluation of the following right hand sides.
2016-09-02 13:58:57 +10:00
Matthew Brecknell 886fe0ef12 CParser multi_arch_refactor: fix tokenizer build 2016-09-01 12:35:33 +10:00
Matthew Brecknell 5f501b09a9 CParser multi_arch_refactor: add license headers to new files 2016-08-31 16:25:46 +10:00
Matthew Brecknell 86e8cd4a33 CParser multi_arch_refactor: fix broken factorial test
Another case requiring simplification with ucast_id.
2016-08-31 16:24:28 +10:00
Alejandro Gomez-Londono 0c29567bb2 Regression: re-applying [094fb48623] to fix run_tests.py
The changes on [094fb48623] where (for some weird reason) removed from
run_tests.py in the last update, this commit merely re-apply those
changes.
2016-08-29 17:08:34 +10:00
Thomas Sewell 8b2818299a Read extra_tests as relative to dir it is in. 2016-08-26 16:59:27 +10:00
Thomas Sewell 37efb6326a Have run_tests see an extra_tests special file.
The run_tests.py script already searches the directory for all
test.xml files. It will now also note any files named extra_tests,
and also search any directories which appear as lines of those
files.

(Following symlinks would been more obvious but create other issues.)
2016-08-26 16:59:27 +10:00
Thomas Sewell 1449102cc7 Merge pull request #101 in SEL4/l4v from ~TSEWELL/l4v:crunch-refac to master
* commit '9a1ec71a2d53656f4c7eb9c3abb69c323bb38fb3':
  Refactor of crunch.
2016-08-25 07:09:56 +00:00
Thomas Sewell 4c23410f6c Haskell translator: can keep type constructors.
A skeleton line of the form
\#INCLUDE_SETTINGS keep_constructor=asidpool
now ensures that the asidpool type constructor is actually created in
subsequent #INCLUDE_HASKELL declarations. It turns out this feature was already
available, and already used for asidpools, this change just makes it externally
adjustable.
2016-08-25 15:33:19 +10:00
Thomas Sewell 9a1ec71a2d Refactor of crunch.
Substantial adjustments to crunch. Main user changes are:
  - 'lift' and 'unfold' mechanisms replaced by more general 'rule'.
  - some more 'ignores' standardised.
  - crunch has a more principled overall design:
    + discover crunch rule
      * provided or by definition extraction
    + recurse according to rule
    + prove goal based on rule, recursive discoveries, standard tactic
      * wp/simp adjustments tweak tactic
2016-08-24 15:53:53 +10:00
Alejandro Gomez-Londono ef99749ee1 Regression: Added RUN_TESTS_DEFAULT for overwriting the default test set
It is sometimes desirable to overwrite the default set of tests that are
being run in a per execution basis (ex: to allow wrapper scripts to have
a custom default) RUN_TESTS_DEFAULT is an space separated list of tests
that will be run if no specific tests are given.

  tags: [NO_PROOF]
2016-08-24 13:23:33 +10:00