[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