[devel] libalsa (FAILED mplayer.git=1.0-alt35.29311.1)
Alexey Tourbin
at на altlinux.ru
Вс Май 17 16:54:07 MSD 2009
On Sun, May 17, 2009 at 11:30:51AM +0400, Afanasov Dmitry wrote:
> On Sun, May 17, 2009 at 10:12:09AM +0400, Alexey Tourbin wrote:
> > On Sat, May 16, 2009 at 10:34:22PM +0400, Girar Builder robot wrote:
> > [at на altair ~]$ rpmpeek /ALT/archive/Sisyphus/2009/05/01/files/x86_64/RPMS/libalsa-1.0.19-alt1.x86_64.rpm readelf -aW ./usr/lib64/libasound.so.2 |grep -w snd_pcm_hw_params_get_channels
> > 231: 00000000000519d0 31 FUNC GLOBAL DEFAULT 12 snd_pcm_hw_params_get_channels на ALSA_0.9
> > 233: 00000000000519c0 15 FUNC GLOBAL DEFAULT 12 snd_pcm_hw_params_get_channels@@ALSA_0.9.0rc4
> > [at на altair ~]$ rpmpeek /ALT/Sisyphus/files/x86_64/RPMS/libalsa-1.0.20-alt1.x86_64.rpm readelf -aW ./usr/lib64/libasound.so.2 |grep -w snd_pcm_hw_params_get_channels
> > 493: 0000000000051080 15 FUNC WEAK DEFAULT 12 snd_pcm_hw_params_get_channels@@ALSA_0.9.0rc4
> > [at на altair ~]$
> >
> > Похоже, что это связано не с изменениями в libalsa, а с изменениями
> > в binutils.
> причем:
> 1. только на x86_64
> 2. лечится добавлением -ldl -lasound -lm
Мне представляется, что проблема гораздо серьезнее, так что не надо её
лечить "по месту". Проблема состоит в том, что нарушается сопоставление
между названиями ABI интерфейсов и входящими в них символами. Такие
нарушения сейчас в явном виде никак не отлавливаются, и это может очень
плохо кончиться.
Собственно, это уже плохо кончилось: в сизифе появились пакеты со
сломанным ABI. Вот ещё один такой пакет.
$ hsh --no-stuff --init && hsh-install bluez-alsa
...
<13>May 17 12:43:06 rpmi: libalsa-1.0.20-alt1 installed
<13>May 17 12:43:06 rpmi: libusb-1.0-alt2 installed
<13>May 17 12:43:06 rpmi: libusb-compat-0.1.0-alt2 installed
<13>May 17 12:43:06 rpmi: libnl-1.1-alt2 installed
<13>May 17 12:43:06 rpmi: libdbus-1.2.14-alt1 installed
<13>May 17 12:43:06 rpmi: setserial-1:2.17-alt1 installed
<13>May 17 12:43:06 rpmi: libbluez4-4.39-alt1 installed
<13>May 17 12:43:06 rpmi: bluez-4.39-alt1 installed
<13>May 17 12:43:06 rpmi: bluez-alsa-4.39-alt1 installed
$ hsh-run -- ldd -r /usr/lib64/alsa-lib/libasound_module_pcm_bluetooth.so
symbol snd_pcm_sw_params_get_start_threshold, version ALSA_0.9.0rc4 not defined in file libasound.so.2 with link time reference (/usr/lib64/alsa-lib/libasound_module_pcm_bluetooth.so)
libasound.so.2 => /usr/lib64/libasound.so.2 (0x00002ae319e2c000)
librt.so.1 => /lib64/librt.so.1 (0x00002ae31a110000)
libc.so.6 => /lib64/libc.so.6 (0x00002ae31a318000)
libm.so.6 => /lib64/libm.so.6 (0x00002ae31a665000)
libdl.so.2 => /lib64/libdl.so.2 (0x00002ae31a8e7000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ae31aaeb000)
/lib64/ld-linux-x86-64.so.2 (0x00002ae3199f9000)
$
Нужно сделать следующее:
1) Попытаться быстро понять, что именно изменилось в binutils (или где),
и какие пакеты пострадают в результате этих изменений.
2) Переделать проверку bad_elf_symbols, чтобы она дополнительно
проверяля совпадение интерфейсов, если у требуемого символа есть
требование на интерфейс. Я уже очень давно собираюсь этим заняться,
но никак не могу понять, какой backend лучше всего использовать.
Грубо говоря, мне нужно сдампить секцию .dynsym со всякой дополнительной
информацией. Точнее, к каждому символу мне нужно всего две информации.
Во-первых, является ли этот символ FUNC или OBJECT (то есть код или
данные), или же ни то ни другое (это будет ещё одна проверка, чтобы код
не разрешался в данные). Во-вторых, есть ли у этого символа versioning.
Варианты backend'ов такие:
- objdump -T
- readelf --???
- преловая привязка к libelf
objdump -T дампит то что нужно, но у него запутанный вывод.
Для readelf я не понял как его попросить сдампить .dynsym.
Вывод readelf несколько проще.
Писать привязку к libelf -- это не настолько просто, как хотелось бы.
> эта проблема вплывала только при компиляции утилит bmovl-test и
> fastmemcpybench. пробовал добавить к сборочной команде эти библиотеки, но
> опять-таки на x86_64 -lSDL_image -ldl -lasound -lm почему-то раскрывалось
> в полные пути a-la /usr/lib64/libSDL_image.so.
>
> потому я пока выключил сборку этих утилит.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : отсутствует
Тип : application/pgp-signature
Размер : 197 байтов
Описание: отсутствует
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20090517/9bab69ea/attachment.bin>
Подробная информация о списке рассылки Devel