* [Buildroot] [PATCH 1/2] configs/rock5b: Freeze gcc to version 11
2023-08-08 5:01 [Buildroot] [PATCH 0/2] Fix Rock 5B build, broken by gcc 12 warnings Kilian Zinnecker via buildroot
@ 2023-08-08 5:01 ` Kilian Zinnecker via buildroot
2023-08-08 5:01 ` [Buildroot] [PATCH 2/2] board/radxa/rock5b: Add patches for gcc12 warnings Kilian Zinnecker via buildroot
2023-08-08 7:43 ` [Buildroot] [PATCH 0/2] Fix Rock 5B build, broken by gcc 12 warnings Thomas Petazzoni via buildroot
2 siblings, 0 replies; 9+ messages in thread
From: Kilian Zinnecker via buildroot @ 2023-08-08 5:01 UTC (permalink / raw)
To: buildroot; +Cc: Kilian Zinnecker
This patch sets the gcc version to use for the Radxa Rock 5B to
version 11. Recently the gcc default version in buildroot was
changed to gcc 12. However, the used kernel for the Rock 5B is a
custom kernel, provided by Radxa, with specific changes. It is
derived from a 5.10 version of the mainline kernel. When compiled
with gcc 12 some kernel code parts break, due to warnings. Some of
those parts are fixed in later versions of the mainline kernel.
Others are parts customized, non-mainline code, for which no fix
seems to exist currently.
Signed-off-by: Kilian Zinnecker <kilian.zinnecker@mail.de>
---
configs/rock5b_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/configs/rock5b_defconfig b/configs/rock5b_defconfig
index 6e525d9676..93d34f8cf3 100644
--- a/configs/rock5b_defconfig
+++ b/configs/rock5b_defconfig
@@ -6,6 +6,7 @@ BR2_ROOTFS_POST_SCRIPT_ARGS=""
BR2_TARGET_GENERIC_HOSTNAME="rock5b"
BR2_TARGET_GENERIC_ISSUE="Welcome to the rock5b board"
BR2_SYSTEM_DHCP="eth0"
+BR2_GCC_VERSION_11_X=y
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_GIT=y
BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/radxa/kernel.git"
--
2.34.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH 2/2] board/radxa/rock5b: Add patches for gcc12 warnings
2023-08-08 5:01 [Buildroot] [PATCH 0/2] Fix Rock 5B build, broken by gcc 12 warnings Kilian Zinnecker via buildroot
2023-08-08 5:01 ` [Buildroot] [PATCH 1/2] configs/rock5b: Freeze gcc to version 11 Kilian Zinnecker via buildroot
@ 2023-08-08 5:01 ` Kilian Zinnecker via buildroot
2023-08-08 7:43 ` [Buildroot] [PATCH 0/2] Fix Rock 5B build, broken by gcc 12 warnings Thomas Petazzoni via buildroot
2 siblings, 0 replies; 9+ messages in thread
From: Kilian Zinnecker via buildroot @ 2023-08-08 5:01 UTC (permalink / raw)
To: buildroot; +Cc: Kilian Zinnecker
This patch introduces patches for the custom kernel, as it is
currently used for the Radxa Rock 5B. The patches fix two gcc
compiler warnings, which result in a build error, if the kernel
is used with gcc version 12.
Signed-off-by: Kilian Zinnecker <kilian.zinnecker@mail.de>
---
...st-ether_addr-prototypes-to-silence-.patch | 62 +++++++++++++++++++
...x-building-error-on-Werror-array-com.patch | 45 ++++++++++++++
configs/rock5b_defconfig | 1 +
3 files changed, 108 insertions(+)
create mode 100644 board/radxa/rock5b/0001-etherdevice-Adjust-ether_addr-prototypes-to-silence-.patch
create mode 100644 board/radxa/rock5b/0002-mm-page_alloc-fix-building-error-on-Werror-array-com.patch
diff --git a/board/radxa/rock5b/0001-etherdevice-Adjust-ether_addr-prototypes-to-silence-.patch b/board/radxa/rock5b/0001-etherdevice-Adjust-ether_addr-prototypes-to-silence-.patch
new file mode 100644
index 0000000000..8c1cec2f47
--- /dev/null
+++ b/board/radxa/rock5b/0001-etherdevice-Adjust-ether_addr-prototypes-to-silence-.patch
@@ -0,0 +1,62 @@
+From 2618a0dae09ef37728dab89ff60418cbe25ae6bd Mon Sep 17 00:00:00 2001
+From: Kees Cook <keescook@chromium.org>
+Date: Sat, 12 Feb 2022 09:14:49 -0800
+Subject: [PATCH] etherdevice: Adjust ether_addr* prototypes to silence
+ -Wstringop-overead
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+With GCC 12, -Wstringop-overread was warning about an implicit cast from
+char[6] to char[8]. However, the extra 2 bytes are always thrown away,
+alignment doesn't matter, and the risk of hitting the edge of unallocated
+memory has been accepted, so this prototype can just be converted to a
+regular char *. Silences:
+
+net/core/dev.c: In function ‘bpf_prog_run_generic_xdp’: net/core/dev.c:4618:21: warning: ‘ether_addr_equal_64bits’ reading 8 bytes from a region of size 6 [-Wstringop-overread]
+ 4618 | orig_host = ether_addr_equal_64bits(eth->h_dest, > skb->dev->dev_addr);
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+net/core/dev.c:4618:21: note: referencing argument 1 of type ‘const u8[8]’ {aka ‘const unsigned char[8]’}
+net/core/dev.c:4618:21: note: referencing argument 2 of type ‘const u8[8]’ {aka ‘const unsigned char[8]’}
+In file included from net/core/dev.c:91: include/linux/etherdevice.h:375:20: note: in a call to function ‘ether_addr_equal_64bits’
+ 375 | static inline bool ether_addr_equal_64bits(const u8 addr1[6+2],
+ | ^~~~~~~~~~~~~~~~~~~~~~~
+
+Reported-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Tested-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Link: https://lore.kernel.org/netdev/20220212090811.uuzk6d76agw2vv73@pengutronix.de
+Cc: Jakub Kicinski <kuba@kernel.org>
+Cc: "David S. Miller" <davem@davemloft.net>
+Cc: netdev@vger.kernel.org
+Signed-off-by: Kees Cook <keescook@chromium.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ include/linux/etherdevice.h | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h
+index 2ad71cc90b37..92b10e67d5f8 100644
+--- a/include/linux/etherdevice.h
++++ b/include/linux/etherdevice.h
+@@ -134,7 +134,7 @@ static inline bool is_multicast_ether_addr(const u8 *addr)
+ #endif
+ }
+
+-static inline bool is_multicast_ether_addr_64bits(const u8 addr[6+2])
++static inline bool is_multicast_ether_addr_64bits(const u8 *addr)
+ {
+ #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) && BITS_PER_LONG == 64
+ #ifdef __BIG_ENDIAN
+@@ -372,8 +372,7 @@ static inline bool ether_addr_equal(const u8 *addr1, const u8 *addr2)
+ * Please note that alignment of addr1 & addr2 are only guaranteed to be 16 bits.
+ */
+
+-static inline bool ether_addr_equal_64bits(const u8 addr1[6+2],
+- const u8 addr2[6+2])
++static inline bool ether_addr_equal_64bits(const u8 *addr1, const u8 *addr2)
+ {
+ #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) && BITS_PER_LONG == 64
+ u64 fold = (*(const u64 *)addr1) ^ (*(const u64 *)addr2);
+--
+2.34.1
+
diff --git a/board/radxa/rock5b/0002-mm-page_alloc-fix-building-error-on-Werror-array-com.patch b/board/radxa/rock5b/0002-mm-page_alloc-fix-building-error-on-Werror-array-com.patch
new file mode 100644
index 0000000000..34eae9c158
--- /dev/null
+++ b/board/radxa/rock5b/0002-mm-page_alloc-fix-building-error-on-Werror-array-com.patch
@@ -0,0 +1,45 @@
+From 69848f9488bc1088bcd9a73987dff8d2cb47a060 Mon Sep 17 00:00:00 2001
+From: Xiongwei Song <sxwjean@gmail.com>
+Date: Fri, 14 Jan 2022 14:07:24 -0800
+Subject: [PATCH] mm: page_alloc: fix building error on -Werror=array-compare
+
+commit ca831f29f8f25c97182e726429b38c0802200c8f upstream.
+
+Arthur Marsh reported we would hit the error below when building kernel
+with gcc-12:
+
+ CC mm/page_alloc.o
+ mm/page_alloc.c: In function `mem_init_print_info':
+ mm/page_alloc.c:8173:27: error: comparison between two arrays [-Werror=array-compare]
+ 8173 | if (start <= pos && pos < end && size > adj) \
+ |
+
+In C++20, the comparision between arrays should be warned.
+
+Link: https://lkml.kernel.org/r/20211125130928.32465-1-sxwjean@me.com
+Signed-off-by: Xiongwei Song <sxwjean@gmail.com>
+Reported-by: Arthur Marsh <arthur.marsh@internode.on.net>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ mm/page_alloc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index f022e0024e8d..f3418edb136b 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -7678,7 +7678,7 @@ void __init mem_init_print_info(const char *str)
+ */
+ #define adj_init_size(start, end, size, pos, adj) \
+ do { \
+- if (start <= pos && pos < end && size > adj) \
++ if (&start[0] <= &pos[0] && &pos[0] < &end[0] && size > adj) \
+ size -= adj; \
+ } while (0)
+
+--
+2.34.1
+
diff --git a/configs/rock5b_defconfig b/configs/rock5b_defconfig
index 93d34f8cf3..b8c7347288 100644
--- a/configs/rock5b_defconfig
+++ b/configs/rock5b_defconfig
@@ -11,6 +11,7 @@ BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_GIT=y
BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/radxa/kernel.git"
BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="52f51a2b5ba178f331af62260d2da86d7472c14b"
+BR2_LINUX_KERNEL_PATCH="board/radxa/rock5b/0001-etherdevice-Adjust-ether_addr-prototypes-to-silence-.patch board/radxa/rock5b/0002-mm-page_alloc-fix-building-error-on-Werror-array-com.patch"
BR2_LINUX_KERNEL_DEFCONFIG="rockchip_linux"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/rk3588-rock-5b"
--
2.34.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [Buildroot] [PATCH 0/2] Fix Rock 5B build, broken by gcc 12 warnings
2023-08-08 5:01 [Buildroot] [PATCH 0/2] Fix Rock 5B build, broken by gcc 12 warnings Kilian Zinnecker via buildroot
2023-08-08 5:01 ` [Buildroot] [PATCH 1/2] configs/rock5b: Freeze gcc to version 11 Kilian Zinnecker via buildroot
2023-08-08 5:01 ` [Buildroot] [PATCH 2/2] board/radxa/rock5b: Add patches for gcc12 warnings Kilian Zinnecker via buildroot
@ 2023-08-08 7:43 ` Thomas Petazzoni via buildroot
2023-08-08 20:44 ` Kilian Zinnecker via buildroot
2023-08-20 15:29 ` Kilian Zinnecker via buildroot
2 siblings, 2 replies; 9+ messages in thread
From: Thomas Petazzoni via buildroot @ 2023-08-08 7:43 UTC (permalink / raw)
To: Kilian Zinnecker via buildroot; +Cc: Kilian Zinnecker
Hello Kilian,
Thanks for your work. See below some comments/questions.
On Tue, 8 Aug 2023 07:01:20 +0200
Kilian Zinnecker via buildroot <buildroot@buildroot.org> wrote:
> Building the image for the Radxa Rock 5B currently breaks: The gcc
> version was recently changed to version 12 and gcc 12 seems to stop
> compiling, if certain warnings occur. See the broken build here:
>
> https://gitlab.com/buildroot.org/buildroot/-/jobs/4795673759
>
> This patch series adds two patches from the mainline Linux kernel,
> which fix two of the warnings. However, also custom code parts of the
> used custom kernel break due to warnings from gcc 12. The best
> solution would be to fix those issues as well. However, until they are
> fixed, the version of gcc used for the Rock 5B is set to the previous
> version, gcc 11.
>
> Kilian Zinnecker (2):
> configs/rock5b: Freeze gcc to version 11
> board/radxa/rock5b: Add patches for gcc12 warnings
I'm not sure to understand the reasoning for the second patch. Does it
fix all gcc 12.x issues or not? If not, what is the motivation for this
second patch?
Also: gcc 11.x is currently the oldest version supported by Buildroot,
it means that as soon as gcc 14.x is released, we will drop support for
gcc 11.x. So clearly, the solution of sticking to gcc 11.x is not going
to work for a very long time.
Best regards,
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 9+ messages in thread