From 5c8d07603ed0d7c305497fb2446ba6d980f31eec Mon Sep 17 00:00:00 2001 From: Joshua Anderson Date: Thu, 24 Jun 2021 16:46:59 -0700 Subject: [PATCH] Enable AddressSanitizer on CI builds --- .github/actions/spelling/expect.txt | 4 +++- Autocoders/Python/test/interface1/UserSerializer.cpp | 3 ++- Autocoders/Python/test/serialize_user/UserSerializer.cpp | 3 ++- CMakeLists.txt | 5 +++++ cmake/Options.cmake | 4 ++-- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt index 257f68ee7f..9e67e82222 100644 --- a/.github/actions/spelling/expect.txt +++ b/.github/actions/spelling/expect.txt @@ -25,6 +25,7 @@ acwrap acxz addoffset addon +AddressSanitizer adminlist aeiouy afterstatinfo @@ -598,6 +599,7 @@ fputil frontend frox frsize +fsanitize fscanf fstream fstrength @@ -1239,10 +1241,10 @@ Prepends prepeneding pri PRId -PRIu printables printf println +PRIu prm PRMDB PRMDBFULL diff --git a/Autocoders/Python/test/interface1/UserSerializer.cpp b/Autocoders/Python/test/interface1/UserSerializer.cpp index 2d02fed005..49df7c7b60 100644 --- a/Autocoders/Python/test/interface1/UserSerializer.cpp +++ b/Autocoders/Python/test/interface1/UserSerializer.cpp @@ -44,8 +44,9 @@ Fw::SerializeStatus UserSerializer::serialize(Fw::SerializeBufferBase& buffer) c Fw::SerializeStatus UserSerializer::deserialize(Fw::SerializeBufferBase& buffer) { NATIVE_UINT_TYPE serSize = sizeof(m_struct); - return buffer.deserialize((U8*)&m_struct,serSize); + Fw::SerializeStatus stat = buffer.deserialize((U8*)&m_struct,serSize); FW_ASSERT(serSize == sizeof(m_struct)); + return stat; } diff --git a/Autocoders/Python/test/serialize_user/UserSerializer.cpp b/Autocoders/Python/test/serialize_user/UserSerializer.cpp index 0f7de47e6a..060f865071 100644 --- a/Autocoders/Python/test/serialize_user/UserSerializer.cpp +++ b/Autocoders/Python/test/serialize_user/UserSerializer.cpp @@ -44,8 +44,9 @@ Fw::SerializeStatus UserSerializer::serialize(Fw::SerializeBufferBase& buffer) c Fw::SerializeStatus UserSerializer::deserialize(Fw::SerializeBufferBase& buffer) { NATIVE_UINT_TYPE serSize = sizeof(m_struct); - return buffer.deserialize((U8*)&m_struct,serSize); + Fw::SerializeStatus stat = buffer.deserialize((U8*)&m_struct,serSize); FW_ASSERT(serSize == sizeof(m_struct)); + return stat; } diff --git a/CMakeLists.txt b/CMakeLists.txt index a20d93c43b..e189d8463a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,11 @@ set(FPRIME_PROJECT_ROOT "${CMAKE_CURRENT_LIST_DIR}" CACHE PATH "Root path of F p set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wno-unused-parameter") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror -Wno-unused-parameter") +# For this testing cmake project, enable AddressSanitizer, a runtime memory sanitizer, on all unit tests +set (CMAKE_C_FLAGS_TESTING "${CMAKE_C_FLAGS_TESTING} -fno-omit-frame-pointer -fsanitize=address") +set (CMAKE_CXX_FLAGS_TESTING "${CMAKE_CXX_FLAGS_TESTING} -fno-omit-frame-pointer -fsanitize=address") +set (CMAKE_LINKER_FLAGS_TESTING "${CMAKE_LINKER_FLAGS_TESTING} -fno-omit-frame-pointer -fsanitize=address") + # Include the build for F prime. include("${CMAKE_CURRENT_LIST_DIR}/cmake/FPrime.cmake") include("${CMAKE_CURRENT_LIST_DIR}/cmake/FPrime-Code.cmake") diff --git a/cmake/Options.cmake b/cmake/Options.cmake index f0a335425b..ba2755e400 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -130,9 +130,9 @@ endif() SET(CMAKE_CXX_FLAGS_RELEASE "-std=c++03" CACHE STRING "C++ flags." FORCE) SET(CMAKE_C_FLAGS_RELEASE "-std=c99" CACHE STRING "C flags." FORCE) # Raise C++ standard to C++11 while unit testing to support googletest -SET(CMAKE_CXX_FLAGS_TESTING "-std=c++11 -g -DBUILD_UT -DPROTECTED=public -DPRIVATE=public -DSTATIC= -fprofile-arcs -ftest-coverage" +SET(CMAKE_CXX_FLAGS_TESTING "${CMAKE_CXX_FLAGS_TESTING} -std=c++11 -g -DBUILD_UT -DPROTECTED=public -DPRIVATE=public -DSTATIC= -fprofile-arcs -ftest-coverage" CACHE STRING "Testing C++ flags." FORCE) -SET(CMAKE_C_FLAGS_TESTING "-std=c99 -g -DBUILD_UT -DPROTECTED=public -DPRIVATE=public -DSTATIC= -fprofile-arcs -ftest-coverage" +SET(CMAKE_C_FLAGS_TESTING "${CMAKE_C_FLAGS_TESTING} -std=c99 -g -DBUILD_UT -DPROTECTED=public -DPRIVATE=public -DSTATIC= -fprofile-arcs -ftest-coverage" CACHE STRING "Testing C flags." FORCE) SET(CMAKE_EXE_LINKER_FLAGS_TESTING "" CACHE STRING "Testing linker flags." FORCE) SET(CMAKE_SHARED_LINKER_FLAGS_TESTING "" CACHE STRING "Testing linker flags." FORCE)