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 <m...@mansr.com>

Applied to u-boot/master, thanks!

-- 
Tom

Attachment: signature.asc
Description: Digital signature

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to