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

Alexey Tourbin at на altlinux.ru
Сб Май 16 12:23:39 MSD 2009


On Sat, May 16, 2009 at 11:56:21AM +0400, Max Ivanov wrote:
> Добрый день! Как такое могло получиться: /usr/lib/mlt/libmltcore.so:
> undefined symbol: pow
> столько закручивали гайки, а оно всё равно вот такое пропускает.
> 
> Пофиксил, отправил, вина моя и посыпаю голову пеплом. Но всё же, может
> есть какой макрос, что б проверяло на эти самые undefined и не
> пропускало?

В "плагинах" в общем случае нельзя требовать чтобы все символы были
непосредственно разрешены.

$ ldd -r /usr/lib64/zsh/zpty.so |& head
undefined symbol: mypid (/usr/lib64/zsh/zpty.so)
undefined symbol: lines (/usr/lib64/zsh/zpty.so)
undefined symbol: errflag       (/usr/lib64/zsh/zpty.so)
undefined symbol: scriptname    (/usr/lib64/zsh/zpty.so)
undefined symbol: coprocin      (/usr/lib64/zsh/zpty.so)
undefined symbol: columns       (/usr/lib64/zsh/zpty.so)
undefined symbol: contflag      (/usr/lib64/zsh/zpty.so)
undefined symbol: retflag       (/usr/lib64/zsh/zpty.so)
undefined symbol: breaks        (/usr/lib64/zsh/zpty.so)
undefined symbol: lastval       (/usr/lib64/zsh/zpty.so)
$

Эти символы определны в /bin/zsh.  Для этого /bin/zsh линкуется
с флагом -rdynamic.  Это такая легальная схема, почему в elf shared
object могут допускаться undefined symbols.

Макрос называется
%set_verify_elf_method strict
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20090516/ae411ef3/attachment.bin>


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