[svn-r1619] ./src/H5O.c [1.2, 1.3]

Fixed a read-uninitialized-memory error that resulted in the
	file containing small amounts (<8 bytes each) of uninitialized
	data. These padding areas (which are never read by hdf5) are
	initialized to zero now.

./MANIFEST
./src/H5Z.c
./src/H5Zdeflate.c			[NEW]
./src/H5Zprivate.h
./src/H5Zpublic.h
./src/Makefile.in
	The zlib filter was moved to a separate file but is still
	automatically defined.
This commit is contained in:
Robb Matzke 1999-08-30 14:59:37 -05:00
parent 27e31d9c26
commit 99d84a8f4c
9 changed files with 250 additions and 1720 deletions

View File

@ -323,6 +323,7 @@
./src/H5V.c
./src/H5Vprivate.h
./src/H5Z.c
./src/H5Zdeflate.c
./src/H5Zprivate.h
./src/H5Zpublic.h
./src/H5config.h.in

File diff suppressed because it is too large Load Diff

View File

@ -1285,7 +1285,6 @@ H5O_modify(H5G_entry_t *ent, const H5O_class_t *type, intn overwrite,
"object header message is too large (16k max)");
}
}
size = H5O_ALIGN(size);
idx = H5O_alloc(ent->file, oh, type, size);
if (idx < 0) {
HGOTO_ERROR(H5E_OHDR, H5E_CANTINIT, FAIL,
@ -1371,7 +1370,6 @@ H5O_touch_oh(H5F_t *f, H5O_t *oh, hbool_t force)
if (idx==oh->nmesgs) {
if (!force) HRETURN(SUCCEED); /*nothing to do*/
size = (H5O_MTIME->raw_size)(f, &now);
size = H5O_ALIGN(size);
if ((idx=H5O_alloc(f, oh, H5O_MTIME, size))<0) {
HRETURN_ERROR(H5E_OHDR, H5E_CANTINIT, FAIL,
"unable to allocate space for modification time "
@ -1571,7 +1569,7 @@ H5O_remove(H5G_entry_t *ent, const H5O_class_t *type, intn sequence)
*
* Purpose: Extends a chunk which hasn't been allocated on disk yet
* to make the chunk large enough to contain a message whose
* data size is at least SIZE bytes.
* data size is exactly SIZE bytes (SIZE need not be aligned).
*
* If the last message of the chunk is the null message, then
* that message will be extended with the chunk. Otherwise a
@ -1598,7 +1596,8 @@ static intn
H5O_alloc_extend_chunk(H5O_t *oh, intn chunkno, size_t size)
{
intn idx, i;
size_t delta, padding;
size_t delta, old_size;
size_t aligned_size = H5O_ALIGN(size);
uint8_t *old_addr;
FUNC_ENTER(H5O_alloc_extend_chunk, FAIL);
@ -1607,7 +1606,6 @@ H5O_alloc_extend_chunk(H5O_t *oh, intn chunkno, size_t size)
assert(oh);
assert(chunkno >= 0 && chunkno < oh->nchunks);
assert(size > 0);
assert (size==H5O_ALIGN (size));
if (H5F_addr_defined(oh->chunk[chunkno].addr)) {
HRETURN_ERROR(H5E_OHDR, H5E_NOSPACE, FAIL, "chunk is on disk");
@ -1619,7 +1617,7 @@ H5O_alloc_extend_chunk(H5O_t *oh, intn chunkno, size_t size)
(oh->mesg[idx].raw + oh->mesg[idx].raw_size ==
oh->chunk[chunkno].image + oh->chunk[chunkno].size)) {
delta = MAX (H5O_MIN_SIZE, size - oh->mesg[idx].raw_size);
delta = MAX (H5O_MIN_SIZE, aligned_size - oh->mesg[idx].raw_size);
assert (delta=H5O_ALIGN (delta));
oh->mesg[idx].dirty = TRUE;
oh->mesg[idx].raw_size += delta;
@ -1662,8 +1660,7 @@ H5O_alloc_extend_chunk(H5O_t *oh, intn chunkno, size_t size)
oh->alloc_nmesgs = (intn)na;
oh->mesg = x;
}
delta = MAX(H5O_MIN_SIZE, size+H5O_SIZEOF_MSGHDR(f));
padding = H5O_ALIGN(delta) - delta;
delta = MAX(H5O_MIN_SIZE, aligned_size+H5O_SIZEOF_MSGHDR(f));
delta = H5O_ALIGN(delta);
idx = oh->nmesgs++;
oh->mesg[idx].type = H5O_NULL;
@ -1676,6 +1673,7 @@ H5O_alloc_extend_chunk(H5O_t *oh, intn chunkno, size_t size)
oh->mesg[idx].chunkno = chunkno;
old_addr = oh->chunk[chunkno].image;
old_size = oh->chunk[chunkno].size;
oh->chunk[chunkno].size += delta;
oh->chunk[chunkno].image = H5MM_realloc(old_addr,
oh->chunk[chunkno].size);
@ -1683,8 +1681,8 @@ H5O_alloc_extend_chunk(H5O_t *oh, intn chunkno, size_t size)
HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL,
"memory allocation failed");
}
HDmemset(oh->chunk[chunkno].image+oh->chunk[chunkno].size-padding,
0, padding);
HDmemset(oh->chunk[chunkno].image+old_size, 0,
oh->chunk[chunkno].size - old_size);
/* adjust raw addresses for messages of this chunk */
if (old_addr != oh->chunk[chunkno].image) {
@ -1709,6 +1707,8 @@ H5O_alloc_extend_chunk(H5O_t *oh, intn chunkno, size_t size)
* message, then some message from another chunk is moved into
* this chunk to make room.
*
* SIZE need not be aligned.
*
* Return: Success: Index number of the null message for the
* new chunk. The null message will be at
* least SIZE bytes not counting the message
@ -1740,7 +1740,7 @@ H5O_alloc_new_chunk(H5F_t *f, H5O_t *oh, size_t size)
/* check args */
assert (oh);
assert (size > 0);
assert (size == H5O_ALIGN (size));
size = H5O_ALIGN(size);
/*
* Find the smallest null message that will hold an object
@ -1916,18 +1916,18 @@ H5O_alloc(H5F_t *f, H5O_t *oh, const H5O_class_t *type, size_t size)
intn chunkno;
intn idx;
intn null_idx;
size_t aligned_size = H5O_ALIGN(size);
FUNC_ENTER(H5O_alloc, FAIL);
/* check args */
assert (oh);
assert (type);
assert (size == H5O_ALIGN (size));
/* look for a null message which is large enough */
for (idx = 0; idx < oh->nmesgs; idx++) {
if (H5O_NULL_ID == oh->mesg[idx].type->id &&
oh->mesg[idx].raw_size >= size)
oh->mesg[idx].raw_size >= aligned_size)
break;
}
@ -1966,8 +1966,8 @@ H5O_alloc(H5F_t *f, H5O_t *oh, const H5O_class_t *type, size_t size)
}
/* do we need to split the null message? */
if (oh->mesg[idx].raw_size > size) {
assert(oh->mesg[idx].raw_size - size >= H5O_SIZEOF_MSGHDR(f));
if (oh->mesg[idx].raw_size > aligned_size) {
assert(oh->mesg[idx].raw_size - aligned_size >= H5O_SIZEOF_MSGHDR(f));
if (oh->nmesgs >= oh->alloc_nmesgs) {
int old_alloc=oh->alloc_nmesgs;
@ -1989,12 +1989,12 @@ H5O_alloc(H5F_t *f, H5O_t *oh, const H5O_class_t *type, size_t size)
oh->mesg[null_idx].dirty = TRUE;
oh->mesg[null_idx].native = NULL;
oh->mesg[null_idx].raw = oh->mesg[idx].raw +
size +
aligned_size +
H5O_SIZEOF_MSGHDR(f);
oh->mesg[null_idx].raw_size = oh->mesg[idx].raw_size -
(size + H5O_SIZEOF_MSGHDR(f));
(aligned_size + H5O_SIZEOF_MSGHDR(f));
oh->mesg[null_idx].chunkno = oh->mesg[idx].chunkno;
oh->mesg[idx].raw_size = size;
oh->mesg[idx].raw_size = aligned_size;
}
/* initialize the new message */

130
src/H5Z.c
View File

@ -13,10 +13,6 @@
#include <H5Oprivate.h>
#include <H5Zprivate.h>
#ifdef HAVE_ZLIB_H
# include <zlib.h>
#endif
/* Interface initialization */
#define PABLO_MASK H5Z_mask
#define INTERFACE_INIT H5Z_init_interface
@ -27,10 +23,6 @@ static size_t H5Z_table_alloc_g = 0;
static size_t H5Z_table_used_g = 0;
static H5Z_class_t *H5Z_table_g = NULL;
/* Predefined filters */
static size_t H5Z_filter_deflate(uintn flags, size_t cd_nelmts,
const uintn cd_values[], size_t nbytes,
size_t *buf_size, void **buf);
/*-------------------------------------------------------------------------
@ -479,125 +471,3 @@ H5Z_pipeline(H5F_t UNUSED *f, const H5O_pline_t *pline, uintn flags,
FUNC_LEAVE(SUCCEED);
}
/*-------------------------------------------------------------------------
* Function: H5Z_filter_deflate
*
* Purpose:
*
* Return: Success:
*
* Failure:
*
* Programmer: Robb Matzke
* Thursday, April 16, 1998
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
static size_t
H5Z_filter_deflate (uintn flags, size_t cd_nelmts, const uintn cd_values[],
size_t nbytes, size_t *buf_size, void **buf)
{
size_t ret_value = 0;
void *outbuf = NULL;
#if defined(HAVE_COMPRESS2)
int aggression = 6;
int status;
#endif
FUNC_ENTER (H5Z_filter_deflate, 0);
/* Check arguments */
if (cd_nelmts!=1 || cd_values[0]>9) {
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, 0,
"invalid deflate aggression level");
}
#if defined(HAVE_COMPRESS2)
aggression = cd_values[0];
if (flags & H5Z_FLAG_REVERSE) {
/* Input; uncompress */
z_stream z_strm;
size_t nalloc = *buf_size;
if (NULL==(outbuf = H5MM_malloc(nalloc))) {
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, 0,
"memory allocation failed for deflate uncompression");
}
HDmemset(&z_strm, 0, sizeof(z_strm));
z_strm.next_in = *buf;
z_strm.avail_in = nbytes;
z_strm.next_out = outbuf;
z_strm.avail_out = nalloc;
if (Z_OK!=inflateInit(&z_strm)) {
HGOTO_ERROR(H5E_PLINE, H5E_CANTINIT, 0, "inflateInit() failed");
}
while (1) {
status = inflate(&z_strm, Z_SYNC_FLUSH);
if (Z_STREAM_END==status) break; /*done*/
if (Z_OK!=status) {
inflateEnd(&z_strm);
HGOTO_ERROR(H5E_PLINE, H5E_CANTINIT, 0, "inflate() failed");
}
if (Z_OK==status && 0==z_strm.avail_out) {
nalloc *= 2;
if (NULL==(outbuf = H5MM_realloc(outbuf, nalloc))) {
inflateEnd(&z_strm);
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, 0,
"memory allocation failed for deflate "
"uncompression");
}
z_strm.next_out = (char*)outbuf + z_strm.total_out;
z_strm.avail_out = nalloc - z_strm.total_out;
}
}
H5MM_xfree(*buf);
*buf = outbuf;
outbuf = NULL;
*buf_size = nalloc;
ret_value = z_strm.total_out;
inflateEnd(&z_strm);
} else {
/*
* Output; compress but fail if the result would be larger than the
* input. The library doesn't provide in-place compression, so we
* must allocate a separate buffer for the result.
*/
const Bytef *z_src = (const Bytef*)(*buf);
Bytef *z_dst; /*destination buffer */
uLongf z_dst_nbytes = (uLongf)nbytes;
uLong z_src_nbytes = (uLong)nbytes;
if (NULL==(z_dst=outbuf=H5MM_malloc(nbytes))) {
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, 0,
"unable to allocate deflate destination buffer");
}
status = compress2 (z_dst, &z_dst_nbytes, z_src, z_src_nbytes,
aggression);
if (Z_BUF_ERROR==status) {
HGOTO_ERROR(H5E_PLINE, H5E_CANTINIT, 0, "overflow");
} else if (Z_MEM_ERROR==status) {
HGOTO_ERROR (H5E_PLINE, H5E_CANTINIT, 0, "deflate memory error");
} else if (Z_OK!=status) {
HGOTO_ERROR (H5E_PLINE, H5E_CANTINIT, 0, "deflate error");
} else {
H5MM_xfree(*buf);
*buf = outbuf;
outbuf = NULL;
*buf_size = nbytes;
ret_value = z_dst_nbytes;
}
}
#else
HGOTO_ERROR (H5E_PLINE, H5E_UNSUPPORTED, 0,
"hdf5 was not compiled with zlib-1.0.2 or better");
#endif
done:
H5MM_xfree(outbuf);
FUNC_LEAVE (ret_value);
}

144
src/H5Zdeflate.c Normal file
View File

@ -0,0 +1,144 @@
/*
* Copyright © 1999 NCSA
* All rights reserved.
*
* Programmer: Robb Matzke <matzke@llnl.gov>
* Friday, August 27, 1999
*/
#include <H5private.h>
#include <H5Eprivate.h>
#include <H5MMprivate.h>
#include <H5Zprivate.h>
#ifdef HAVE_ZLIB_H
# include <zlib.h>
#endif
/* Interface initialization */
#define PABLO_MASK H5Z_deflate_mask
#define INTERFACE_INIT NULL
static intn interface_initialize_g = 0;
/*-------------------------------------------------------------------------
* Function: H5Z_filter_deflate
*
* Purpose:
*
* Return: Success:
*
* Failure:
*
* Programmer: Robb Matzke
* Thursday, April 16, 1998
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
size_t
H5Z_filter_deflate (unsigned flags, size_t cd_nelmts,
const unsigned cd_values[], size_t nbytes,
size_t *buf_size, void **buf)
{
size_t ret_value = 0;
void *outbuf = NULL;
#if defined(HAVE_COMPRESS2)
int aggression = 6;
int status;
#endif
FUNC_ENTER (H5Z_filter_deflate, 0);
/* Check arguments */
if (cd_nelmts!=1 || cd_values[0]>9) {
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, 0,
"invalid deflate aggression level");
}
#if defined(HAVE_COMPRESS2)
aggression = cd_values[0];
if (flags & H5Z_FLAG_REVERSE) {
/* Input; uncompress */
z_stream z_strm;
size_t nalloc = *buf_size;
if (NULL==(outbuf = H5MM_malloc(nalloc))) {
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, 0,
"memory allocation failed for deflate uncompression");
}
HDmemset(&z_strm, 0, sizeof(z_strm));
z_strm.next_in = *buf;
z_strm.avail_in = nbytes;
z_strm.next_out = outbuf;
z_strm.avail_out = nalloc;
if (Z_OK!=inflateInit(&z_strm)) {
HGOTO_ERROR(H5E_PLINE, H5E_CANTINIT, 0, "inflateInit() failed");
}
while (1) {
status = inflate(&z_strm, Z_SYNC_FLUSH);
if (Z_STREAM_END==status) break; /*done*/
if (Z_OK!=status) {
inflateEnd(&z_strm);
HGOTO_ERROR(H5E_PLINE, H5E_CANTINIT, 0, "inflate() failed");
}
if (Z_OK==status && 0==z_strm.avail_out) {
nalloc *= 2;
if (NULL==(outbuf = H5MM_realloc(outbuf, nalloc))) {
inflateEnd(&z_strm);
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, 0,
"memory allocation failed for deflate "
"uncompression");
}
z_strm.next_out = (char*)outbuf + z_strm.total_out;
z_strm.avail_out = nalloc - z_strm.total_out;
}
}
H5MM_xfree(*buf);
*buf = outbuf;
outbuf = NULL;
*buf_size = nalloc;
ret_value = z_strm.total_out;
inflateEnd(&z_strm);
} else {
/*
* Output; compress but fail if the result would be larger than the
* input. The library doesn't provide in-place compression, so we
* must allocate a separate buffer for the result.
*/
const Bytef *z_src = (const Bytef*)(*buf);
Bytef *z_dst; /*destination buffer */
uLongf z_dst_nbytes = (uLongf)nbytes;
uLong z_src_nbytes = (uLong)nbytes;
if (NULL==(z_dst=outbuf=H5MM_malloc(nbytes))) {
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, 0,
"unable to allocate deflate destination buffer");
}
status = compress2 (z_dst, &z_dst_nbytes, z_src, z_src_nbytes,
aggression);
if (Z_BUF_ERROR==status) {
HGOTO_ERROR(H5E_PLINE, H5E_CANTINIT, 0, "overflow");
} else if (Z_MEM_ERROR==status) {
HGOTO_ERROR (H5E_PLINE, H5E_CANTINIT, 0, "deflate memory error");
} else if (Z_OK!=status) {
HGOTO_ERROR (H5E_PLINE, H5E_CANTINIT, 0, "deflate error");
} else {
H5MM_xfree(*buf);
*buf = outbuf;
outbuf = NULL;
*buf_size = nbytes;
ret_value = z_dst_nbytes;
}
}
#else
HGOTO_ERROR (H5E_PLINE, H5E_UNSUPPORTED, 0,
"hdf5 was not compiled with zlib-1.0.2 or better");
#endif
done:
H5MM_xfree(outbuf);
FUNC_LEAVE (ret_value);
}

View File

@ -9,6 +9,7 @@
#define _H5Zprivate_H
#include <H5Zpublic.h>
#include <H5Fprivate.h>
/*
* The filter table maps filter identification numbers to structs that

View File

@ -55,6 +55,10 @@ extern "C" {
__DLL__ herr_t H5Zregister(H5Z_filter_t id, const char *comment,
H5Z_func_t filter);
size_t H5Z_filter_deflate(unsigned flags, size_t cd_nelmts,
const unsigned cd_values[], size_t nbytes,
size_t *buf_size, void **buf);
#ifdef __cplusplus
}
#endif

View File

@ -27,7 +27,8 @@ LIB_SRC=H5.c H5A.c H5AC.c H5B.c H5D.c H5E.c H5F.c H5Farray.c H5Fistore.c \
H5Oattr.c H5Ocomp.c H5Ocont.c H5Odtype.c H5Oefl.c H5Ofill.c H5Olayout.c \
H5Omtime.c H5Oname.c H5Onull.c H5Osdspace.c H5Oshared.c H5Ostab.c H5P.c \
H5R.c H5RA.c H5S.c H5Sall.c H5Shyper.c H5Smpio.c H5Snone.c H5Spoint.c \
H5Sselect.c H5T.c H5Tbit.c H5Tconv.c H5Tinit.c H5Tvlen.c H5TB.c H5V.c H5Z.c
H5Sselect.c H5T.c H5Tbit.c H5Tconv.c H5Tinit.c H5Tvlen.c H5TB.c H5V.c \
H5Z.c H5Zdeflate.c
LIB_OBJ=$(LIB_SRC:.c=.lo)

View File

@ -28,6 +28,7 @@ h5test.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -64,6 +65,7 @@ big.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -100,6 +102,7 @@ bittests.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -134,7 +137,8 @@ chunk.lo: \
../src/H5FDcore.h \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h
../src/H5FDsec2.h \
../src/H5FDmulti.h
cmpd_dset.lo: \
cmpd_dset.c \
h5test.h \
@ -165,6 +169,7 @@ cmpd_dset.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -201,6 +206,7 @@ dsets.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -237,6 +243,7 @@ dtypes.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -273,6 +280,7 @@ extend.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -309,6 +317,7 @@ external.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -345,6 +354,7 @@ fillval.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -381,6 +391,7 @@ flush1.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -417,6 +428,7 @@ flush2.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -453,6 +465,7 @@ gheap.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -498,7 +511,8 @@ iopipe.lo: \
../src/H5FDcore.h \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h
../src/H5FDsec2.h \
../src/H5FDmulti.h
istore.lo: \
istore.c \
h5test.h \
@ -529,6 +543,7 @@ istore.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -574,6 +589,7 @@ lheap.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -613,6 +629,7 @@ links.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -649,6 +666,7 @@ mount.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -685,6 +703,7 @@ mtime.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -721,6 +740,7 @@ ohdr.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -761,7 +781,8 @@ overhead.lo: \
../src/H5FDcore.h \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h
../src/H5FDsec2.h \
../src/H5FDmulti.h
ragged.lo: \
ragged.c \
../src/hdf5.h \
@ -791,6 +812,7 @@ ragged.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h
stab.lo: \
stab.c \
@ -822,6 +844,7 @@ stab.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -1050,6 +1073,7 @@ unlink.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
@ -1086,42 +1110,6 @@ enum.lo: \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
h5test.lo: \
h5test.c \
h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
../src/H5api_adpt.h \
../src/H5Ipublic.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5FDpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
../src/H5HLpublic.h \
../src/H5MMpublic.h \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h \
../src/H5FDcore.h \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
@ -1129,388 +1117,3 @@ h5test.lo: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
big.lo: \
big.c \
h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
../src/H5api_adpt.h \
../src/H5Ipublic.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5FDpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
../src/H5HLpublic.h \
../src/H5MMpublic.h \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h \
../src/H5FDcore.h \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
cmpd_dset.lo: \
cmpd_dset.c \
h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
../src/H5api_adpt.h \
../src/H5Ipublic.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5FDpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
../src/H5HLpublic.h \
../src/H5MMpublic.h \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h \
../src/H5FDcore.h \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
dsets.lo: \
dsets.c \
h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
../src/H5api_adpt.h \
../src/H5Ipublic.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5FDpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
../src/H5HLpublic.h \
../src/H5MMpublic.h \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h \
../src/H5FDcore.h \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
dtypes.lo: \
dtypes.c \
h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
../src/H5api_adpt.h \
../src/H5Ipublic.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5FDpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
../src/H5HLpublic.h \
../src/H5MMpublic.h \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h \
../src/H5FDcore.h \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
extend.lo: \
extend.c \
h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
../src/H5api_adpt.h \
../src/H5Ipublic.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5FDpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
../src/H5HLpublic.h \
../src/H5MMpublic.h \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h \
../src/H5FDcore.h \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
external.lo: \
external.c \
h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
../src/H5api_adpt.h \
../src/H5Ipublic.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5FDpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
../src/H5HLpublic.h \
../src/H5MMpublic.h \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h \
../src/H5FDcore.h \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
tfile.lo: \
tfile.c \
testhdf5.h \
../src/H5private.h \
../src/H5public.h \
../src/H5config.h \
../src/H5api_adpt.h \
../src/H5Eprivate.h \
../src/H5Epublic.h \
../src/H5Ipublic.h \
../src/H5Bprivate.h \
../src/H5Bpublic.h \
../src/H5Fprivate.h \
../src/H5Fpublic.h \
../src/H5FDpublic.h \
../src/H5MMpublic.h \
../src/H5Pprivate.h \
../src/H5Ppublic.h
tselect.lo: \
tselect.c \
testhdf5.h \
../src/H5private.h \
../src/H5public.h \
../src/H5config.h \
../src/H5api_adpt.h \
../src/H5Eprivate.h \
../src/H5Epublic.h \
../src/H5Ipublic.h \
../src/hdf5.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
../src/H5Fpublic.h \
../src/H5FDpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
../src/H5HLpublic.h \
../src/H5MMpublic.h \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h \
../src/H5FDcore.h \
../src/H5FDfamily.h
tvltypes.lo: \
tvltypes.c \
testhdf5.h \
../src/H5private.h \
../src/H5public.h \
../src/H5config.h \
../src/H5api_adpt.h \
../src/H5Eprivate.h \
../src/H5Epublic.h \
../src/H5Ipublic.h \
../src/hdf5.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
../src/H5Fpublic.h \
../src/H5FDpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
../src/H5HLpublic.h \
../src/H5MMpublic.h \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h \
../src/H5FDcore.h \
../src/H5FDfamily.h
h5test.lo: \
h5test.c \
h5test.h \
../src/hdf5.h \
../src/H5public.h \
../src/H5config.h \
../src/H5api_adpt.h \
../src/H5Ipublic.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
../src/H5Epublic.h \
../src/H5Fpublic.h \
../src/H5FDpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
../src/H5HLpublic.h \
../src/H5MMpublic.h \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h \
../src/H5FDcore.h \
../src/H5FDfamily.h \
../src/H5FDmpio.h \
../src/H5FDsec2.h \
../src/H5FDmulti.h \
../src/H5private.h \
../src/H5Tpkg.h \
../src/H5HGprivate.h \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
tfile.lo: \
tfile.c \
testhdf5.h \
../src/H5private.h \
../src/H5public.h \
../src/H5config.h \
../src/H5api_adpt.h \
../src/H5Eprivate.h \
../src/H5Epublic.h \
../src/H5Ipublic.h \
../src/H5Bprivate.h \
../src/H5Bpublic.h \
../src/H5Fprivate.h \
../src/H5Fpublic.h \
../src/H5FDpublic.h \
../src/H5MMpublic.h \
../src/H5Pprivate.h \
../src/H5Ppublic.h
tvltypes.lo: \
tvltypes.c \
testhdf5.h \
../src/H5private.h \
../src/H5public.h \
../src/H5config.h \
../src/H5api_adpt.h \
../src/H5Eprivate.h \
../src/H5Epublic.h \
../src/H5Ipublic.h \
../src/hdf5.h \
../src/H5Apublic.h \
../src/H5ACpublic.h \
../src/H5Bpublic.h \
../src/H5Dpublic.h \
../src/H5Fpublic.h \
../src/H5FDpublic.h \
../src/H5Gpublic.h \
../src/H5HGpublic.h \
../src/H5HLpublic.h \
../src/H5MMpublic.h \
../src/H5Opublic.h \
../src/H5Ppublic.h \
../src/H5Zpublic.h \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h \
../src/H5FDcore.h \
../src/H5FDfamily.h