On Tue, Jun 15, 2021 at 02:26:58PM +0800, Lecopzer Chen wrote: > > On Mon, Jun 14, 2021 at 01:51:09PM +0800, Lecopzer Chen wrote: > > > When building modules(CONFIG_...=m), I found some of module versions > > > are incorrect and set to 0. > > > This can be found in build log for first clean build which shows > > > > > > WARNING: EXPORT symbol "XXXX" [drivers/XXX/XXX.ko] version generation failed, symbol will not be versioned. > > > > I'm doing this, and I don't see the problem: > > > > $ make LLVM=1 LLVM_IAS=1 distclean > > $ make LLVM=1 LLVM_IAS=1 menuconfig > > *enable LTO* > > *enable a module* > > $ make LLVM=1 LLVM_IAS=1 -j... > > > > What series of commands (and .config) shows this for you? > > Hi Kees, > > Thanks for you checking. > > After double checking in clean android kernel build, this causes by > make version. > (I have build failed in Linux LTO, > seems it's not well support in contract to android?) > > I knew Google has LTO first in Android and upstream later, and most code > are same as upstream, so the env here I use Android common kernel for > easily testing. > > > Test env is android common kernel: android12-5.4 [1] with its latest code > and it builds from build.sh[2] > > $ BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh > + make O=.... LLVM=1 LLVM_IAS=1 DEPMOD=depmod -j12 Image modules Image.lz4 > > With make set to v3.81, this can be reproduced with CONFIG_TEE=m. > With version >= 4.2 this is not reproducible. Ah, very interesting. While there are tests in Makefile for MAKE_VERSION, if we want to do this, it should likely be extended to Kconfig, as that's where the initial version tests for things happen. We could require MAKE_VERSION >= 4.2 for LTO? -Kees > > > Our build env default set make to v3.81, although Android uses hermetic build > and v4.3 now, but Linux doesn't have such things. > > Maybe we can add build time checking or comment before CFI module versioning > build rules to avoid anyone struggling with this again:). > > [1] https://android.googlesource.com/kernel/common/+/refs/heads/android12-5.4 > [2] https://android.googlesource.com/kernel/build/+/refs/heads/master > > thanks, > Lecopzer > > -- Kees Cook