[devel] Вопросы по версионированию символов

Alexey Rusakov =?iso-8859-1?q?ktirf_=CE=C1_altlinux=2Eorg?=
Ср Авг 29 15:10:42 MSD 2007


On Wed, 29 Aug 2007 14:10:22 +0400
Alexey Tourbin wrote:

> On Wed, Aug 29, 2007 at 12:24:28PM +0400, Alexey Rusakov wrote:
> > Делаю версии для Pango. Впервые для себя наткнулся на ситуацию убирания
> > символов из числа экспортируемых с одновременным добавлением новых.
> > Не совсем понял, что в такой ситуации делать: писать два отдельных
> > интерфейса, отличающиеся друг от друга на две строки? Если один и тот
> > же символ упоминается в двух разных интерфейсах, зависящая библиотека
> > будет требовать оба интерфейса? один из них? ни одного?
> 
> Два интерфейса это не то что Вы думаете.  Символ останется только
> в одном интерфейсе.  Символ на двух интерфейсах делать гораздо сложнее,
> для первого раза если вас звать не Дреппер это практически минное поле.
> 
> Удаляемые символы нужно пробивать по глобальной базе rpmelfsym(1).
> Если их никто не использует, то удалились ну и хрен с ними.  Если же
> их кто-то использует, то их нужно вручную восстанавливать (в коде).
Тут стало немного понятнее, спасибо. Я так понимаю, если их никто не
использует, ничто не мешает эти символы выбросить из файла с версиями
символов вообще.

> > Сгенерированный *.ver файл выглядит так:
> > { global:
> >  ...
> >  local: *;
> > };
> 
> Сгенерированный где и кем?
Он генерируется из ручками написанного файла с экспортируемыми символами,
но конкретно строчка local:* добавляется кодом, который берётся из
aclocal.m4 в данном модуле. Собственно, нынешний pango*src.rpm в Сизифе
этот aclocal.m4 тоже содержит.

> > эта строка влияет на наследование интерфейсов: символы из наследуемых
> > интерфейсов подпадают под local или будут "автомагически" перемещены в
> > global для наследующего интерфейса?
> 
> Вообще-то надо читать исходники binutils, но я в них ничего не понял.
> Думаю, что "local: *" в первом блоке сохраняет возможность добавления
> заскриненых символов в последующих интерфейсах.
Хотелось бы верить.

-- 
  Alexey "Ktirf" Rusakov
  GNOME Project
  ALT Linux Team



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