All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/2] linux: introduce LINUX_KCFLAGS to add additional options to the C compiler
@ 2020-09-26 19:13 Romain Naour
  2020-09-26 19:13 ` [Buildroot] [PATCH 2/2] linux: Disable -ftree-loop-distribute-patterns when building for microblaze with gcc >= 10 Romain Naour
  0 siblings, 1 reply; 7+ messages in thread
From: Romain Naour @ 2020-09-26 19:13 UTC (permalink / raw)
  To: buildroot

Since 9a50447b5d4b2ab0162e3235395ab9a4c8a647d5 KCFLAGS is set
to disable a compiler warning but doesn't allow to provide
more flags.

This refactoring introduce LINUX_KCFLAGS to provide more
options to the C compiler.

Signed-off-by: Romain Naour <romain.naour@gmail.com>
---
 linux/linux.mk | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/linux/linux.mk b/linux/linux.mk
index e07e014d1e..b9b223e3f3 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -71,7 +71,8 @@ LINUX_PATCH = $(filter ftp://% http://% https://%,$(LINUX_PATCHES))
 # host-pkgconf will look for host libraries and not target ones.
 LINUX_MAKE_ENV = \
 	$(HOST_MAKE_ENV) \
-	BR_BINARIES_DIR=$(BINARIES_DIR)
+	BR_BINARIES_DIR=$(BINARIES_DIR) \
+	KCFLAGS="$(LINUX_KCFLAGS)"
 
 LINUX_INSTALL_IMAGES = YES
 LINUX_DEPENDENCIES = host-kmod \
@@ -154,7 +155,7 @@ endif
 # sanitize the arguments passed from user space in registers.
 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82435
 ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_8),y)
-LINUX_MAKE_ENV += KCFLAGS=-Wno-attribute-alias
+LINUX_KCFLAGS += -Wno-attribute-alias
 endif
 
 ifeq ($(BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT),y)
-- 
2.25.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH 2/2] linux: Disable -ftree-loop-distribute-patterns when building for microblaze with gcc >= 10
  2020-09-26 19:13 [Buildroot] [PATCH 1/2] linux: introduce LINUX_KCFLAGS to add additional options to the C compiler Romain Naour
@ 2020-09-26 19:13 ` Romain Naour
  2020-09-30 20:59   ` Thomas Petazzoni
  0 siblings, 1 reply; 7+ messages in thread
From: Romain Naour @ 2020-09-26 19:13 UTC (permalink / raw)
  To: buildroot

GCC 10 now enable by default -ftree-loop-distribute-patterns at -O2 or -Os
optimization level instead of -O3, see commit [1].

Due to this change, the microblaze kernel doesn't boot (as reported by
toolchain-builder project).

The gcc docs between version 9 and 10 has been updated accordingly [2] [3]
but there no word about this change in the gcc 10 changelog [4].

Fixes microblazebe:
https://gitlab.com/bootlin/toolchains-builder/-/jobs/729359536 (glibc)
https://gitlab.com/bootlin/toolchains-builder/-/jobs/729359538 (musl)
https://gitlab.com/bootlin/toolchains-builder/-/jobs/729359540 (uClubc-ng)

Fixes microblazeel:
https://gitlab.com/bootlin/toolchains-builder/-/jobs/729359542 (glibc)
https://gitlab.com/bootlin/toolchains-builder/-/jobs/729359544 (musl)
https://gitlab.com/bootlin/toolchains-builder/-/jobs/729359546 (uClibc-ng)

This has been reported upsteam [5].

[1] https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=5879ab5fafedc8f6f9bfe95a4cf8501b0df90edd
[2] https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Optimize-Options.html#Optimize-Options
[3] https://gcc.gnu.org/onlinedocs/gcc-10.2.0/gcc/Optimize-Options.html#Optimize-Options
[4] https://gcc.gnu.org/gcc-10/changes.html
[5] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97208

Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 linux/linux.mk | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/linux/linux.mk b/linux/linux.mk
index b9b223e3f3..9ee9054bed 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -158,6 +158,12 @@ ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_8),y)
 LINUX_KCFLAGS += -Wno-attribute-alias
 endif
 
+# https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=5879ab5fafedc8f6f9bfe95a4cf8501b0df90edd
+# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97208
+ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_10)$(BR2_microblaze),yy)
+LINUX_KCFLAGS += -fno-tree-loop-distribute-patterns
+endif
+
 ifeq ($(BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT),y)
 LINUX_MAKE_ENV += DTC_FLAGS=-@
 endif
-- 
2.25.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH 2/2] linux: Disable -ftree-loop-distribute-patterns when building for microblaze with gcc >= 10
  2020-09-26 19:13 ` [Buildroot] [PATCH 2/2] linux: Disable -ftree-loop-distribute-patterns when building for microblaze with gcc >= 10 Romain Naour
@ 2020-09-30 20:59   ` Thomas Petazzoni
  2020-09-30 21:04     ` Romain Naour
  0 siblings, 1 reply; 7+ messages in thread
From: Thomas Petazzoni @ 2020-09-30 20:59 UTC (permalink / raw)
  To: buildroot

On Sat, 26 Sep 2020 21:13:30 +0200
Romain Naour <romain.naour@gmail.com> wrote:

> +# https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=5879ab5fafedc8f6f9bfe95a4cf8501b0df90edd
> +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97208
> +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_10)$(BR2_microblaze),yy)
> +LINUX_KCFLAGS += -fno-tree-loop-distribute-patterns
> +endif

