diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2021-09-08 12:04:13 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2021-09-08 12:04:13 +0000 |
commit | c90cab0d668af5d947054e47184d4f8dcb874ec8 (patch) | |
tree | f35ea96819c4f6a81af4f81470f6d68cb0cbc53c /stand/i386/loader/Makefile | |
parent | 4f7c436548ea1cc935c4f4b237693fbe8ed7939a (diff) | |
download | src-c90cab0d668af5d947054e47184d4f8dcb874ec8.tar.gz src-c90cab0d668af5d947054e47184d4f8dcb874ec8.zip |
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.
MFC after: 1 week
Diffstat (limited to 'stand/i386/loader/Makefile')
-rw-r--r-- | stand/i386/loader/Makefile | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/stand/i386/loader/Makefile b/stand/i386/loader/Makefile index 0abf6120c1e3..571e3b2cb653 100644 --- a/stand/i386/loader/Makefile +++ b/stand/i386/loader/Makefile @@ -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 |