Merge of recent develop work to 1.10 branch:

* H5FD_FEAT_DEFAULT_VFD_COMPATIBLE VFD feature flag (HDFFV-10214)
* H5FDdriver_query() API call (HDFFV-10215)
* Fix to skip SWMR tests that when the current VFD is not compatible
  with the default VFD (HDFFV-10197)
* Removed obsolete compiler versions from config/gnu-flags (HDFFV-9937)
* Many warning fixes
This commit is contained in:
Dana Robinson 2017-05-31 17:45:41 -04:00
parent ef60bcd50e
commit fb5c13d59c
45 changed files with 687 additions and 923 deletions

View File

@ -34,8 +34,8 @@ fi
if test "X-" = "X-$FC"; then
case $CC_BASENAME in
gcc*|pgcc*)
FC=gfortran40
FC_BASENAME=gfortran40
FC=gfortran
FC_BASENAME=gfortran
;;
icc*)
FC=ifort

View File

@ -71,7 +71,7 @@ if test "X-gfortran" = "X-$f9x_vendor"; then
#esac
# General
FC_BASENAME=gfortran40
FC_BASENAME=gfortran
F9XSUFFIXFLAG=""
FSEARCH_DIRS=""
H5_FCFLAGS="$H5_FCFLAGS -pedantic -Wall -Wextra -Wunderflow -Wimplicit-interface -Wsurprising"

View File

@ -91,13 +91,27 @@ case "$cc_vendor-$cc_version" in
;;
esac
# General
H5_CFLAGS="$H5_CFLAGS $arch -std=c99 -pedantic -Wall -W -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs"
# General flags
#
# Note that some of the flags listed here really should be developer
# flags (listed in a separate variable, below) but we put them here
# because they are not raised by the current code and we'd like to
# know if they do start showing up.
#
# NOTE: Don't add -Wpadded here since we can't/won't fix the (many)
# warnings that are emitted. If you need it, add it from the
# environment variable at configure time.
H5_CFLAGS="$H5_CFLAGS $arch -std=c99 -pedantic -Wall -Wextra -Wbad-function-cast -Wc++-compat -Wcast-align"
H5_CFLAGS="$H5_CFLAGS -Wcast-qual -Wconversion -Wdeclaration-after-statement -Wdisabled-optimization -Wfloat-equal"
H5_CFLAGS="$H5_CFLAGS -Wformat=2 -Winit-self -Winvalid-pch -Wmissing-declarations -Wmissing-include-dirs"
H5_CFLAGS="$H5_CFLAGS -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpacked -Wpointer-arith"
H5_CFLAGS="$H5_CFLAGS -Wredundant-decls -Wshadow -Wstrict-prototypes -Wswitch-default -Wswitch-enum"
H5_CFLAGS="$H5_CFLAGS -Wundef -Wunused-macros -Wunsafe-loop-optimizations -Wwrite-strings"
# Production
# NDEBUG is handled explicitly by the configure script
case "$cc_vendor-$cc_version" in
gcc-[34].*)
gcc-4.*)
PROD_CFLAGS=
;;
gcc-[56].*)
@ -112,7 +126,7 @@ case "$cc_vendor-$cc_version" in
# Debug
# NDEBUG is handled explicitly by the configure script
# -g is hanled by the symbols flags
# -g is handled by the symbols flags
case "$cc_vendor-$cc_version" in
gcc-[56].*)
DEBUG_CFLAGS="-ftrapv -fno-common"
@ -121,11 +135,10 @@ case "$cc_vendor-$cc_version" in
DEBUG_CFLAGS=
;;
esac
#DEBUG_CFLAGS="-fsanitize=undefined"
# Developer warnings (suggestions from gcc, not code problems)
DEVELOPER_WARNING_CFLAGS="-Winline -Waggregate-return"
NO_DEVELOPER_WARNING_CFLAGS="-Wno-inline -Wno-aggregate-return"
DEVELOPER_WARNING_CFLAGS="-Winline -Waggregate-return -Wmissing-format-attribute -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="-Wno-inline -Wno-aggregate-return -Wno-missing-format-attribute -Wno-missing-noreturn"
# Symbols
NO_SYMBOLS_CFLAGS="-s"
@ -136,7 +149,7 @@ case "$cc_vendor-$cc_version" in
# Optimization
case "$cc_vendor-$cc_version" in
gcc-[34].*)
gcc-4.*)
HIGH_OPT_CFLAGS="-O3"
DEBUG_OPT_CFLAGS=
;;
@ -151,10 +164,6 @@ case "$cc_vendor-$cc_version" in
esac
NO_OPT_CFLAGS="-O0"
# Try out the new "stack protector" feature introduced in gcc 4.1
# (We should also think about adding some of the other memory protection options)
#DEBUG_CFLAGS="$DEBUG_CFLAGS -Wstack-protector -fstack-protector-all"
# Flags are set
cc_flags_set=yes
;;
@ -170,375 +179,169 @@ case "$cc_vendor-$cc_version" in
# include and break it out into it's own section, like the other versions
# below. -QAK
gcc-6*)
# Append warning flags
# Don't use the '-Wtraditional' flag, we're way past having K&R C code
# H5_CFLAGS="$H5_CFLAGS -Wtraditional"
# Don't use the '-Wtraditional-conversion' flag, there's too many warnings
# from GCC's assert macro
# H5_CFLAGS="$H5_CFLAGS -Wtraditional-conversion"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# Enable more format checking flags, beyond the basic -Wformat included
# in -Wall
H5_CFLAGS="$H5_CFLAGS -Wformat=2"
# The "unreachable code" warning appears to be reliable now...
H5_CFLAGS="$H5_CFLAGS -Wunreachable-code"
# Append warning flags from gcc-3.3* case
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
# Append warning flags from gcc-3.4* case
H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
# Replace old -W flag with new -Wextra flag
H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
# Append more extra warning flags that only gcc4.0+ know about
H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros"
# Append more extra warning flags that only gcc 4.1+ know about
H5_CFLAGS="$H5_CFLAGS -Wunsafe-loop-optimizations -Wc++-compat -Wnormalized"
# Append more extra warning flags that only gcc 4.2+ know about
# Append warning flags that only gcc 4.2+ knows about
# (none, or incorporated in -Wall / -Wextra now)
# Append more extra warning flags that only gcc 4.3+ know about
# Append warning flags that only gcc 4.3+ knows about
#
# Technically, variable-length arrays are part of the C99 standard, but
# we should approach them a bit cautiously... -QAK
H5_CFLAGS="$H5_CFLAGS -Wlogical-op -Wlarger-than=2048 -Wvla"
# Append more extra warning flags that only gcc 4.4+ know about
# Append warning flags that only gcc 4.4+ knows about
H5_CFLAGS="$H5_CFLAGS -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat"
# Append more extra warning flags that only gcc 4.5+ know about
# Append warning flags that only gcc 4.5+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants"
# Append more extra warning flags that only gcc 4.6+ know about
# Append warning flags that only gcc 4.6+ knows about
H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wtrampolines"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=const"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=const"
# Append more extra warning flags that only gcc 4.7+ know about
# Append warning flags that only gcc 4.7+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=pure -Wno-suggest-attribute=noreturn"
# Append more extra warning flags that only gcc 4.8+ know about
# Append warning flags that only gcc 4.8+ knows about
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=format"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=format"
# Append more extra warning flags that only gcc 4.9+ know about
# Append warning flags that only gcc 4.9+ knows about
H5_CFLAGS="$H5_CFLAGS -Wdate-time"
# Append more extra warning flags that only gcc 5.x+ know about
# Append warning flags that only gcc 5.x+ knows about
H5_CFLAGS="$H5_CFLAGS -Warray-bounds=2 -Wc99-c11-compat"
# Append more extra warning flags that only gcc 6.x+ know about
# Append warning flags that only gcc 6.x+ knows about
H5_CFLAGS="$H5_CFLAGS -Wnull-dereference -Wunused-const-variable -Wduplicated-cond -Whsa"
;;
gcc-5*)
# Append warning flags
# Don't use the '-Wtraditional' flag, we're way past having K&R C code
# H5_CFLAGS="$H5_CFLAGS -Wtraditional"
# Don't use the '-Wtraditional-conversion' flag, there's too many warnings
# from GCC's assert macro
# H5_CFLAGS="$H5_CFLAGS -Wtraditional-conversion"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# Enable more format checking flags, beyond the basic -Wformat included
# in -Wall
H5_CFLAGS="$H5_CFLAGS -Wformat=2"
# The "unreachable code" warning appears to be reliable now...
H5_CFLAGS="$H5_CFLAGS -Wunreachable-code"
# Append warning flags from gcc-3.3* case
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
# Append warning flags from gcc-3.4* case
H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
# Replace old -W flag with new -Wextra flag
H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
# Append more extra warning flags that only gcc4.0+ know about
H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros"
# Append more extra warning flags that only gcc 4.1+ know about
H5_CFLAGS="$H5_CFLAGS -Wunsafe-loop-optimizations -Wc++-compat -Wnormalized"
# Append more extra warning flags that only gcc 4.2+ know about
# Append warning flags that only gcc 4.2+ knows about
# (none, or incorporated in -Wall / -Wextra now)
# Append more extra warning flags that only gcc 4.3+ know about
# Append warning flags that only gcc 4.3+ knows about
#
# Technically, variable-length arrays are part of the C99 standard, but
# we should approach them a bit cautiously... -QAK
H5_CFLAGS="$H5_CFLAGS -Wlogical-op -Wlarger-than=2048 -Wvla"
# Append more extra warning flags that only gcc 4.4+ know about
# Append warning flags that only gcc 4.4+ knows about
H5_CFLAGS="$H5_CFLAGS -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat"
# Append more extra warning flags that only gcc 4.5+ know about
# Append warning flags that only gcc 4.5+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants"
# Append more extra warning flags that only gcc 4.6+ know about
# Append warning flags that only gcc 4.6+ knows about
H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wtrampolines"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=const"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=const"
# Append more extra warning flags that only gcc 4.7+ know about
# Append warning flags that only gcc 4.7+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=pure -Wno-suggest-attribute=noreturn"
# Append more extra warning flags that only gcc 4.8+ know about
# Append warning flags that only gcc 4.8+ knows about
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=format"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=format"
# Append more extra warning flags that only gcc 4.9+ know about
# Append warning flags that only gcc 4.9+ knows about
H5_CFLAGS="$H5_CFLAGS -Wdate-time"
# Append more extra warning flags that only gcc 5.x+ know about
# Append warning flags that only gcc 5.x+ knows about
H5_CFLAGS="$H5_CFLAGS -Warray-bounds=2 -Wc99-c11-compat"
;;
gcc-4.9*)
# Append warning flags
# Don't use the '-Wtraditional' flag, we're way past having K&R C code
# H5_CFLAGS="$H5_CFLAGS -Wtraditional"
# Don't use the '-Wtraditional-conversion' flag, there's too many warnings
# from GCC's assert macro
# H5_CFLAGS="$H5_CFLAGS -Wtraditional-conversion"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# Enable more format checking flags, beyond the basic -Wformat included
# in -Wall
H5_CFLAGS="$H5_CFLAGS -Wformat=2"
# The "unreachable code" warning appears to be reliable now...
H5_CFLAGS="$H5_CFLAGS -Wunreachable-code"
# Append warning flags from gcc-3.3* case
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
# Append warning flags from gcc-3.4* case
H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
# Replace old -W flag with new -Wextra flag
H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
# Append more extra warning flags that only gcc4.0+ know about
H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros"
# Append more extra warning flags that only gcc 4.1+ know about
H5_CFLAGS="$H5_CFLAGS -Wunsafe-loop-optimizations -Wc++-compat"
# Append more extra warning flags that only gcc 4.2+ know about
# Append warning flags that only gcc 4.2+ knows about
# (none, or incorporated in -Wall / -Wextra now)
# Append more extra warning flags that only gcc 4.3+ know about
# Append warning flags that only gcc 4.3+ knows about
#
# Technically, variable-length arrays are part of the C99 standard, but
# we should approach them a bit cautiously... -QAK
H5_CFLAGS="$H5_CFLAGS -Wlogical-op -Wlarger-than=2048 -Wvla"
# Append more extra warning flags that only gcc 4.4+ know about
# Append warning flags that only gcc 4.4+ knows about
H5_CFLAGS="$H5_CFLAGS -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat"
# Append more extra warning flags that only gcc 4.5+ know about
# Append warning flags that only gcc 4.5+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants"
# Append more extra warning flags that only gcc 4.6+ know about
# Append warning flags that only gcc 4.6+ knows about
H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wtrampolines"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=const"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=const"
# Append more extra warning flags that only gcc 4.7+ know about
# Append warning flags that only gcc 4.7+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=pure -Wno-suggest-attribute=noreturn"
# Append more extra warning flags that only gcc 4.8+ know about
# Append warning flags that only gcc 4.8+ knows about
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=format"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=format"
# Append more extra warning flags that only gcc 4.9+ know about
# Append warning flags that only gcc 4.9+ knows about
H5_CFLAGS="$H5_CFLAGS -Wdate-time"
;;
gcc-4.8*)
# Append warning flags
# Don't use the '-Wtraditional' flag, we're way past having K&R C code
# H5_CFLAGS="$H5_CFLAGS -Wtraditional"
# Don't use the '-Wtraditional-conversion' flag, there's too many warnings
# from GCC's assert macro
# H5_CFLAGS="$H5_CFLAGS -Wtraditional-conversion"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# Enable more format checking flags, beyond the basic -Wformat included
# in -Wall
H5_CFLAGS="$H5_CFLAGS -Wformat=2"
# The "unreachable code" warning appears to be reliable now...
H5_CFLAGS="$H5_CFLAGS -Wunreachable-code"
# Append warning flags from gcc-3.3* case
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
# Append warning flags from gcc-3.4* case
H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
# Replace old -W flag with new -Wextra flag
H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
# Append more extra warning flags that only gcc4.0+ know about
H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros"
# Append more extra warning flags that only gcc 4.1+ know about
H5_CFLAGS="$H5_CFLAGS -Wunsafe-loop-optimizations -Wc++-compat"
# Append more extra warning flags that only gcc 4.2+ know about
# Append warning flags that only gcc 4.2+ knows about
# (none, or incorporated in -Wall / -Wextra now)
# Append more extra warning flags that only gcc 4.3+ know about
# Append warning flags that only gcc 4.3+ knows about
#
# Technically, variable-length arrays are part of the C99 standard, but
# we should approach them a bit cautiously... -QAK
H5_CFLAGS="$H5_CFLAGS -Wlogical-op -Wlarger-than=2048 -Wvla"
# Append more extra warning flags that only gcc 4.4+ know about
# Append warning flags that only gcc 4.4+ knows about
H5_CFLAGS="$H5_CFLAGS -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat"
# Append more extra warning flags that only gcc 4.5+ know about
# Append warning flags that only gcc 4.5+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init"
# Append more extra warning flags that only gcc 4.6+ know about
# Append warning flags that only gcc 4.6+ knows about
H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wtrampolines"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=const"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=const"
# Append more extra warning flags that only gcc 4.7+ know about
# Append warning flags that only gcc 4.7+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=pure -Wno-suggest-attribute=noreturn"
# Append more extra warning flags that only gcc 4.8+ know about
# Append warning flags that only gcc 4.8+ knows about
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=format"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=format"
;;
gcc-4.7*)
# Append warning flags
# Don't use the '-Wtraditional' flag, we're way past having K&R C code
# H5_CFLAGS="$H5_CFLAGS -Wtraditional"
# Don't use the '-Wtraditional-conversion' flag, there's too many warnings
# from GCC's assert macro
# H5_CFLAGS="$H5_CFLAGS -Wtraditional-conversion"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# Enable more format checking flags, beyond the basic -Wformat included
# in -Wall
H5_CFLAGS="$H5_CFLAGS -Wformat=2"
# The "unreachable code" warning appears to be reliable now...
# (this warning was removed in gcc 4.5+)
#H5_CFLAGS="$H5_CFLAGS -Wunreachable-code"
# Append warning flags from gcc-3.3* case
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
# Append warning flags from gcc-3.4* case
H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
# Replace old -W flag with new -Wextra flag
H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
# Append more extra warning flags that only gcc4.0+ know about
H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros"
# Append more extra warning flags that only gcc 4.1+ know about
H5_CFLAGS="$H5_CFLAGS -Wunsafe-loop-optimizations -Wc++-compat"
# Append more extra warning flags that only gcc 4.2+ know about
# Append warning flags that only gcc 4.2+ knows about
# (none, or incorporated in -Wall / -Wextra now)
# Append more extra warning flags that only gcc 4.3+ know about
# Append warning flags that only gcc 4.3+ knows about
#
# Technically, variable-length arrays are part of the C99 standard, but
# we should approach them a bit cautiously... -QAK
H5_CFLAGS="$H5_CFLAGS -Wlogical-op -Wlarger-than=2048 -Wvla"
# Append more extra warning flags that only gcc 4.4+ know about
# Append warning flags that only gcc 4.4+ knows about
H5_CFLAGS="$H5_CFLAGS -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat"
# Append more extra warning flags that only gcc 4.5+ know about
# Append warning flags that only gcc 4.5+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants"
# Append more extra warning flags that only gcc 4.6+ know about
# Append warning flags that only gcc 4.6+ knows about
H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wtrampolines"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=const"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=const"
# Append more extra warning flags that only gcc 4.7+ know about
# Append warning flags that only gcc 4.7+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=pure -Wno-suggest-attribute=noreturn"
@ -548,57 +351,22 @@ case "$cc_vendor-$cc_version" in
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# Enable more format checking flags, beyond the basic -Wformat included
# in -Wall
H5_CFLAGS="$H5_CFLAGS -Wformat=2"
# The "unreachable code" warning appears to be reliable now...
# (this warning was removed in gcc 4.5+)
#H5_CFLAGS="$H5_CFLAGS -Wunreachable-code"
# Append warning flags from gcc-3.3* case
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
# Append warning flags from gcc-3.4* case
H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
# Replace old -W flag with new -Wextra flag
H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
# Append more extra warning flags that only gcc4.0+ know about
H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Wnonnull -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros"
# Append more extra warning flags that only gcc 4.1+ know about
H5_CFLAGS="$H5_CFLAGS -Wunsafe-loop-optimizations -Wc++-compat"
# Append more extra warning flags that only gcc 4.2+ know about
# Append warning flags that only gcc 4.2+ knows about
# (none, or incorporated in -Wall / -Wextra now)
# Append more extra warning flags that only gcc 4.3+ know about
# Append warning flags that only gcc 4.3+ knows about
#
# Technically, variable-length arrays are part of the C99 standard, but
# we should approach them a bit cautiously... -QAK
H5_CFLAGS="$H5_CFLAGS -Wlogical-op -Wlarger-than=2048 -Wvla"
# Append more extra warning flags that only gcc 4.4+ know about
# Append warning flags that only gcc 4.4+ knows about
H5_CFLAGS="$H5_CFLAGS -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat"
# Append more extra warning flags that only gcc 4.5+ know about
# Append warning flags that only gcc 4.5+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstrict-aliasing -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants"
# Append more extra warning flags that only gcc 4.6+ know about
# Append warning flags that only gcc 4.6+ knows about
H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wtrampolines"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wsuggest-attribute=const"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-suggest-attribute=const"
@ -608,54 +376,19 @@ case "$cc_vendor-$cc_version" in
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# Enable more format checking flags, beyond the basic -Wformat included
# in -Wall
H5_CFLAGS="$H5_CFLAGS -Wformat=2"
# The "unreachable code" warning appears to be reliable now...
# (this warning was removed in gcc 4.5+)
#H5_CFLAGS="$H5_CFLAGS -Wunreachable-code"
# Append warning flags from gcc-3.3* case
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
# Append warning flags from gcc-3.4* case
H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
# Replace old -W flag with new -Wextra flag
H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
# Append more extra warning flags that only gcc4.0+ know about
H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Wnonnull -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros"
# Append more extra warning flags that only gcc 4.1+ know about
H5_CFLAGS="$H5_CFLAGS -Wunsafe-loop-optimizations -Wc++-compat"
# Append more extra warning flags that only gcc 4.2+ know about
# Append warning flags that only gcc 4.2+ knows about
# (none, or incorporated in -Wall / -Wextra now)
# Append more extra warning flags that only gcc 4.3+ know about
# Append warning flags that only gcc 4.3+ knows about
#
# Technically, variable-length arrays are part of the C99 standard, but
# we should approach them a bit cautiously... -QAK
H5_CFLAGS="$H5_CFLAGS -Wlogical-op -Wlarger-than=2048 -Wvla"
# Append more extra warning flags that only gcc 4.4+ know about
# Append warning flags that only gcc 4.4+ knows about
H5_CFLAGS="$H5_CFLAGS -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat"
# Append more extra warning flags that only gcc 4.5+ know about
# Append warning flags that only gcc 4.5+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstrict-aliasing -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants"
;;
@ -663,50 +396,16 @@ case "$cc_vendor-$cc_version" in
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# Enable more format checking flags, beyond the basic -Wformat included
# in -Wall
H5_CFLAGS="$H5_CFLAGS -Wformat=2"
# The "unreachable code" warning appears to be reliable now...
H5_CFLAGS="$H5_CFLAGS -Wunreachable-code"
# Append warning flags from gcc-3.3* case
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
# Append warning flags from gcc-3.4* case
H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
# Replace old -W flag with new -Wextra flag
H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
# Append more extra warning flags that only gcc4.0+ know about
H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Wnonnull -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros"
# Append more extra warning flags that only gcc 4.1+ know about
H5_CFLAGS="$H5_CFLAGS -Wunsafe-loop-optimizations -Wc++-compat"
# Append more extra warning flags that only gcc 4.2+ know about
# Append warning flags that only gcc 4.2+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow"
# Append more extra warning flags that only gcc 4.3+ know about
# Append warning flags that only gcc 4.3+ knows about
#
# Technically, variable-length arrays are part of the C99 standard, but
# we should approach them a bit cautiously... -QAK
H5_CFLAGS="$H5_CFLAGS -Wlogical-op -Wlarger-than=2048 -Wvla"
# Append more extra warning flags that only gcc 4.4+ know about
# Append warning flags that only gcc 4.4+ knows about
H5_CFLAGS="$H5_CFLAGS -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat"
;;
@ -714,44 +413,15 @@ case "$cc_vendor-$cc_version" in
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags that only gcc 4.1+ knows about
# -Wvolatile-register-var was later incorporated into -Wall and
# needs to be specified explicitly for gcc 4.1-4.3.
H5_CFLAGS="$H5_CFLAGS -Wvolatile-register-var"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# Enable more format checking flags, beyond the basic -Wformat included
# in -Wall
H5_CFLAGS="$H5_CFLAGS -Wformat=2"
# The "unreachable code" warning appears to be reliable now...
H5_CFLAGS="$H5_CFLAGS -Wunreachable-code"
# Append warning flags from gcc-3.3* case
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
# Append warning flags from gcc-3.4* case
H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
# Replace old -W flag with new -Wextra flag
H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
# Append more extra warning flags that only gcc4.0+ know about
H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Wnonnull -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros"
# Append more extra warning flags that only gcc 4.1+ know about
H5_CFLAGS="$H5_CFLAGS -Wunsafe-loop-optimizations -Wc++-compat -Wvolatile-register-var"
# Append more extra warning flags that only gcc 4.2+ know about
# Append warning flags that only gcc 4.2+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow"
# Append more extra warning flags that only gcc 4.3+ know about
# Append warning flags that only gcc 4.3+ knows about
#
# Technically, variable-length arrays are part of the C99 standard, but
# we should approach them a bit cautiously... -QAK
@ -762,41 +432,12 @@ case "$cc_vendor-$cc_version" in
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags that only gcc 4.1+ knows about
# -Wvolatile-register-var was later incorporated into -Wall and
# needs to be specified explicitly for gcc 4.1-4.3.
H5_CFLAGS="$H5_CFLAGS -Wvolatile-register-var"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# Enable more format checking flags, beyond the basic -Wformat included
# in -Wall
H5_CFLAGS="$H5_CFLAGS -Wformat=2"
# The "unreachable code" warning does not appear to be reliable yet...
H5_CFLAGS="$H5_CFLAGS -Wunreachable-code"
# Append warning flags from gcc-3.3* case
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
# Append warning flags from gcc-3.4* case
H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
# Replace old -W flag with new -Wextra flag
H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
# Append more extra warning flags that only gcc 4.0+ know about
H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Wnonnull -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros"
# Append more extra warning flags that only gcc 4.1+ know about
H5_CFLAGS="$H5_CFLAGS -Wunsafe-loop-optimizations -Wc++-compat -Wvolatile-register-var"
# Append more extra warning flags that only gcc 4.2+ know about
# Append warning flags that only gcc 4.2+ knows about
H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow"
;;
@ -804,172 +445,12 @@ case "$cc_vendor-$cc_version" in
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# Enable more format checking flags, beyond the basic -Wformat included
# in -Wall
H5_CFLAGS="$H5_CFLAGS -Wformat=2"
# The "unreachable code" warning does not appear to be reliable yet...
H5_CFLAGS="$H5_CFLAGS -Wunreachable-code"
# Append warning flags from gcc-3.3* case
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
# Append warning flags from gcc-3.4* case
H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
# Replace old -W flag with new -Wextra flag
H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
# Append more extra warning flags that only gcc 4.0+ know about
H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Wnonnull -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros"
# Append more extra warning flags that only gcc 4.1+ know about
H5_CFLAGS="$H5_CFLAGS -Wunsafe-loop-optimizations -Wc++-compat -Wvolatile-register-var"
# Append warning flags that only gcc 4.1+ knows about
# -Wvolatile-register-var was later incorporated into -Wall and
# needs to be specified explicitly for gcc 4.1-4.3.
H5_CFLAGS="$H5_CFLAGS -Wvolatile-register-var"
;;
gcc-4.0*)
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# The "format=2" warning generates too many warnings about valid
# usage in the library.
#CFLAGS="$CFLAGS -Wformat=2"
# The "unreachable code" warning does not appear to be reliable yet...
#CFLAGS="$CFLAGS -Wunreachable-code"
# Append warning flags from gcc-3.3* case
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
# Append warning flags from gcc-3.4* case
H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
# Replace old -W flag with new -Wextra flag
H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
# Append more extra warning flags that only gcc 4.0+ know about
H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Wnonnull -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros"
;;
gcc-3.4*)
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# The "format=2" warning generates too many warnings about valid
# usage in the library.
#CFLAGS="$CFLAGS -Wformat=2"
# The "unreachable code" warning does not appear to be reliable yet...
#CFLAGS="$CFLAGS -Wunreachable-code"
# Append warning flags from gcc-3.3* case
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
# Append more extra warning flags that only gcc3.4+ know about
H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
# Replace old -W flag with new -Wextra flag
H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
;;
gcc-3.3*)
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append warning flags from gcc-3.2* case
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# The "format=2" warning generates too many warnings about valid
# usage in the library.
#CFLAGS="$CFLAGS -Wformat=2"
# The "unreachable code" warning does not appear to be reliable yet...
#CFLAGS="$CFLAGS -Wunreachable-code"
# Append more extra warning flags that only gcc3.3+ know about
H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
;;
gcc-3.2*)
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
# Append warning flags from gcc-3* case
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
# Append more extra warning flags that only gcc3.2+ know about
H5_CFLAGS="$H5_CFLAGS -Wpacked -Wdisabled-optimization"
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS -Wmissing-noreturn"
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS -Wno-missing-noreturn"
# The "format=2" warning generates too many warnings about valid
# usage in the library.
#CFLAGS="$CFLAGS -Wformat=2"
# The "unreachable code" warning does not appear to be reliable yet...
#CFLAGS="$CFLAGS -Wunreachable-code"
;;
gcc-3*)
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
# Append some extra warning flags that only gcc3+ know about
# (don't use -Wpadded flag for normal builds, many of the warnings its
# issuing can't be fixed and they are making it hard to detect other,
# more important warnings)
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
;;
esac
# Clear cc info if no flags set

