From c8a053557cc7e3993fec11c71cda0049d2fe880c Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Thu, 2 Jul 2020 14:38:10 +0900 Subject: [PATCH 1/2] Propagated CXXFLAGS. Fixed warnings. --- ci/build_cmake.sh | 2 +- include/msgpack/v1/adaptor/boost/fusion.hpp | 12 ++++++++++++ include/msgpack/v1/adaptor/boost/msgpack_variant.hpp | 11 +++++++++++ include/msgpack/v1/adaptor/boost/optional.hpp | 9 +++++++++ test/msgpack_cpp11.cpp | 4 ++-- 5 files changed, 35 insertions(+), 3 deletions(-) diff --git a/ci/build_cmake.sh b/ci/build_cmake.sh index e10d8ceb..4c07a09c 100755 --- a/ci/build_cmake.sh +++ b/ci/build_cmake.sh @@ -26,7 +26,7 @@ else export ARCH_FLAG="-m64" fi -cmake -DMSGPACK_CXX11=${CXX11} -DMSGPACK_CXX17=${CXX17} -DMSGPACK_32BIT=${BIT32} -DMSGPACK_CHAR_SIGN=${CHAR_SIGN} -DMSGPACK_DEFAULT_API_VERSION=${API_VERSION} -DMSGPACK_USE_X3_PARSE=${X3_PARSE} -DCMAKE_CXX_FLAGS=${ARCH_FLAG} ${ZLIB32} -fsanitize=undefined .. +cmake -DMSGPACK_CXX11=${CXX11} -DMSGPACK_CXX17=${CXX17} -DMSGPACK_32BIT=${BIT32} -DMSGPACK_CHAR_SIGN=${CHAR_SIGN} -DMSGPACK_DEFAULT_API_VERSION=${API_VERSION} -DMSGPACK_USE_X3_PARSE=${X3_PARSE} -DCMAKE_CXX_FLAGS="${ARCH_FLAG} ${CXXFLAGS} -fsanitize=undefined" ${ZLIB32} .. ret=$? if [ $ret -ne 0 ] diff --git a/include/msgpack/v1/adaptor/boost/fusion.hpp b/include/msgpack/v1/adaptor/boost/fusion.hpp index 73e1766b..d47a7f24 100644 --- a/include/msgpack/v1/adaptor/boost/fusion.hpp +++ b/include/msgpack/v1/adaptor/boost/fusion.hpp @@ -21,11 +21,23 @@ #include "msgpack/adaptor/cpp11/tuple.hpp" #endif // #if !defined (MSGPACK_USE_CPP03) +#if defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif // defined(__GNUC__) + #include #include #include #include #include + + +#if defined(__GNUC__) +#pragma GCC diagnostic pop +#endif // defined(__GNUC__) + + #include namespace msgpack { diff --git a/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp b/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp index acd35d52..ecf8ac17 100644 --- a/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp +++ b/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp @@ -26,7 +26,18 @@ #include "msgpack/adaptor/vector.hpp" #include "msgpack/adaptor/map.hpp" + +#if defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif // defined(__GNUC__) + #include + +#if defined(__GNUC__) +#pragma GCC diagnostic pop +#endif // defined(__GNUC__) + #include namespace msgpack { diff --git a/include/msgpack/v1/adaptor/boost/optional.hpp b/include/msgpack/v1/adaptor/boost/optional.hpp index 70791fe9..bd51cdf2 100644 --- a/include/msgpack/v1/adaptor/boost/optional.hpp +++ b/include/msgpack/v1/adaptor/boost/optional.hpp @@ -14,6 +14,11 @@ #include "msgpack/adaptor/adaptor_base.hpp" #include "msgpack/adaptor/check_container_size.hpp" +#if defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif // defined(__GNUC__) + // To suppress warning on Boost.1.58.0 #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__) #pragma GCC diagnostic push @@ -26,6 +31,10 @@ #pragma GCC diagnostic pop #endif // defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__) +#if defined(__GNUC__) +#pragma GCC diagnostic pop +#endif // defined(__GNUC__) + namespace msgpack { /// @cond diff --git a/test/msgpack_cpp11.cpp b/test/msgpack_cpp11.cpp index c5c532bf..f3569293 100644 --- a/test/msgpack_cpp11.cpp +++ b/test/msgpack_cpp11.cpp @@ -1461,7 +1461,7 @@ TEST(MSGPACK_TIMESPEC, timespec_object_with_zone_zero) TEST(MSGPACK_TIMESPEC, timespec_pack_convert_32bit_sec) { std::stringstream ss; - timespec val1{ std::numeric_limits().tv_sec)>::is_signed ? INT32_MAX : UINT32_MAX, 0 }; + timespec val1{ std::numeric_limits().tv_sec)>::is_signed ? time_t(INT32_MAX) : time_t(UINT32_MAX), 0 }; msgpack::pack(ss, val1); std::string const& str = ss.str(); @@ -1477,7 +1477,7 @@ TEST(MSGPACK_TIMESPEC, timespec_pack_convert_32bit_sec) TEST(MSGPACK_TIMESPEC, timespec_object_with_zone_32bit_sec) { msgpack::zone z; - timespec val1{ std::numeric_limits().tv_sec)>::is_signed ? INT32_MAX : UINT32_MAX, 0 }; + timespec val1{ std::numeric_limits().tv_sec)>::is_signed ? time_t(INT32_MAX) : time_t(UINT32_MAX), 0 }; msgpack::object obj(val1, z); timespec val2 = obj.as(); EXPECT_EQ(val1.tv_sec, val2.tv_sec); From 544978b343e08a894605d481d9f8e02c42ccbb57 Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Thu, 2 Jul 2020 17:04:32 +0900 Subject: [PATCH 2/2] Added conditional sanitize option. --- .github/workflows/gha.yml | 18 ++++++++++++++++-- ci/build_cmake.sh | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gha.yml b/.github/workflows/gha.yml index 811ed108..5c854864 100644 --- a/.github/workflows/gha.yml +++ b/.github/workflows/gha.yml @@ -41,6 +41,7 @@ jobs: export ARCH="64" export CHAR_SIGN="unsigned" export API_VERSION="1" + export SANITIZE="-fsanitize=undefined" fi if [ ${{ matrix.pattern }} == 1 ]; then ACTION="ci/build_cmake.sh" @@ -48,6 +49,7 @@ jobs: export ARCH="64" export CHAR_SIGN="signed" export API_VERSION="3" + export SANITIZE="-fsanitize=undefined" fi if [ ${{ matrix.pattern }} == 2 ]; then ACTION="ci/build_cmake.sh" @@ -55,12 +57,14 @@ jobs: export ARCH="64" export CHAR_SIGN="signed" export API_VERSION="2" + export SANITIZE="-fsanitize=undefined" fi if [ ${{ matrix.pattern }} == 3 ]; then ACTION="ci/build_cmake.sh" export ARCH="64" export CHAR_SIGN="unsigned" export API_VERSION="2" + export SANITIZE="-fsanitize=undefined" fi # install gtest @@ -78,7 +82,7 @@ jobs: cd .. # build and test - CMAKE_CXX_COMPILER="${CXX}" CMAKE_LIBRARY_PATH="${BASE}/usr/lib:${BASE}/build" GTEST_ROOT="${BASE}/usr" CMAKE_PREFIX_PATH="${BASE}/usr/clang/lib${ARCH}/cmake" CXXFLAGS="-Werror -g" ${ACTION} + CMAKE_CXX_COMPILER="${CXX}" CMAKE_LIBRARY_PATH="${BASE}/usr/lib:${BASE}/build" GTEST_ROOT="${BASE}/usr" CMAKE_PREFIX_PATH="${BASE}/usr/clang/lib${ARCH}/cmake" CXXFLAGS="-Werror -g ${SANITIZE}" ${ACTION} cat Files.cmake| grep ".*\.[h|hpp]" | perl -pe 's/ //g' | sort > tmp1 && find include -name "*.h" -o -name "*.hpp" | sort > tmp2 && diff tmp1 tmp2 linux: @@ -114,6 +118,7 @@ jobs: export ARCH="64" export CHAR_SIGN="unsigned" export API_VERSION="2" + export SANITIZE="-fsanitize=undefined" fi if [ ${{ matrix.pattern }} == 1 ]; then export CXX=clang++ @@ -121,6 +126,7 @@ jobs: export ARCH="32" export CHAR_SIGN="signed" export API_VERSION="2" + export SANITIZE="-fsanitize=undefined" fi if [ ${{ matrix.pattern }} == 2 ]; then export CXX=clang++ @@ -130,6 +136,7 @@ jobs: export CHAR_SIGN="signed" export API_VERSION="3" export X3_PARSE="ON" + export SANITIZE="-fsanitize=undefined" fi if [ ${{ matrix.pattern }} == 3 ]; then export CXX=clang++ @@ -146,6 +153,7 @@ jobs: export ARCH="64" export CHAR_SIGN="signed" export API_VERSION="2" + export SANITIZE="-fsanitize=undefined" fi if [ ${{ matrix.pattern }} == 5 ]; then export CXX=g++ @@ -155,6 +163,7 @@ jobs: export CHAR_SIGN="unsigned" export API_VERSION="3" export X3_PARSE="ON" + export SANITIZE="-fsanitize=undefined" fi if [ ${{ matrix.pattern }} == 6 ]; then export CXX=g++ @@ -162,6 +171,7 @@ jobs: export ARCH="64" export CHAR_SIGN="unsigned" export API_VERSION="2" + export SANITIZE="-fsanitize=undefined" fi if [ ${{ matrix.pattern }} == 7 ]; then export CXX=g++ @@ -169,6 +179,7 @@ jobs: export ARCH="32" export CHAR_SIGN="signed" export API_VERSION="1" + export SANITIZE="-fsanitize=undefined" fi if [ ${{ matrix.pattern }} == 8 ]; then export CXX=g++ @@ -176,6 +187,7 @@ jobs: export ARCH="32" export CHAR_SIGN="signed" export API_VERSION="2" + export SANITIZE="-fsanitize=undefined" fi if [ ${{ matrix.pattern }} == 9 ]; then export CXX=clang++ @@ -184,6 +196,7 @@ jobs: export SAN="UBSAN" export MSGPACK_FUZZ_REGRESSION="ON" export CTEST_OUTPUT_ON_FAILURE=1 + export SANITIZE="-fsanitize=undefined" fi if [ ${{ matrix.pattern }} == 10 ]; then export CXX=clang++ @@ -192,6 +205,7 @@ jobs: export SAN="ASAN" export MSGPACK_FUZZ_REGRESSION="ON" export CTEST_OUTPUT_ON_FAILURE=1 + export SANITIZE="-fsanitize=undefined" fi # install gtest @@ -214,7 +228,7 @@ jobs: fi # build and test - CMAKE_CXX_COMPILER="${CXX}" CMAKE_LIBRARY_PATH="${BASE}/usr/lib:${BASE}/build" GTEST_ROOT="${BASE}/usr" CMAKE_PREFIX_PATH="${BASE}/usr/gcc/lib${ARCH}/cmake" CXXFLAGS="-Werror -g" MSGPACK_SAN="${SAN}" ${ACTION} + CMAKE_CXX_COMPILER="${CXX}" CMAKE_LIBRARY_PATH="${BASE}/usr/lib:${BASE}/build" GTEST_ROOT="${BASE}/usr" CMAKE_PREFIX_PATH="${BASE}/usr/gcc/lib${ARCH}/cmake" CXXFLAGS="-Werror -g ${SANITIZE}" MSGPACK_SAN="${SAN}" ${ACTION} cat Files.cmake| grep ".*\.[h|hpp]" | perl -pe 's/ //g' | sort > tmp1 && find include -name "*.h" -o -name "*.hpp" | sort > tmp2 && diff tmp1 tmp2 windows: runs-on: windows-2016 diff --git a/ci/build_cmake.sh b/ci/build_cmake.sh index 4c07a09c..d0b1066d 100755 --- a/ci/build_cmake.sh +++ b/ci/build_cmake.sh @@ -26,7 +26,7 @@ else export ARCH_FLAG="-m64" fi -cmake -DMSGPACK_CXX11=${CXX11} -DMSGPACK_CXX17=${CXX17} -DMSGPACK_32BIT=${BIT32} -DMSGPACK_CHAR_SIGN=${CHAR_SIGN} -DMSGPACK_DEFAULT_API_VERSION=${API_VERSION} -DMSGPACK_USE_X3_PARSE=${X3_PARSE} -DCMAKE_CXX_FLAGS="${ARCH_FLAG} ${CXXFLAGS} -fsanitize=undefined" ${ZLIB32} .. +cmake -DMSGPACK_CXX11=${CXX11} -DMSGPACK_CXX17=${CXX17} -DMSGPACK_32BIT=${BIT32} -DMSGPACK_CHAR_SIGN=${CHAR_SIGN} -DMSGPACK_DEFAULT_API_VERSION=${API_VERSION} -DMSGPACK_USE_X3_PARSE=${X3_PARSE} -DCMAKE_CXX_FLAGS="${ARCH_FLAG} ${CXXFLAGS}" ${ZLIB32} .. ret=$? if [ $ret -ne 0 ]