Re: [PATCH v2] codafs: Fix build using bare-metal toolchain

From: Sam Protsenko
Date: Wed Nov 21 2018 - 14:37:05 EST


On Wed, Nov 21, 2018 at 8:10 PM Jan Harkes <jaharkes@xxxxxxxxxx> wrote:
>
> On Wed, Nov 21, 2018 at 06:41:13PM +0200, Andy Shevchenko wrote:
> > I'm not sure how you managed to miss people in this list (perhaps by
> > default you have suppress all Cc in your Git configuration), but I
> > guess we may gently ask Christoph to apply this in case Jan will not
> > appear.
>
> You have got to give me a little more than 10 minutes to respond before
> assuming that I would not appear... I don't think I've ignored any
> previous emails on this subject and the only issues has been some people
> not receiving my responses for unknown reasons (agressive spam filter?).
>
> I have no problem with this patch, have it sitting with some other
> non-urgent patches and in case it doesn't appear upstream it should
> piggyback with whatever I have to send.
>

Thanks, Jan, really appreciate it. We need this patch to fix our tests
with allmodconfig configuration (in Linaro CI loops).

> I still don't know why the bare-metal toolchain couldn't just add a
> -D__linux__. I understand that this define is expected to be always
> present while compiling kernel headers so that there is no good reason
> to even bother testing for it, which is why I have no issue with the
> patch. But it seems it would make your life a lot easier if you had it
> defined.
>

As I understand it, from toolchain's point of view, if __linux__ is
defined then it means that the program is being built *for* Linux
(i.e. we can use Linux specific features, ABI, like syscalls).
Checking this definition can make sense in uapi headers, but in kernel
code we shouldn't use it (as kernel is baremetal program and not
compiled for some OS). I presume that's why __linux__ is not defined
in bare-metal toolchains (as those don't provide Linux specific
features, libc, etc).

> Jan
>