[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Processed: Cloning this bug



reopen 388489
thanks

Aurelien Jarno <aurelien@aurel32.net> writes:

> Goswin von Brederlow wrote:
>> Aurelien Jarno <aurelien@aurel32.net> writes:
>>
>>> Debian Bug Tracking System a écrit :
>>>>> retitle -1 libc6-i386: Missing /etc.ld.so.conf.d/i486-linux-gnu.conf
>>> There is no need for such a file. ld.so natively looks on all
>>> directories of bi (or tri)-arches directories. If you need to be
>>> convinced just run: strings /sbin/ldconfig | grep "^/lib"
>>>
>>> Clising the bug
>>
>> Binutils doesn't. And in some cases binutils looks at ld.so.conf and
> It does. Well it was not the case on amd64, but it has been fixed two
> months ago in version 2.17-2 (see bug#369052).
>
> I am closing the bug, please only reopen the bug if you have a
> testcase to show what you claim.

Then what is /etc/ld.so.conf.d/x86_64-linux-gnu.conf for? If 32bit
multiarch support doesn't need the conffile then 64bit multiarch would
need it even less, being the native bit-ness and all. Think about that
for a second.

Meanwhile here is your testcase step by step:

Create missing link so we can link (pending fix in ia32-libs):
% ln -s /usr/lib32/libfreetype.so.6 /usr/lib32/libfreetype.so

Test /usr/lib32 setup:
% cat foo.c
extern int FT_Init_FreeType(void);
int main(void) { return FT_Init_FreeType(); }
% gcc -m32 -o foo foo.c -lfreetype  

Test multiarch:
% mkdir /usr/lib/i486-linux-gnu
% mv /usr/lib32/libz.* /usr/lib/i486-linux-gnu
% gcc -m32 -o foo foo.c -lfreetype            
/usr/bin/ld: warning: libz.so.1, needed by /usr/lib/gcc/x86_64-linux-gnu/4.1.2/../../../../lib32/libfreetype.so, not found (try using -rpath or -rpath-link)
/usr/lib/gcc/x86_64-linux-gnu/4.1.2/../../../../lib32/libfreetype.so: undefined reference to `inflate'
/usr/lib/gcc/x86_64-linux-gnu/4.1.2/../../../../lib32/libfreetype.so: undefined reference to `inflateReset'
/usr/lib/gcc/x86_64-linux-gnu/4.1.2/../../../../lib32/libfreetype.so: undefined reference to `inflateEnd'
/usr/lib/gcc/x86_64-linux-gnu/4.1.2/../../../../lib32/libfreetype.so: undefined reference to `inflateInit2_'
collect2: ld returned 1 exit status

Fix it:
% echo "/usr/lib/i486-linux-gnu" >>/etc/ld.so.conf.d/i486-linux-gnu.conf
% gcc -m32 -o foo foo.c -lfreetype

>> thus ld.so.conf.d/*.
>>
>> Or what is the point of the ld.so.conf.d files at all?
>
> The purpose of the ld.so.conf.d files is to provide an easy way to add
> search directories for some packages (eg atlas), which is a lot easier
> than modifying the ld.so.conf directly.
>
> It is also a way for future multiarch support to add a search path,
> hence the /etc.ld.so.conf.d/(host-triplet).conf in libc6. But it has
> nothing to do with bi-arch or tri-arch which are directly handled in
> the toolchain.

Which is exactly what I am asking for. That
/etc.ld.so.conf.d/(host-triplet).conf is missing in libc6-i386.

Notice that I do ask for that multiarch host triplet file
specificaly. Not for any bi/tri-arch support. I believed requesting
that file would be clear enough indication that the multiarch dirs are
ment but you seem to have misunderstood that completly.

The libc6 on amd64 ships /etc/ld.so.conf.d/x86_64-linux-gnu.conf

% cat /etc/ld.so.conf.d/x86_64-linux-gnu.conf 
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu

The libc6-i386 should ship /etc/ld.so.conf.d/i486-linux-gnu.conf

% cat /etc/ld.so.conf.d/i486-linux-gnu.conf 
# Multiarch support
/lib/i486-linux-gnu
/usr/lib/i486-linux-gnu

That is all I'm asking.

MfG
        Goswin



Reply to: