[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