]> git.codecow.com Git - Monocypher.git/commitdiff
Squashed commit of the following:
authorChris Fogelklou <chris.fogelklou@gmail.com>
Fri, 11 Mar 2022 05:24:20 +0000 (06:24 +0100)
committerLoup Vaillant <github-is-valid@loup-vaillant.fr>
Sun, 13 Mar 2022 09:47:57 +0000 (10:47 +0100)
commit 41cd7c9a3270c5a3c94d379dee2e4242ec69fc25
Author: Chris Fogelklou <chris.fogelklou@gmail.com>
Date:   Fri Mar 11 06:20:14 2022 +0100

    Remove some extraneous lines.

commit b0a7dddc5a3bf03a7bec2621cce5dd1c2620753e
Author: Chris Fogelklou <chris.fogelklou@gmail.com>
Date:   Fri Mar 11 06:10:01 2022 +0100

    Add crashy builds.

commit 3a6b343df68f074aa626f619d7ac9c8fe860e23a
Author: Chris Fogelklou <chris.fogelklou@gmail.com>
Date:   Fri Mar 11 06:09:09 2022 +0100

    One more test - crashy flags

commit 2c399f4fd42488f6aae205b369ea10d91b824050
Author: Chris Fogelklou <chris.fogelklou@gmail.com>
Date:   Fri Mar 11 06:05:14 2022 +0100

    Install valgrind before using it.

commit a57a7abd526934f5d90ad2a20c651bc832ea3047
Author: Chris Fogelklou <chris.fogelklou@gmail.com>
Date:   Fri Mar 11 06:02:39 2022 +0100

    Try GCC and Clang, build with different varieties of compiler and cflags

commit 07f435959c6cfc10f4d6a46d9ba5048bbe30a410
Author: Chris Fogelklou <chris.fogelklou@gmail.com>
Date:   Fri Mar 11 05:58:41 2022 +0100

    Try slightly better optimization.

commit d5d8b6ba7eb453a2fe8e5aca7715477443135b64
Author: Chris Fogelklou <chris.fogelklou@gmail.com>
Date:   Fri Mar 11 05:55:45 2022 +0100

    Missed the make clean command.

commit cf60bc603ce28eb6671414edb5e003f9bf4a6e87
Author: Chris Fogelklou <chris.fogelklou@gmail.com>
Date:   Fri Mar 11 05:52:07 2022 +0100

    Try with optimization level 0

commit 630b0a957555adb0b22af9eb720fb25bee56f728
Author: Chris Fogelklou <chris.fogelklou@gmail.com>
Date:   Fri Mar 11 05:41:30 2022 +0100

    Start a new PR so as to not keep working in the old one.

.github/workflows/ci.yml

index 084d6a104eac0834d49da5fbddc96b5612b9e7eb..afd26f91b6ecc05fdde2cd6293caa96f1cb5a51c 100644 (file)
@@ -1,3 +1,54 @@
+# This file is dual-licensed.  Choose whichever licence you want from
+# the two licences listed below.
+#
+# The first licence is a regular 2-clause BSD licence.  The second licence
+# is the CC-0 from Creative Commons. It is intended to release Monocypher
+# to the public domain.  The BSD licence serves as a fallback option.
+#
+# SPDX-License-Identifier: BSD-2-Clause OR CC0-1.0
+#
+# ------------------------------------------------------------------------
+#
+# Copyright (c) 2017-2022, Loup Vaillant
+# All rights reserved.
+#
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the
+#    distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# ------------------------------------------------------------------------
+#
+# Written in 2017-2022 by Loup Vaillant
+# Written in 2022 by Chris Fogelklou
+#
+# To the extent possible under law, the author(s) have dedicated all copyright
+# and related neighboring rights to this software to the public domain
+# worldwide.  This software is distributed without any warranty.
+#
+# You should have received a copy of the CC0 Public Domain Dedication along
+# with this software.  If not, see
+# <https://creativecommons.org/publicdomain/zero/1.0/>
 name: CI
 
 on:
@@ -39,30 +90,81 @@ jobs:
       - name: Install clang and llvm
         run: sudo apt-get install -y clang llvm
 
-      - name: Install valgrind
-        run: sudo apt-get install -y valgrind
-
       - name: Make test vectors
         run: |
           pushd tests/gen
-          make clean && make
+          make clean && make -j4
           popd
 
       - name: Run tests
-        run: make clean && make test
+        run: make clean && make test -j4
 
       - name: Run speed tests
         run: |
-          make clean && make speed
+          make clean && make speed -j4
 
       - name: Run code coverage tests
         run: |
           ./tests/coverage.sh
 
-      # This test fails with a crash. The set +e handles this for now, but the source of the crash
-      # should be found and fixed.
-      - name: Run tests with clang sanitizers and valgrind (Fails!)
+      - name: Run tests with clang sanitizers
         run: |
-          set +e
-          ./tests/test.sh
-          set -e
+
+          make clean;  make test; make test-legacy -j4
+          echo "Make with O3 optimization and no blake2 loop unrolling"
+          make clean;  make test CFLAGS="-DBLAKE2_NO_UNROLLING -O3" -j4
+
+          echo "Make with address sanitizaton"
+          make clean;  make test CC="clang -std=c99" CFLAGS="-g -fsanitize=address" -j4
+
+          echo "Make with memory sanitizaton"
+          make clean;  make test CC="clang -std=c99" CFLAGS="-g -fsanitize=memory" -j4
+
+          echo "Make with undefined checks"
+          make clean;  make test CC="clang -std=c99" CFLAGS="-g -fsanitize=undefined" -j4
+
+          echo
+          echo "All sanitisers passed!"
+          echo
+
+      - name: Install valgrind
+        run: sudo apt-get install -y valgrind
+
+      - name: Fixme - Build, then run with valgrind (crashy with march=native)
+        run: |
+          echo "Ignore errors in this test suite"
+          set +e # Ignore errors
+
+          echo "Crashy Valgrind on GCC build with O3 and -march=native. TODO: Fix."
+          make clean; make test.out CFLAGS="-g -O3 -march=native" -j4
+          valgrind ./test.out
+
+          echo "Crashy Valgrind on CLANG build with O3 and -march=native. TODO: Fix."
+          make clean; make test.out CC="clang -std=c99" CFLAGS="-g -O3 -march=native" -j4
+          valgrind ./test.out
+
+          echo "Re-enable errors"
+          set -e # Re-enable errors
+
+      - name: Build, then run with valgrind (OK without march=native)
+        run: |
+
+          echo "Valgrind on GCC build with O2"
+          make clean; make test.out CFLAGS="-O2" -j4
+          valgrind ./test.out
+
+          echo "Valgrind on CLANG build with O2"
+          make clean; make test.out CC="clang -std=c99" CFLAGS="-O2" -j4
+          valgrind ./test.out
+
+          echo "Valgrind on GCC build with O3"
+          make clean; make test.out CFLAGS="-O3" -j4
+          valgrind ./test.out
+
+          echo "Valgrind on CLANG build with O3"
+          make clean; make test.out CC="clang -std=c99" CFLAGS="-O3" -j4
+          valgrind ./test.out
+
+          echo
+          echo "All valgrind tests passed!"
+          echo