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

Boris Savelev boris на altlinux.org
Сб Май 16 13:09:10 MSD 2009


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/
из-за этого проверка валится?

-- 
С уважением, Борис Савельев


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