[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