[devel] #12712 - nagios PL_perlio_mutex

Alexey Tourbin at на altlinux.ru
Сб Сен 8 14:52:19 MSD 2007


Есть очень неприятная ситуация.  Оказывается, требуется более глубокое
понимание рзарешения символов в ELF'ах, чем то, которое у меня имеется.

Ситуация такая.  До последнего времени я думал, что вносить в version
script нужно только символы типа "T" и "D", то есть функции и глобальные
переменные.  Но глобальныме переменные на самом деле бывают двух типов --
"D" и "B" (data и bss).  Различие между ними я не совсем понимаю.
Иногда мне казалось, что "B" -- это объявление типа "extern int var",
которое должно разрешаться в соответствущую пременную "D", объявленную
уже без extern.  Но это, по-видимому, далеко от истины.

$ grep PL_perlio_mutex sym
nagios  /usr/sbin/nagios        B       PL_perlio_mutex
nginx   /usr/sbin/nginx B       PL_perlio_mutex
perl-base       /usr/bin/perl5.8.8      U       PL_perlio_mutex
perl-base       /usr/lib/libperl.so.5.8.8       B       PL_perlio_mutex
perl-suidperl   /usr/bin/sperl5.8.8     U       PL_perlio_mutex
$

Другими словами, nagios и nginx как бы "ссылаются" на переменную типа
"B" в libperl.so.5.8, но эта ссылка почему-то имеет тип "B", а не "U".
Замечу, что сам perl ссылается на PL_perlio_mutex через "U".

Кто знает в чём тут дело?  К сожалению изучить как написан binutils --
это требуется много отваги.  Там этот "биг дил" который libbfd он
вездесущ и совсем не способствует пониманию кода.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: отсутствует
Url     : http://lists.altlinux.org/pipermail/devel/attachments/20070908/7439d078/attachment.bin 


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