aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2023-07-23 13:48:36 +0000
committerDimitry Andric <dim@FreeBSD.org>2023-07-26 18:03:46 +0000
commit98e7f836e65ee413cd0b383371a6aca0115084ed (patch)
treec973f7feecf90e05e9fab2572030a21b37ef5a49
parent56749f05dbfdb003aeb5639ef5f9b8af8f5e65ba (diff)
downloadsrc-98e7f836e65ee413cd0b383371a6aca0115084ed.tar.gz
src-98e7f836e65ee413cd0b383371a6aca0115084ed.zip
Work around VNET and DPCPU related panics on aarch64
lld >= 14 and recent GNU ld can relax adrp+add and adrp+ldr instructions, which breaks VNET and DPCPU when used in modules. Until VNET and DPCPU can be fixed to deal with these relaxed instructions, disable linker relaxation for now. PR: 264094 Reviewed by: markj MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D41156 (cherry picked from commit 80e4ac2964a11edef456a15b77e43aadeaf273a2)
-rw-r--r--sys/conf/kmod.mk7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/conf/kmod.mk b/sys/conf/kmod.mk
index 610484ba7e36..f67be86eeb73 100644
--- a/sys/conf/kmod.mk
+++ b/sys/conf/kmod.mk
@@ -168,6 +168,13 @@ CFLAGS+= -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer
CFLAGS+= -fPIC
.endif
+.if ${MACHINE_CPUARCH} == "aarch64"
+# https://bugs.freebsd.org/264094
+# lld >= 14 and recent GNU ld can relax adrp+add and adrp+ldr instructions,
+# which breaks VNET.
+LDFLAGS+= --no-relax
+.endif
+
# Temporary workaround for PR 196407, which contains the fascinating details.
# Don't allow clang to use fpu instructions or registers in kernel modules.
.if ${MACHINE_CPUARCH} == arm