2 Commits c36fd85706 ... 6f02a9ff30

Author SHA1 Message Date
  Kajetan Johannes Hammerle 6f02a9ff30 Add valgrind suppression file 2 weeks ago
  Kajetan Johannes Hammerle fa584f32c9 Tasks script is part of fish config now 2 weeks ago
2 changed files with 10 additions and 237 deletions
  1. 0 237
      tasks
  2. 10 0
      valgrind.supp

+ 0 - 237
tasks

@@ -1,237 +0,0 @@
-#!/bin/bash
-set -e
-clear
-cd "$(dirname "$0")"
-
-compiler="gcc"
-if [ -e compiler ]; then
-    compiler=$(cat compiler)
-    echo "compiling with $compiler"
-fi
-
-printHelpExit() {
-    echo "$0 clean           | remove build results"
-    echo "$0 build <type>    | build everything"
-    echo "$0 install         | move build results into the install folder"
-    echo "$0 test <type>     | run the tests"
-    echo "$0 valgrind <type> | run the tests with valgrind"
-    echo "$0 coverage        | generate code coverage"
-    echo "$0 performance     | run the performance tests"
-    echo "$0 stats           | run the performance tests with stats"
-    echo "$0 macro           | find macros without CORE"
-    echo "$0 time            | check build time"
-    exit 0
-}
-
-task=$1
-if [ -z "$task" ]; then
-    printHelpExit
-fi
-
-# task vars
-build_debug=false
-build_profile=false
-build_release=false
-
-test_debug=false
-test_release=false
-
-valgrind=""
-performance=false
-time=false
-install=false
-coverage=false
-stats=false
-
-export CMAKE_EXPORT_COMPILE_COMMANDS=true
-
-cleanFolders() {
-    rm -rf build_debug build_profile build_release install
-}
-
-# parsing
-if [ "$task" = "clean" ]; then
-    cleanFolders
-elif [ "$task" = "build" ]; then
-    type=$2
-    if [ "$type" = "debug" ]; then
-        build_debug=true
-    elif [ "$type" = "release" ]; then
-        build_release=true
-    elif [ "$type" = "all" ]; then
-        build_debug=true
-        build_release=true
-    else
-        echo "Valid build types are: debug, release, all"
-        printHelpExit
-    fi
-elif [ "$task" = "install" ]; then
-    build_release=true
-    install=true
-elif [ "$task" = "coverage" ]; then
-    build_debug=true
-    test_debug=true
-    coverage=true
-elif [ "$task" = "test" ]; then
-    type=$2
-    if [ "$type" = "debug" ]; then
-        build_debug=true
-        test_debug=true
-    elif [ "$type" = "release" ]; then
-        build_release=true
-        test_release=true
-    elif [ "$type" = "all" ]; then
-        build_debug=true
-        test_debug=true
-        build_release=true
-        test_release=true
-    else
-        echo "Valid test types are: debug, release, all"
-        printHelpExit
-    fi
-elif [ "$task" = "valgrind" ]; then
-    type=$2
-    if [ "$type" = "debug" ]; then
-        build_debug=true
-        test_debug=true
-    elif [ "$type" = "release" ]; then
-        build_release=true
-        test_release=true
-    elif [ "$type" = "all" ]; then
-        build_debug=true
-        test_debug=true
-        build_release=true
-        test_release=true
-    else
-        echo "Valid valgrind types are: debug, release, all"
-        printHelpExit
-    fi
-    valgrind="valgrind --leak-check=full --show-leak-kinds=all"
-elif [ "$task" = "performance" ]; then
-    build_profile=true
-    performance=true
-elif [ "$task" = "stats" ]; then
-    build_profile=true
-    performance=true
-    stats=true
-elif [ "$task" = "time" ]; then
-    build_release=true
-    time=true
-elif [ "$task" = "macro" ]; then
-    grep -r "#define" src include | grep -v " CORE" || true
-    exit 0
-else
-    echo "unknown task"
-    printHelpExit
-fi
-
-# task execution
-buildProfile() {
-    folder=$1
-    shift 1
-    if [ -e "$folder" ]; then
-	if ! cat $folder/CMakeCache.txt | grep "CMAKE_C_COMPILER:" | grep $compiler > /dev/null; then
-	    cleanFolders
-	fi
-    fi
-    if [ ! -e "$folder" ]; then
-        cmake -B "$folder" -S . -G Ninja -DCMAKE_C_COMPILER="${compiler}" -DCMAKE_INSTALL_PREFIX=../install "$@"
-    fi
-    ninja -C "$folder"
-}
-
-if $build_debug; then
-    buildProfile build_debug -DCMAKE_BUILD_TYPE=Debug
-fi
-if $build_profile; then
-    buildProfile build_profile -DCMAKE_BUILD_TYPE=RelWithDebInfo
-fi
-if $build_release; then
-    buildProfile build_release -DCMAKE_BUILD_TYPE=Release
-fi
-if $install; then
-    ninja -C build_release install
-fi
-
-function runTests() {
-    echo "--------------Invalid alloc exit----------------"
-    LLVM_PROFILE_FILE="alloc.profraw" ./test alloc || true
-    echo "--------------Invalid realloc exit--------------"
-    LLVM_PROFILE_FILE="realloc.profraw" ./test realloc || true
-    echo "--------------Pre canary detection--------------"
-    LLVM_PROFILE_FILE="pre_canary.profraw" ./test pre_canary || true
-    echo "--------------Post canary detection-------------"
-    LLVM_PROFILE_FILE="post_canary.profraw" ./test post_canary || true
-    # Test Fails
-    LLVM_PROFILE_FILE="test.profraw" ./test test > /dev/null || true
-    echo "--------------Default run-----------------------"
-    LLVM_PROFILE_FILE="default.profraw" $valgrind ./test light $valgrind < ../readLineTest || true
-}
-
-if $test_debug; then
-    cd build_debug
-    runTests
-    cd ..
-fi
-if $test_release; then
-    cd build_release
-    runTests
-    cd ..
-fi
-if $performance; then
-    cd build_profile
-    if $stats; then
-        user=$(whoami)
-        sudo perf record ./performance
-        sudo chown "$user:$user" perf.data
-        sudo chown "$user:$user" default.profraw
-        perf report
-    else
-        ./performance
-    fi
-    cd ..
-fi
-if $time; then
-    lines=$(grep "^[0-9]" "build_release/.ninja_log")
-
-    startMillis=0
-    endMillis=0
-    name=""
-    i=0
-    output=""
-    for arg in $lines; do
-        if [ $i == 0 ]; then
-            startMillis=$arg
-        elif [ $i == 1 ]; then
-            endMillis=$arg
-        elif [ $i == 3 ]; then
-            name=$arg
-	    diff=$((endMillis - startMillis))
-            output="${output}\n$diff $name"
-        fi
-	i=$(($((i + 1)) % 5))
-    done
-    echo -e "$output" | sort -n
-fi
-
-generateCoverageFunctions() {
-    #allowlist_fun:.*
-    ignore=$(cat ./ignoredCoverageFunctions)
-    list=$(nm ./build_debug/libcore.a -j | grep "^[a-zA-Z]")
-    for file in $ignore; do
-	list=$(echo "$list" | grep -v "$file")
-    done
-    echo "$list" | sed 's/^/allowlist_fun:/g' > build_debug/coverageFunctions
-}
-
-if $coverage; then
-    if [ "$compiler" = "gcc" ]; then
-        gcovr -r . build_debug -e test -e performance \
-            --exclude-lines-by-pattern ".*CoverageIgnore.*"
-    else
-	mapfile -t files < <(find build_debug -name "*.profraw")
-        llvm-profdata-17 merge -sparse "${files[@]}" -o build_debug/default.profdata
-	generateCoverageFunctions
-	llvm-cov-17 show ./build_debug/test -instr-profile=build_debug/default.profdata --ignore-filename-regex="test/" -line-coverage-lt=100 --name-allowlist=build_debug/coverageFunctions
-    fi
-fi

+ 10 - 0
valgrind.supp

@@ -0,0 +1,10 @@
+{
+  LLVM
+  Memcheck:Leak
+  match-leak-kinds: reachable
+  fun:malloc
+  fun:strdup
+  fun:parseAndSetFilename
+  fun:__llvm_profile_initialize
+  ...
+}