[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