Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Sep 2018 17:04:55 +0200
From:      Andreas Longwitz <longwitz@incore.de>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: Constraints in libmap(32).conf do not work as expected, possible bug in rtld-elf
Message-ID:  <5BABA017.9090509@incore.de>
In-Reply-To: <20180925155417.GA5335@kib.kiev.ua>
References:  <5B89C1E7.4090002@incore.de> <20180902120603.GI2340@kib.kiev.ua> <5B9829FE.10700@incore.de> <20180921134833.GU3161@kib.kiev.ua> <5BA95F34.9070300@incore.de> <20180925155417.GA5335@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
>> I like to mention one thing concerning the source libmap.c. With the
>> patch (yours or mine) and the libmap32.conf given above I see the
>> following lmp_list when lm_fini() is called:
>>
>>     lm_fini("1, $DEFAULT$" lml-Adresse 0x2826c208)
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib/mysql, t=/usr/local/lib32/mysql")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=libcrypto.so.8, t=libcrypto.so.6")
>>         lm_fini("f=libssl.so.8, t=libssl.so.6")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>      lm_fini("1, libc-client4.so.9" lml-Adresse 0x2826c168)
>>         lm_fini("f=libcrypto.so.8, t=libcrypto.so.6")
>>         lm_fini("f=libssl.so.8, t=libssl.so.6")
>>      lm_fini("2, /usr/local/php52/" lml-Adresse 0x2826c068)
>>         lm_fini("f=/usr/local/lib/mysql, t=/usr/local/lib32/mysql")
>>         lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
>>
>> So for $DEFAULTS we have a lot of identical entries. This comes from the
>> TAILQ_INSERT_HEAD statement in lm_add(). I am not sure if this can be
>> accepted or a check to avoid double entries in the list is better.

> Yes, this is mostly cosmetics.  It is not clear is it better to avoid
> duplicates and pay the cost at insertion, or leave them and pay at the
> list traversal.  I think there is slight preference to avoid dups, but
> this should be not measureable.

With your patch for libmap.c the output in lm_fini() now looks fine:
    lm_fini("1, $DEFAULT$" lml-Adresse 0x2826c208)
        lm_fini("f=/usr/local/lib/mysql, t=/usr/local/lib32/mysql")
        lm_fini("f=libcrypto.so.8, t=libcrypto.so.6")
        lm_fini("f=libssl.so.8, t=libssl.so.6")
        lm_fini("f=/usr/local/lib, t=/usr/local/lib32")
     lm_fini("1, libc-client4.so.9" lml-Adresse 0x2826c168)
        lm_fini("f=libcrypto.so.8, t=libcrypto.so.6")
        lm_fini("f=libssl.so.8, t=libssl.so.6")
     lm_fini("2, /usr/local/php52/" lml-Adresse 0x2826c068)
        lm_fini("f=/usr/local/lib/mysql, t=/usr/local/lib32/mysql")
        lm_fini("f=/usr/local/lib, t=/usr/local/lib32")

>> One annotation to the script /etc/rc.d/ldconfig: I had expected that
>> this script during boot creates clean files ld-elf(32).so.hints in
>> /var/run. For 64 bit this is true, but for 32 bit not because ldconfig
>> with flag -32 also has flag -m. Is this intended behaviour ?
> 
> This seems to be from the beginning when ldconfig_local32 was
> introduced in r154114.

Ok

Andreas Longwitz




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5BABA017.9090509>