View File

@ -47,7 +47,7 @@
#define CHUNK_NX 4
#define CHUNK_NY 4
#define DEFLATE_SIZE_ADJUST(s) (ceil(((double)(s))*1.001)+12)
#define DEFLATE_SIZE_ADJUST(s) (HDceil(((double)(s))*H5_DOUBLE(1.001))+H5_DOUBLE(12.0))
/* Temporary filter IDs used for testing */
#define H5Z_FILTER_BOGUS1 305

View File

@ -928,64 +928,60 @@ error: /* An error has occurred. Clean up and exit. */
* 2016/01/27 -BMR
*-------------------------------------------------------------------------
*/
static herr_t verify_accessors(hid_t fid, const char *table_name, herr_t expected_value)
static herr_t verify_accessors(hid_t fid, const char *table_name, hbool_t uses_vlen_type)
{
hid_t ptable=H5I_INVALID_HID; /* Packet table identifier */
hid_t dset_id=H5I_INVALID_HID; /* Dataset associated with the pt */
hid_t dtype_id=H5I_INVALID_HID; /* Dataset identifier */
hid_t ptable = H5I_INVALID_HID; /* Packet table identifier */
hid_t dset_id = H5I_INVALID_HID; /* Dataset associated with the pt */
hid_t dtype_id = H5I_INVALID_HID; /* Dataset identifier */
char buf[NAME_BUF_SIZE];
ssize_t name_size;
herr_t is_varlen = 0;
herr_t ret = FAIL; /* Returned status from a callee */
htri_t vlen_check_result = -1;
/* Open the named packet table. */
ptable = H5PTopen(fid, table_name);
if (ptable < 0)
goto error;
if((ptable = H5PTopen(fid, table_name)) < 0)
goto error;
/* Get the associated dataset ID. */
dset_id = H5PTget_dataset(ptable);
if (dset_id < 0)
goto error;
if((dset_id = H5PTget_dataset(ptable)) < 0)
goto error;
/* Check if the packet table's name matches its associated dataset's. */
*buf = '\0';
name_size = H5Iget_name(dset_id, (char*)buf, NAME_BUF_SIZE);
if (name_size < 0)
goto error;
if((name_size = H5Iget_name(dset_id, (char*)buf, NAME_BUF_SIZE)) < 0)
goto error;
VERIFY(HDstrcmp(buf, table_name), "Names of dataset and packet table don't match");
/* Get the packet table's datatype ID */
dtype_id = H5PTget_type(ptable);
if (dtype_id < 0)
goto error;
if((dtype_id = H5PTget_type(ptable)) < 0)
goto error;
/* Check if the type class matches that of the packet table. */
is_varlen = H5Tdetect_class(dtype_id, H5T_VLEN);
if (is_varlen == FAIL) /* failure occurred */
goto error;
else if (is_varlen == expected_value) /* length types match */
ret = SUCCEED;
else /* length types don't match */
{
/* Give lengthtype "fixed-length" or "variable-length" depending on the
expected_value passed in, then print the error message. */
char lenthtype[20];
HDstrcpy(lenthtype, "fixed-length");
if (expected_value == 1)
HDstrcpy(lenthtype, "variable-length");
fprintf(stderr, "\nThe dataset '%s' should be %s but is not\n", table_name, lenthtype);
ret = FAIL;
if((vlen_check_result = H5Tdetect_class(dtype_id, H5T_VLEN)) < 0)
goto error;
/* Check if length types match */
if (vlen_check_result != (htri_t)uses_vlen_type) {
/* Give lengthtype "fixed-length" or "variable-length" depending on the
* expected_value passed in, then print the error message.
*/
char lenthtype[20];
if (uses_vlen_type == TRUE)
HDstrcpy(lenthtype, "variable-length");
else
HDstrcpy(lenthtype, "fixed-length");
HDfprintf(stderr, "\nThe dataset '%s' should be %s but is not\n", table_name, lenthtype);
goto error;
}
/* Close the packet table */
if (H5PTclose(ptable) < 0)
goto error;
goto error;
return SUCCEED;
error: /* An error has occurred. Clean up and exit. */
if (H5PTis_valid(ptable) > 0) H5PTclose(ptable);
if (H5PTis_valid(ptable) > 0)
H5PTclose(ptable);
H5_FAILED();
return FAIL;
} /* verify_accessors */
@ -1010,25 +1006,26 @@ static int test_accessors(void)
/* Open the file */
fid = H5Fopen(TEST_FILE_NAME, H5F_ACC_RDWR, H5P_DEFAULT);
if (fid < 0)
goto error;
goto error;
ret = verify_accessors(fid, PT_VLEN_ATOMIC, TRUE);
if (ret < 0)
goto error;
goto error;
ret = verify_accessors(fid, PT_FIXED_LEN, FALSE);
if (ret < 0)
goto error;
goto error;
/* Close the file */
if (H5Fclose(fid) < 0)
goto error;
goto error;
PASSED();
return SUCCEED;
error: /* An error has occurred. Clean up and exit. */
if (fid > 0) H5Fclose(fid);
if (fid > 0)
H5Fclose(fid);
H5_FAILED();
return FAIL;
} /* test_accessors */

View File

