[alsa-devel] [PATCH] snd_dlsym: only do versioning checks if built --with-versioning
Takashi Iwai
tiwai at suse.de
Sun Nov 16 09:45:12 CET 2014
At Sat, 15 Nov 2014 13:55:54 +0100,
John Spencer wrote:
>
> From 291553a0132936611d48f41e924601dff8941537 Mon Sep 17 00:00:00 2001
> From: John Spencer <maillist-alsa at barfooze.de>
> Date: Sat, 15 Nov 2014 13:41:00 +0100
> Subject: [PATCH] snd_dlsym: only do versioning checks if built
> --with-versioning
>
> a combination of some of the following garbage collecting LD/CFLAGS
> -Os -g0 -fdata-sections -ffunction-sections -s -Wl,--gc-sections
> -fno-unwind-tables -fno-asynchronous-unwind-tables
> causes the symbol versioning marker symbols to be removed from BSS
> since they're otherwise unreferenced. this causes dlsym failing to
> find them which results in runtime breakage:
>
> $ alsamixer
> ALSA lib dlmisc.c:142:(snd_dlsym_verify) unable to verify version for
> symbol snd_config_hook_load
> ALSA lib conf.c:3328:(snd_config_hooks_call) symbol snd_config_hook_load
> is not defined inside (null)
> ALSA lib conf.c:3788:(snd_config_update_r) hooks failed, removing
> configuration
> cannot open mixer: No such device or address
>
> correct DSO:
> $ objdump -T libasound.so.2.strip | grep
> _snd_config_hook_load_dlsym_config_hook_001
> 001196bc g DO .bss 00000001 _snd_config_hook_load_dlsym_config_hook_001
>
> incorrect DSO:
> $ objdump -T libs/libasound.so.2 | grep
> _snd_config_hook_load_dlsym_config_hook_001
> 00000000 g DO *ABS* 00000001 _snd_config_hook_load_dlsym_config_hook_001
>
> since alsa was built with --without-versioning, doing those versioning
> checks at all is unnecessary and harmful and thus now disabled in this case.
>
> Signed-off-by: John Spencer <maillist-alsa at barfooze.de>
Thanks, applied.
Takashi
More information about the Alsa-devel
mailing list