This is the mail archive of the libc-alpha@sourceware.cygnus.com 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]

Problem with new ld.so.cache format on 64-bit machines


There's a design flaw in the way ld.so in glibc 2.2 handles the
transition between the old ld.so.cache format and the new one.

Specifically, the new style cache is placed immediately following the
old style cache in /etc/ld.so.cache.

This is wrong because it means that, if there are an odd number of
libraries in the old style cache, it will not be aligned on an 8-byte
boundary, since struct file_entry is 12 bytes.

Since struct file_entry_new contains a field of type unsigned long,
every single time a dynamic executable is loaded on Alpha with glibc
2.2, at least one unaligned exception occurs (and a message is printed
to the console).

I suggest that the new style cache always be aligned to
sizeof(unsigned long) in the file.

-- 
David Huggins-Daines, Senior GNU/Linux Consultant, Linuxcare, Inc.
613.562.1239 desk, 613.223.0225 mobile
dhd@linuxcare.com, http://www.linuxcare.com/
Linuxcare. Support for the revolution.

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