On Wed, Jul 17, 2024, at 11:36, Arnd Bergmann wrote: > On Wed, Jul 17, 2024, at 10:17, Johan Hovold wrote: >> On Wed, Jul 17, 2024 at 10:01:10AM +0200, Arnd Bergmann wrote: >> >> Yeah, that's not something I noticed at least (and I assume I would >> have). And I only did aarch64 builds on a 6.9 x86_64 host (make 4.4.1). > > Ok, I can reproduce the problem now: I installed a Fedora > VM guest and chroot mount and I see the same issue in there. > > My normal Debian host has make 4.3, so I'll see if I can figure > if a specific change in make does it. I see that there is a version check in scripts/Makefile.include from commit 875ef1a57f32 ("kbuild: use .NOTINTERMEDIATE for future GNU Make versions") that detects Fedora's make 4.4.1 as newer than 4.4, so for the first time enables this logic that I did not see on Debian. In my scripts/Makefile.asm-headers, I had copied the 'FORCE' from the existing rules in arch/x86/entry/syscalls/Makefile etc without fully understanding what that does. It looks like this does not make a difference for make-4.3 but is actually wrong for make-4.4 on the generic rule. This makes it work for me with both versions of make: --- a/scripts/Makefile.asm-headers +++ b/scripts/Makefile.asm-headers @@ -77,14 +77,14 @@ all: $(generic-y) $(syscall-y) $(obj)/%.h: $(srctree)/$(generic)/%.h $(call cmd,wrap) -$(obj)/unistd_%.h: $(syscalltbl) $(syshdr) FORCE +$(obj)/unistd_%.h: $(syscalltbl) $(syshdr) $(call if_changed,syshdr) $(obj)/unistd_compat_%.h: syscall_compat:=1 -$(obj)/unistd_compat_%.h: $(syscalltbl) $(syshdr) FORCE +$(obj)/unistd_compat_%.h: $(syscalltbl) $(syshdr) $(call if_changed,syshdr) -$(obj)/syscall_table_%.h: $(syscalltbl) $(systbl) FORCE +$(obj)/syscall_table_%.h: $(syscalltbl) $(systbl) $(call if_changed,systbl) # Create output directory. Skip it if at least one old header exists Masahiro, does that make sense to you? I assume you can explain this properly, but I'll already send a patch with this version. Arnd