Thread (4 messages) 4 messages, 3 authors, 2019-01-02

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

From: Adhemerval Zanella <hidden>
Date: 2019-01-02 13:16:44
Also in: linux-ext4, linux-fsdevel, lkml, qemu-devel

Possibly related (same subject, not in this thread)


On 31/12/2018 15:03, Joseph Myers wrote:
On Fri, 28 Dec 2018, Adhemerval Zanella wrote:
quoted
quoted
quoted
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?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help