> 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 Yes, We can imitate how CLANG_VERSION was implemented in Kconfig. Accroding to GNU make release page[1], I've only tested for 3.81, 4.2 and 4.3. 4.2 was released in 2016, I think it's fine for LTO lowest version. [1] https://ftp.gnu.org/gnu/make/ thanks, Lecopzer