[alsa-devel] [PATCH] snd_dlsym: only do versioning checks if built --with-versioning

John Spencer maillist-alsa at barfooze.de
Sat Nov 15 13:55:54 CET 2014


 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>

---
  src/dlmisc.c | 2 ++
  1 file changed, 2 insertions(+)

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0001-snd_dlsym-only-do-versioning-checks-if-built-with-ve.patch
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20141115/f3284ec3/attachment.ksh>


More information about the Alsa-devel mailing list