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
signature.asc
Description: Digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot