This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: d_off field in struct dirent and 32-on-64 emulation


On Wed, Jan 02, 2019 at 11:16:37AM -0200, Adhemerval Zanella wrote:
> On 31/12/2018 15:03, Joseph Myers wrote:
> > On Fri, 28 Dec 2018, Adhemerval Zanella wrote:
> > 
> >>>> Currently we only have nios2 and csky (unfortunately).  But since generic 
> >>>> definition for off_t and off64_t still assumes non-LFS support, all new
> >>>> 32-bits ports potentially might carry the issue.
> >>>
> >>> For csky, we could still change the type of the non-standard d_off
> >>> field to long long int.  This way, only telldir would have to fail
> >>> when truncation is necessary, as mentioned below:
> >>
> >> I think it makes no sense to continue making non-LFS as default for
> >> newer 32 bits ports, the support will be emulated with LFS syscalls.
> > 
> > Any new 32-bit port that uses 64-bit time_t will also use 64-bit offsets 
> > (because we don't have any glibc configurations that support the 
> > combination of 64-bit time with 32-bit offsets, and don't want to add 
> > them).  That should apply for RISC-V 32-bit at least.
> > 
> > I've filed <https://sourceware.org/bugzilla/show_bug.cgi?id=24050> for 
> > missing overflow checks in telldir when the default off_t is wider than 
> > long int (currently just applies to x32; not sure why we don't see glibc 
> > test failures on x32 resulting from the quiet truncation, as the issue is 
> > certainly there in the source code).
> > 
> 
> What about csky? Should we still make it use 32-bit offsets as default
> configuration even when kernel does not support it natively?

I'm still not clear what's the problem of using getdent64 on csky, seems
getdent64 may fail when LFS is used. I haven't seen any our customer use
LFS before, so no one will be affected by this issue at present? 
AFAICS these posix interfaces on c-sky alway get problem when large d_off
is given, by extending d_off field inside struct dirent, the return value
and filepos field inside DIR are always 32-bit for C-SKY, readdir stills
fail due to the truncation overflow check form d_off to filepos.
Although I got the C-SKY port without 64-bit support into 2.29 for some company
concern, is it still posible to add 64-bit off_t and 64-bit time_t support
either break the compatibility(we can ensure our customer will not use
incompat binarys) or use some configurations? Seems lots of potential problems
can be solved with the 64 bit support.

Thanks
Mao Han


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]