[devel] #12712 - nagios PL_perlio_mutex

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Сб Сен 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 он
вездесущ и совсем не способствует пониманию кода.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?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/20070908/7439d078/attachment-0002.bin>


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