Bug 233339 - genassym.o build race
Summary: genassym.o build race
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: CURRENT
Hardware: Any Any
: --- Affects Only Me
Assignee: Bryan Drewery
URL:
Keywords:
: 233732 (view as bug list)
Depends on:
Blocks:
 
Reported: 2018-11-19 20:40 UTC by Mark Johnston
Modified: 2018-12-04 15:50 UTC (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mark Johnston freebsd_committer 2018-11-19 20:40:50 UTC
I occasionally hit a kernel build failure when building a kernel from scratch (i.e., no -DKERNFAST or anything like that).  It manifests like this:

nm: 'genassym.o': No such file or directory
nm: 'genassym.o': No such file or directory
/usr/home/markj/src/freebsd-dev/sys/amd64/linux32/linux32_support.s:38:2: error: expected relocatable expression
 movl $-EFAULT,%eax
 ^

At this point, if I go into the objdir for linux.ko, I see an empty assym.inc and no genassym.o.  In kmod.mk we have:

480 assym.inc: genassym.o
481 offset.inc: genoffset.o
482 assym.inc: ${SYSDIR}/kern/genassym.sh
483         sh ${SYSDIR}/kern/genassym.sh genassym.o > ${.TARGET}
484 genassym.o: ${SYSDIR}/${MACHINE}/${MACHINE}/genassym.c offset.inc
485 genassym.o: ${SRCS:Mopt_*.h}
486         ${CC} -c ${CFLAGS:N-flto:N-fno-common} \
487             ${SYSDIR}/${MACHINE}/${MACHINE}/genassym.c
488 offset.inc: ${SYSDIR}/kern/genoffset.sh genoffset.o
489         sh ${SYSDIR}/kern/genoffset.sh genoffset.o > ${.TARGET}
490 genoffset.o: ${SYSDIR}/kern/genoffset.c
491 genoffset.o: ${SRCS:Mopt_*.h}
492         ${CC} -c ${CFLAGS:N-flto:N-fno-common} \
493             ${SYSDIR}/kern/genoffset.c

So, we *should* have compiled genassym.c before invoking genassym.sh (which is where the nm(1) error above comes from), but that's not happening.  The problem seems to be that the dependency is satisfied by the kernel's genassym.o, which is generated very early during the kernel build, so when building modules we don't wait for the module's genassym.o to be created.
Comment 1 Mark Johnston freebsd_committer 2018-12-04 15:50:19 UTC
*** Bug 233732 has been marked as a duplicate of this bug. ***