ldso: "can't load library" due to not using (f)stat64 calls

Rich Felker dalias at aerifal.cx
Thu Feb 6 01:23:40 UTC 2014


On Wed, Feb 05, 2014 at 03:23:07PM -0500, Jody Bruchon wrote:
> I've confirmed that the problem is [f]stat() calls in ld-uClibc.so.0
> and that the reason for the overflow is 64-bit inode numbers. I
> copied everything in my uClibc-i386 chroot environment to a new
> folder in /tmp and confirmed all /lib/* inode numbers dropped below
> the 32-bit boundary (4294967296) and was able to chroot into it
> normally.
> 
> This issue should affect any uClibc i386 32-bit userland where an
> executable file or library being linked has an inode number above
> the 32-bit boundary. Here's the additional information I've gathered
> that confirms these 64-bit-unclean stat() family calls are causing
> the issue. Particularly note the inode numbers are all above
> 4294967296.

How long will it take for everyone to acknowledge that building
_anything_ with 32-bit off_t is just broken? _FILE_OFFSET_BITS should
be 64 by default and eventually support for 32-bit off_t should simply
be removed.

Rich


More information about the uClibc mailing list