[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