|
From: | David Henningsson |
Subject: | Re: [fluid-dev] SONAME Bump? |
Date: | Sat, 06 Aug 2011 16:13:16 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20110801 Thunderbird/6.0 |
On 08/06/2011 02:13 PM, Pedro Lopez-Cabanillas wrote:
On Saturday 06 August 2011, David Henningsson wrote:As reported in ticket #98, FluidSynth 1.1.4 dropped one symbol. However, this symbol (fluid_defsfont_get_sample) is not part of the public API, so no programs should use it anyway. I don't know how much of a big deal this is, really. Can you help me determine that, and the proper action for it?It is a bug, and should be resolved. Not a big concern, because as you noticed it is not part of the public API.
Ok.
Is it something that alone calls for a new release (1.1.5) or can we just update svn? What implications does bumping the SONAME have?Changing the SONAME because this bug is too much a burden for everybody.
Sorry, I'm not following: what burden would changing the SONAME be - is that just recompiling everything depending on libfluidsynth, or what?
My suggestion is to restore the removed symbol with a dummy function body, and release 1.1.5
Ok, I can add a dummy function body. Let's wait a week or two to see if more showstoppers show up before making another release.
IMO, the ideal would be if we could tell gcc to stop exporting all symbols that are not part of the public API. Then we would get rid of this problem altogether. Is that possible?Yes, this is possible. But this is a task for the next major release, and of course it requires changing the SONAME anyway. Technically, we need to take into account all platforms and compilers. For the GCC compiler, we have several tools: * gcc arguments CFLAGS=-fvisibility=hidden http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fvisibility-2198 Source changes. Either: * function attributes: http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html * dllimport and dllexport attributes for Windows platform (we already do this in the macro FLUIDSYNTH_API) * visibility attribute for ELF platforms http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#index-g_t_0040code_007bvisibility_007d-attribute-2547
Thanks for the pointers. As the FLUIDSYNTH_API is already in place, if we could make that evaluate to something like __attribute__ ((visibility ("default"))) on gcc platform, that would be the simplest way of solving this problem?
* visibility #pragma: http://gcc.gnu.org/onlinedocs/gcc/Visibility-Pragmas.html * we can also include a linker version script as a complement http://sca.uwaterloo.ca/coldfire/gcc-doc/docs/ld_25.html
Hmm, with those options I think that we need to update in one more place every time we change the public API. That makes it possible to forget one of the places.
// David
[Prev in Thread] | Current Thread | [Next in Thread] |