]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
boot: fix OBJS to not include BTX's crt0.o
authorWarner Losh <imp@FreeBSD.org>
Thu, 6 May 2021 19:05:09 +0000 (13:05 -0600)
committerWarner Losh <imp@FreeBSD.org>
Wed, 21 Jul 2021 16:16:33 +0000 (10:16 -0600)
commit7028ae849a54552f399a3d221e906a467fee09f3
tree1f370b2df7af7a4c11139b7b021e981971f503ef
parent7a64f67f1c6aff43ac5025f436967234cd9336a6
boot: fix OBJS to not include BTX's crt0.o

According to comments in the Makefile, to make pxeboot work we need to
have crt0.o first. This is needed because the simplified loader in
pxeboot assumes that the startup code is at offset 0 in this binary. In
normal booting, the start address can be obtained from headers of the
binary, but since pxeboot encodes this as a pure binary, it has no way
of knowing where that is and assumes 0. Added comments to that effect
in the Makefile.

We've done this by adding it to OBJS before all the other .o's are
added. However, there's a problem. This also adds it to the CLEANFILES
variable, which causes it to be removed from multiple places. The
dependencies may also cause it to be re-built at a time that's after
boot2 is built. This causes installs to fail because at install time
boot2 is considered to be out of date and the programs to rebuild it are
no longer in the path.

Cope with this problem by just adding it to LDFLAGS instead.

Glanced at by: kevans ("I thought that went in ages ago")
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D28876

(cherry picked from commit e713d3a013882893fceb84dd14569052271497a9)
stand/i386/loader/Makefile