[devel] Как пролезли undefined symbol?

Alexey Tourbin at на altlinux.ru
Сб Май 16 13:21:44 MSD 2009


On Sat, May 16, 2009 at 01:09:10PM +0400, Boris Savelev wrote:
> 16 мая 2009 г. 12:43 пользователь Alexey Tourbin <at на altlinux.ru> написал:
> > On Sat, May 16, 2009 at 12:32:14PM +0400, Boris Savelev wrote:
> >> а что означает "bad_elf_symbols"?
> >> http://git.altlinux.org/tasks/6284/task/log
> >
> > bad_elf_symbols означает глобальную проверку одновременно для всех
> > имеющихся бинариков в репозитарии.  Она сбрабатывает только тогда,
> > когда какого-то символа вообще нигде нет.  А если для undefined symbol
> > в одном бинарике имеется определение в каком-то другом бинарике, то
> > считается что всё нормально.  То есть связи между бинариками она вообще
> > не анализирует.
> >
> > Эта проверка работает так:
> > 1) Составляет полный список определенных символов (def) для всех
> > бинариков в репозитарии.
> > 2) Составляет полный список неопределенных/ссылочных символов (ref) для
> > всех бинариков в репозитарии.
> > 3) Из ref вычитает def, результат называется bad_elf_symbols.
> >
> > Наличие bad_elf_symbols обычно означает, что в бинарике содержатся
> > вызовы несуществующих функций.  В момент вызова несуществующей функции
> > всё упадёт (а с LD_BIND_NOW=1 упадёт сразу же).
> >
> ааа. дело в том что символы есть, но бинарник с нужными символами не в
> %_bindir, а в %_libdir/%name/
> из-за этого проверка валится?

Нет.  Лучше давайте конкретно что-то рассмотрим.
http://git.altlinux.org/tasks/6284/task/log

        x86_64: NEW bad_elf_symbols detected:                                                                                                
monkeystudio-1.8.3.3-alt1.svn3087.x86_64.rpm /usr/lib64/monkeystudio/plugins/base/libAStyle.so U _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv

Здесь говорится: файл /usr/lib64/monkeystudio/plugins/base/libAStyle.so
содержит вызов функции _ZN10BasePlugin11qt_metacallEN11QMetaObject4CallEiPPv.
Но эта функция нигде не определна, то есть не экспортируется ни в каком
другом бинарике.

В проверке bad_elf_symbols расположение файлов никак не влияет на
проверку.  В проверке /usr/lib/rpm/verify-elf расположение файлов
влияет на проверку.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20090516/35846708/attachment-0001.bin>


Подробная информация о списке рассылки Devel