i386 loaders: avoid lld 13 garbage collecting linker sets

Because lld 13 and higher default to garbage collecting start/stop
symbols when using --gc-sections, the linker sets used in the i386 boot
loaders will disappear. This leads to the loaders not recognizing any
commands, and failure to boot.

Until we have a good set of linker scripts for the loaders, work around
it by disabling the start-stop-gc feature.

(cherry picked from commit c90cab0d66)
This commit is contained in:
Dimitry Andric 2021-09-08 14:04:13 +02:00
parent 34a3091cc3
commit 6d8f2277de

View File

@ -61,6 +61,12 @@ ORG= 0x0
CFLAGS+= -Wall
LDFLAGS+= -static ${LDFLAGS_ORG} -Wl,--gc-sections
.if ${LINKER_TYPE} == "lld" && ${LINKER_VERSION} >= 130000
# lld 13 and higher default to garbage collecting start/stop symbols,
# completely ruining our linker sets. For now, work around it by
# disabling this un-feature.
LDFLAGS+= -Wl,-z,nostart-stop-gc
.endif
# i386 standalone support library
LIBI386= ${BOOTOBJ}/i386/libi386/libi386.a