Fix sanitizer use (#1429)

* Fix sanitizer use

A case issue prevented adding sanitizer in the tests.

* Fix compiler warnings from actual sanitizer use
This commit is contained in:
Roland Reichwein 2026-05-06 11:13:02 +02:00 committed by GitHub
parent fe17d32e9b
commit a5d279d5e4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 14 additions and 6 deletions

View File

@ -41,7 +41,7 @@ elif [ "$2" = "inside_container" ] ; then
cd build-$ARCH
cmake -DCMAKE_TOOLCHAIN_FILE=../.devcontainer/$ARCH/toolchain-$ARCH.cmake \
-DBUILD_TESTS=ON -DNO_STL=ON -DETL_CXX_STANDARD=23 \
-DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=-O0 -DETL_ENABLE_SANITIZER=Off -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF \
-DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_OPTIMISATION=-O0 -DETL_ENABLE_SANITIZER=OFF -DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF \
../test
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc)
cmake --build .

View File

@ -566,6 +566,14 @@ namespace etl
//*************************************************************************
ETL_NODISCARD ETL_CONSTEXPR14 bool is_valid() const ETL_NOEXCEPT
{
// GCC's UBSan instruments function pointer comparisons, which prevents
// constexpr evaluation. Use implicit bool conversion at compile time
// to avoid the instrumented != comparison while still checking validity.
if (etl::is_constant_evaluated())
{
return static_cast<bool>(invocation.stub);
}
return invocation.stub != ETL_NULLPTR;
}

View File

@ -58,7 +58,7 @@ for CXXSTD in 11 14 17 20 23 26; do
-DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \
-DETL_OPTIMISATION=-O0 \
-DETL_CXX_STANDARD=$CXXSTD \
-DETL_ENABLE_SANITIZER=Off \
-DETL_ENABLE_SANITIZER=OFF \
-DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF \
-DETL_USE_BUILTIN_MEM_FUNCTIONS=ON ..
cmake --build .

View File

@ -163,11 +163,11 @@ fi
# Set the sanitizer enable. Default OFF
#******************************************************************************
if [ "$4" = "s" ]; then
sanitize="On"
sanitize="ON"
elif [ "$4" = "n" ]; then
sanitize="Off"
sanitize="OFF"
else
sanitize="Off"
sanitize="OFF"
fi
#******************************************************************************

View File

@ -50,7 +50,7 @@ namespace
for (size_t i = 0UL; i < sizeof(value_type); ++i)
{
uint8_t byte = static_cast<uint8_t>((static_cast<unsigned char>(value) >> (i * 8UL)) & 0xFFU);
uint8_t byte = static_cast<uint8_t>((static_cast<unsigned int>(value) >> (i * 8U)) & 0xFFU);
checksum = etl::rotate_right(checksum) + byte;
}
}