fluid-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [fluid-dev] SONAME Bump?


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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]