After reading up on .symvers it seems that there is a version number used to select which function to link against.
If I look in the file src/Versions it seems that there is no definition for ALSA_1.0.13. Could this be the problem? I'm still trying to figure out how and where the version ALSA_X.X.X is passed in to the linker.
More research reveals that the symbol defined with @@ is the default symbol taht is used when no version is given. In my case the symbols defined in pcm.c are:
.symver __snd_pcm_hw_params_get_period_size,snd_pcm_hw_params_get_period_size@@ALSA_0.9.0rc4 .symver __old_snd_pcm_hw_params_get_period_size,snd_pcm_hw_params_get_period_size@ALSA_0.9
and the __old version of the function should only be called if version ALSA_0.9 is explicitely set by the app or somehow the default version is being disabled or ignored.
Does anyone know how an application defines which version of symbols it wants to use from a library?
Is there a way to disable symbol versioning in a lib?
Is any of this done explicitely as part of the alsa-lib and alsa-utils build procedures?
Michel