* Remove unused HD macros
The library prefixes most C and POSIX API calls with 'HD'. We are
going to start removing these so the code looks like normal C.
This PR removes most of the unused HD markup macros.
* Replace ntohl/ntohs
src/H5system.c:1293:13: warning: Dereference of null pointer
[clang-analyzer-core.NullDereference]
src/H5trace.c:4048:17: warning: Passed-by-value struct argument contains
uninitialized data (e.g., via the field chain: 'initial.user')
[clang-analyzer-core.CallAndMessage]
Removes H5detect and H5make_libsettings from the build and replaces
their functionality with things that don't affect cross-compiling.
H5detect --> floating-point types are now detected on library load
H5make_libsettings --> Moved functionality to a new H5build_settings.c template file
Several options and public symbols that were provided to paper
over non-standard long double conversions between signed/unsigned
long and long long values were removed from the Autotools and
CMake. These were added twenty years ago, when C99 and 64-bit
platforms were less common and are no longer needed.
Autotools:
--enable-dconv-accuracy
CMake:
HDF5_WANT_DATA_ACCURACY
H5pubconf.h symbols:
H5_WANT_DATA_ACCURACY
H5_LDOUBLE_TO_LONG_SPECIAL
H5_LONG_TO_LDOUBLE_SPECIAL
H5_LDOUBLE_TO_LLONG_ACCURATE
H5_LLONG_TO_LDOUBLE_CORRECT
H5_DISABLE_SOME_LDOUBLE_CONV
The C99 standard says that a long long is 8+ bytes. This change
removes a few parts of the code where we assume that a long long
could be less than that.
When copying an empty enum type (including implicitly, as when an enum
is contained in a compound type), the library would allocate 0-size
blocks of memory and attempt to memcpy 0 bytes from NULL pointers, which
are undefined behavior. In debug mode, the library would raise an
assert in H5MM.
The library now avoid undefined memory operations when copying empty
enum types and a test that copies empty enums has been added.
Adds some H5pubconf.h entries and cpp flags for building on MinGW
using the Autotools.
Also updates the Windows-related H5pubconf.h comments to be more
accurate in CMake.
* HDFCompilerFlags: mask -fstdarg-opt with clang-tidy
`clang-tidy` doesn't understand this `-f` flag and errors out.
* Add helpful comment
---------
Co-authored-by: Sean McBride <sean@rogue-research.com>
In both CMake and the Autotools, remove checks for:
* lstat
* srandom
In CMake, remove checks for:
* string.h
* strings.h
* stdlib.h
We assume these exist. Configure will always check for them (we don't
add any special code to do this), but there's no reason to duplicate
that nonsense in CMake.
Microsoft has redefined most POSIX API calls with a leading underscore
in order to strictly comply with C99. Nobody else cares about this and
we define _CRT_NONSTDC_NO_WARNINGS in CMake Windows builds to suppress
their warnings.
Moves the file-independent encode and decode macros to a new
H5encode.h header that is itself included in H5private.h.
Removes UINT64ENCODE_VARLEN and UINT64DECODE_VARLEN, which
were unused.
Fixes include statements in files where H5VMprivate.h and
H5MMprivate.h were included via H5Fprivate.h.
* CMake: (fix) Szip / libaec filter
- Fixed the cmake configuration for the filter Szip / libaec.
Now, the decoding of this filter is properly configured and
included in the HDF5 library.
* CMake: (fix) Zlib filter
- Improved the cmake configuration for the filter zlib.
Several macros for handling haddr_t values exist in H5Fprivate.h
and have H5F prefixes, even though they have nothing to do with
a particular file (e.g., H5F_addr_lt()).
These macros have been moved to H5private.h and renamed to have
an H5 prefix.
Affected macros:
H5F_addr_overflow
H5F_addr_defined
H5F_addr_eq
H5F_addr_ne
H5F_addr_lt
H5F_addr_le
H5F_addr_gt
H5F_addr_ge
H5F_addr_cmp
H5F_addr_overlap
H5F_addr_pow2 was unused and removed instead of converted.
If a user buffer is misaligned in the type conversion code, memcpy
could fail if the call is SSE-optimized by the compiler. This change
adds uint8_t * casts so the compiler won't make optimistic assumptions
about buffer alignment.