[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