Undesirable preprocessor options passed when building modules

Glenn Washburn development at efficientek.com
Sat Jun 11 15:06:49 PDT 2022


Hi,

When building an out of tree module (I expect it happens in tree as
well) for ARCH=um, I'm seeing options like -Dsetjmp=kernel_setjmp being
sent to the compiler. This is causing the zfs[1] kernel module to fail
to build because it uses a function internally called setjmp. Usually
this wouldn't be a problem because both the definition and calls for
setjmp would be renamed. However, setjmp is defined in an assembly file
and so is not getting renamed, causing modpost to bork because it can't
find the symbol named "kernel_setjmp".

I've fixed this in the zfs code base by using "#undef setjmp" when
CONFIG_UML_X86 is defined. But I'm thinking a better fix would be for
the ARCH=um build to not send these name redefinitions in the first
place. I'm thinking a possible solution is to only send those options
to the compiler when not compiling module code or even better only code
under arch/um. Or would this be too much of a pain to fix?

Glenn

[1] https://zfsonlinux.org/



More information about the linux-um mailing list