The coreutils-i18n-expand-unexpand.patch adds 3 definitions of the
mbfile_multi_getc function. 2 of the definitions are marked with
the inline keyword, which means that there must also be an externally
visible definition. The 3rd definition is marked extern inline, which statisfies
this requirement. However, the 3rd definition is defined in mbfile.c
which is not compiled or linked in to any executable. This causes build
failures if the compiler decides not to inline the function (which it is
allowed to do) e.g.
src/expand.c:153: undefined reference to `mbfile_multi_getc'
clang does not inline this function, but gcc does which is why
you will not see this failure when compiling with gcc. However,
gcc could choose not to inline this, so even though the build succeeds,
it is depending on an implementation detail of gcc rather than the
C specification.
In order to fix this problem, mbfile.c was added to the list of sources for
any executable that uses mbfile_multi_getc.