Skip to contentSkip to conversation

Keep HOSTCFLAG and HOSTLDFLAGS consistent when Making Linux Kernel

PATCH New Jianming.qiao 3 participants 3 messages Jul 28, 2017 – Aug 16, 2017

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Keep HOSTCFLAG and HOSTLDFLAGS consistent when Making Linux Kernel

From: "Jianming.qiao" <[email protected]>

A build error is spotted when adding -m32 in Linux kernel Makefile for
both host compiler flag and Host linker flag for compiling linux kernel in 64bit Host. When building with buildroot, an error shows the host linker can't link the .o file generated by host compiler because -m32 host Linker flag doesn't append to the host linker, thereby trying to link 32 bit object files in 64bit mode(without adding -m32 in host linker flag).

Therefore,both host compiler flag and host linker flag should both appear in the LINUX_MAKE_FLAGS.

---
 linux/linux.mk | 1 +
 1 file changed, 1 insertion(+)
linux/linux.mk +1 -0
index 032d64f..a97886d 100644
@@ -97,6 +97,7 @@ endif
 LINUX_MAKE_FLAGS = \
 	HOSTCC="$(HOSTCC)" \
 	HOSTCFLAGS="$(HOSTCFLAGS)" \
+	HOSTLDFLAGS="$(HOST_LDFLAGS)" \
 	ARCH=$(KERNEL_ARCH) \
 	INSTALL_MOD_PATH=$(TARGET_DIR) \
 	CROSS_COMPILE="$(TARGET_CROSS)" \
Signature · 1 line
1.9.1
#1 lore raw

PATCH 1/1 Keep HOSTCFLAG and HOSTLDFLAGS consistent when Making Linux Kernel

Hello,

Quoted 4 lines · Jianming.qiao

From: "Jianming.qiao" <[email protected]>

A build error is spotted when adding -m32 in Linux kernel Makefile for both host compiler flag and Host linker flag for compiling linux kernel in 64bit Host.

Where are you adding this -m32 option ?

Quoted 3 lines

When building with buildroot, an error shows the host linker can't link the .o file generated by host compiler because -m32 host Linker flag doesn't append to the host linker, thereby trying to link 32 bit object files in 64bit mode(without adding -m32 in host linker flag).

Could you give more details on how to reproduce the issue you're seeing ?

Quoted 12 lines

Therefore,both host compiler flag and host linker flag should both appear in the LINUX_MAKE_FLAGS.

---
 linux/linux.mk | 1 +
 1 file changed, 1 insertion(+)
linux/linux.mk +0 -0
index 032d64f..a97886d 100644

linux/linux.mk endif · line 99

Quoted 3 lines
linux/linux.mk +0 -0
@@ -97,6 +97,7 @@ endif
 LINUX_MAKE_FLAGS = \
 	HOSTCC="$(HOSTCC)" \
 	HOSTCFLAGS="$(HOSTCFLAGS)" \

Unrelated to your patch, but this $(HOSTCFLAGS) thing is messy. We actually have:

- HOSTCFLAGS, defined in the main Makefile to the value of $(CFLAGS_FOR_BUILD), which is empty. HOSTCFLAGS is then exported. It was done this way a long time ago in commit c0d7d4e0355b49b489d7235e945481cf5d32087f (from 2007) for kconfig. I'm not sure we still need this.

- HOST_CFLAGS, defined in package/Makefile.in, which actually contains some useful flags. It is most likely the one we should pass as HOSTCFLAGS in LINUX_MAKE_FLAGS.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#2 lore raw

PATCH 1/1 Keep HOSTCFLAG and HOSTLDFLAGS consistent when Making Linux Kernel

Quoted 9 lines · Thomas Petazzoni

Unrelated to your patch, but this $(HOSTCFLAGS) thing is messy. We actually have:

- HOSTCFLAGS, defined in the main Makefile to the value of $(CFLAGS_FOR_BUILD), which is empty. HOSTCFLAGS is then exported. It was done this way a long time ago in commit c0d7d4e0355b49b489d7235e945481cf5d32087f (from 2007) for kconfig. I'm not sure we still need this.

Quoted 3 lines

- HOST_CFLAGS, defined in package/Makefile.in, which actually contains some useful flags. It is most likely the one we should pass as HOSTCFLAGS in LINUX_MAKE_FLAGS.

In addition, I see no reason why we would *override* the kernel's HOSTCFLAGS.
So I think the proper fix is to do HOST_EXTRACFLAGS=$(HOST_CFLAGS) instead.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF