[devel] libalsa ABI breakage

Sergey Vlasov vsu на altlinux.ru
Вс Май 17 21:22:35 MSD 2009


On Sun, May 17, 2009 at 08:47:46PM +0400, Alexey Tourbin wrote:
> On Sun, May 17, 2009 at 08:33:04PM +0400, Sergey Vlasov wrote:
> > > > > May 17 03:22 mplayer-1.0-alt35.29311.1.src.rpm
> > > > > May 16 15:25 gimp-2.6.6-alt3.src.rpm
> > > > > May 15 18:50 vice-2.1-alt2.src.rpm
> > > > > May 15 17:52 qmmp-0.3.0-alt0.1.svn949.src.rpm
> > > > > May 15 15:39 alsa-tools-1.0.20-alt1.src.rpm
> > > > > May 15 15:32 alsa-utils-1.0.20-alt1.src.rpm
> > > > > May 15 15:32 alsa-plugins-1.0.20-alt1.src.rpm
> > > > 
> > > > 3 последних работают. как проверить неработоспособность?
> > > 
> > > Если с новым (исправленным) пакетом libalsa команда 'ldd -r'
> > > не ругается (на все файлы из этих пакетов), то в принципе можно
> > > не пересобирать.
> > 
> > В данном случае это не показатель - для некоторых символов назначалась
> > неверная, но при этом существующая, версия, в результате ldd -r
> > ругаться не будет, но при выполнении будет вызываться функция со
> > старым ABI.
> 
> Увы.  А что значит "неверная"?  Там разные прототипы у реализаций или
> в чем ещё несовместимость заключается?

Разные прототипы (в основном переход на передачу значения по
указателю, а сама функция возвращает код ошибки - в первоначальном
варианте не было возможности вернуть этот код).

Старый вариант:

snd_pcm_tstamp_t snd_pcm_sw_params_get_tstamp_mode(const snd_pcm_sw_params_t *params);

Новый вариант:

int snd_pcm_sw_params_get_tstamp_mode(const snd_pcm_sw_params_t *params, snd_pcm_tstamp_t *val);

(это как раз одна из сломанных функций).

Кстати, нашёл там ещё одну опечатку - в include/pcm_old.h:

asm(".symver snd_pcm_sw_params_get_stop_threshold,snd_pcm_sw_params_set_stop_threshold на ALSA_0.9");

(этот кусок используется только в #ifdef ALSA_PCM_OLD_SW_PARAMS_API -
т.е., при сборке программ, которые так и не были переведены на
использование нового API).
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20090517/2cb6c1ce/attachment.bin>


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