I am wondering if this is the right approach. If the
-ftree-loop-distribute-patterns breaks stuff for the kernel, presumably
it could also break stuff for user-space software. So I guess we should
instead disable it entirely in TARGET_CFLAGS.

The gotcha being of course that we don't pass TARGET_CFLAGS to the
Linux package...

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH 2/2] linux: Disable -ftree-loop-distribute-patterns when building for microblaze with gcc >= 10
  2020-09-30 20:59   ` Thomas Petazzoni
@ 2020-09-30 21:04     ` Romain Naour
  2020-10-01  8:06       ` Thomas Petazzoni
  0 siblings, 1 reply; 7+ messages in thread
From: Romain Naour @ 2020-09-30 21:04 UTC (permalink / raw)
  To: buildroot

Hi Thomas,

Le 30/09/2020 ? 22:59, Thomas Petazzoni a ?crit?:
> On Sat, 26 Sep 2020 21:13:30 +0200
> Romain Naour <romain.naour@gmail.com> wrote:
> 
>> +# https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=5879ab5fafedc8f6f9bfe95a4cf8501b0df90edd
>> +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97208
>> +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_10)$(BR2_microblaze),yy)
>> +LINUX_KCFLAGS += -fno-tree-loop-distribute-patterns
>> +endif
> 
> I am wondering if this is the right approach. If the
> -ftree-loop-distribute-patterns breaks stuff for the kernel, presumably
> it could also break stuff for user-space software. So I guess we should
> instead disable it entirely in TARGET_CFLAGS.
> 
> The gotcha being of course that we don't pass TARGET_CFLAGS to the
> Linux package...

Indeed, I have no ideas if the userspace built with this toolchain is really
working... except for busybox which was used by qemu_microblazeel_mmu_defconfig

Best regards,
Romain

> 
> Thomas
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH 2/2] linux: Disable -ftree-loop-distribute-patterns when building for microblaze with gcc >= 10
  2020-09-30 21:04     ` Romain Naour
@ 2020-10-01  8:06       ` Thomas Petazzoni
  2020-10-06 18:46         ` Arnout Vandecappelle
  0 siblings, 1 reply; 7+ messages in thread
From: Thomas Petazzoni @ 2020-10-01  8:06 UTC (permalink / raw)
  To: buildroot

On Wed, 30 Sep 2020 23:04:22 +0200
Romain Naour <romain.naour@gmail.com> wrote:

> > The gotcha being of course that we don't pass TARGET_CFLAGS to the
> > Linux package...  
> 
> Indeed, I have no ideas if the userspace built with this toolchain is really
> working... except for busybox which was used by qemu_microblazeel_mmu_defconfig

I think we should be passing this flag in TARGET_CFLAGS. What bothers
me is that passing it in TARGET_CFLAGS would not resolve the Linux
build issue, as Linux isn't built with TARGET_CFLAGS...

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH 2/2] linux: Disable -ftree-loop-distribute-patterns when building for microblaze with gcc >= 10
  2020-10-01  8:06       ` Thomas Petazzoni
@ 2020-10-06 18:46         ` Arnout Vandecappelle
  2020-10-06 18:50           ` Thomas Petazzoni
  0 siblings, 1 reply; 7+ messages in thread
From: Arnout Vandecappelle @ 2020-10-06 18:46 UTC (permalink / raw)
  To: buildroot



On 01/10/2020 10:06, Thomas Petazzoni wrote:
> On Wed, 30 Sep 2020 23:04:22 +0200
> Romain Naour <romain.naour@gmail.com> wrote:
> 
>>> The gotcha being of course that we don't pass TARGET_CFLAGS to the
>>> Linux package...  
>>
>> Indeed, I have no ideas if the userspace built with this toolchain is really
>> working... except for busybox which was used by qemu_microblazeel_mmu_defconfig
> 
> I think we should be passing this flag in TARGET_CFLAGS. What bothers
> me is that passing it in TARGET_CFLAGS would not resolve the Linux
> build issue, as Linux isn't built with TARGET_CFLAGS...

 If it's something needed to "fix the compiler", then it should be in the
toolchain wrapper (i.e. TOOLCHAIN_WRAPPER_OPTS).

 Regards,
 Arnout

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Buildroot] [PATCH 2/2] linux: Disable -ftree-loop-distribute-patterns when building for microblaze with gcc >= 10
  2020-10-06 18:46         ` Arnout Vandecappelle
@ 2020-10-06 18:50           ` Thomas Petazzoni
  0 siblings, 0 replies; 7+ messages in thread
From: Thomas Petazzoni @ 2020-10-06 18:50 UTC (permalink / raw)
  To: buildroot

On Tue, 6 Oct 2020 20:46:04 +0200
Arnout Vandecappelle <arnout@mind.be> wrote:

>  If it's something needed to "fix the compiler", then it should be in the
> toolchain wrapper (i.e. TOOLCHAIN_WRAPPER_OPTS).

Right, good idea!

Romain, do you think you can revisit this using TOOLCHAIN_WRAPPER_OPTS ?

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-10-06 18:50 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-26 19:13 [Buildroot] [PATCH 1/2] linux: introduce LINUX_KCFLAGS to add additional options to the C compiler Romain Naour
2020-09-26 19:13 ` [Buildroot] [PATCH 2/2] linux: Disable -ftree-loop-distribute-patterns when building for microblaze with gcc >= 10 Romain Naour
2020-09-30 20:59   ` Thomas Petazzoni
2020-09-30 21:04     ` Romain Naour
2020-10-01  8:06       ` Thomas Petazzoni
2020-10-06 18:46         ` Arnout Vandecappelle
2020-10-06 18:50           ` Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.