On Thu, May 9, 2019 at 11:34 AM Max Filippov <jcmvbkbc(a)gmail.com> wrote:
I've tried to run uclibc-ng tests on xtensa in a
buildroot-built rootfs
and found misc/tst-preadvwritev failing with the following message:
first buffer from first preadv different than expected
Digging deeper into it I've found that the test is built with the following
definition in the command line: -D_FILE_OFFSET_BITS=64,
due to the following line in the uclibc-ng-test.mk:
UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)"
but uclibc-ng itself does not have -D_FILE_OFFSET_BITS=64,
because of the following definition in the uclibc-ng.mk:
UCLIBC_EXTRA_CFLAGS="$(TARGET_ABI)"
uclibc-ng defaults to 32-bit off_t type then.
I'm not sure what's broken here, buildroot or uclibc-ng. Ideas?
Ok, I see something definitely strange in the uclibc-ng:
ublibc-ng does not honor -D_FILE_OFFSET_BITS=64
when it's passed to it in the make command, because
the following fragment of the include/features.h that defines
__USE_FILE_OFFSET64 based on the value of
_FILE_OFFSET_BITS
#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64
# define __USE_FILE_OFFSET64 1
#endif
is neutralized by the following fragment at the end of the same file:
#ifdef _LIBC
# undef _FILE_OFFSET_BITS
# undef __USE_FILE_OFFSET64
# include <libc-internal.h>
#endif
--
Thanks.
-- Max