Make error in sys_ipc_wrapper

Espen Skoglund esk at
Fri Aug 1 13:39:45 CEST 2003

[Sarah Hoffmann]
> On Fri, 1 Aug 2003, Michael Hohmuth wrote:
>> Sarah Hoffmann <sh18 at> writes:
>>> I was able to reproduce the bug with on SUSE 7.3. For some reason
>>> functions that are declared 'inline NOEXPORT' won't get compiled
>>> at all.  [...]
>> This could also be a problem with `preprocess' or the Perl
>> interpreter it uses.  Could you try the following:

> Preprocess output is fine. The problem lies in how gcc 2.95.3
> handles inlined member functions. Obviously they are automaticly
> 'inline extern' so if the function can't be inlined there is still
> no code generated.  With the standard gcc 2.95.3 this was not a
> problem because it always respects the inline directive. SuSEs gcc
> is a bit more picky and refuses to inline some functions because
> they are too big.

Actually, the old gcc version is behaving correctly in this sense.  If
you specify 'extern inline' the function will *only* be used for
inlining, even if you make an explicit address reference to it.  Such
address references become external references.  If the compiler
handles such usage the way you "expect it" it is only by accident (the
gcc documentation clearly says that it shouldn't work this way), and
the corresponding code should be fixed.

BTW, it might happen that gcc-3 generates code which does not respect
the 'extern inline' directive.  It will then generate separate
functions located in '.gnu.linkonce.t.*' sections.  One can avoid this
behaviour by playing around with the '--inline-limit' option, though.


More information about the l4-hackers mailing list