[sisyphus] lib API changes

Dmitry V. Levin =?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Чт Ноя 18 18:45:52 MSK 2004


On Thu, Nov 18, 2004 at 05:36:20PM +0200, Andrei Bulava wrote:
> Вот и имеем изменение ABI в то время как API "новой" libfoo.so есть 
> надмножество API "старой" libfoo.so: теперь приложение, динамически 
> слинкованное со "старой" libfoo.so, при запуске с "новой" libfoo.so 
> будет иметь неразрешённый символ - ибо двоичный файл "новой" библиотеки 
> вообще не содержит функции bar ( int ) !!! И наоборот - если 
> перекомпилировать приложение с "новой" libfoo.so - оно не запустится со 
> старой, теперь из-за отсутствия функции bar ( int, int ) !!!

Это, скажем, в C++ всё будет так хорошо, как вы говорите, и при изменении
сигнатуры функции dynamic linker не даст этому безобразию запуститься.

С библиотеками и программами на C всё гораздо хуже, поскольку сигнатуры
функций содержат лишь имена.  При этом вызванная старой программой функция
из новой библиотеки в вашем примере в качестве второго аргумента получит
мусор со стека, со всеми вытекающими.


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?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/sisyphus/attachments/20041118/df2734e5/attachment-0003.bin>


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