Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

kbuild: allow architectures to override CC_CAN_LINK

The generic test for CC_CAN_LINK assumes that all architectures use -m32
and -m64 to switch between 32-bit and 64-bit compilation. This is overly
simplistic. Architectures may use other flags (-mabi, -m31, etc.) or may
also require byte order handling (-mlittle-endian, -EL). Expressing all
of the different possibilities will be very complicated and brittle.
Instead allow architectures to supply their own logic which will be
easy to understand and evolve.

Both the boolean ARCH_HAS_CC_CAN_LINK and the string ARCH_USERFLAGS need
to be implemented as kconfig does not allow the reuse of string options.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Reviewed-by: Nicolas Schier <nsc@kernel.org>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Link: https://patch.msgid.link/20251114-kbuild-userprogs-bits-v3-3-4dee0d74d439@linutronix.de
Signed-off-by: Nicolas Schier <nsc@kernel.org>

authored by

Thomas Weißschuh and committed by
Nicolas Schier
deab487e 80623f2c

+15 -2
+11 -2
Makefile
··· 1137 1137 LDFLAGS_vmlinux += --emit-relocs --discard-none 1138 1138 endif 1139 1139 1140 - # Align the bit size of userspace programs with the kernel 1141 - USERFLAGS_FROM_KERNEL := -m32 -m64 --target=% 1140 + # Align the architecture of userspace programs with the kernel 1141 + USERFLAGS_FROM_KERNEL := --target=% 1142 + 1143 + ifdef CONFIG_ARCH_USERFLAGS 1144 + KBUILD_USERCFLAGS += $(CONFIG_ARCH_USERFLAGS) 1145 + KBUILD_USERLDFLAGS += $(CONFIG_ARCH_USERFLAGS) 1146 + else 1147 + # If not overridden also inherit the bit size 1148 + USERFLAGS_FROM_KERNEL += -m32 -m64 1149 + endif 1150 + 1142 1151 KBUILD_USERCFLAGS += $(filter $(USERFLAGS_FROM_KERNEL), $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS)) 1143 1152 KBUILD_USERLDFLAGS += $(filter $(USERFLAGS_FROM_KERNEL), $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS)) 1144 1153
+4
init/Kconfig
··· 82 82 int 83 83 default $(rustc-llvm-version) 84 84 85 + config ARCH_HAS_CC_CAN_LINK 86 + bool 87 + 85 88 config CC_CAN_LINK 86 89 bool 90 + default ARCH_CC_CAN_LINK if ARCH_HAS_CC_CAN_LINK 87 91 default $(cc_can_link_user,$(m64-flag)) if 64BIT 88 92 default $(cc_can_link_user,$(m32-flag)) 89 93