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]

[PING][PATCH] Warn about using _ino_t without -D_FILE_OFFSET_BITS=64.


ping
On Mon, Mar 17, 2014 at 06:44:52PM +0100, OndÅej BÃlka wrote:
> On Tue, Mar 11, 2014 at 06:51:55AM -0400, Mike Frysinger wrote:
> > On Wed 05 Mar 2014 10:13:31 OndÅej BÃlka wrote:
> > > On Thu, Feb 27, 2014 at 09:45:37AM -0800, Paul Eggert wrote:
> > > > Squashing an inode that way has a small chance of introducing what
> > > > could be a serious bug.  If glibc is going to squash them, it should
> > > > do so reliably, by maintaining a table of all the inodes it's ever
> > > > seen and making sure there are no collisions.
> > > > 
> > > > Why bother to squash them at all, though?  Programs that care about
> > > > files should be compiled with _FILE_OFFSET_BITS defined to 64.  If
> > > > we're worried about programs that don't define _FILE_OFFSET_BITS, we
> > > > could change glibc to default to _FILE_OFFSET_BITS=64; that's a
> > > > better long-term solution anyway.
> > > 
> > > Changing default would be better. I dig while how to do it and can not
> > > find a nonugly solution. How should we do this?
> > 
> > isn't it simply:
> > 
> > --- a/include/features.h
> > +++ b/include/features.h
> > @@ -303,7 +303,7 @@
> >  # define __USE_LARGEFILE64	1
> >  #endif
> >  
> > -#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64
> > +#if !defined _FILE_OFFSET_BITS || _FILE_OFFSET_BITS == 64
> >  # define __USE_FILE_OFFSET64	1
> >  #endif
> >  
> > 
> > the glibc source files themselves seem to expect default of 
> > _FILE_OFFSET_BITS=32 though, so we might have to add that to default CPPFLAGS 
> > when building.
> > 
> > i kind of feel like deploying this on Gentoo systems to see what breaks ;).
> > -mike
> 
> Yes, it is. Could we in this release at least add this warning?
> I tried to restrict warning only when _ino_t is used but warning
> attribute does not apply to types and using __attribute__ ((deprecated))
> would confuse users.
> 
> 	* dirent/dirent.h [defined __USE_XOPEN && defined __ino_t_defined 
> 	&& ! defined __USE_FILE_OFFSET64]: Add warning.
> 
> diff --git a/dirent/dirent.h b/dirent/dirent.h
> index f6db6c6..35c0a93 100644
> --- a/dirent/dirent.h
> +++ b/dirent/dirent.h
> @@ -31,6 +31,7 @@ __BEGIN_DECLS
>  #ifdef __USE_XOPEN
>  # ifndef __ino_t_defined
>  #  ifndef __USE_FILE_OFFSET64
> +#   warning Please use -D_FILE_OFFSET_BITS=64 to support long files.
>  typedef __ino_t ino_t;
>  #  else
>  typedef __ino64_t ino_t;

-- 

poor power conditioning


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