From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 17 Mar 2011 10:48:32 +0300 From: Alexey Tourbin To: ALT Linux Team development discussions Message-ID: <20110317074831.GD5365@altlinux.org> References: <20110317062955.GA1882@ssh.git.altlinux.org> <20110317064943.GB5365@altlinux.org> <4D81B345.2090207@mmedia2.kemsu.ru> <20110317072649.GC5365@altlinux.org> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110317072649.GC5365@altlinux.org> Subject: Re: [devel] __cxa_pure_virtual [#40700] FAILED MySQL.git=5.1.56-alt2 X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Mar 2011 07:48:32 -0000 Archived-At: List-Archive: List-Post: On Thu, Mar 17, 2011 at 10:26:50AM +0300, Alexey Tourbin wrote: > Разобраться, почему так происходит. > > $ rpm -ql amarok |xargs fgrep -l __cxa_pure_virtual |xargs -Ix -n1 /usr/lib/rpm/ldd --bindings x '' |& grep __cxa_pure_virtual |sort -u -k4,4 -k7,7 > 28807: binding file /usr/lib/kde3/bin/amarok [0] to /usr/lib64/libstdc++.so.6 [0]: normal symbol `__cxa_pure_virtual' [CXXABI_1.3] > 28814: binding file /usr/lib/kde3/bin/amarokapp [0] to /usr/lib64/libmysqlclient.so.16 [0]: normal symbol `__cxa_pure_virtual' [libmysqlclient _16] > ... > $ nm -D /usr/lib64/libstdc++.so.6 |fgrep __cxa_pure_virtual > 00000000000ba8c0 T __cxa_pure_virtual > $ nm -D /usr/lib64/libmysqlclient.so.16 |fgrep __cxa_pure_virtual > 00000000000b9ad0 W __cxa_pure_virtual > $ objdump -p /usr/lib/kde3/bin/amarok |grep -w NEEDED |egrep 'stdc|mysql' > NEEDED libstdc++.so.6 > $ objdump -p /usr/lib/kde3/bin/amarokapp |grep -w NEEDED |egrep 'stdc|mysql' > NEEDED libmysqlclient.so.16 > NEEDED libstdc++.so.6 > $ > > Т.е. в libmysqlclient.so.16 имеется weak symbol, а в libstdc++.so.6 - > нормальный. Но libmysqlclient.so.16 в списке требуемых библиотек идёт > раньше, что по идее не дложно помешать предпочесть нормальный символ. Ох, тут ещё versioning наслоился! Предпочтение идёт по link-time версионированию. Тогда взяла не Зинка, а bfd. Ё-моё... $ readelf -W --dyn-syms /usr/lib/kde3/bin/amarok /usr/lib/kde3/bin/amarokapp |grep __cxa_pure 72: 0000000000402a60 0 FUNC GLOBAL DEFAULT UND __cxa_pure_virtual@CXXABI_1.3 (5) 172: 0000000000403e38 0 FUNC GLOBAL DEFAULT UND __cxa_pure_virtual@libmysqlclient_16 (8) $