aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2021-09-08 12:04:13 +0000
committerDimitry Andric <dim@FreeBSD.org>2021-09-15 10:32:16 +0000
commit8e732dbd37ff11276cc552edf5b1a6f484b9ab2d (patch)
tree67fcb6a79eeb5f4f3ce298dcd8b0fedb721fb6c6
parent719cb45e82be5ebd02a4c121d7fcebba492849b8 (diff)
downloadsrc-8e732dbd37ff11276cc552edf5b1a6f484b9ab2d.tar.gz
src-8e732dbd37ff11276cc552edf5b1a6f484b9ab2d.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. (cherry picked from commit c90cab0d668af5d947054e47184d4f8dcb874ec8)
-rw-r--r--stand/i386/loader/Makefile6
1 files changed, 6 insertions, 0 deletions
diff --git a/stand/i386/loader/Makefile b/stand/i386/loader/Makefile
index d332ea0530c7..5ac9db2b7216 100644
--- a/stand/i386/loader/Makefile
+++ b/stand/i386/loader/Makefile
@@ -50,6 +50,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