mirror of
https://github.com/ETLCPP/etl.git
synced 2026-06-15 08:26:04 +08:00
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:
parent
fe17d32e9b
commit
a5d279d5e4
@ -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 .
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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 .
|
||||
|
||||
@ -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
|
||||
|
||||
#******************************************************************************
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user