https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68272

--- Comment #1 from joseph at codesourcery dot com <joseph at codesourcery dot 
com> ---
This is not a standards conformance bug, on multiple grounds:

* The C standard does not permit you to define your own copies of standard 
library functions (that is, functions in the standard you specified with 
-std=, e.g. -std=c99; -std= controls which built-in functions are 
present).  All library function names are always reserved as identifiers 
with external linkage, whether or not you include the corresponding 
header.

* You're using 4.9, which defaults to -std=gnu89.  gnu89 inline semantics 
mean that plain "inline" functions *should* get out-of-line copies 
generated in each translation unit.  For C99 inline semantics you need an 
appropriate -std option for versions before GCC 5 (which defaults to 
-std=gnu11).

That said, it may be best anyway not to export such copies in C99 inlining 
mode, if the only extern declaration is the implicit built-in one.  But 
you're well outside the standard if you try to do this.

Reply via email to