this error
home/hdftest/snapshots-hdf5/current/tools/lib/h5tools_ref.c:126: undefined reference to `d_status'
happens because the original developer of h5tools_ref.c declared these 2 variables in that source file
extern char *progname;
extern int d_status;
this means that all programs that use this source file (typically all tools) will have to define these 2 variables, even if they are *not* used.
examples
const char *progname = "h5jam";
int d_status = EXIT_SUCCESS;
"progname" is usually used to print the program name in the usage, and "d_status" is just a return value of the tool, usually.
I was wondering about removing these 2 declarations from h5tools_ref.c
extern char *progname;
extern int d_status;
and define those variables on each tool if they are only needed (it seems to me that only h5ls and h5dump actually "need" them)
tested: smirom parallel
Remove another call to H5E_clear_stack() from within the library.
Clean up lots of compiler warnings.
Tested on:
Mac OS X/32 10.5.6 (amazon)
(followup on other platforms forthcoming)
Finish deprecating last H5G symbol (H5G_obj_t) - yay!
Lots of misc. library fixes to remove confusion between links and
objects. The tools could still use another pass, to remove h5trav_type_t type
and make the correct distinction between links & objects.
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
AIX/32 5.3 (copper) w/FORTRAN, w/parallel, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Tested platform:
Kagiso only since it is only a comment block change. If it works in one
machine, it should work in all, I hope. Still need to check the parallel
build on copper.
Code cleanup
Description:
Check in some of the code cleanups from working on the external link
support. (This doesn't include any of the external link features)
Platforms tested:
FreeBSD 4.11 (sleipnir)
Mac OSX.4 (amazon)
Linux 2.4
Bug fix
Description:
ph5diff had been hanging in Tflops. Found out that vsnprintf ph5diff
uses was a local coded that did not limit printing according to the size
argument. That resulted in buffer overflow and other problems.
Solution:
Added some sort of size checking in the home-grown vsnprintf and
had ph5diff checked for error return of vsnprintf. Leon also
revamped the ph5diff manager's way of handling communications with
the workers. That eliminated all but the last case of hanging.
Platforms tested:
Tflops.
Misc. update:
Code cleanup
Description:
Trim trailing whitespace, which is making 'diff'ing the two branches
difficult.
Solution:
Ran this script in each directory:
foreach f (*.[ch] *.cpp)
sed 's/[[:blank:]]*$//' $f > sed.out && mv sed.out $f
end
Platforms tested:
FreeBSD 4.11 (sleipnir)
Too minor to require h5committest
Bug fix for parallel case for new "Some objects were not comparable" patch to h5diff.
Description:
The parallel h5diff wouldn't print out "Some objects were not comparable" because the worker
tasks were not communicating the not_cmp flag of the diff_opt_t struct back to the manager, who ultimately
prints everything.
Also, some miscellaneous fixes for error printing. Some errors were printed out with printf instead of fprintf(stderr,...).
In parallel environments, this can result in output getting lost.
Solution:
Had the worker tasks pass along the not_cmp flag to the manager when they sent along
the number of differences they found.
Platforms tested:
heping (pp), sol (pp)
Misc. update:
Purpose:
Bug fix.
Description:
ph5diff fails on modi4 due to the way snprintf works on IRIX.
Solution:
The C99 standard says that, if there isn't enough room in the string,
snprintf should return the number of characters that
would have been written to the output string if there were enough room.
The snprintf on modi4 would return the number of characters that is was able to write
succesfully to the string if space ran out. The ph5diff logic that checks if
the output buffer was full did not handle this sort of return value correctly.
Used VSNPRINTF_WORKS from configure test to check how snprintf works and do
the logic accordingly.
Platforms tested:
modi4
Misc. update:
Bug Fixes
Description:
Fixes for several bugs, including dumping of excess output to a temporary file, fix for printing
hsize_t datatype, and the long awaited fix for intermixed output.
Solution:
Fix 1: Overflow file
Previously, any output that a worker task made was buffered locally in memory, up to a point. Any
output beyond the size of the buffer (used to be 10k) was discarded. Now, the memory buffer size has been
changed to 1k and any output beyond this amount is sent a temporary file. This way, no output is lost
and memory usage is kept under control. The temporary file is deleted as soon as a worker task finishes
sending its contents to the manager.
Fix 2: hsize_t printing
Printing of the hsize_t datatype used to be handled by %Hu passed to HDfprintf. However, there is no corresponding HDvsnprintf that
is able to print hsize_t types. These are now printed with the aid of H5_PRINTF_LL_WIDTH.
Fix 3: Intermixed output fix
Intermixed output would occur on some machines (although I haven't seen it happen for a while) due to the unpredictability of the underlying network
and the speed at which various message would travel. This has been fixed by having all output send to the manager
for printing. The worker tasks no longer print the output themselves upon receipt of a token, but instead
send that data to the manager.
Platforms tested:
heping, eirene, tg-login (the only place that seems to still experience intermixed output every now and then)
Misc. update:
Bug fix.
Description:
MPI_LONG_LONG, which is not standard yet, was used to pass the
nubmer of differences found. This was needed because number of
differences is defined as type hsize_t which can be arbitary large
such that there is no MPI type that matches it. The value is passed
between processes as an array of bytes in order to be portable. But this
may not work in non-homogeneous MPI environments.
This fix was actually Leon's idea.
Platforms tested:
Tested in QSC in which this failed.
bug fix/new feature.
Description:
(committing changes made by Leon.)
ph5diff now is a real program by itself. It has its
own main (ph5diff_main.c).
Codes common to h5diff and ph5diff are in h5diff_common.c.
Removed the hack that hide failures from testh5diff.sh.
Platforms tested:
heping(serial, pp), sol (pp), copper(pp).
Misc. update: