using _FILE_OFFSET_BITS=64 with a non-gcc compiler

Andreas Schwab schwab@suse.de
Mon Nov 12 17:21:00 GMT 2001


Bruno Haible <haible@ilog.fr> writes:

|> Here is a patch to that effect. But note that for 'stat', 'statfs', 'statvfs'
|> the #define approach doesn't work:
|>      struct stat buf;
|> would expand to
|>      struct (* (int (*) (const char *, struct stat *)) stat64) buf;
|> which gives a syntax error.
|> 
|> Therefore in these cases the 'static inline' approach is used. It is
|> namespace clean but has the slight drawback that &stat is not the
|> same in different compilation units

This will break find.  It uses &stat in different compilation units and
depends (rightly) on its uniqueness.  It's a basic property of function
addresses mandated by ISO C.

|> - but this drawback is already present in <sys/stat.h> when using GNU C.

No, with GNU C this works correctly, &stat resolves to a function in
libc_noshared.a, due to the use of extern inline.

Andreas.

-- 
Andreas Schwab                                  "And now for something
Andreas.Schwab@suse.de				completely different."
SuSE Labs, SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5



More information about the Libc-alpha mailing list