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