Am 2018-06-22 um 09:51 schrieb Rainer Orth:
Hi Franz,
No idea about possible problems, but isn't it usually recommended to use
either _FILE_OFFSET_BITS=64 or _LARGEFILE{64}_SOURCE=1, not both at the
same time?
quite the contrary: for regular largefile support, you're supposed to
use `getconf LFS_CFLAGS', i.e. -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64, while `getconf LFS64_CFLAGS'
(-D_LARGEFILE64_SOURCE) enables the transitional largefile interfaces
(e.g. explicit stat64 calls and struct stat64 instead of making stat and
struct stat largefile-aware).
For all the gory details, see the lfcompile(7), lfcompile64(7), and
lf64(7) man pages:
https://docs.oracle.com/cd/E88353_01/html/E37853/index.html
Rainer
Hi Rainer,
so you are supposed to use "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64",
but at least a quick glance at the Sol10 headers shows that the
additional -D_LARGEFILE_SOURCE only makes a difference for
fseeko/ftello. That still doesn't explain -D_LARGEFILE64_SOURCE, does
libstdc++ really need to use _LARGEFILE64_SOURCE functions?
Re-reading lfcompile(7) again shows that you can use either
"-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" (for portable applications)
or only "-D_FILE_OFFSET_BITS=64". But in the GCC case we only need it
for C++/libstdc++ so it seems "-D_FILE_OFFSET_BITS=64" should be enough.
The rest is up to the users application, or?
My guess is that without defining _LARGEFILE_SOURCE and
_LARGEFILE64_SOURCE the configure check in libstdc++-v3/acinclude.m4
just won't define _GLIBCXX_USE_LFS and everything will fall in place.
This would leave HPUX as the last user of _GLIBCXX_USE_LFS.
Franz