It took some time to figure out, but it wasn't a configuration issue.
At least, not on my part - it turns out that the "j" printf/etc length
is used in 40 places in the code.  This is a fairly recent introduction
to the c library, and is not supported under Solaris 8 (it is under
Solaris 10).  gcc 4.4.0 recognizes it, though, so doesn't complain.

Unfortunately, the library specifies "If a length modifier appears with
any conversion specifier other than as specified above, the behavior is
undefined."  In this case, writing with it resulted in 0 being written,
and reading with it failed.  So it was very annoying to track down.

Changing all the "j" lengths to "ll" (and recompiling) solved the problem.

This is likely an issue for any machine whose libc does not support the
"j" length.

Reply via email to