statfs64 and !LFS

Dmitry V. Levin ldv at altlinux.org
Wed Oct 21 17:10:12 UTC 2009


On Wed, Oct 21, 2009 at 06:12:06PM +0200, Bernhard Reutner-Fischer wrote:
[...]
> 2009-10-14  Bernhard Reutner-Fischer  <rep.dot.nop at gmail.com>
> 
> 	* syscall.c (sys_truncate64, sys_ftruncate64, sys_getdents64,
> 	sys_statfs64, sys_fstatfs64): Define to their !LFS counterparts
> 	if largefilesupport is unavailable.

Here is the hunk we are talking about:

> --- a/syscall.c
> +++ b/syscall.c
> @@ -110,6 +110,18 @@
>  #define TP TRACE_PROCESS
>  #define TS TRACE_SIGNAL
>  
> +#ifndef HAVE_STAT64
> +/*
> + * Ugly hacks for systems that do not have LFS
> + */
> +
> +#define sys_truncate64  sys_truncate
> +#define sys_ftruncate64 sys_ftruncate
> +#define sys_getdents64  sys_getdents
> +#define sys_statfs64    sys_statfs
> +#define sys_fstatfs64   sys_fstatfs
> +#endif
> +
>  static const struct sysent sysent0[] = {
>  #include "syscallent.h"
>  };

That is, you suggest to rename these *64 parsers to their counterparts
when struct stat64 is not available.  But file.c defines these functions
with different conditions: sys_truncate64, sys_ftruncate64 and
sys_getdents64 symbols are defined iff _LFS64_LARGEFILE is true, and (with
your 1st patch applied) sys_statfs64 and sys_fstatfs64 symbols are defined
iff HAVE_STATFS64 is true.  With your patch applied, there would be an
inconsistency between conditions in these two files: if there is a system
where _LFS64_LARGEFILE or HAVE_STATFS64 is defined but HAVE_STAT64 is not
defined, strace will fail to link there due to undefined symbols.


-- 
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20091021/10cdb07d/attachment.bin>


More information about the Strace-devel mailing list