[devel] Re: ELFs in /usr/share
Dmitry V. Levin
=?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Вс Сен 18 03:23:46 MSD 2005
On Sun, Sep 18, 2005 at 03:00:44AM +0400, Alexey Tourbin wrote:
> On Sun, Sep 18, 2005 at 02:32:43AM +0400, Dmitry V. Levin wrote:
> > Просто, как всегда, хочется сделать сразу так, чтобы потом не
> > переделывать (не должно быть ложных срабатываний).
> > А на это, как всегда, не хватает времени.
>
> А нужны более тонкие проверки, с reverse lookup'ом. Надо попробовать
> нарисовать все эти ER-диаграммы. Но для этого нужно поставить пиратскую
> винду, водрузить на неё пиратскую Rational Rose и т.п.
Зачем? Если в сборочной среде правильно запущенный "ldd -r" выявляет
undefined references, то этого зачастую достаточно.
> То есть что является уникальным ключом в этой модели? Символ? Нет.
> Комбинация soname+символ. И join в этом модели (т.е. отношение "один к
> одному") должно строиться как раз на основе этого ключа: soname+символ.
Тот факт, что какой-то ELF содержит символ, похожий на тот, который
показывает "ldd -r" как undefined reference, ещё мало что даёт.
> > Да и с ELF'ами, в которых эти undefined references зашиты by design, тоже
> > надо что-то делать (вспомни, например, libthread_db.so.1).
>
> А я не помню, что там...
А там как раз такой дизайн:
$ ldd -r /lib/libthread_db.so.1 >/dev/null
undefined symbol: ps_pglobal_lookup (/lib/libthread_db.so.1)
undefined symbol: ps_pdwrite (/lib/libthread_db.so.1)
undefined symbol: ps_lsetfpregs (/lib/libthread_db.so.1)
undefined symbol: ps_getpid (/lib/libthread_db.so.1)
undefined symbol: ps_lsetregs (/lib/libthread_db.so.1)
undefined symbol: ps_pdread (/lib/libthread_db.so.1)
undefined symbol: ps_lgetfpregs (/lib/libthread_db.so.1)
undefined symbol: ps_lgetregs (/lib/libthread_db.so.1)
$ readelf -Ws /usr/bin/gdb |grep -w ps_pglobal_lookup
129: 080934b0 52 FUNC GLOBAL DEFAULT 12 ps_pglobal_lookup
$ ldd -r /usr/bin/gdb |fgrep -c libthread_db
0
> Да нет, я просто пока понял, что если символов вообще нигде нет, то их
> точно вообще нигде нет. :) Я написал, что это слабая проверка, она
> ничего не гарантирует, только обнаруживает вопиющие случаи...
Скорее клинические. :)
--
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20050918/e58a8715/attachment-0001.bin>
Подробная информация о списке рассылки Devel