Do not test boost::throws() under -fsanitize=undefined

This commit is contained in:
Peter Dimov
2018-01-21 17:38:01 +02:00
parent f5f3652f30
commit 5866fbb2b2
2 changed files with 11 additions and 1 deletions

View File

@@ -264,7 +264,7 @@ install:
script:
- |-
echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
- ./b2 -j3 libs/system/test toolset=$TOOLSET cxxstd=$CXXSTD ${UBSAN:+cxxflags=-fsanitize=undefined} ${UBSAN:+cxxflags=-fno-sanitize-recover=undefined} ${UBSAN:+linkflags=-fsanitize=undefined}
- ./b2 -j3 libs/system/test toolset=$TOOLSET cxxstd=$CXXSTD ${UBSAN:+cxxflags=-fsanitize=undefined} ${UBSAN:+cxxflags=-fno-sanitize-recover=undefined} ${UBSAN:+linkflags=-fsanitize=undefined} ${UBSAN:+define=UBSAN=1}
notifications:
email:

View File

@@ -22,6 +22,7 @@
#include <cstring>
#include <functional>
#include <boost/cerrno.hpp>
#include <boost/config/pragma_message.hpp>
// Although using directives are not the best programming practice, testing
// with a boost::system using directive increases use scenario coverage.
@@ -246,8 +247,17 @@ int main( int, char ** )
BOOST_TEST( econd.message() != "" );
BOOST_TEST( econd.message().substr( 0, 13) != "Unknown error" );
#if !defined(UBSAN)
// the current implementation of boost::throws() relies on undefined behavior
test_throws_usage();
#else
BOOST_PRAGMA_MESSAGE("Skipping test_throws_usage() due to UBSAN");
#endif
#ifdef BOOST_WINDOWS_API
std::cout << "Windows tests...\n";
// these tests probe the Windows errc decoder