[U-Boot] Replace "extern inline" with "static inline"

Tom Rini trini at konsulko.com
Tue Nov 10 21:15:38 CET 2015


On Fri, Nov 06, 2015 at 12:44:01PM +0000, Måns Rullgård wrote:

> A number of headers define functions as "extern inline" which is
> causing problems with gcc5.  The reason is that starting with
> version 5.1, gcc defaults to the standard C99 semantics for the
> inline keyword.
> 
> Under the traditional GNU inline semantics, an "extern inline"
> function would never create an external definition, the same
> as inline *without* extern in C99.  In C99, and "extern inline"
> definition is simply an external definition with an inline hint.
> In short, the meanings of inline with and without extern are
> swapped between GNU and C99.
> 
> The upshot is that all these definitions in header files create
> an external definition wherever those headers are included,
> resulting in multiple definition errors at link time.
> 
> Changing all these functions to "static inline" fixes the problem
> since this works as desired in all gcc versions.  Although the
> semantics are slightly different (a static inline definition may
> result in an actual function being emitted), it works as intended
> in practice.
> 
> This patch also removes extern prototype declarations for the
> changed functions where they existed.
> 
> Signed-off-by: Mans Rullgard <mans at mansr.com>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20151110/f3cba7be/attachment.sig>


More information about the U-Boot mailing list