This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch, libobjc] export __objc_get_forward_imp, get_imp again


On Wed, Jan 21, 2015 at 10:02:07AM +0100, Matthias Klose 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?

This will make the code require -std=c99 or later, it will fail to export
the functions with -std=gnu89.
Wouldn't it be better to just add
extern IMP __objc_get_forward_imp (id, SEL);
extern IMP get_imp (Class, SEL);
prototypes before the inline function definitions (in some header, whatever)?
That way it seems both -std=gnu89 and -std=gnu99 export those two functions
as well as make them inline.

> libobjc/
> 
> 	* sendmsg.c (__objc_get_forward_imp, get_imp): Declare extern inline.
> 
> --- a/src/libobjc/sendmsg.c
> +++ b/src/libobjc/sendmsg.c
> @@ -105,7 +105,7 @@
>  id nil_method (id, SEL);
>  
>  /* Given a selector, return the proper forwarding implementation.  */
> -inline
> +extern inline
>  IMP
>  __objc_get_forward_imp (id rcv, SEL sel)
>  {
> @@ -320,7 +320,7 @@
>    return res;
>  }
>  
> -inline
> +extern inline
>  IMP
>  get_imp (Class class, SEL sel)
>  {


	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]