[PATCH] x86_64/stat64: define struct stat64 as struct stat

Markos Chandras markos.chandras at gmail.com
Wed Oct 10 13:19:30 UTC 2012


On Wed, Oct 10, 2012 at 2:09 PM, Dmitry V. Levin <ldv at altlinux.org> wrote:
> On Wed, Oct 10, 2012 at 02:03:57PM +0100, Markos Chandras wrote:
>> On Wed, Oct 10, 2012 at 1:55 PM, Dmitry V. Levin <ldv at altlinux.org> wrote:
>> > On Wed, Oct 10, 2012 at 01:48:02PM +0100, Markos Chandras wrote:
>> >> On Wed, Oct 10, 2012 at 1:35 PM, Dmitry V. Levin <ldv at altlinux.org> wrote:
>> >> > On Wed, Oct 10, 2012 at 12:59:43PM +0100, Markos Chandras wrote:
>> >> >> From: Markos Chandras <markos.chandras at imgtec.com>
>> >> >>
>> >> >> x86_64 does not define a struct stat64 in asm/stat.h. It uses
>> >> >> struct stat instead.
>> >> >>
>> >> >> This fixes a compilation problem when LFS is used
>> >> >>
>> >> >> file.c:1073:16: error: storage size of ‘statbuf’ isn’t known
>> >> >
>> >> > It means that, according to m4/long_long.m4, sizeof(off_t) > sizeof(long)
>> >> > on this x86_64 system.  How could that be possible?
>> >>
>> >> Hi Dmitry,
>> >>
>> >> I am not sure what you are asking. This is a buildroot system
>> >> configured for x86_64.
>> >>
>> >> The build log is here:
>> >> http://autobuild.buildroot.net/results/bb66a3a06d26f558e1c4c0593bb68e7af1d82398/build-end.log
>> >
>> > It mentions strace 4.5.20 that was released 2.5 years ago.
>> > Please try to build strace 4.7 instead.
>>
>> The same problem happens with 4.7 and the patch that I submitted is
>> based on this version of strace
>
> Then the original question stands: how could it happen that
> HAVE_LONG_LONG_OFF_T is defined on your x86_64 system?
>
>
> --
> ldv
>
I don't think it is defined, because if it was then this would have worked:

(file.c line 186)

#if HAVE_LONG_LONG_OFF_T
/*
 * Ugly hacks for systems that have typedef long long off_t
 */
# define stat64 stat
# define HAVE_STAT64 1  /* Ugly hack */
# define sys_stat64 sys_stat
# define sys_fstat64    sys_fstat
# define sys_lstat64    sys_lstat
# define sys_truncate64 sys_truncate
# define sys_ftruncate64    sys_ftruncate
#endif

So this would have defined stat64 to stat in this box

Also looking at config.log I see this:

configure:6156: checking for long long off_t
configure:6168:
/home/me/buildroot/output/host/usr/bin/x86_64-buildroot-linux-uclibc-gcc
-c  -pipe -Os  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64  conftest.c >&5
conftest.c:44:6: error: size of array 'a' is negative
configure:6168: $? = 1

-- 
Regards,
Markos




More information about the Strace-devel mailing list