[PATCH] fcntl.h: add hack to kill fcntl64 on x86_64

Rob Landley rob at landley.net
Mon Apr 26 05:24:11 UTC 2010


On Sunday 25 April 2010 13:59:15 Roman I Khimov wrote:
> В сообщении от Воскресенье 25 апреля 2010 21:34:14 автор Austin Foxley
>
> написал:
> > On 04/25/2010 06:35 AM, roman at khimov.ru wrote:
> > > In previous uclibc versions we've had fcntl64 (nonexisting on x86_64)
> > > as an alias to fcntl. Recent NPTL changes removed that alias, although
> > > fcntl64 is still present in headers when using _GNU_SOURCE or
> > > _FILE_OFFSET_BITS=64.
> > >
> > > It confuses applications and leads to linkage failures.
> > >
> > > The patch proposed tries to deal with it in headers (thus not
> > > reintroducing fcntl64 alias), although there might be some better way.
> >
> > What about other 64bit archs?
>
> At quick glance most of them have no fcntl64, although looks like sh64
> does.
>
> > And you're right, we probably want a different solution to this.
>
> Sure, this is mostly to raise the issue and solve it at least internally.
> It's been a long time since I've touched uclibc code, so I'm very unsure
> about how to fix it properly. Most probably still in headers (re-adding
> fcntl64 alias seems ugly to me) though.

According to:

   gcc -dM -E - < /dev/null | less

There's a couple builtin #defines you can check:

  #define __SIZEOF_LONG__ 8
  #define __SIZEOF_POINTER__ 8

So maybe #if __SIZEOF_LONG__ > 4 would work?  Dunno...

Rob
-- 
Latency is more important than throughput. It's that simple. - Linus Torvalds


More information about the uClibc mailing list