@ -38,24 +38,24 @@ static herr_t extend_dset_one(const char *file, char *dname, int action);
/* Data structures for datasets with compound data type */
typedef struct sub22_t {
unsigned int a;
unsigned int b;
unsigned int c;
int a;
int b;
int c;
} sub22_t;
typedef struct sub2_t {
unsigned int a;
int a;
sub22_t b;
unsigned int c;
int c;
} sub2_t;
typedef struct sub4_t {
unsigned int a;
unsigned int b;
int a;
int b;
} sub4_t;
typedef struct set_t {
unsigned int field1;
int field1;
sub2_t field2;
double field3;
sub4_t field4;
@ -78,7 +78,7 @@ extend_dset_two(const char *file, char *dname, int action1, int action2)
hid_t sid = -1; /* dataspace id */
hid_t dtid = -1; /* dataset's datatype id */
int ndims; /* # of dimension sizes */
unsigned i, j; /* local index variable */
unsigned i; /* local index variable */
hsize_t ext_dims[2]; /* new dimension sizes after extension */
hsize_t cur_dims[2]; /* current dimension sizes */
size_t dtype_size; /* size of the dataset's datatype */
@ -144,23 +144,23 @@ extend_dset_two(const char *file, char *dname, int action1, int action2)
goto error;
num_elmts = 1;
for(j = 0; j < (unsigned)ndims; j++)
num_elmts *= (unsigned)ext_dims[j];
for(i = 0; i < (unsigned)ndims; i++)
num_elmts *= (unsigned)ext_dims[i];
/* Compound type */
if(!HDstrcmp(dname, DSET_CMPD_TWO)) {
HDmemset(cbuf, 0, TEST_BUF_SIZE * sizeof(set_t));
for(j = 0; j < num_elmts; j++) {
cbuf[j].field1 = action1;
cbuf[j].field2.a = action1;
cbuf[j].field2.c = action1;
cbuf[j].field2.b.a = action1;
cbuf[j].field2.b.b = action1;
cbuf[j].field2.b.c = action1;
cbuf[j].field3 = action1;
cbuf[j].field4.a = action1;
cbuf[j].field4.b = action1;
for(i = 0; i < num_elmts; i++) {
cbuf[i].field1 = action1;
cbuf[i].field2.a = action1;
cbuf[i].field2.c = action1;
cbuf[i].field2.b.a = action1;
cbuf[i].field2.b.b = action1;
cbuf[i].field2.b.c = action1;
cbuf[i].field3 = action1;
cbuf[i].field4.a = action1;
cbuf[i].field4.b = action1;
} /* end for */
/* Write to the dataset */
@ -169,8 +169,8 @@ extend_dset_two(const char *file, char *dname, int action1, int action2)
} else { /* Integer type */
HDmemset(ibuf, 0, TEST_BUF_SIZE * sizeof(int));
for(j = 0; j < num_elmts; j++)
ibuf[j] = action1;
for(i = 0; i < num_elmts; i++)
ibuf[i] = action1;
/* Write to the dataset */
if(H5Dwrite(did, dtid, H5S_ALL, H5S_ALL, H5P_DEFAULT, ibuf) < 0)
@ -225,7 +225,7 @@ extend_dset_one(const char *file, char *dname, int action)
hid_t dtid = -1; /* dataset's datatype id */
hid_t sid = -1; /* dataspace id */
hid_t mid = -1; /* memory space id */
unsigned i, j; /* local index variable */
int i; /* local index variable */
hsize_t cur_dims[1]; /* current dimension sizes */
hsize_t ext_dims[1]; /* new dimension sizes after extension */
hsize_t offset[1]; /* starting offsets of appended data */
@ -304,18 +304,18 @@ extend_dset_one(const char *file, char *dname, int action)
if(!HDstrcmp(dname, DSET_CMPD) || !HDstrcmp(dname, DSET_CMPD_ESC)) {
HDmemset(cbuf, 0, TEST_BUF_SIZE * sizeof(set_t));
for(j = 0; j < (unsigned)action; j++) {
cbuf[j].field1 = j + 1;
cbuf[j].field2.a = j + 2;
cbuf[j].field2.b.a = j + 2;
cbuf[j].field2.b.b = j + 2;
cbuf[j].field2.b.c = j + 2;
cbuf[j].field2.c = j + 2;
for(i = 0; i < action; i++) {
cbuf[i].field1 = i + 1;
cbuf[i].field2.a = i + 2;
cbuf[i].field2.b.a = i + 2;
cbuf[i].field2.b.b = i + 2;
cbuf[i].field2.b.c = i + 2;
cbuf[i].field2.c = i + 2;
cbuf[j].field3 = j + 3;
cbuf[i].field3 = i + 3;
cbuf[j].field4.a = j + 4;
cbuf[j].field4.b = j + 4;
cbuf[i].field4.a = i + 4;
cbuf[i].field4.b = i + 4;
} /* end for */
/* Write to the extended region of the dataset */
@ -324,8 +324,8 @@ extend_dset_one(const char *file, char *dname, int action)
} else { /* Integer type */
HDmemset(ibuf, 0, TEST_BUF_SIZE * sizeof(int));
for(j = 0; j < (unsigned)action; j++)
ibuf[j] = (int)j;
for(i = 0; i < action; i++)
ibuf[i] = (int)i;
/* Write to the extended region of the dataset */
if(H5Dwrite(did, dtid, mid, sid, H5P_DEFAULT, ibuf) < 0)

View File

@ -58,24 +58,24 @@
/* Data structures for datasets with compound types */
typedef struct sub22_t {
unsigned int a;
unsigned int b;
unsigned int c;
int a;
int b;
int c;
} sub22_t;
typedef struct sub2_t {
unsigned int a;
int a;
sub22_t b;
unsigned int c;
int c;
} sub2_t;
typedef struct sub4_t {
unsigned int a;
unsigned int b;
int a;
int b;
} sub4_t;
typedef struct set_t {
unsigned int field1;
int field1;
sub2_t field2;
double field3;
sub4_t field4;

View File

@ -54,11 +54,53 @@ New Features
Configuration:
-------------
- Removed version-specific gcc/gfortran flags for version 4.0 (inclusive)
and earlier
The config/gnu-flags file, which is sourced as a part of the configure
process, adds version-specific flags for use when building HDF5. Most of
these flags control warnings and do not affect the final product.
Flags for older versions of the compiler were consolidated into the
common flags section. Moving these flags simplifies maintenance of
the file.
The upshot of this is that building with ancient versions of gcc
(<= 4.0) will possibly no longer work without hand-hacking the file
to remove the flags not understood by that version of the compiler.
Nothing should change when building with gcc >= 4.1.
Also, as a part of this work, the string 'gfortran40' was changed to
'gfortran' in the config/gnu-fflags file.
(HDFFV-9937, DER, 2017/05/31)
-
Library:
--------
-
- H5FDdriver_query() API call added to the C library.
This new library call allows the user to query a virtual file driver
(VFD) for the feature flags it supports (listed in H5FDpublic.h).
This can be useful to determine if a VFD supports SWMR, for example.
Note that some VFDs have feature flags that may only be present
after a file has been created or opened (e.g.: the core VFD will
have the H5FD_FEAT_POSIX_COMPAT_HANDLE flag set if the backing
store is switched on). Since the new API call queries a generic VFD
unassociated with a file, these flags will never be returned.
(HDFFV-10215, DER, 2017/05/31)
- H5FD_FEAT_DEFAULT_VFD_COMPATIBLE VFD feature flag added to the C library.
This new feature flag indicates that the VFD is compatible with the
default VFD. VFDs that set this flag create single files that follow
the canonical HDF5 file format.
(HDFFV-10214, DER, 2017/05/31)
Parallel Library:
-----------------

View File

@ -3004,10 +3004,10 @@ H5D__format_convert(H5D_t *dataset, hid_t dxpl_id)
{
H5D_chk_idx_info_t new_idx_info; /* Index info for the new layout */
H5D_chk_idx_info_t idx_info; /* Index info for the current layout */
H5O_layout_t newlayout; /* The new layout */
hbool_t init_new_index = FALSE; /* Indicate that the new chunk index is initialized */
H5O_layout_t *newlayout = NULL; /* The new layout */
hbool_t init_new_index = FALSE; /* Indicate that the new chunk index is initialized */
hbool_t delete_old_layout = FALSE; /* Indicate that the old layout message is deleted */
hbool_t add_new_layout = FALSE; /* Indicate that the new layout message is added */
hbool_t add_new_layout = FALSE; /* Indicate that the new layout message is added */
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE_TAG(dxpl_id, dataset->oloc.addr, FAIL)
@ -3017,121 +3017,127 @@ H5D__format_convert(H5D_t *dataset, hid_t dxpl_id)
switch(dataset->shared->layout.type) {
case H5D_CHUNKED:
HDassert(dataset->shared->layout.u.chunk.idx_type != H5D_CHUNK_IDX_BTREE);
HDassert(dataset->shared->layout.u.chunk.idx_type != H5D_CHUNK_IDX_BTREE);
/* Set up the current index info */
idx_info.f = dataset->oloc.file;
idx_info.dxpl_id = dxpl_id;
idx_info.pline = &dataset->shared->dcpl_cache.pline;
idx_info.layout = &dataset->shared->layout.u.chunk;
idx_info.storage = &dataset->shared->layout.storage.u.chunk;
if(NULL == (newlayout = (H5O_layout_t *)H5MM_calloc(sizeof(H5O_layout_t))))
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "unable to allocate buffer")
/* Copy the current layout info to the new layout */
HDmemcpy(&newlayout, &dataset->shared->layout, sizeof(H5O_layout_t));
/* Set up the current index info */
idx_info.f = dataset->oloc.file;
idx_info.dxpl_id = dxpl_id;
idx_info.pline = &dataset->shared->dcpl_cache.pline;
idx_info.layout = &dataset->shared->layout.u.chunk;
idx_info.storage = &dataset->shared->layout.storage.u.chunk;
/* Set up info for version 1 B-tree in the new layout */
newlayout.version = H5O_LAYOUT_VERSION_3;
newlayout.storage.u.chunk.idx_type = H5D_CHUNK_IDX_BTREE;
newlayout.storage.u.chunk.idx_addr = HADDR_UNDEF;
newlayout.storage.u.chunk.ops = H5D_COPS_BTREE;
newlayout.storage.u.chunk.u.btree.shared = NULL;
/* Copy the current layout info to the new layout */
HDmemcpy(newlayout, &dataset->shared->layout, sizeof(H5O_layout_t));
/* Set up the index info to version 1 B-tree */
new_idx_info.f = dataset->oloc.file;
new_idx_info.dxpl_id = dxpl_id;
new_idx_info.pline = &dataset->shared->dcpl_cache.pline;
new_idx_info.layout = &newlayout.u.chunk;
new_idx_info.storage = &newlayout.storage.u.chunk;
/* Set up info for version 1 B-tree in the new layout */
newlayout->version = H5O_LAYOUT_VERSION_3;
newlayout->storage.u.chunk.idx_type = H5D_CHUNK_IDX_BTREE;
newlayout->storage.u.chunk.idx_addr = HADDR_UNDEF;
newlayout->storage.u.chunk.ops = H5D_COPS_BTREE;
newlayout->storage.u.chunk.u.btree.shared = NULL;
/* Initialize version 1 B-tree */
if(new_idx_info.storage->ops->init &&
(new_idx_info.storage->ops->init)(&new_idx_info, dataset->shared->space, dataset->oloc.addr) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't initialize indexing information")
init_new_index = TRUE;
/* Set up the index info to version 1 B-tree */
new_idx_info.f = dataset->oloc.file;
new_idx_info.dxpl_id = dxpl_id;
new_idx_info.pline = &dataset->shared->dcpl_cache.pline;
new_idx_info.layout = &(newlayout->u).chunk;
new_idx_info.storage = &(newlayout->storage).u.chunk;
/* If the current chunk index exists */
if(H5F_addr_defined(idx_info.storage->idx_addr)) {
/* Initialize version 1 B-tree */
if(new_idx_info.storage->ops->init && (new_idx_info.storage->ops->init)(&new_idx_info, dataset->shared->space, dataset->oloc.addr) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't initialize indexing information")
init_new_index = TRUE;
/* Create v1 B-tree chunk index */
if((new_idx_info.storage->ops->create)(&new_idx_info) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't create chunk index")
/* If the current chunk index exists */
if(H5F_addr_defined(idx_info.storage->idx_addr)) {
/* Iterate over the chunks in the current index and insert the chunk addresses
* into the version 1 B-tree chunk index */
if(H5D__chunk_format_convert(dataset, &idx_info, &new_idx_info) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_BADITER, FAIL, "unable to iterate/convert chunk index")
} /* end if */
/* Create v1 B-tree chunk index */
if((new_idx_info.storage->ops->create)(&new_idx_info) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't create chunk index")
/* Delete the old "current" layout message */
if(H5O_msg_remove(&dataset->oloc, H5O_LAYOUT_ID, H5O_ALL, FALSE, dxpl_id) < 0)
HGOTO_ERROR(H5E_SYM, H5E_CANTDELETE, FAIL, "unable to delete layout message")
/* Iterate over the chunks in the current index and insert the chunk addresses
* into the version 1 B-tree chunk index
*/
if(H5D__chunk_format_convert(dataset, &idx_info, &new_idx_info) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_BADITER, FAIL, "unable to iterate/convert chunk index")
} /* end if */
delete_old_layout = TRUE;
/* Delete the old "current" layout message */
if(H5O_msg_remove(&dataset->oloc, H5O_LAYOUT_ID, H5O_ALL, FALSE, dxpl_id) < 0)
HGOTO_ERROR(H5E_SYM, H5E_CANTDELETE, FAIL, "unable to delete layout message")
/* Append the new layout message to the object header */
if(H5O_msg_create(&dataset->oloc, H5O_LAYOUT_ID, 0, H5O_UPDATE_TIME, &newlayout, dxpl_id) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to update layout header message")
delete_old_layout = TRUE;
add_new_layout = TRUE;
/* Append the new layout message to the object header */
if(H5O_msg_create(&dataset->oloc, H5O_LAYOUT_ID, 0, H5O_UPDATE_TIME, newlayout, dxpl_id) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to update layout header message")
/* Release the old (current) chunk index */
if(idx_info.storage->ops->dest && (idx_info.storage->ops->dest)(&idx_info) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "unable to release chunk index info")
add_new_layout = TRUE;
/* Copy the new layout to the dataset's layout */
HDmemcpy(&dataset->shared->layout, &newlayout, sizeof(H5O_layout_t));
/* Release the old (current) chunk index */
if(idx_info.storage->ops->dest && (idx_info.storage->ops->dest)(&idx_info) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "unable to release chunk index info")
break;
/* Copy the new layout to the dataset's layout */
HDmemcpy(&dataset->shared->layout, newlayout, sizeof(H5O_layout_t));
case H5D_CONTIGUOUS:
break;
case H5D_CONTIGUOUS:
case H5D_COMPACT:
HDassert(dataset->shared->layout.version > H5O_LAYOUT_VERSION_DEFAULT);
dataset->shared->layout.version = H5O_LAYOUT_VERSION_DEFAULT;
if(H5O_msg_write(&(dataset->oloc), H5O_LAYOUT_ID, 0, H5O_UPDATE_TIME, &(dataset->shared->layout), dxpl_id) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to update layout message")
break;
HDassert(dataset->shared->layout.version > H5O_LAYOUT_VERSION_DEFAULT);
dataset->shared->layout.version = H5O_LAYOUT_VERSION_DEFAULT;
if(H5O_msg_write(&(dataset->oloc), H5O_LAYOUT_ID, 0, H5O_UPDATE_TIME, &(dataset->shared->layout), dxpl_id) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to update layout message")
break;
case H5D_VIRTUAL:
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "virtual dataset layout not supported")
case H5D_VIRTUAL:
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "virtual dataset layout not supported")
case H5D_LAYOUT_ERROR:
case H5D_NLAYOUTS:
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid dataset layout type")
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid dataset layout type")
default:
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "unknown dataset layout type")
default:
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "unknown dataset layout type")
} /* end switch */
done:
if(ret_value < 0 && dataset->shared->layout.type == H5D_CHUNKED) {
/* Remove new layout message */
if(add_new_layout)
if(H5O_msg_remove(&dataset->oloc, H5O_LAYOUT_ID, H5O_ALL, FALSE, dxpl_id) < 0)
HDONE_ERROR(H5E_SYM, H5E_CANTDELETE, FAIL, "unable to delete layout message")
/* Remove new layout message */
if(add_new_layout)
if(H5O_msg_remove(&dataset->oloc, H5O_LAYOUT_ID, H5O_ALL, FALSE, dxpl_id) < 0)
HDONE_ERROR(H5E_SYM, H5E_CANTDELETE, FAIL, "unable to delete layout message")
/* Add back old layout message */
if(delete_old_layout)
if(H5O_msg_create(&dataset->oloc, H5O_LAYOUT_ID, 0, H5O_UPDATE_TIME, &dataset->shared->layout, dxpl_id) < 0)
HDONE_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to add layout header message")
/* Add back old layout message */
if(delete_old_layout)
if(H5O_msg_create(&dataset->oloc, H5O_LAYOUT_ID, 0, H5O_UPDATE_TIME, &dataset->shared->layout, dxpl_id) < 0)
HDONE_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to add layout header message")
/* Clean up v1 b-tree chunk index */
if(init_new_index) {
if(H5F_addr_defined(new_idx_info.storage->idx_addr)) {
/* Check for valid address i.e. tag */
if(!H5F_addr_defined(dataset->oloc.addr))
HDONE_ERROR(H5E_DATASET, H5E_BADVALUE, FAIL, "address undefined")
/* Clean up v1 b-tree chunk index */
if(init_new_index) {
if(H5F_addr_defined(new_idx_info.storage->idx_addr)) {
/* Check for valid address i.e. tag */
if(!H5F_addr_defined(dataset->oloc.addr))
HDONE_ERROR(H5E_DATASET, H5E_BADVALUE, FAIL, "address undefined")
/* Expunge from cache all v1 B-tree type entries associated with tag */
if(H5AC_expunge_tag_type_metadata(dataset->oloc.file, dxpl_id, dataset->oloc.addr, H5AC_BT_ID, H5AC__NO_FLAGS_SET))
HDONE_ERROR(H5E_DATASET, H5E_CANTEXPUNGE, FAIL, "unable to expunge index metadata")
} /* end if */
/* Expunge from cache all v1 B-tree type entries associated with tag */
if(H5AC_expunge_tag_type_metadata(dataset->oloc.file, dxpl_id, dataset->oloc.addr, H5AC_BT_ID, H5AC__NO_FLAGS_SET))
HDONE_ERROR(H5E_DATASET, H5E_CANTEXPUNGE, FAIL, "unable to expunge index metadata")
} /* end if */
/* Delete v1 B-tree chunk index */
if(new_idx_info.storage->ops->dest && (new_idx_info.storage->ops->dest)(&new_idx_info) < 0)
HDONE_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "unable to release chunk index info")
} /* end if */
/* Delete v1 B-tree chunk index */
if(new_idx_info.storage->ops->dest && (new_idx_info.storage->ops->dest)(&new_idx_info) < 0)
HDONE_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "unable to release chunk index info")
} /* end if */
} /* end if */
if(newlayout != NULL)
newlayout = (H5O_layout_t *)H5MM_xfree(newlayout);
FUNC_LEAVE_NOAPI_TAG(ret_value, FAIL)
} /* end H5D__format_convert() */

View File

@ -181,7 +181,6 @@ H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
if(direct_read) {
unsigned u;
hsize_t dims[H5O_LAYOUT_NDIMS];
hsize_t internal_offset[H5O_LAYOUT_NDIMS];
if(H5D_CHUNKED != dset->shared->layout.type)

View File

@ -62,7 +62,6 @@
/********************/
static herr_t H5FD_free_cls(H5FD_class_t *cls);
static int H5FD_query(const H5FD_t *f, unsigned long *flags/*out*/);
static int H5FD_driver_query(const H5FD_class_t *driver, unsigned long *flags/*out*/);
/*********************/
/* Package Variables */
@ -790,7 +789,8 @@ H5FD_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
HGOTO_ERROR(H5E_VFL, H5E_UNSUPPORTED, NULL, "file driver has no `open' method")
/* Query driver flag */
H5FD_driver_query(driver, &driver_flags);
if(H5FD_driver_query(driver, &driver_flags) < 0)
HGOTO_ERROR(H5E_VFL, H5E_BADVALUE, NULL, "can't query VFD flags")
/* Get initial file image info */
if(H5P_peek(plist, H5F_ACS_FILE_IMAGE_INFO_NAME, &file_image_info) < 0)
@ -1083,42 +1083,6 @@ H5FD_query(const H5FD_t *f, unsigned long *flags/*out*/)
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_query() */
/*-------------------------------------------------------------------------
* Function: H5FD_driver_query
*
* Purpose: Similar to H5FD_query(), but intended for cases when we don't
* have a file available (e.g. before one is opened). Since we
* can't use the file to get the driver, the driver is passed in
* as a parameter.
*
* Return: Success: non-negative
* Failure: negative
*
* Programmer: Jacob Gruber
* Wednesday, August 17, 2011
*
*-------------------------------------------------------------------------
*/
static int
H5FD_driver_query(const H5FD_class_t *driver, unsigned long *flags/*out*/)
{
int ret_value = 0; /* Return value */
FUNC_ENTER_NOAPI_NOINIT_NOERR
HDassert(driver);
HDassert(flags);
/* Check for the driver to query and then query it */
if(driver->query)
ret_value = (driver->query)(NULL, flags);
else
*flags = 0;
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_driver_query() */
/*-------------------------------------------------------------------------
* Function: H5FDalloc
@ -2076,3 +2040,42 @@ H5FD_set_paged_aggr(H5FD_t *file, hbool_t paged)
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5FD_set_paged_aggr() */
/*-------------------------------------------------------------------------
* Function: H5FDdriver_query
*
* Purpose: Similar to H5FD_query(), but intended for cases when we don't
* have a file available (e.g. before one is opened). Since we
* can't use the file to get the driver, the driver ID is passed
* in as a parameter.
*
* Return: SUCCEED/FAIL
*
* Programmer: Jacob Gruber
* Wednesday, August 17, 2011
*
*-------------------------------------------------------------------------
*/
herr_t
H5FDdriver_query(hid_t driver_id, unsigned long *flags/*out*/)
{
H5FD_class_t *driver = NULL; /* Pointer to VFD class struct */
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_API(FAIL)
H5TRACE2("e", "ix", driver_id, flags);
if(NULL == flags)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "flags parameter cannot be NULL")
/* Check for the driver to query and then query it */
if (NULL == (driver = (H5FD_class_t *)H5I_object_verify(driver_id, H5I_VFL)))
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "not a VFL ID")
if (H5FD_driver_query(driver, flags) < 0)
HGOTO_ERROR(H5E_VFL, H5E_BADVALUE, FAIL, "driver flag query failed")
done:
FUNC_LEAVE_API(ret_value)
} /* end H5FDdriver_query() */

View File

@ -982,9 +982,11 @@ H5FD__core_query(const H5FD_t * _file, unsigned long *flags /* out */)
*flags |= H5FD_FEAT_ALLOW_FILE_IMAGE; /* OK to use file image feature with this VFD */
*flags |= H5FD_FEAT_CAN_USE_FILE_IMAGE_CALLBACKS; /* OK to use file image callbacks with this VFD */
/* If the backing store is open, a POSIX file handle is available */
if(file && file->fd >= 0 && file->backing_store)
*flags |= H5FD_FEAT_POSIX_COMPAT_HANDLE; /* VFD handle is POSIX I/O call compatible */
/* These feature flags are only applicable if the backing store is enabled */
if(file && file->fd >= 0 && file->backing_store) {
*flags |= H5FD_FEAT_POSIX_COMPAT_HANDLE; /* get_handle callback returns a POSIX file descriptor */
*flags |= H5FD_FEAT_DEFAULT_VFD_COMPATIBLE; /* VFD creates a file which can be opened with the default VFD */
}
} /* end if */
FUNC_LEAVE_NOAPI(SUCCEED)

View File

@ -698,6 +698,7 @@ H5FD_direct_query(const H5FD_t H5_ATTR_UNUSED * _f, unsigned long *flags /* out
*flags |= H5FD_FEAT_ACCUMULATE_METADATA; /* OK to accumulate metadata for faster writes */
*flags |= H5FD_FEAT_DATA_SIEVE; /* OK to perform data sieving for faster raw data reads & writes */
*flags |= H5FD_FEAT_AGGREGATE_SMALLDATA; /* OK to aggregate "small" raw data allocations */
*flags |= H5FD_FEAT_DEFAULT_VFD_COMPATIBLE; /* VFD creates a file which can be opened with the default VFD */
}
FUNC_LEAVE_NOAPI(SUCCEED)

View File

@ -433,3 +433,38 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_get_eof() */
/*-------------------------------------------------------------------------
* Function: H5FD_driver_query
*
* Purpose: Similar to H5FD_query(), but intended for cases when we don't
* have a file available (e.g. before one is opened). Since we
* can't use the file to get the driver, the driver is passed in
* as a parameter.
*
* Return: SUCCEED/FAIL
*
* Programmer: Jacob Gruber
* Wednesday, August 17, 2011
*
*-------------------------------------------------------------------------
*/
herr_t
H5FD_driver_query(const H5FD_class_t *driver, unsigned long *flags/*out*/)
{
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI_NOINIT_NOERR
HDassert(driver);
HDassert(flags);
/* Check for the driver to query and then query it */
if(driver->query)
ret_value = (driver->query)(NULL, flags);
else
*flags = 0;
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_driver_query() */

View File

@ -895,8 +895,9 @@ H5FD_log_query(const H5FD_t *_file, unsigned long *flags /* out */)
*flags |= H5FD_FEAT_ACCUMULATE_METADATA; /* OK to accumulate metadata for faster writes */
*flags |= H5FD_FEAT_DATA_SIEVE; /* OK to perform data sieving for faster raw data reads & writes */
*flags |= H5FD_FEAT_AGGREGATE_SMALLDATA; /* OK to aggregate "small" raw data allocations */
*flags |= H5FD_FEAT_POSIX_COMPAT_HANDLE; /* VFD handle is POSIX I/O call compatible */
*flags |= H5FD_FEAT_POSIX_COMPAT_HANDLE; /* get_handle callback returns a POSIX file descriptor */
*flags |= H5FD_FEAT_SUPPORTS_SWMR_IO; /* VFD supports the single-writer/multiple-readers (SWMR) pattern */
*flags |= H5FD_FEAT_DEFAULT_VFD_COMPATIBLE; /* VFD creates a file which can be opened with the default VFD */
/* Check for flags that are set by h5repart */
if(file && file->fam_to_sec2)

View File

@ -1150,10 +1150,11 @@ H5FD_mpio_query(const H5FD_t H5_ATTR_UNUSED *_file, unsigned long *flags /* out
/* Set the VFL feature flags that this driver supports */
if(flags) {
*flags=0;
*flags|=H5FD_FEAT_AGGREGATE_METADATA; /* OK to aggregate metadata allocations */
*flags|=H5FD_FEAT_AGGREGATE_SMALLDATA; /* OK to aggregate "small" raw data allocations */
*flags|=H5FD_FEAT_HAS_MPI; /* This driver uses MPI */
*flags|=H5FD_FEAT_ALLOCATE_EARLY; /* Allocate space early instead of late */
*flags |= H5FD_FEAT_AGGREGATE_METADATA; /* OK to aggregate metadata allocations */
*flags |= H5FD_FEAT_AGGREGATE_SMALLDATA; /* OK to aggregate "small" raw data allocations */
*flags |= H5FD_FEAT_HAS_MPI; /* This driver uses MPI */
*flags |= H5FD_FEAT_ALLOCATE_EARLY; /* Allocate space early instead of late */
*flags |= H5FD_FEAT_DEFAULT_VFD_COMPATIBLE; /* VFD creates a file which can be opened with the default VFD */
} /* end if */
FUNC_LEAVE_NOAPI(SUCCEED)

View File

@ -153,6 +153,7 @@ H5_DLL H5FD_t *H5FD_open(const char *name, unsigned flags, hid_t fapl_id,
haddr_t maxaddr);
H5_DLL herr_t H5FD_close(H5FD_t *file);
H5_DLL int H5FD_cmp(const H5FD_t *f1, const H5FD_t *f2);
H5_DLL herr_t H5FD_driver_query(const H5FD_class_t *driver, unsigned long *flags/*out*/);
H5_DLL haddr_t H5FD_alloc(H5FD_t *file, hid_t dxpl_id, H5FD_mem_t type,
struct H5F_t *f, hsize_t size, haddr_t *frag_addr, hsize_t *frag_size);
H5_DLL herr_t H5FD_free(H5FD_t *file, hid_t dxpl_id, H5FD_mem_t type, struct H5F_t *f,

View File

@ -250,6 +250,14 @@ typedef enum H5F_mem_t H5FD_mem_t;
* This is specifically used for the multi/split driver.
*/
#define H5FD_FEAT_PAGED_AGGR 0x00004000
/*
* Defining H5FD_FEAT_DEFAULT_VFD_COMPATIBLE for a VFL driver
* that creates a file which is compatible with the default VFD.
* Generally, this means that the VFD creates a single file that follows
* the canonical HDF5 file format.
*/
#define H5FD_FEAT_DEFAULT_VFD_COMPATIBLE 0x00008000
/* Forward declaration */
typedef struct H5FD_t H5FD_t;
@ -376,6 +384,9 @@ H5_DLL herr_t H5FDtruncate(H5FD_t *file, hid_t dxpl_id, hbool_t closing);
H5_DLL herr_t H5FDlock(H5FD_t *file, hbool_t rw);
H5_DLL herr_t H5FDunlock(H5FD_t *file);
/* Allows querying a VFD ID for features before the file is opened */
H5_DLL herr_t H5FDdriver_query(hid_t driver_id, unsigned long *flags/*out*/);
#ifdef __cplusplus
}
#endif

View File

@ -527,8 +527,9 @@ H5FD_sec2_query(const H5FD_t *_file, unsigned long *flags /* out */)
*flags |= H5FD_FEAT_ACCUMULATE_METADATA; /* OK to accumulate metadata for faster writes */
*flags |= H5FD_FEAT_DATA_SIEVE; /* OK to perform data sieving for faster raw data reads & writes */
*flags |= H5FD_FEAT_AGGREGATE_SMALLDATA; /* OK to aggregate "small" raw data allocations */
*flags |= H5FD_FEAT_POSIX_COMPAT_HANDLE; /* VFD handle is POSIX I/O call compatible */
*flags |= H5FD_FEAT_POSIX_COMPAT_HANDLE; /* get_handle callback returns a POSIX file descriptor */
*flags |= H5FD_FEAT_SUPPORTS_SWMR_IO; /* VFD supports the single-writer/multiple-readers (SWMR) pattern */
*flags |= H5FD_FEAT_DEFAULT_VFD_COMPATIBLE; /* VFD creates a file which can be opened with the default VFD */
/* Check for flags that are set by h5repart */
if(file && file->fam_to_sec2)

View File

@ -99,9 +99,7 @@ H5FL_DEFINE(H5FD_free_t);
static haddr_t
H5FD_extend(H5FD_t *file, H5FD_mem_t type, hsize_t size)
{
hsize_t orig_size = size; /* Original allocation size */
haddr_t eoa; /* Address of end-of-allocated space */
hsize_t extra; /* Extra space to allocate, to align request */
haddr_t ret_value = HADDR_UNDEF; /* Return value */
FUNC_ENTER_NOAPI_NOINIT

View File

@ -555,10 +555,11 @@ H5FD_stdio_query(const H5FD_t *_f, unsigned long /*OUT*/ *flags)
*/
if(flags) {
*flags = 0;
*flags|=H5FD_FEAT_AGGREGATE_METADATA; /* OK to aggregate metadata allocations */
*flags|=H5FD_FEAT_ACCUMULATE_METADATA; /* OK to accumulate metadata for faster writes */
*flags|=H5FD_FEAT_DATA_SIEVE; /* OK to perform data sieving for faster raw data reads & writes */
*flags|=H5FD_FEAT_AGGREGATE_SMALLDATA; /* OK to aggregate "small" raw data allocations */
*flags |= H5FD_FEAT_AGGREGATE_METADATA; /* OK to aggregate metadata allocations */
*flags |= H5FD_FEAT_ACCUMULATE_METADATA; /* OK to accumulate metadata for faster writes */
*flags |= H5FD_FEAT_DATA_SIEVE; /* OK to perform data sieving for faster raw data reads & writes */
*flags |= H5FD_FEAT_AGGREGATE_SMALLDATA; /* OK to aggregate "small" raw data allocations */
*flags |= H5FD_FEAT_DEFAULT_VFD_COMPATIBLE; /* VFD creates a file which can be opened with the default VFD */
}
return 0;

View File

@ -715,10 +715,6 @@ H5F_new(H5F_file_t *shared, unsigned flags, hid_t fcpl_id, hid_t fapl_id, H5FD_t
if(!H5F_HAS_FEATURE(f, H5FD_FEAT_SUPPORTS_SWMR_IO) && (H5F_INTENT(f) & (H5F_ACC_SWMR_WRITE | H5F_ACC_SWMR_READ)))
HGOTO_ERROR(H5E_FILE, H5E_BADVALUE, NULL, "must use a SWMR-compatible VFD when SWMR is specified")
/* Require a POSIX compatible VFD to use SWMR feature */
/* (It's reasonable to try to expand this to other VFDs eventually -QAK) */
if(!H5F_HAS_FEATURE(f, H5FD_FEAT_POSIX_COMPAT_HANDLE) && (H5F_INTENT(f) & (H5F_ACC_SWMR_WRITE | H5F_ACC_SWMR_READ)))
HGOTO_ERROR(H5E_FILE, H5E_BADVALUE, NULL, "must use POSIX compatible VFD with SWMR write access")
if(H5FD_get_fs_type_map(lf, f->shared->fs_type_map) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, NULL, "can't get free space type mapping from VFD")
if(H5MF_init_merge_flags(f) < 0)

View File

@ -888,7 +888,7 @@ H5I_subst(hid_t id, const void *new_object)
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end if */
} /* end H5I_subst() */
/*-------------------------------------------------------------------------
@ -920,7 +920,7 @@ H5I_object(hid_t id)
} /* end if */
FUNC_LEAVE_NOAPI(ret_value)
} /* end if */
} /* end H5I_object() */
/*-------------------------------------------------------------------------

View File

@ -156,7 +156,7 @@ herr_t
H5MF_sects_debug(H5F_t *f, hid_t dxpl_id, haddr_t fs_addr, FILE *stream, int indent, int fwidth)
{
herr_t ret_value = SUCCEED; /* Return value */
H5FD_mem_t type; /* Memory type for iteration */
H5F_mem_page_t type; /* Memory type for iteration */
FUNC_ENTER_NOAPI_TAG(dxpl_id, H5AC__FREESPACE_TAG, FAIL)
@ -168,31 +168,31 @@ H5MF_sects_debug(H5F_t *f, hid_t dxpl_id, haddr_t fs_addr, FILE *stream, int ind
HDassert(indent >= 0);
HDassert(fwidth >= 0);
for(type = H5FD_MEM_DEFAULT; type < H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t, type))
if(H5F_addr_eq(f->shared->fs_addr[type], fs_addr)) {
if(!f->shared->fs_man[type])
for(type = H5F_MEM_PAGE_DEFAULT; type < H5F_MEM_PAGE_NTYPES; H5_INC_ENUM(H5F_mem_page_t, type))
if(H5F_addr_eq(f->shared->fs_addr[type], fs_addr)) {
if(!f->shared->fs_man[type])
if(H5MF_open_fstype(f, dxpl_id, type) < 0)
HGOTO_ERROR(H5E_RESOURCE, H5E_CANTINIT, FAIL, "can't initialize file free space")
HGOTO_ERROR(H5E_RESOURCE, H5E_CANTINIT, FAIL, "can't initialize file free space")
if(f->shared->fs_man[type]) {
H5MF_debug_iter_ud_t udata; /* User data for callbacks */
if(f->shared->fs_man[type]) {
H5MF_debug_iter_ud_t udata; /* User data for callbacks */
/* Prepare user data for section iteration callback */
udata.fspace = f->shared->fs_man[type];
udata.stream = stream;
udata.indent = indent;
udata.fwidth = fwidth;
/* Prepare user data for section iteration callback */
udata.fspace = f->shared->fs_man[type];
udata.stream = stream;
udata.indent = indent;
udata.fwidth = fwidth;
/* Iterate over all the free space sections */
if(H5FS_sect_iterate(f, dxpl_id, f->shared->fs_man[type], H5MF_sects_debug_cb, &udata) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_BADITER, FAIL, "can't iterate over heap's free space")
/* Iterate over all the free space sections */
if(H5FS_sect_iterate(f, dxpl_id, f->shared->fs_man[type], H5MF_sects_debug_cb, &udata) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_BADITER, FAIL, "can't iterate over heap's free space")
/* Close the free space information */
if(H5FS_close(f, dxpl_id, f->shared->fs_man[type]) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't release free space info")
} /* end if */
break;
} /* end if */
/* Close the free space information */
if(H5FS_close(f, dxpl_id, f->shared->fs_man[type]) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't release free space info")
} /* end if */
break;
} /* end if */
done:
FUNC_LEAVE_NOAPI_TAG(ret_value, FAIL)

View File

@ -360,7 +360,7 @@ H5MF_sect_valid(const H5FS_section_class_t H5_ATTR_UNUSED *cls,
static H5FS_section_info_t *
H5MF_sect_split(H5FS_section_info_t *sect, hsize_t frag_size)
{
H5MF_free_section_t *ret_value; /* Return value */
H5MF_free_section_t *ret_value = NULL; /* Return value */
FUNC_ENTER_NOAPI_NOINIT

View File

@ -323,7 +323,7 @@ H5O__mdci_delete(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh, void *_mesg)
* time constraints, I don't want to go there now.
*/
if(H5F_FIRST_ALLOC_DEALLOC(f)) {
HDassert(HADDR_UNDEF !=H5F_EOA_PRE_FSM_FSALLOC(f));
HDassert(HADDR_UNDEF != H5F_EOA_PRE_FSM_FSALLOC(f));
HDassert(H5F_addr_ge(mesg->addr, H5F_EOA_PRE_FSM_FSALLOC(f)));
if(H5MF_tidy_self_referential_fsm_hack(f, dxpl_id) < 0)
HGOTO_ERROR(H5E_OHDR, H5E_CANTFREE, FAIL, "tidy of self referential fsm hack failed")

View File

@ -85,7 +85,7 @@ H5FL_DEFINE_STATIC(H5O_fsinfo_t);
*-------------------------------------------------------------------------
*/
static void *
H5O_fsinfo_decode(H5F_t *f, hid_t dxpl_id, H5O_t H5_ATTR_UNUSED *open_oh,
H5O_fsinfo_decode(H5F_t *f, hid_t H5_ATTR_UNUSED dxpl_id, H5O_t H5_ATTR_UNUSED *open_oh,
unsigned H5_ATTR_UNUSED mesg_flags, unsigned H5_ATTR_UNUSED *ioflags, const uint8_t *p)
{
H5O_fsinfo_t *fsinfo = NULL; /* File space info message */

View File

@ -17,6 +17,8 @@
*
* Purpose: Tests the dataset interface (H5D)
*/
#define H5D_FRIEND /*suppress error about including H5Dpkg */
#define H5D_TESTING
#define H5FD_FRIEND /*suppress error about including H5FDpkg */
#define H5FD_TESTING
@ -24,6 +26,7 @@
#include "h5test.h"
#include "H5srcdir.h"
#include "H5Dpkg.h"
#include "H5FDpkg.h"
#include "H5VMprivate.h"
#include "H5Zpkg.h"

View File

@ -9,6 +9,7 @@
* distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
* If you do not have access to either file, you may request a copy from *
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Programmer: Mike McGreevy

View File

@ -45,8 +45,10 @@
#define TBLOCK_SIZE4 4
#define TBLOCK_SIZE5 5
#define TBLOCK_SIZE6 6
#ifdef PB_OUT
#define TBLOCK_SIZE7 7
#define TBLOCK_SIZE8 8
#endif /* PB_OUT */
#define TBLOCK_SIZE10 10
#define TBLOCK_SIZE11 11
#define TBLOCK_SIZE20 20
@ -138,8 +140,10 @@ static unsigned test_mf_fs_gone(const char *env_h5_drvr, hid_t fapl, hbool_t new
static unsigned test_mf_strat_thres_gone(const char *env_h5_drvr, hid_t fapl, hbool_t new_format);
static unsigned test_mf_fs_persist(const char *env_h5_drvr, hid_t fapl, hbool_t new_format);
static unsigned test_mf_strat_thres_persist(const char *env_h5_drvr, hid_t fapl, hbool_t new_format);
#ifdef PB_OUT
static unsigned test_mf_fs_persist_split(void);
static unsigned test_mf_fs_persist_multi(void);
#endif
static unsigned test_page_alloc_xfree(const char *env_h5_drvr, hid_t fapl);
static unsigned test_page_small(const char *env_h5_drvr, hid_t fapl);
static unsigned test_page_large(const char *env_h5_drvr, hid_t fapl);
@ -6091,6 +6095,7 @@ error:
* Verify that the file's free-space manager(s) are persistent for a split-file
*-------------------------------------------------------------------------
*/
#ifdef PB_OUT
static unsigned
test_mf_fs_persist_split(void)
{
@ -6716,6 +6721,7 @@ error:
} H5E_END_TRY;
return(1);
} /* test_mf_fs_persist_multi() */
#endif /* PB_OUT */
/*
*-------------------------------------------------------------------------

View File

@ -574,7 +574,9 @@ test_noread_with_filters(hid_t file)
/* disable filter plugin */
if(H5PLget_loading_state(&plugin_state) < 0) TEST_ERROR
plugin_state = plugin_state & ~H5PL_FILTER_PLUGIN;
plugin_state = plugin_state & (unsigned)(~H5PL_FILTER_PLUGIN);
if(H5PLset_loading_state(plugin_state) < 0) TEST_ERROR
if((dset = H5Dopen2(file, DSET_DYNLIB1_NAME, H5P_DEFAULT)) < 0) TEST_ERROR
@ -672,8 +674,8 @@ static herr_t
test_groups_with_filters(hid_t file)
{
herr_t ret_value = -1;
hid_t gid;
hid_t group;
hid_t gid = -1;
hid_t group = -1;
int i;
char gname[256];

View File

@ -116,16 +116,37 @@ static int test_multiple_same(hid_t in_fapl, hbool_t new_format);
static int
test_metadata_read_attempts(hid_t in_fapl)
{
hid_t fapl; /* File access property list */
hid_t file_fapl; /* The file's access property list */
hid_t fid, fid1, fid2; /* File IDs */
unsigned attempts; /* The # of read attempts */
char filename[NAME_BUF_SIZE]; /* File name */
herr_t ret; /* Generic return value */
hid_t fapl = -1; /* File access property list */
hid_t file_fapl = -1; /* The file's access property list */
hid_t fid = -1, fid1 = -1, fid2 = -1; /* File IDs */
hid_t driver_id = -1; /* ID for this VFD */
unsigned long driver_flags = 0; /* VFD feature flags */
hbool_t compat_w_default_vfd; /* current VFD compat w/ H5P_DEFAULT? */
unsigned attempts; /* The # of read attempts */
char filename[NAME_BUF_SIZE]; /* File name */
herr_t ret; /* Generic return value */
/* Output message about test being performed */
TESTING("H5Pget/set_metadata_read_attempts()");
/* Check if the driver is compatible with the default VFD.
* Most of the tests will attempt to create and open files with both the
* VFD specified in the passed-in fapl and the default VFD. Since this
* will clearly not work with VFDs that are not compatible with the default
* fapl (e.g.: split/multi), we just skip this entire test.
*/
if ((driver_id = H5Pget_driver(in_fapl)) < 0)
FAIL_STACK_ERROR
if (H5FDdriver_query(driver_id, &driver_flags) < 0)
FAIL_STACK_ERROR
compat_w_default_vfd = (driver_flags & H5FD_FEAT_DEFAULT_VFD_COMPATIBLE) ? TRUE : FALSE;
if (!compat_w_default_vfd) {
SKIPPED()
HDputs(" The current VFD is not compatible with the default VFD.");
return 0;
}
/* Get a copy of the parameter fapl */
if((fapl = H5Pcopy(in_fapl)) < 0)
FAIL_STACK_ERROR

View File

@ -227,7 +227,7 @@ read_records(const char *filename, unsigned verbose, unsigned long nseconds,
/* Determine the offset of the symbol, within level 0 symbols */
/* (level 0 symbols are the most common symbols) */
offset = (unsigned)(HDrandom() % symbol_count[0]);
offset = (unsigned)HDrandom() % symbol_count[0];
sym_com[v] = &symbol_info[0][offset];
/* Emit informational message */

View File

@ -187,7 +187,7 @@ remove_records(hid_t fid, unsigned verbose, unsigned long nshrinks, unsigned lon
symbol->nrecords = 0;
else
symbol->nrecords -= remove_size;
dim[1] = symbol->nrecords;
dim[1] = symbol->nrecords;
if(H5Dset_extent(symbol->dsid, dim) < 0)
return -1;

View File

@ -4929,9 +4929,9 @@ test_libver_bounds(void)
static void
test_libver_macros(void)
{
unsigned major = H5_VERS_MAJOR;
unsigned minor = H5_VERS_MINOR;
unsigned release = H5_VERS_RELEASE;
int major = H5_VERS_MAJOR;
int minor = H5_VERS_MINOR;
int release = H5_VERS_RELEASE;
/* Output message about test being performed */
MESSAGE(5, ("Testing macros for library version comparison\n"));

View File

@ -48,6 +48,8 @@ parse_option(int argc, char * const argv[])
{
int ret_value=0;
int c;
int use_swmr; /* Need an int to detect errors */
/* command line options: See function usage for a description */
const char *nagg_options = "f:hi:l:n:s:y:z:";
@ -96,11 +98,13 @@ parse_option(int argc, char * const argv[])
};
break;
case 's': /* use swmr file open mode */
if ((UC_opts.use_swmr = HDatoi(optarg)) < 0) {
fprintf(stderr, "swmr value should be 0(no) or 1(yes)\n");
usage(progname_g);
Hgoto_error(-1);
};
use_swmr = HDatoi(optarg);
if (use_swmr != 0 && use_swmr != 1) {
HDfprintf(stderr, "swmr value should be 0(no) or 1(yes)\n");
usage(progname_g);
Hgoto_error(-1);
}
UC_opts.use_swmr = (hbool_t)use_swmr;
break;
case 'y': /* Number of planes per chunk */
if ((UC_opts.chunkplanes = HDstrtoul(optarg, NULL, 0)) <= 0) {

View File

@ -86,6 +86,8 @@ test_sec2(void)
hid_t fid = -1; /* file ID */
hid_t fapl_id = -1; /* file access property list ID */
hid_t fapl_id_out = -1; /* from H5Fget_access_plist */
hid_t driver_id = -1; /* ID for this VFD */
unsigned long driver_flags = 0; /* VFD feature flags */
char filename[1024]; /* filename */
void *os_file_handle = NULL; /* OS file handle */
hsize_t file_size; /* file size */
@ -99,6 +101,28 @@ test_sec2(void)
TEST_ERROR;
h5_fixname(FILENAME[0], fapl_id, filename, sizeof(filename));
/* Check that the VFD feature flags are correct */
if ((driver_id = H5Pget_driver(fapl_id)) < 0)
TEST_ERROR
if (H5FDdriver_query(driver_id, &driver_flags) < 0)
TEST_ERROR
if(!(driver_flags & H5FD_FEAT_AGGREGATE_METADATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_ACCUMULATE_METADATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_DATA_SIEVE)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_AGGREGATE_SMALLDATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_POSIX_COMPAT_HANDLE)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_SUPPORTS_SWMR_IO)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_DEFAULT_VFD_COMPATIBLE)) TEST_ERROR
/* Check for extra flags not accounted for above */
if(driver_flags != (H5FD_FEAT_AGGREGATE_METADATA
| H5FD_FEAT_ACCUMULATE_METADATA
| H5FD_FEAT_DATA_SIEVE
| H5FD_FEAT_AGGREGATE_SMALLDATA
| H5FD_FEAT_POSIX_COMPAT_HANDLE
| H5FD_FEAT_SUPPORTS_SWMR_IO
| H5FD_FEAT_DEFAULT_VFD_COMPATIBLE))
TEST_ERROR
if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id)) < 0)
TEST_ERROR;
@ -174,6 +198,8 @@ test_core(void)
hid_t fid = -1; /* file ID */
hid_t fapl_id = -1; /* file access property list ID */
hid_t fapl_id_out = -1; /* from H5Fget_access_plist */
hid_t driver_id = -1; /* ID for this VFD */
unsigned long driver_flags = 0; /* VFD feature flags */
hid_t did = -1; /* dataset ID */
hid_t sid = -1; /* dataspace ID */
char filename[1024]; /* filename */
@ -208,9 +234,34 @@ test_core(void)
if(HDaccess(filename, F_OK) != -1)
if(HDremove(filename) < 0)
FAIL_PUTS_ERROR("unable to remove backing store file");
/* Create and close file w/ backing store off */
if(H5Pset_fapl_core(fapl_id, (size_t)CORE_INCREMENT, FALSE) < 0)
TEST_ERROR;
/* Check that the VFD feature flags are correct.
* Note that the H5FDdriver_query() API call does not require a file
* so backing-store related flags will not be returned here.
*/
if ((driver_id = H5Pget_driver(fapl_id)) < 0)
TEST_ERROR
if (H5FDdriver_query(driver_id, &driver_flags) < 0)
TEST_ERROR
if(!(driver_flags & H5FD_FEAT_AGGREGATE_METADATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_ACCUMULATE_METADATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_DATA_SIEVE)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_AGGREGATE_SMALLDATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_ALLOW_FILE_IMAGE)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_CAN_USE_FILE_IMAGE_CALLBACKS)) TEST_ERROR
/* Check for extra flags not accounted for above */
if(driver_flags != (H5FD_FEAT_AGGREGATE_METADATA
| H5FD_FEAT_ACCUMULATE_METADATA
| H5FD_FEAT_DATA_SIEVE
| H5FD_FEAT_AGGREGATE_SMALLDATA
| H5FD_FEAT_ALLOW_FILE_IMAGE
| H5FD_FEAT_CAN_USE_FILE_IMAGE_CALLBACKS))
TEST_ERROR
if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id)) < 0)
TEST_ERROR;
if(H5Fclose(fid) < 0)
@ -219,7 +270,6 @@ test_core(void)
if(HDaccess(filename, F_OK) != -1)
FAIL_PUTS_ERROR("file created when backing store set to FALSE");
/************************************************************************
* Check basic core VFD operation and properties. This is done with the
* backing store on so a file will be created for later use.
@ -795,6 +845,8 @@ test_family(void)
{
hid_t file=-1, fapl=-1, fapl2=-1, space=-1, dset=-1;
hid_t access_fapl = -1;
hid_t driver_id = -1; /* ID for this VFD */
unsigned long driver_flags = 0; /* VFD feature flags */
char filename[1024];
char dname[]="dataset";
unsigned int i, j;
@ -812,6 +864,22 @@ test_family(void)
TEST_ERROR;
h5_fixname(FILENAME[2], fapl, filename, sizeof(filename));
/* Check that the VFD feature flags are correct */
if ((driver_id = H5Pget_driver(fapl)) < 0)
TEST_ERROR
if (H5FDdriver_query(driver_id, &driver_flags) < 0)
TEST_ERROR
if(!(driver_flags & H5FD_FEAT_AGGREGATE_METADATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_ACCUMULATE_METADATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_DATA_SIEVE)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_AGGREGATE_SMALLDATA)) TEST_ERROR
/* Check for extra flags not accounted for above */
if(driver_flags != (H5FD_FEAT_AGGREGATE_METADATA
| H5FD_FEAT_ACCUMULATE_METADATA
| H5FD_FEAT_DATA_SIEVE
| H5FD_FEAT_AGGREGATE_SMALLDATA))
TEST_ERROR
if((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
TEST_ERROR;
@ -1096,6 +1164,8 @@ test_multi(void)
hid_t file=-1, fapl=-1, fapl2=-1, dset=-1, space=-1;
hid_t root=-1, attr=-1, aspace=-1, atype=-1;
hid_t access_fapl = -1;
hid_t driver_id = -1; /* ID for this VFD */
unsigned long driver_flags = 0; /* VFD feature flags */
char filename[1024];
int *fhandle2=NULL, *fhandle=NULL;
hsize_t file_size;
@ -1152,6 +1222,22 @@ test_multi(void)
TEST_ERROR;
h5_fixname(FILENAME[4], fapl, filename, sizeof filename);
/* Check that the VFD feature flags are correct */
if ((driver_id = H5Pget_driver(fapl)) < 0)
TEST_ERROR
if (H5FDdriver_query(driver_id, &driver_flags) < 0)
TEST_ERROR
if(!(driver_flags & H5FD_FEAT_DATA_SIEVE)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_AGGREGATE_SMALLDATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_USE_ALLOC_SIZE)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_PAGED_AGGR)) TEST_ERROR
/* Check for extra flags not accounted for above */
if(driver_flags != (H5FD_FEAT_DATA_SIEVE
| H5FD_FEAT_AGGREGATE_SMALLDATA
| H5FD_FEAT_USE_ALLOC_SIZE
| H5FD_FEAT_PAGED_AGGR))
TEST_ERROR
if((file=H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
TEST_ERROR;
@ -1484,6 +1570,8 @@ test_log(void)
hid_t file = -1;
hid_t fapl = -1;
hid_t access_fapl = -1;
hid_t driver_id = -1; /* ID for this VFD */
unsigned long driver_flags = 0; /* VFD feature flags */
char filename[1024];
int *fhandle = NULL;
hsize_t file_size = 0;
@ -1499,6 +1587,28 @@ test_log(void)
TEST_ERROR;
h5_fixname(FILENAME[6], fapl, filename, sizeof filename);
/* Check that the VFD feature flags are correct */
if ((driver_id = H5Pget_driver(fapl)) < 0)
TEST_ERROR
if (H5FDdriver_query(driver_id, &driver_flags) < 0)
TEST_ERROR
if(!(driver_flags & H5FD_FEAT_AGGREGATE_METADATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_ACCUMULATE_METADATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_DATA_SIEVE)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_AGGREGATE_SMALLDATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_POSIX_COMPAT_HANDLE)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_SUPPORTS_SWMR_IO)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_DEFAULT_VFD_COMPATIBLE)) TEST_ERROR
/* Check for extra flags not accounted for above */
if(driver_flags != (H5FD_FEAT_AGGREGATE_METADATA
| H5FD_FEAT_ACCUMULATE_METADATA
| H5FD_FEAT_DATA_SIEVE
| H5FD_FEAT_AGGREGATE_SMALLDATA
| H5FD_FEAT_POSIX_COMPAT_HANDLE
| H5FD_FEAT_SUPPORTS_SWMR_IO
| H5FD_FEAT_DEFAULT_VFD_COMPATIBLE))
TEST_ERROR
/* Create the test file */
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
TEST_ERROR;
@ -1571,6 +1681,8 @@ test_stdio(void)
hid_t file = -1;
hid_t fapl = -1;
hid_t access_fapl = -1;
hid_t driver_id = -1; /* ID for this VFD */
unsigned long driver_flags = 0; /* VFD feature flags */
char filename[1024];
FILE *fhandle = NULL;
hsize_t file_size = 0;
@ -1584,6 +1696,24 @@ test_stdio(void)
TEST_ERROR;
h5_fixname(FILENAME[7], fapl, filename, sizeof filename);
/* Check that the VFD feature flags are correct */
if ((driver_id = H5Pget_driver(fapl)) < 0)
TEST_ERROR
if (H5FDdriver_query(driver_id, &driver_flags) < 0)
TEST_ERROR
if(!(driver_flags & H5FD_FEAT_AGGREGATE_METADATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_ACCUMULATE_METADATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_DATA_SIEVE)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_AGGREGATE_SMALLDATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_DEFAULT_VFD_COMPATIBLE)) TEST_ERROR
/* Check for extra flags not accounted for above */
if(driver_flags != (H5FD_FEAT_AGGREGATE_METADATA
| H5FD_FEAT_ACCUMULATE_METADATA
| H5FD_FEAT_DATA_SIEVE
| H5FD_FEAT_AGGREGATE_SMALLDATA
| H5FD_FEAT_DEFAULT_VFD_COMPATIBLE))
TEST_ERROR
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
TEST_ERROR;
@ -1658,6 +1788,8 @@ test_windows(void)
hid_t file = -1;
hid_t fapl = -1;
hid_t access_fapl = -1;
hid_t driver_id = -1; /* ID for this VFD */
unsigned long driver_flags = 0; /* VFD feature flags */
char filename[1024];
int *fhandle = NULL;
hsize_t file_size = 0;
@ -1680,6 +1812,28 @@ test_windows(void)
TEST_ERROR;
h5_fixname(FILENAME[8], fapl, filename, sizeof filename);
/* Check that the VFD feature flags are correct */
if ((driver_id = H5Pget_driver(fapl)) < 0)
TEST_ERROR
if (H5FDdriver_query(driver_id, &driver_flags) < 0)
TEST_ERROR
if(!(driver_flags & H5FD_FEAT_AGGREGATE_METADATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_ACCUMULATE_METADATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_DATA_SIEVE)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_AGGREGATE_SMALLDATA)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_POSIX_COMPAT_HANDLE)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_SUPPORTS_SWMR_IO)) TEST_ERROR
if(!(driver_flags & H5FD_FEAT_DEFAULT_VFD_COMPATIBLE)) TEST_ERROR
/* Check for extra flags not accounted for above */
if(driver_flags != (H5FD_FEAT_AGGREGATE_METADATA
| H5FD_FEAT_ACCUMULATE_METADATA
| H5FD_FEAT_DATA_SIEVE
| H5FD_FEAT_AGGREGATE_SMALLDATA
| H5FD_FEAT_POSIX_COMPAT_HANDLE
| H5FD_FEAT_SUPPORTS_SWMR_IO
| H5FD_FEAT_DEFAULT_VFD_COMPATIBLE))
TEST_ERROR
if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
TEST_ERROR;

View File

@ -140,7 +140,7 @@ typedef struct mcomp_t
static hsize_t diff_region(hid_t obj1_id, hid_t obj2_id,hid_t region1_id, hid_t region2_id, diff_opt_t *options);
static hbool_t all_zero(const void *_mem, size_t size);
static int ull2float(unsigned long long ull_value, float *f_value);
static hsize_t character_compare(char *mem1,char *mem2,hsize_t i,unsigned u,int rank,hsize_t *dims,hsize_t *acc,hsize_t *pos,diff_opt_t *options,const char *obj1,const char *obj2,int *ph);
static hsize_t character_compare(char *mem1,char *mem2,hsize_t i,size_t u,int rank,hsize_t *dims,hsize_t *acc,hsize_t *pos,diff_opt_t *options,const char *obj1,const char *obj2,int *ph);
static hsize_t character_compare_opt(unsigned char *mem1,unsigned char *mem2,hsize_t i,int rank,hsize_t *dims,hsize_t *acc,hsize_t *pos,diff_opt_t *options,const char *obj1,const char *obj2,int *ph);
static hbool_t equal_float(float value, float expected, diff_opt_t *options);
static hbool_t equal_double(double value, double expected, diff_opt_t *options);
@ -149,7 +149,7 @@ static hbool_t equal_ldouble(long double value, long double expected, diff_opt_t
#endif
static int print_data(diff_opt_t *options);
static void print_pos(int *ph,int pp,hsize_t curr_pos,hsize_t *acc,hsize_t *pos,int rank,hsize_t *dims,const char *obj1,const char *obj2 );
static void print_char_pos(int *ph,int pp,hsize_t curr_pos,unsigned u,hsize_t *acc,hsize_t *pos,int rank,hsize_t *dims,const char *obj1,const char *obj2 );
static void print_char_pos(int *ph,int pp,hsize_t curr_pos,size_t u,hsize_t *acc,hsize_t *pos,int rank,hsize_t *dims,const char *obj1,const char *obj2 );
static void h5diff_print_char(char ch);
static hsize_t diff_datum(void *_mem1,
void *_mem2,
@ -575,7 +575,7 @@ static hsize_t diff_datum(void *_mem1,
{
unsigned char *mem1 = (unsigned char*)_mem1;
unsigned char *mem2 = (unsigned char*)_mem2;
unsigned u;
size_t u;
hid_t memb_type;
size_t type_size;
H5T_sign_t type_sign;
@ -2813,7 +2813,7 @@ static
hsize_t character_compare(char *mem1,
char *mem2,
hsize_t i,
unsigned u,
size_t u,
int rank,
hsize_t *dims,
hsize_t *acc,
@ -5906,7 +5906,7 @@ static
void print_char_pos( int *ph, /* print header */
int pp, /* print percentage */
hsize_t curr_pos,
unsigned u,
size_t u,
hsize_t *acc,
hsize_t *pos,
int rank,
@ -5944,7 +5944,7 @@ void print_char_pos( int *ph, /* print header */
}
else
{
parallel_print("%u", (unsigned)u);
parallel_print("%zu", u);
}
parallel_print("]" );
}

View File

@ -522,7 +522,7 @@ typedef struct h5tools_context_t {
hsize_t acc[H5S_MAX_RANK]; /* accumulator position */
hsize_t pos[H5S_MAX_RANK]; /* matrix position */
hsize_t sm_pos; /* current stripmine element position */
struct H5LD_memb_t **cmpd_listv; /* h5watch: vector containing info about the list of compound fields to be printed */
const struct H5LD_memb_t * const *cmpd_listv; /* h5watch: vector containing info about the list of compound fields to be printed */
} h5tools_context_t;
typedef struct subset_d {

View File

@ -1000,10 +1000,11 @@ h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, hid_t contai
case H5T_COMPOUND:
if(ctx->cmpd_listv) { /* there is <list_of_fields> */
int save_indent_level; /* The indentation level */
unsigned save_indent_level; /* The indentation level */
size_t curr_field; /* Current field to display */
int i = 0, x = 0; /* Local index variable */
H5LD_memb_t **listv; /* Vector of information for <list_of_fields> */
int i = 0; /* Local index variable */
unsigned x = 0; /* Local index variable */
const H5LD_memb_t * const *listv; /* Vector of information for <list_of_fields> */
listv = ctx->cmpd_listv;
ctx->cmpd_listv = NULL;

View File

@ -249,7 +249,7 @@ h5repack_verify(const char *in_fname, const char *out_fname, pack_opt_t *options
* the same as the input file's strategy.
*/
if(options->fs_strategy) {
if(out_strategy != (options->fs_strategy == (-1) ? 0 : options->fs_strategy)) {
if(out_strategy != (options->fs_strategy == (H5F_fspace_strategy_t)-1 ? 0 : options->fs_strategy)) {
error_msg("file space strategy not set as unexpected\n");
HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "file space strategy not set as unexpected");
}

View File

@ -336,7 +336,7 @@ static void gent_att_compound_vlstr(hid_t loc_id)
{
typedef struct { /* Compound structure for the attribute */
int i;
char *v;
const char *v;
} s1;
hsize_t dim[1] = {1}; /* Dimension size */
hid_t sid = -1; /* Dataspace ID */

View File

@ -3632,8 +3632,8 @@ static int test_comp_vlen_strings(const char *fname1, const char *grp_name, int
char *str_vlen_repeat; /* vlen string */
char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */
char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */
char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
} comp1_t;
@ -3645,9 +3645,9 @@ static int test_comp_vlen_strings(const char *fname1, const char *grp_name, int
char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */
char *str_vlen_repeat; /* vlen string */
char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */
char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
} comp2_t;
@ -3660,8 +3660,8 @@ static int test_comp_vlen_strings(const char *fname1, const char *grp_name, int
char *str_vlen_repeat; /* vlen string */
char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
} comp3_t;
/* compound4 datatype */
@ -3672,16 +3672,16 @@ static int test_comp_vlen_strings(const char *fname1, const char *grp_name, int
char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */
char *str_vlen_repeat; /* vlen string */
char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
} comp4_t;
/* compound5 datatype */
typedef struct comp5_t
{
char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char *str_vlen; /* vlen string */
@ -3693,9 +3693,9 @@ static int test_comp_vlen_strings(const char *fname1, const char *grp_name, int
/* compound6 datatype */
typedef struct comp6_t
{
char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char *str_vlen; /* vlen string */
char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */
@ -3708,8 +3708,8 @@ static int test_comp_vlen_strings(const char *fname1, const char *grp_name, int
{
char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */
char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */
char *str_vlen; /* vlen string */
@ -3720,9 +3720,9 @@ static int test_comp_vlen_strings(const char *fname1, const char *grp_name, int
typedef struct comp8_t
{
char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */
char *str_vlen; /* vlen string */
char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */
@ -3734,8 +3734,8 @@ static int test_comp_vlen_strings(const char *fname1, const char *grp_name, int
{
char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */
char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */
const char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */
char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */
int int_data1;
hobj_ref_t objref1; /* reference */
@ -3768,7 +3768,7 @@ static int test_comp_vlen_strings(const char *fname1, const char *grp_name, int
hid_t sid_vlen_str_array=0; /* dataspace ID */
hid_t tid_vlen_str_array_pre=0; /* datatype ID */
hid_t tid_vlen_str_array=0; /* datatype ID */
char *vlen_str_array_buf[VLEN_STR_ARRY_DIM]= {
const char *vlen_str_array_buf[VLEN_STR_ARRY_DIM]= {
"1 - Variable length string Array",
"2 - Testing variable length string array in compound type",
"3 - Four score and seven\n years ago our forefathers brought forth on this continent a new nation,"
@ -5343,7 +5343,6 @@ static hid_t mkstr(int size, H5T_str_t pad) {
*-------------------------------------------------------------------------*/
static void test_objs_strings(const char *fname1, const char *fname2)
{
herr_t status = SUCCEED;
hid_t fid1=0;
hid_t fid2=0;
hid_t dataset=0;
@ -5398,7 +5397,6 @@ static void test_objs_strings(const char *fname1, const char *fname2)
if (fid1 < 0)
{
fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1);
status = FAIL;
goto out;
}
@ -5407,7 +5405,6 @@ static void test_objs_strings(const char *fname1, const char *fname2)
if (fid2 < 0)
{
fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2);
status = FAIL;
goto out;
}

View File

@ -3479,7 +3479,7 @@ static void gent_array8(void)
unsigned int i;
/* Allocate data buffer */
wdata = HDmalloc(F64_DIM1 * sizeof(int));
wdata = (int *)HDmalloc(F64_DIM1 * sizeof(int));
HDassert(wdata);
/*
@ -10318,7 +10318,6 @@ static void gent_udfilter(void)
hid_t dcpl; /* dataset creation property list */
hid_t dsid; /* dataset ID */
hid_t sid; /* dataspace ID */
hid_t tid; /* datatype ID */
hsize_t dims1[RANK] = {DIM1,DIM2};
hsize_t chunk_dims[RANK] = {CDIM1,CDIM2};

View File

@ -266,7 +266,7 @@ int main (void)
fname = H5REPACK_FSPACE_FNAMES[j];
if(h5repack_init(&pack_options, 0, FALSE) < 0)
GOERROR;
pack_options.fs_strategy = -1; /* "FSM_AGGR" specified via -S FSM_AGGR */
pack_options.fs_strategy = (H5F_fspace_strategy_t)-1; /* "FSM_AGGR" specified via -S FSM_AGGR */
pack_options.fs_threshold = -1; /* "0" specified via -T 0 */
if(h5repack(fname, FSPACE_OUT, &pack_options) < 0)
GOERROR;