On 01/22/2015 12:56 AM, Andrew Pinski wrote:
> On Wed, Jan 21, 2015 at 8:51 AM, Jakub Jelinek <ja...@redhat.com> wrote:
>> On Wed, Jan 21, 2015 at 08:41:46AM -0800, pins...@gmail.com wrote:
>>>> On Jan 21, 2015, at 1:02 AM, Matthias Klose <d...@ubuntu.com> wrote:
>>>>
>>>> __objc_get_forward_imp and get_imp were exported in libobjc since GCC 4.1, 
>>>> for
>>>> some reason these are not exported anymore in GCC 5 (both declared 
>>>> inline).  So
>>>> either export these as before, or don't export them and bump the soname.  
>>>> The
>>>> latter seems to be unwanted, and at least gnustep-base is using the get_imp
>>>> function.  So better keep the references in GCC 5?
>>>>
>>>> Is this an intended change in GCC 5 to not to export inline methods 
>>>> anymore?
>>>
>>> Just remove the inline instead.
>>
>> The comments like:
>>
>> /* The new name of get_imp().  */
>> IMP
>> class_getMethodImplementation (Class class_, SEL selector)
>> {
>>   if (class_ == Nil  ||  selector == NULL)
>>     return NULL;
>>
>>   /* get_imp is inlined, so we're good.  */
>>   return get_imp (class_, selector);
>> }
>>
>> don't make me very confident in such a change.
>> The extern prototypes really work with both -std=gnu89 and -std=gnu11 and
>> thus will at least keep status quo.
> 
> Let's do that then.

get_imp was renamed to class_getMethodImplementation, which is exported from
objc/runtime.h.  GNUstep-base uses get_imp to define it's own
class_getMethodImplementation, so get_imp isn't really needed. So either make
the two functions inline, and don't export them, or declare the prototypes.  For
the latter I would suggest objc-private/runtime.h (class_getMethodImplementation
is declared in objc/runtime.h).

  Matthias

Reply via email to