From a6706e3a7850aa3095e8c3530417cfdcf7236e96 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Fri, 21 Feb 2020 15:40:55 -0600 Subject: Merge changes from develop for CMake and Java --- CMakeLists.txt | 3 --- config/cmake/HDFCompilerFlags.cmake | 11 +++++++++-- config/cmake_ext_mod/CTestCustom.cmake | 2 +- config/cmake_ext_mod/runTest.cmake | 2 +- config/gnu-flags | 6 ++++-- config/sanitizer/sanitizers.cmake | 27 ++++++++++++++------------- java/src/hdf/hdf5lib/H5.java | 4 ++-- java/src/jni/h5pFAPLImp.c | 14 +++++++------- 8 files changed, 38 insertions(+), 31 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f17f2d..f28fdef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -394,9 +394,6 @@ HDF_DIR_PATHS(${HDF5_PACKAGE_NAME}) include (${HDF_RESOURCES_EXT_DIR}/HDFLibMacros.cmake) include (${HDF_RESOURCES_DIR}/HDF5Macros.cmake) -if (HDF5_ENABLE_SANITIZERS) - include (${HDF5_SOURCE_DIR}/config/sanitizer/sanitizers.cmake) -endif () #----------------------------------------------------------------------------- # Targets built within this project are exported at Install time for use diff --git a/config/cmake/HDFCompilerFlags.cmake b/config/cmake/HDFCompilerFlags.cmake index 100ada3..17b0854 100644 --- a/config/cmake/HDFCompilerFlags.cmake +++ b/config/cmake/HDFCompilerFlags.cmake @@ -30,8 +30,10 @@ macro (ADD_H5_FLAGS h5_flag_var infile) #message (STATUS "h5_flag_var=${${h5_flag_var}}") endmacro () -message (STATUS "Warnings Configuration:") set (CMAKE_C_FLAGS "${CMAKE_C99_STANDARD_COMPILE_OPTION} ${CMAKE_C_FLAGS}") +set (CMAKE_C_FLAGS "${CMAKE_C_SANITIZER_FLAGS} ${CMAKE_C_FLAGS}") +set (CMAKE_CXX_FLAGS "${CMAKE_CXX_SANITIZER_FLAGS} ${CMAKE_CXX_FLAGS}") +message (STATUS "Warnings Configuration: default: ${CMAKE_C_FLAGS} : ${CMAKE_CXX_FLAGS}") #----------------------------------------------------------------------------- # Compiler specific flags : Shouldn't there be compiler tests for these #----------------------------------------------------------------------------- @@ -176,7 +178,12 @@ if (NOT MSVC AND CMAKE_COMPILER_IS_GNUCC) # Append more extra warning flags that only gcc 4.5+ know about if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5) - set (H5_CFLAGS1 "${H5_CFLAGS1} -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants") + set (H5_CFLAGS1 "${H5_CFLAGS1} -Wstrict-overflow=5 -Wjump-misses-init") + if (HDF5_ENABLE_DEV_WARNINGS) + set (H5_CFLAGS0 "${H5_CFLAGS0} -Wunsuffixed-float-constants") + else () + set (H5_CFLAGS0 "${H5_CFLAGS0} -Wno-unsuffixed-float-constants") + endif () endif () # Append more extra warning flags that only gcc 4.6+ know about diff --git a/config/cmake_ext_mod/CTestCustom.cmake b/config/cmake_ext_mod/CTestCustom.cmake index 4e292a7..2d72e8d 100644 --- a/config/cmake_ext_mod/CTestCustom.cmake +++ b/config/cmake_ext_mod/CTestCustom.cmake @@ -5,7 +5,7 @@ set (CTEST_CUSTOM_WARNING_EXCEPTION ".*note.*expected.*void.*but argument is of type.*volatile.*" ".*src.SZIP.*:[ \t]*warning.*" ".*src.ZLIB.*:[ \t]*warning.*" - ".*jpeg.src.*:[ \t]*warning.*" + ".*src.JPEG.*:[ \t]*warning.*" ".*POSIX name for this item is deprecated.*" ".*disabling jobserver mode.*" ".*warning.*implicit declaration of function.*" diff --git a/config/cmake_ext_mod/runTest.cmake b/config/cmake_ext_mod/runTest.cmake index 6440c81..6e78ba5 100644 --- a/config/cmake_ext_mod/runTest.cmake +++ b/config/cmake_ext_mod/runTest.cmake @@ -163,7 +163,7 @@ endif () # if the output file needs Modified text removed if (TEST_MASK_MOD) file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM) - string (REGEX REPLACE "Modified:[^\n]+\n" "Modified: XXXX-XX-XX XX:XX:XX XXX\n" TEST_STREAM "${TEST_STREAM}") + string (REGEX REPLACE "Modified:[^\n]+\n" "Modified: XXXX-XX-XX XX:XX:XX XXX\n" TEST_STREAM "${TEST_STREAM}") file (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}") endif () diff --git a/config/gnu-flags b/config/gnu-flags index ede17fb..3ca74c1 100644 --- a/config/gnu-flags +++ b/config/gnu-flags @@ -251,7 +251,9 @@ if test "X-gcc" = "X-$cc_vendor"; then # gcc 4.5 if test $cc_vers_major -ge 5 -o $cc_vers_major -eq 4 -a $cc_vers_minor -ge 5; then - H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants" + H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init" + DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wunsuffixed-float-constants" + NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-unsuffixed-float-constants" fi # gcc 4.6 @@ -292,7 +294,7 @@ if test "X-gcc" = "X-$cc_vendor"; then # gcc 7 if test $cc_vers_major -ge 7; then DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wstringop-overflow=2" - H5_CFLAGS="$H5_CFLAGS -Walloc-zero -Walloca -Wduplicated-branches -Wformat-overflow=2 -Wformat-truncation=2 -Wimplicit-fallthrough=5 -Wrestrict" + H5_CFLAGS="$H5_CFLAGS -Walloc-zero -Walloca -Wduplicated-branches -Wformat-overflow=2 -Wformat-truncation=1 -Wimplicit-fallthrough=5 -Wrestrict" fi # gcc 8 diff --git a/config/sanitizer/sanitizers.cmake b/config/sanitizer/sanitizers.cmake index 2625ec3..ecee2de 100644 --- a/config/sanitizer/sanitizers.cmake +++ b/config/sanitizer/sanitizers.cmake @@ -28,52 +28,53 @@ function(append value) endforeach(variable) endfunction() -if(USE_SANITIZER AND "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") +message(STATUS "USE_SANITIZER=${USE_SANITIZER}, CMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID}") +if(USE_SANITIZER AND "${CMAKE_C_COMPILER_ID}" MATCHES "Clang") set(CMAKE_EXPORT_COMPILE_COMMANDS ON) - append("-fno-omit-frame-pointer" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append("-fno-omit-frame-pointer" CMAKE_C_SANITIZER_FLAGS CMAKE_CXX_SANITIZER_FLAGS) + message(STATUS "Building with sanitize, base flags=${CMAKE_C_SANITIZER_FLAGS}") if(UNIX) if(uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG") - append("-O1" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append("-O1" CMAKE_C_SANITIZER_FLAGS CMAKE_CXX_SANITIZER_FLAGS) endif() if(USE_SANITIZER MATCHES "([Aa]ddress);([Uu]ndefined)" OR USE_SANITIZER MATCHES "([Uu]ndefined);([Aa]ddress)") message(STATUS "Building with Address, Undefined sanitizers") - append("-fsanitize=address,undefined" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append("-fsanitize=address,undefined" CMAKE_C_SANITIZER_FLAGS CMAKE_CXX_SANITIZER_FLAGS) set(MEMCHECK_TYPE AddressSanitizer) elseif(USE_SANITIZER MATCHES "([Aa]ddress)") # Optional: -fno-optimize-sibling-calls -fsanitize-address-use-after-scope message(STATUS "Building with Address sanitizer") - append("-fsanitize=address" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append("-fsanitize=address" CMAKE_C_SANITIZER_FLAGS CMAKE_CXX_SANITIZER_FLAGS) set(MEMCHECK_TYPE AddressSanitizer) elseif(USE_SANITIZER MATCHES "([Mm]emory([Ww]ith[Oo]rigins)?)") # Optional: -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2 - append("-fsanitize=memory" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append("-fsanitize=memory" CMAKE_C_SANITIZER_FLAGS CMAKE_CXX_SANITIZER_FLAGS) if(USE_SANITIZER MATCHES "([Mm]emory[Ww]ith[Oo]rigins)") message(STATUS "Building with MemoryWithOrigins sanitizer") - append("-fsanitize-memory-track-origins" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append("-fsanitize-memory-track-origins" CMAKE_C_SANITIZER_FLAGS CMAKE_CXX_SANITIZER_FLAGS) else() message(STATUS "Building with Memory sanitizer") endif() set(MEMCHECK_TYPE MemorySanitizer) elseif(USE_SANITIZER MATCHES "([Uu]ndefined)") message(STATUS "Building with Undefined sanitizer") - append("-fsanitize=undefined" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append("-fsanitize=undefined" CMAKE_C_SANITIZER_FLAGS CMAKE_CXX_SANITIZER_FLAGS) if(EXISTS "${BLACKLIST_FILE}") - append("-fsanitize-blacklist=${BLACKLIST_FILE}" CMAKE_C_FLAGS - CMAKE_CXX_FLAGS) + append("-fsanitize-blacklist=${BLACKLIST_FILE}" CMAKE_C_SANITIZER_FLAGS CMAKE_CXX_SANITIZER_FLAGS) endif() set(MEMCHECK_TYPE UndefinedBehaviorSanitizer) elseif(USE_SANITIZER MATCHES "([Tt]hread)") message(STATUS "Building with Thread sanitizer") - append("-fsanitize=thread" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append("-fsanitize=thread" CMAKE_C_SANITIZER_FLAGS CMAKE_CXX_SANITIZER_FLAGS) set(MEMCHECK_TYPE ThreadSanitizer) elseif(USE_SANITIZER MATCHES "([Ll]eak)") message(STATUS "Building with Leak sanitizer") - append("-fsanitize=leak" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append("-fsanitize=leak" CMAKE_C_SANITIZER_FLAGS CMAKE_CXX_SANITIZER_FLAGS) set(MEMCHECK_TYPE LeakSanitizer) else() message( @@ -82,7 +83,7 @@ if(USE_SANITIZER AND "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") elseif(MSVC) if(USE_SANITIZER MATCHES "([Aa]ddress)") message(STATUS "Building with Address sanitizer") - append("-fsanitize=address" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + append("-fsanitize=address" CMAKE_C_SANITIZER_FLAGS CMAKE_CXX_SANITIZER_FLAGS) else() message( FATAL_ERROR diff --git a/java/src/hdf/hdf5lib/H5.java b/java/src/hdf/hdf5lib/H5.java index 0f63f34..b724382 100644 --- a/java/src/hdf/hdf5lib/H5.java +++ b/java/src/hdf/hdf5lib/H5.java @@ -3590,7 +3590,7 @@ public class H5 implements java.io.Serializable { * - name is null. */ public synchronized static int H5Gget_obj_info_all(long loc_id, String name, String[] objNames, int[] objTypes, - H5O_token_t[] tokens) throws HDF5LibraryException, NullPointerException { + H5O_token_t[] tokens) throws HDF5LibraryException, NullPointerException { if (objNames == null) { throw new NullPointerException("H5Gget_obj_info_all(): name array is null"); } @@ -3605,7 +3605,7 @@ public class H5 implements java.io.Serializable { public synchronized static int H5Gget_obj_info_all(long loc_id, String name, String[] oname, int[] otype, int[] ltype, long[] fno, H5O_token_t[] tokens, int indx_type) throws HDF5LibraryException, NullPointerException { - return H5Gget_obj_info_full(loc_id, name, oname, otype, ltype, fno, tokens, oname.length, indx_type, -1); + return H5Gget_obj_info_full(loc_id, name, oname, otype, ltype, fno, tokens, indx_type, -1); } public synchronized static int H5Gget_obj_info_full(long loc_id, String name, String[] oname, int[] otype, diff --git a/java/src/jni/h5pFAPLImp.c b/java/src/jni/h5pFAPLImp.c index c9844b7..178b1af 100644 --- a/java/src/jni/h5pFAPLImp.c +++ b/java/src/jni/h5pFAPLImp.c @@ -395,7 +395,7 @@ Java_hdf_hdf5lib_H5_H5Pget_1fapl_1hdfs if (H5Pget_fapl_hdfs((hid_t)fapl_id, &fa) < 0) H5_LIBRARY_ERROR(ENVONLY); - if (NULL != fa.namenode_name) { + if (HDstrlen(fa.namenode_name) > 0) { if (NULL == (j_namenode_name = ENVPTR->NewStringUTF(ENVONLY, fa.namenode_name))) { CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE); H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_fapl_hdfs: out of memory - can't create namenode_name string"); @@ -405,7 +405,7 @@ Java_hdf_hdf5lib_H5_H5Pget_1fapl_1hdfs args[1].i = (jint)fa.namenode_port; - if (NULL != fa.user_name) { + if (HDstrlen(fa.user_name) > 0) { if (NULL == (j_user_name = ENVPTR->NewStringUTF(ENVONLY, fa.user_name))) { CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE); H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_fapl_hdfs: out of memory - can't create user_name string"); @@ -413,7 +413,7 @@ Java_hdf_hdf5lib_H5_H5Pget_1fapl_1hdfs } args[2].l = j_user_name; - if (NULL != fa.kerberos_ticket_cache) { + if (HDstrlen(fa.kerberos_ticket_cache) > 0) { if (NULL == (j_kerb_cache_path = ENVPTR->NewStringUTF(ENVONLY, fa.kerberos_ticket_cache))) { CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE); H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_fapl_hdfs: out of memory - can't create kerberos_ticket_cache string"); @@ -820,7 +820,7 @@ Java_hdf_hdf5lib_H5_H5Pget_1fapl_1ros3 if (H5Pget_fapl_ros3((hid_t)fapl_id, &fa) < 0) H5_LIBRARY_ERROR(ENVONLY); - if (NULL != fa.aws_region) { + if (HDstrlen(fa.aws_region) > 0) { if (NULL == (j_aws = ENVPTR->NewStringUTF(ENVONLY, fa.aws_region))) { CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE); H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_fapl_ros3: out of memory - can't create aws_region string"); @@ -828,7 +828,7 @@ Java_hdf_hdf5lib_H5_H5Pget_1fapl_1ros3 } args[0].l = j_aws; - if (NULL != fa.secret_id) { + if (HDstrlen(fa.secret_id) > 0) { if (NULL == (j_id = ENVPTR->NewStringUTF(ENVONLY, fa.secret_id))) { CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE); H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_fapl_ros3: out of memory - can't create secret_id string"); @@ -836,7 +836,7 @@ Java_hdf_hdf5lib_H5_H5Pget_1fapl_1ros3 } args[1].l = j_id; - if (NULL != fa.secret_key) { + if (HDstrlen(fa.secret_key) > 0) { if (NULL == (j_key = ENVPTR->NewStringUTF(ENVONLY, fa.secret_key))) { CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE); H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_fapl_ros3: out of memory - can't create secret_key string"); @@ -1685,7 +1685,7 @@ Java_hdf_hdf5lib_H5_H5Pget_1mdc_1config args[2].z = cacheinfo.open_trace_file; args[3].z = cacheinfo.close_trace_file; - if (NULL != cacheinfo.trace_file_name) { + if (HDstrlen(cacheinfo.trace_file_name) > 0) { if (NULL == (j_str = ENVPTR->NewStringUTF(ENVONLY, cacheinfo.trace_file_name))) { CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE); H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_mdc_config: out of memory - unable to construct string from UTF characters"); -- cgit v0.12