Document build modes better
diff --git a/README.rst b/README.rst
index 8dd823c..2abec3c 100644
--- a/README.rst
+++ b/README.rst
@@ -39,7 +39,7 @@
make
-There are 5 different active build modes specified within the CMake buildsystem:
+There are many different build modes available within the CMake buildsystem. Most of them are available for gcc and clang, though some are compiler-specific:
- Release.
This generates the default code without any unnecessary information in the binary files.
@@ -49,8 +49,20 @@
This generates code coverage information in addition to debug information.
- ASan.
This instruments the code with AddressSanitizer to check for memory errors.
+ (This includes LeakSanitizer, with recent version of gcc and clang.)
+ (With recent version of clang, this mode also intruments the code with
+ UndefinedSanitizer to check for undefined behaviour.)
+- ASanDbg.
+ Same as ASan but slower, with debug information and better stack traces.
+- MemSan.
+ This intruments the code with MemorySanitizer to check for uninitialised
+ memory reads. Experimental, needs recent clang on Linux/x86_64.
+- MemSanDbg.
+ Same as ASan but slower, with debug information, better stack traces and
+ origin tracking.
- Check.
- This activates more compiler warnings and treats them as errors.
+ This activates the compiler warnings that depend on optimisation and treats
+ all warnings as errors.
Switching build modes in CMake is simple. For debug mode, enter at the command line:
@@ -77,6 +89,13 @@
PolarSSL includes an elaborate test suite in *tests/* that initially requires Perl to generate the tests files (e.g. *test_suite_mpi.c*). These files are generates from a **function file** (e.g. *suites/test_suite_mpi.function*) and a **data file** (e.g. *suites/test_suite_mpi.data*). The **function file** contains the template for each test function. The **data file** contains the test cases, specified as parameters that should be pushed into a template function.
+For machines with a Unix shell and OpenSSL (and optionnally GnuTLS) installed, additional test scripts are available:
+
+- *tests/ssl-opt.sh* runs integration tests for various TLS options (renegotiation, resumption, etc.) and tests interoperability of these options with other implementations.
+- *tests/compat.sh* tests interoperability of every ciphersuite with other implementations.
+- *tests/scripts/test-ref-configs.pl* test builds in various reduced configurations.
+- *tests/scripts/all.sh* runs a combination of the above tests with various build options (eg ASan).
+
Configurations
==============