Commit Graph

226 Commits

Author SHA1 Message Date
Norbert Manthey d5ea30600f ls_parse: improve debugging by printing a trace
In case parsing a linker script fails, generate a trace, so that
debugging is possible. This way, unknown blocks in linker scripts
can be spotted more easily.
2018-07-12 11:41:21 +02:00
Norbert Manthey 17bc726360 ls_parse: Allow handling unknown blocks
The Xen linker script has a block "PHDRS" that results in a failure
of the ls_parse.py script. As there is nothing to be done in that
script for that block, this commit adds an empty handler for this
block name. In case more blocks should be added, only the regular
expression to match the blocks has to be modified.
2018-07-12 11:41:15 +02:00
Kurt Degiorgio 0b90c17a8c JBMC: Moved format_classpath.sh to scripts/format_classpath.sh
'format_classpath.sh' is used in regression tests that make use of the
'classpath' option. This script is needed to deal with the fact that
classpath syntex is OS-dependent.

The java concurrency regression tests make heavy use of this option as
such this commit moves 'format_classpath.sh' to
'scripts/format_classpath.sh'.

Furthermore, this commit makes a very small change to 'appveyor.yml'
that enables existing java concurrency regression tests to run on
Windows.
2018-06-24 15:35:02 +01:00
Michael Tautschnig 2ed63f5ab6
Merge pull request #2156 from tautschnig/gcc-8-fixes
Fixes to build using GCC 8
2018-06-06 22:08:34 +01:00
Michael Tautschnig fc670b5cb3 Do not lint .h files in regression/ 2018-06-06 15:55:47 +00:00
Michael Tautschnig 4f3c102109 Silence Minisat's use of realloc on non-POD and fix and use its xrealloc
This was a new GCC 8 warning; testing on errno == ENOMEM with && opened the door
for non-compliant implementations to fail to allocate without capacity()
failing.
2018-06-05 09:05:16 +00:00
Michael Tautschnig 09b8cf7960
Merge pull request #2014 from tautschnig/cadical-experiment
Performance test extensions and updates
2018-06-01 10:13:18 +01:00
Peter Schrammel 779fa7102b
Merge pull request #2253 from peterschrammel/documentation/override2
Get legalistic about use of override without virtual
2018-05-30 09:29:47 +01:00
Peter Schrammel 050b3444e0 Re-enable enforcement of override without virtual 2018-05-29 16:07:00 +01:00
Peter Schrammel a90ea445a5 Add module dependency check to CPP-LINT
To use it just put a module_dependencies.txt into a directory,
which lists all modules that it is allowed to include header
files from.
2018-05-29 14:05:17 +01:00
Peter Schrammel d94545250d Adapt cpplint header guard check
to deal with non-top-level `src` and `unit` directories
2018-05-20 23:00:03 +01:00
Michael Tautschnig a47941d720 perf-test: add -W/--witness-check to validate SV-COMP witness checking 2018-05-14 14:26:42 +01:00
Michael Tautschnig 5b0395ff28 perf-test: Update Ubuntu AMI ids for latest version 2018-05-14 12:31:09 +01:00
Michael Tautschnig 1288ec753b perf-test: speed up builds just like e7bb127f0e did
apt-get update takes considerable time, removing one call is desirable.
2018-05-14 12:31:09 +01:00
Michael Tautschnig afccaec2af Provide goto-cc in performance tests 2018-05-14 12:31:09 +01:00
Michael Tautschnig f802d87ba8 Support CaDiCaL in performance tests, remove redundant script 2018-05-14 12:31:09 +01:00
Matthias Güdemann 213db5fd6b Remove trailing `;` from namespace closing bracket 2018-05-10 12:58:05 +02:00
Michael Tautschnig 6b8583d795
Merge pull request #2100 from tautschnig/string-table-cleanup
Remove unused entries from the string table
2018-04-26 20:51:35 +01:00
Michael Tautschnig f79b45345a Check that the string table does not include unused entries 2018-04-25 15:04:49 +01:00
Lukasz A.J. Wrona 692c4f377a Remove brace checking from cpplint 2018-04-24 18:02:05 +01:00
Daniel Kroening 74a37c6352
Merge pull request #1988 from tautschnig/cadical
Add support for CaDiCaL
2018-04-24 14:13:30 +01:00
Michael Tautschnig c34e073af6 Add support for CaDiCaL
CaDiCaL is Armin Biere's latest solver with a minimal IPASIR-compatible
interface. In some initial experiments it considerable outperforms Minisat.
2018-04-22 20:31:50 +01:00
Matthias Güdemann aa3caa3ad0 Fix CMake build for Glucose Syrup 2018-04-21 17:26:40 +02:00
Michael Tautschnig df1c7e3518 Builds require javac as of f66288b4 2018-03-23 19:57:35 +00:00
Vlastimil Zeman a5c26a8022
Add script for uploading documentation
To keep it as fast/current as possible we will use rsync that to upload
only changes and delete what is no longer part of documentation.
2018-03-20 12:16:03 +00:00
Michael Tautschnig c62b957a5e
Merge pull request #1551 from tautschnig/perf-test-improvements
Improvements to perf-test(.py)
2018-02-22 16:43:19 +00:00
Kareem Khazem 53df56780e
[path explore 6/7] cpplint & clang-fmt agree on :
cpplint now complains if a derived-class declaration is formatted as

  class derived: base

rather than complaining if it is formatted as

  class derived : base

