From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Schwierzeck Date: Wed, 01 Jul 2015 16:43:54 +0200 Subject: [U-Boot] GCC 5.x compile errors In-Reply-To: <20150701075339.59d9f390@lilith> References: <20150701075339.59d9f390@lilith> Message-ID: <5593FCAA.4020302@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Am 01.07.2015 um 07:53 schrieb Albert ARIBAUD: > Hello ANDY, > > On Tue, 30 Jun 2015 22:02:38 +0000, ANDY KENNEDY > wrote: >> Attempted to build u-boot with gcc 5.x for mipsel 32. Result was that >> I get brokenness around arch/mips/include/asm/io.h and >> arch/mips/include/asm/system.h. The source lines all look something >> like: >> >> extern inline void func() >> { >> func text ; >> } >> >> Question: Is that valid C text? I have never seen such. Also, what >> does this mean from a header file? The way I read this is >> >> extern = the following declare exists in global space (no code here) >> >> inline = use this function definition in line in place of creating a >> text ref section >> >> I would expect these two to be mutually exclusive???? >> >> Please enlighten me! > > Actually, extern vs static takes a meaning for inline functions > different from the one for traditional non-inline ones. > > "If you specify both inline and extern in the function > definition, then the definition is used only for inlining. > In no case is the function compiled on its own, not even > if you refer to its address explicitly. Such an address > becomes an external reference, as if you had only declared > the function, and had not defined it." > > See https://gcc.gnu.org/onlinedocs/gcc/Inline.html for all the gory > details on inline functions (this is for the latest version; if you're > working with a specific, older, gcc version, look up the corresponding > page, in case subtle changes were introduced). > the kernel changed it all to "static inline" long time ago. We should do the same. I'll send a patch to fix it. -- - Daniel