[devel] libopenobex-1.3 symbol versioning patch

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Сб Авг 12 18:08:12 MSD 2006


On Sat, Aug 12, 2006 at 05:32:57PM +0400, Alexey Tourbin wrote:
> > Кстати, а обязан ли каждому паттерну в local соответствовать хотя бы
> > один реально существующий символ?
> 
> Кстати, и в списке global каждому элементу в общем-то не обязан
> соответствовать какой-либо реально существующий символ (сюрприз!).

Действительно сюрприз.  Хм, и даже GNU extension для этого не
написали...

> Филькина грамота этот version script в общем.
> 
> > Если нет, можно попробовать
> > сгенерировать что-то такого типа:
> > 
> > local:
> > 	[^BFIO]*;
> > 	O[^B]*;
> > 	OB[^E]*;
> > 	OBE[^X]*;
> > 	OBEX[^_]*;
> > 	OBEX_[^....]*;
> > 	...
> > 	OBEX_TransportDisconnec[^t]*;
> > 	OBEX_TransportDisconnect?*;
> > 	...
> > 
> > Хотя как бы с такими паттернами не напороться на баги в каком-нибудь
> > кривом сановском линкере (или там опции всё равно другие?), или старых
> > binutils.
> 
> В каком смысле сгенерировать?

Имея набор символов, которые должны быть экспортированы без явного
указания версии, сгенерировать набор паттернов, который покрывает
любые возможные символы, кроме указанных.

> Идея интересная, но при наличии на руках объектного материала можно
> генерировать не паттерны, а уже сами символы.

Только вот для этого нужно вызывать и парсить вывод, например, nm, что
в общем случае нетривиально (libtool занимается подобными вещами, но
читать этот код и соответствующие тесты для autoconf страшно).

> Кстати, интересная идея мне в голову пришла: в libtool нужно добавить
> новую опцию: --version-script (похожую на --export-symbols).  Тогда на
> платформах, которые не поддерживают versioning, libtool смог бы
> схлопывать карту verion script в список export symbols.  В случае, если
> список эксклюзивный и все символы явно перечислены, тогда вообще всё
> просто и это дается чем-то вроде
> 
> perl -lne '/^\s+(\w+);/&&print$1'
> 
> или то же самое на sed'е, хотя перл кажется более портабельный чем sed.

sed как можно считать всегда доступным, поскольку он используется в
configure; правда, в POSIX, как обычно, функциональность весьма
ограничена.

> Но в общем виде конечно нужен парсер и работа с объектным материалом, а
> это с этим уже больше сложностей.  Но в принципе это должно делаться
> где-то на уровне libtool.  На то он и libtool.
> 
> Либтул ведь сейчас генерирует из списка карту, что конечно же не фокус.
> А вот обратно ему пока слабо.

Ну это уже не ко мне...
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 191 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20060812/8717df3f/attachment-0001.bin>


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