Laurent Vivier <laur...@vivier.eu> writes:
> Fix: > > TEST linux-test on i386 > .../tests/tcg/multiarch/linux-test.c:201: readdir > > readdir() calls getdents64() to have the list of the entries in a > directory, and getdents64() can return 64bit d_off values (with ext4, > for instance) that will not fit in the 32bit d_off field of the > readdir() dirent structure. > > To avoid that, use readdir64() to use a 64bit d_off field too. > > Signed-off-by: Laurent Vivier <laur...@vivier.eu> I guess the only remaining question is do we want to defend the other case or just say it's not supported and all binaries are expected to use modern-ish libcs with getdents64? Anyway: Reviewed-by: Alex Bennée <alex.ben...@linaro.org> I'm preparing a pull-req with a travis patch, would you like me to include this as well? > --- > tests/tcg/multiarch/linux-test.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tests/tcg/multiarch/linux-test.c > b/tests/tcg/multiarch/linux-test.c > index e80eccc0ce..fa4243fc04 100644 > --- a/tests/tcg/multiarch/linux-test.c > +++ b/tests/tcg/multiarch/linux-test.c > @@ -83,7 +83,7 @@ static void test_file(void) > struct utimbuf tbuf; > struct iovec vecs[2]; > DIR *dir; > - struct dirent *de; > + struct dirent64 *de; > /* TODO: make common tempdir creation for tcg tests */ > char template[] = "/tmp/linux-test-XXXXXX"; > char *tmpdir = mkdtemp(template); > @@ -186,7 +186,7 @@ static void test_file(void) > error("opendir"); > len = 0; > for(;;) { > - de = readdir(dir); > + de = readdir64(dir); > if (!de) > break; > if (strcmp(de->d_name, ".") != 0 && -- Alex Bennée