Re: [RFC v6 07/23] RISC-V: Use 64-bit time_t and off_t for RV32 and RV64

Joseph Myers
2020-02-12T01:31:12Z

On Tue, 11 Feb 2020, Alistair Francis wrote:

> > > diff --git a/sysdeps/unix/sysv/linux/riscv/bits/typesizes.h b/sysdeps/unix/sysv/linux/riscv/bits/typesizes.h
> > > new file mode 100644
> > > index 0000000000..0da3bdeb5d
> > > --- /dev/null
> > > +++ b/sysdeps/unix/sysv/linux/riscv/bits/typesizes.h
> >
> > I was hoping newer arches could simply use the asm-generic one ?
>
> We need to specify that RV32 uses a 64-bit time_t. The generic ones
> don't do that for 32-bit arches.

Since it seems we'd like future 32-bit ports of glibc to use 64-bit time
and offsets, we should make that as easy as possible.

That is, you need an RISC-V-specific bits/timesize.h. But you shouldn't
need an RISC-V-specific bits/typesizes.h - rather, make the linux/generic
one do the right thing for __TIME_T_TYPE based on bits/timesize.h. And
have some other header that 32-bit linux/generic ports can use to say
whether they use the 64-bit offset/stat/statfs interface, that
bits/typesizes.h can use together with its existing __LP64__ check, and
make the definitions of __OFF_T_TYPE etc. check that as well, and then you
shouldn't need an RISC-V-specific bits/typesizes.h - the RISC-V-specific
headers should be strictly minimal. (No architecture-specific
bits/time64.h headers should be needed in any case.)

At some point (or indeed now) we might flip the default for linux/generic
so the architectures needing an architecture-specific header are only the
older 32-bit linux/generic architectures that have support for 32-bit
times and offsets, and the newer ones with no such support don't need such
a header.

--
Joseph S. Myers
joseph@codesourcery.com