This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
Re: [PATCH] Make st_*tim visible in stat for POSIX.1-2008
- From: "Dionna Amalie Glaze via newlib" <newlib at sourceware dot org>
- To: newlib at sourceware dot org
- Date: Wed, 14 Aug 2019 11:44:46 -0700
- Subject: Re: [PATCH] Make st_*tim visible in stat for POSIX.1-2008
- References: <CAAH4kHZdBrhCYW3R-MLX0nkp=NTcvT2PD-6AmeTm1t-D-asesw@mail.gmail.com> <CAF9ehCUKqiVHVf=rmud=yxF69-1zfa3-jNaR1f-3MGhx0vE=xg@mail.gmail.com> <20190814084057.GW11632@calimero.vinschen.de>
- Reply-to: Dionna Amalie Glaze <dionnaglaze at google dot com>
The timestamps are defined for non-rtems targets, it's just not in the
patch. The #else shows that they are defined as st_{a,m,c}time instead of
st_{a,m,c}tim with later #defines for st_([amc])time as st_\1tim.tv_sec.
This patch is just about having both field names available: st_{a,m,c}tim
and st_{a,m,c}time. It's a weird compatibility issue I'm hitting.
On Wed, Aug 14, 2019 at 1:41 AM Corinna Vinschen <vinschen@redhat.com>
wrote:
> On Aug 13 13:46, Joel Sherrill wrote:
> > On Tue, Aug 13, 2019 at 1:30 PM Dionna Amalie Glaze via newlib <
> > newlib@sourceware.org> wrote:
> >
> > > The st_{a,c,m}tim fields are needed for POSIX.1-2008, not just RTEMS.
> > >
> > > Signed-off-by: Dionna Glaze <dionnaglaze@google.com>
> > > ---
> > > newlib/libc/include/sys/stat.h | 6 ++++--
> > > 1 file changed, 4 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/newlib/libc/include/sys/stat.h
> > > b/newlib/libc/include/sys/stat.h
> > > index eee98db64..052ef5a66 100644
> > > --- a/newlib/libc/include/sys/stat.h
> > > +++ b/newlib/libc/include/sys/stat.h
> > > @@ -34,10 +34,12 @@ struct stat
> > > gid_t st_gid;
> > > dev_t st_rdev;
> > > off_t st_size;
> > > -#if defined(__rtems__)
> > > +#if defined(__USE_MISC) || __POSIX_VISIBLE >= 200809
> > > struct timespec st_atim;
> > > struct timespec st_mtim;
> > > struct timespec st_ctim;
> > > +#endif
> > >
> >
> > If I am reading this change correctly, this is breakage for RTEMS. Both
> of
> > those
> > terms are defined as a consequence of user provided defines. If the user
> > application
> > and RTEMS are not compiled with the same options, the fields in the
> > structure will
> > not agree and these below will be overlaid on the time fields.
> >
> > Most of the newlib targets are single address space so changing the
> fields
> > in
> > the structure based on user provided conditionals is going to introduce
> > breakage.
> >
> > Perhaps adding a new define to sys/config.h so the fields are always
> there
> > for
> > the targets that support them. I couldn't find any example that wasn't
> > based on
> > a hard-coded always on value in either sys/config.h or sys/features.h.
> Maybe
> > someone else has another idea.
>
> I'm not sure why the timestamps are not defined for non-rtems
> targets but I guess it's all about size again. Don't we have
> an already existing definition for small targets we can use here?
> _REENT_SMALL or something like that?
>
>
> Corinna
>
> --
> Corinna Vinschen
> Cygwin Maintainer
> Red Hat
>
--
-Dionna Glaze, PhD (she/her)