(with a space on both sides of the colon). The latter style is the one
enforced by clang-format, meaning that the two linters were inconsistent.
2018-02-20 23:50:14 +00:00
Pascal Kesseli 703e4a340b Remove unapproved C++11 header warning.
Removed list of C++11 headers for which Chromium has preferred
alternatives, since these don't apply to us.
2018-01-18 12:13:34 +01:00
Michael Tautschnig 03095d47d1 Use svcomp18 as base 2017-12-08 14:51:14 +00:00
Michael Tautschnig f659577ef2 perf-test: build configuration using glucose
Configuration can be used/enabled using -B codebuild-glucose.yaml
2017-12-08 14:50:32 +00:00
Michael Tautschnig 98b9ae65be SV-COMP now requires zip files 2017-12-08 14:50:32 +00:00
Michael Tautschnig 1c0cf3224d Support custom CodeBuild templates 2017-12-08 14:50:32 +00:00
Michael Tautschnig 6eeb672bec Permit selecting a regular-expression-defined set of tasks 2017-12-08 14:50:31 +00:00
Michael Tautschnig d3b29d233f Update cprover-sv-comp, benchexec to latest version 2017-12-08 14:50:31 +00:00
Michael Tautschnig 3269da7049 Utility to generate HTML reports from perf-test experiments
This is by and large in a works-for-me state and may need documentationa and
generalisation.
2017-12-08 14:50:31 +00:00
reuk d3d632d8d2 Use multi-argument form of FILE command 2017-11-15 18:13:29 +00:00
Daniel Kroening df45bdb2ce
Merge pull request #1524 from reuk/reuk/fix-linter
Disable dowhile brace check by default
2017-10-27 19:29:43 +01:00
Daniel Kroening 021fe8fc32 Merge pull request #1492 from tautschnig/perf-test
Script to automate performance evaluation of CBMC on AWS
2017-10-25 21:22:18 +01:00
reuk a00edd3e6c Disable dowhile brace check by default 2017-10-25 13:34:56 +01:00
Michael Tautschnig c3e67261b5 Script to automate performance evaluation of CBMC on AWS
Evaluation is performed for a chosen GitHub or CodeCommit repository and
commit/branch/tag by running (a subset of) SV-COMP benchmarks. Runs are
done both in optimised as well as in profiling mode.

Execution should be as simple as

  ./perf_test.py \
        -r https://github.com/diffblue/cbmc -c develop \
        -e tautschn@amazon.com

assuming that AWS access keys are set up (as required for AWS cli use) and boto3
is installed. Emails will then be sent as results become available.

The script sets up (and persists) an S3 bucket for storing results, SNS
queues for email updates on the process, as well as an EBS snapshot
containing the benmarking data.

For each benchmarking run, builds are set up and performed via
CodeBuild. Evaluation is then performed using AutoScalingGroups
synchronised via SQS.

The design premise for this work was:

"Compare multiple configurations for performance, correctness, capabilities."

This was broken down into:

Configuration: target platform, timeout, memory limit, benchmark set, tool
options, source version (=repository + revision).

Compare: log files, counterexamples, CPU profile, memory profile, verification
results.
2017-10-20 18:11:12 +01:00
reuk 55e6594d04 Fixup cpplint.py 2017-10-17 13:16:59 +01:00
reuk 554cb54400 Adjust cpplint to disable whitespace checks by default 2017-10-16 11:52:18 +01:00
Chris Smowton 78cd286d0b Fix messaget's copy-constructor and operator=
These were broken, leaving an mstreamt whose back-pointer pointed
into a different messaget than the one it enclosed, which could then have
its message_handlert changed with unexpected side-effects, or be deleted
causing a probable segfault on next log message.

The added unit tests verify that this no longer happens.
2017-10-11 14:51:20 +01:00
Thomas Kiley ef76441a72 Corrected error in the run_diff script
Script was erroneously reporting that there was no cpplint.py in the
scripts folder when the problem was a lack of doxygen executable.
2017-10-02 14:34:53 +01:00
reuk 88c2f9c5c7 Use DownloadProject method for integrating sat libraries 2017-09-27 11:22:25 +01:00
reuk ad486f8c55 Set up glucose externalproject 2017-09-11 14:29:12 +01:00
reuk 22c2ab9f04 Add CMakeLists 2017-09-11 14:29:12 +01:00
Chris Smowton 389221ebee run_diff.sh shellcheck fixes
* Replace backticks with $()
* Double-quote filenames that might conceivably contain troublesome special chars (*, space etc)
2017-09-06 11:18:32 +01:00
Chris Smowton dce6ae141a Improve filter_by_diff.py and friends
* Attempts to cope with invalid UTF-8 (present in a few CBMC files) using iconv
* Splits the filter-by-diff job into two stages (diff -> JSON description of interesting lines
  and JSON -> filtered output)

This means that run_diff.sh CPPLINT is now practical, and produces a report of the linting
problems in develop but not in master (around 150 lines as of the time of writing) in about 2 minutes.
2017-09-06 11:18:14 +01:00
Kareem Khazem 85521b0263
goto-gcc reads definitions from linker scripts
goto-gcc now runs the ls_parse.py script whenever the target codebase is
being compiled with a custom linker script (specified with the -T
option). goto-gcc then synthesizes the linker script definitions that
ls_parse reported, and adds them to the goto-program as if those
definitions were defined in the target C program rather than the linker
script.

This solves a problem where the values of some C variables are
inaccessible from CBMC because those variables are defined in the linker
script rather than the C codebase. It also solves the problem of CBMC
not knowing what memory regions are accessible to the C program, again
because the memory regions are declared to be valid in the linker
script.

This commit also introduces three tests for this functionality.

This commit also fixes a small bug in ls_parse.py that made it reject
some valid linker scripts.
2017-09-04 11:39:32 +01:00