diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2023-07-23 13:48:36 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2023-08-01 19:50:47 +0000 |
| commit | e3e6fc3713229e5075473b9e0e9a66699e8a322b (patch) | |
| tree | 80b3f6a82a9f3b18474a0ca7a934bdba5122bf48 | |
| parent | 9b45d8eddfac906d9f78a84a9954f74c222a4ee2 (diff) | |
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)
(cherry picked from commit f1f27dfa4ad9da53fcdfc6aae644fab83bda4e76)
Approved by: so
Security: FreeBSD-EN-23:08.vnet
| -rw-r--r-- | sys/conf/kmod.mk | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/conf/kmod.mk b/sys/conf/kmod.mk index 2a2ab1d02277..b616be508ce4 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 |
