[devel] Q: Переименование символов и сохранение ABI

Alexey I. Froloff raorn на altlinux.org
Вс Июн 6 07:09:29 UTC 2010


Апстрим librep переименовал несколько символов не меняя SONAME.
Хочется сохранить ABI.  Раньше оно выглядело так:

$ nm -D /usr/lib/librep.so.9.5.0 | grep file_uid 
000168e0 T Ffile_uid_p
000547c8 B Qfile_uid_p

Собсно, убрали "_p".  Код раскрывается в следующее:

repv Qfile_uid;
repv Ffile_uid(repv arg) { ... }

Делаю alias'ы:

extern __typeof__ (Ffile_uid) Ffile_uid_p __attribute__ ((alias ("Ffile_uid")));
extern __typeof__ (Qfile_uid) Qfile_uid_p __attribute__ ((alias ("Qfile_uid")));


С функцией такой трюк проходит, а с common symbol нет:

{standard input}:6039: Error: `Qfile_uid_p' can't be equated to common symbol 'Qfile_uid'

У этой библиотеки полтора пользователя, но хотелось бы знать как
в принципе решать подобные проблемы.

P.S. Символ Qfile_uid в выводе rpmsodiff(1) не фигурирует.
P.P.S. Погрепал DSOHOWTO, ответа не нашёл.

-- 
Regards,    --
Sir Raorn.   --- http://thousandsofhate.blogspot.com/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20100606/ec2a525c/attachment.bin>


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