* [Buildroot] [PATCH 1/1] package/binutils: disable 2.32 on unuspported FLAT platforms
@ 2022-04-09 2:07 James Hilliard
2022-04-13 20:51 ` Thomas Petazzoni via buildroot
0 siblings, 1 reply; 4+ messages in thread
From: James Hilliard @ 2022-04-09 2:07 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Romain Naour, Giulio Benetti
These architectures are unsupported in config.bfd:
https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=bfd/config.bfd;h=0e1ddb659c3ab7160aab0a7c173b85052f870e65;hb=a9d9a104dde6a749f40ce5c4576a0042a7d52d1f
Fixes:
- http://autobuild.buildroot.net/results/332/33277d4687ca9a04dbfb02c50e5755ff9e55b0b4
- http://autobuild.buildroot.net/results/5e3/5e34d11393e14fc36fd6e72b69679bc4fd1e3798
- http://autobuild.buildroot.net/results/63d/63d01d33ae30f86b63b9f42a9fea116f2f3e9005
- http://autobuild.buildroot.net/results/45b/45bc90fd2dde7bb201d7f999db1a8024cf889a06
- http://autobuild.buildroot.net/results/d1b/d1b1dfe449f82944bd48215da3cdffd05797e2e9
- http://autobuild.buildroot.net/results/a3e/a3eb1ff6bf6357242ec7993db63e57d4afeccc7b
- http://autobuild.buildroot.net/results/f4d/f4d52cabee61ee0f234b03c1ec1bd02e85e7bb20
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
---
package/binutils/Config.in.host | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host
index ea1f020989..e1c59bfbd0 100644
--- a/package/binutils/Config.in.host
+++ b/package/binutils/Config.in.host
@@ -15,6 +15,13 @@ choice
config BR2_BINUTILS_VERSION_2_32_X
bool "binutils 2.32"
depends on !BR2_csky
+ depends on !(BR2_aarch64 && BR2_BINFMT_FLAT)
+ depends on !(BR2_aarch64_be && BR2_BINFMT_FLAT)
+ depends on !(BR2_sh2a && BR2_BINFMT_FLAT)
+ depends on !(BR2_sh4 && BR2_BINFMT_FLAT)
+ depends on !(BR2_sh4a && BR2_BINFMT_FLAT)
+ depends on !(BR2_sh4aeb && BR2_BINFMT_FLAT)
+ depends on !(BR2_sh4eb && BR2_BINFMT_FLAT)
config BR2_BINUTILS_VERSION_2_35_X
bool "binutils 2.35.2"
--
2.25.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH 1/1] package/binutils: disable 2.32 on unuspported FLAT platforms
2022-04-09 2:07 [Buildroot] [PATCH 1/1] package/binutils: disable 2.32 on unuspported FLAT platforms James Hilliard
@ 2022-04-13 20:51 ` Thomas Petazzoni via buildroot
2022-04-17 6:50 ` James Hilliard
0 siblings, 1 reply; 4+ messages in thread
From: Thomas Petazzoni via buildroot @ 2022-04-13 20:51 UTC (permalink / raw)
To: James Hilliard; +Cc: Romain Naour, Giulio Benetti, Yann E. MORIN, buildroot
Hello James,
On Fri, 8 Apr 2022 20:07:19 -0600
James Hilliard <james.hilliard1@gmail.com> wrote:
> These architectures are unsupported in config.bfd:
> https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=bfd/config.bfd;h=0e1ddb659c3ab7160aab0a7c173b85052f870e65;hb=a9d9a104dde6a749f40ce5c4576a0042a7d52d1f
>
> Fixes:
> - http://autobuild.buildroot.net/results/332/33277d4687ca9a04dbfb02c50e5755ff9e55b0b4
> - http://autobuild.buildroot.net/results/5e3/5e34d11393e14fc36fd6e72b69679bc4fd1e3798
> - http://autobuild.buildroot.net/results/63d/63d01d33ae30f86b63b9f42a9fea116f2f3e9005
> - http://autobuild.buildroot.net/results/45b/45bc90fd2dde7bb201d7f999db1a8024cf889a06
> - http://autobuild.buildroot.net/results/d1b/d1b1dfe449f82944bd48215da3cdffd05797e2e9
> - http://autobuild.buildroot.net/results/a3e/a3eb1ff6bf6357242ec7993db63e57d4afeccc7b
> - http://autobuild.buildroot.net/results/f4d/f4d52cabee61ee0f234b03c1ec1bd02e85e7bb20
>
> Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
> ---
> package/binutils/Config.in.host | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host
> index ea1f020989..e1c59bfbd0 100644
> --- a/package/binutils/Config.in.host
> +++ b/package/binutils/Config.in.host
> @@ -15,6 +15,13 @@ choice
> config BR2_BINUTILS_VERSION_2_32_X
> bool "binutils 2.32"
> depends on !BR2_csky
> + depends on !(BR2_aarch64 && BR2_BINFMT_FLAT)
> + depends on !(BR2_aarch64_be && BR2_BINFMT_FLAT)
> + depends on !(BR2_sh2a && BR2_BINFMT_FLAT)
> + depends on !(BR2_sh4 && BR2_BINFMT_FLAT)
> + depends on !(BR2_sh4a && BR2_BINFMT_FLAT)
> + depends on !(BR2_sh4aeb && BR2_BINFMT_FLAT)
> + depends on !(BR2_sh4eb && BR2_BINFMT_FLAT)
I'm not sure that how we want to handle this. Indeed, even with newer
binutils versions, I really doubt supporting aarch64 with the FLAT
binary format makes a lot of sense.
As far as I'm aware, there's currently no practical use-case for Linux
noMMU on aarch64 and SH4, so I would simply disallow that. So on ARM, I
would only allow the MMU to be disabled on ARMv7-M, and on SuperH, for
SH2A. I.e something like the below patch.
Of course, that leaves the case of BR2_sh2a. But if binutils
2.35/2.36/2.37 are broken for the FLAT format (which is why they are
disabled), and 2.32 is disabled for SH2A/FLAT, then there's nothing
left available for SH2A/FLAT. Except that
package/binutils/Config.in.host is wrong in disabling 2.35/2.36/2.37
for all FLAT configs: the bug is only related to ARM.
However, I feel strange that sh2a/FLAT was not supported back in
binutils 2.32. sh2a/FLAT has been around for a very long time. In fact
what happens is that we have a patch to allow sh2a as an architecture
name: package/binutils/2.32/0001-sh-conf.patch. But that patch is
probably no longer sufficient, and some adjustements are also needed in
bfd/config.bfd.
Bottom line: there is more work than just this proposal, which simply
papers over the problem without really fixing it.
diff --git a/arch/Config.in b/arch/Config.in
index 98b0e40d51..e51ef60f40 100644
--- a/arch/Config.in
+++ b/arch/Config.in
@@ -228,7 +228,6 @@ config BR2_s390x
config BR2_sh
bool "SuperH"
- select BR2_ARCH_HAS_MMU_OPTIONAL
help
SuperH (or SH) is a 32-bit reduced instruction set computer
(RISC) instruction set architecture (ISA) developed by
diff --git a/arch/Config.in.arm b/arch/Config.in.arm
index 85040ac89f..16f053fba3 100644
--- a/arch/Config.in.arm
+++ b/arch/Config.in.arm
@@ -73,21 +73,27 @@ config BR2_ARM_CPU_HAS_THUMB2
config BR2_ARM_CPU_ARMV4
bool
+ select BR2_ARCH_HAS_MMU_MANDATORY
config BR2_ARM_CPU_ARMV5
bool
+ select BR2_ARCH_HAS_MMU_MANDATORY
config BR2_ARM_CPU_ARMV6
bool
+ select BR2_ARCH_HAS_MMU_MANDATORY
config BR2_ARM_CPU_ARMV7A
bool
+ select BR2_ARCH_HAS_MMU_MANDATORY
config BR2_ARM_CPU_ARMV7M
bool
+ select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_ARM_CPU_ARMV8A
bool
+ select BR2_ARCH_HAS_MMU_MANDATORY
choice
prompt "Target Architecture Variant"
@@ -103,23 +109,19 @@ config BR2_arm920t
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV4
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_arm922t
bool "arm922t"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV4
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_fa526
bool "fa526/626"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_ARMV4
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_strongarm
bool "strongarm sa110/sa1100"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_ARMV4
- select BR2_ARCH_HAS_MMU_OPTIONAL
comment "armv5 cores"
config BR2_arm926t
@@ -128,18 +130,15 @@ config BR2_arm926t
select BR2_ARM_CPU_MAYBE_HAS_VFPV2
select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV5
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_iwmmxt
bool "iwmmxt"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_ARMV5
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_xscale
bool "xscale"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV5
- select BR2_ARCH_HAS_MMU_OPTIONAL
comment "armv6 cores"
config BR2_arm1136j_s
@@ -147,34 +146,29 @@ config BR2_arm1136j_s
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV6
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_arm1136jf_s
bool "arm1136jf-s"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_VFPV2
select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV6
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_arm1176jz_s
bool "arm1176jz-s"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV6
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_arm1176jzf_s
bool "arm1176jzf-s"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_VFPV2
select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV6
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_arm11mpcore
bool "mpcore"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_MAYBE_HAS_VFPV2
select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV6
- select BR2_ARCH_HAS_MMU_OPTIONAL
comment "armv7a cores"
config BR2_cortex_a5
@@ -184,7 +178,6 @@ config BR2_cortex_a5
select BR2_ARM_CPU_MAYBE_HAS_VFPV4
select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_cortex_a7
bool "cortex-A7"
select BR2_ARM_CPU_HAS_ARM
@@ -192,7 +185,6 @@ config BR2_cortex_a7
select BR2_ARM_CPU_HAS_VFPV4
select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_cortex_a8
bool "cortex-A8"
select BR2_ARM_CPU_HAS_ARM
@@ -200,7 +192,6 @@ config BR2_cortex_a8
select BR2_ARM_CPU_HAS_VFPV3
select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_cortex_a9
bool "cortex-A9"
select BR2_ARM_CPU_HAS_ARM
@@ -208,7 +199,6 @@ config BR2_cortex_a9
select BR2_ARM_CPU_MAYBE_HAS_VFPV3
select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_cortex_a12
bool "cortex-A12"
select BR2_ARM_CPU_HAS_ARM
@@ -216,7 +206,6 @@ config BR2_cortex_a12
select BR2_ARM_CPU_HAS_VFPV4
select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_cortex_a15
bool "cortex-A15"
select BR2_ARM_CPU_HAS_ARM
@@ -224,7 +213,6 @@ config BR2_cortex_a15
select BR2_ARM_CPU_HAS_VFPV4
select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_cortex_a15_a7
bool "cortex-A15/A7 big.LITTLE"
select BR2_ARM_CPU_HAS_ARM
@@ -232,7 +220,6 @@ config BR2_cortex_a15_a7
select BR2_ARM_CPU_HAS_VFPV4
select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9
config BR2_cortex_a17
bool "cortex-A17"
@@ -241,7 +228,6 @@ config BR2_cortex_a17
select BR2_ARM_CPU_HAS_VFPV4
select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
config BR2_cortex_a17_a7
bool "cortex-A17/A7 big.LITTLE"
@@ -250,14 +236,12 @@ config BR2_cortex_a17_a7
select BR2_ARM_CPU_HAS_VFPV4
select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
config BR2_pj4
bool "pj4"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_VFPV3
select BR2_ARM_CPU_ARMV7A
- select BR2_ARCH_HAS_MMU_OPTIONAL
comment "armv7m cores"
config BR2_cortex_m3
@@ -286,7 +270,6 @@ config BR2_cortex_a32
select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
config BR2_cortex_a35
bool "cortex-A35"
@@ -295,7 +278,6 @@ config BR2_cortex_a35
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
config BR2_cortex_a53
bool "cortex-A53"
@@ -304,7 +286,6 @@ config BR2_cortex_a53
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_cortex_a57
bool "cortex-A57"
select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
@@ -312,7 +293,6 @@ config BR2_cortex_a57
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_cortex_a57_a53
bool "cortex-A57/A53 big.LITTLE"
select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
@@ -320,7 +300,6 @@ config BR2_cortex_a57_a53
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
config BR2_cortex_a72
bool "cortex-A72"
@@ -329,7 +308,6 @@ config BR2_cortex_a72
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
config BR2_cortex_a72_a53
bool "cortex-A72/A53 big.LITTLE"
@@ -338,7 +316,6 @@ config BR2_cortex_a72_a53
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
config BR2_cortex_a73
bool "cortex-A73"
@@ -347,7 +324,6 @@ config BR2_cortex_a73
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
config BR2_cortex_a73_a35
bool "cortex-A73/A35 big.LITTLE"
@@ -356,7 +332,6 @@ config BR2_cortex_a73_a35
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
config BR2_cortex_a73_a53
bool "cortex-A73/A53 big.LITTLE"
@@ -365,14 +340,12 @@ config BR2_cortex_a73_a53
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
config BR2_emag
bool "emag"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
config BR2_exynos_m1
bool "exynos-m1"
@@ -381,63 +354,54 @@ config BR2_exynos_m1
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
config BR2_falkor
bool "falkor"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
config BR2_phecda
bool "phecda"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
config BR2_qdf24xx
bool "qdf24xx"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
config BR2_thunderx
bool "thunderx (aka octeontx)"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
config BR2_thunderxt81
bool "thunderxt81 (aka octeontx81)"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
config BR2_thunderxt83
bool "thunderxt83 (aka octeontx83)"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
config BR2_thunderxt88
bool "thunderxt88"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
config BR2_thunderxt88p1
bool "thunderxt88p1"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
config BR2_xgene1
bool "xgene1"
@@ -446,7 +410,6 @@ config BR2_xgene1
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
comment "armv8.1a cores"
@@ -455,21 +418,18 @@ config BR2_thunderx2t99
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
config BR2_thunderx2t99p1
bool "thunderx2t99p1"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
config BR2_vulcan
bool "vulcan"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
comment "armv8.2a cores"
@@ -478,21 +438,18 @@ config BR2_cortex_a55
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_8
config BR2_cortex_a75
bool "cortex-A75"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_8
config BR2_cortex_a75_a55
bool "cortex-A75/A55 big.LITTLE"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_8
config BR2_cortex_a76
bool "cortex-A76"
@@ -501,7 +458,6 @@ config BR2_cortex_a76
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
config BR2_cortex_a76_a55
bool "cortex-A76/A55 big.LITTLE"
@@ -510,7 +466,6 @@ config BR2_cortex_a76_a55
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
config BR2_neoverse_n1
bool "neoverse-N1 (aka ares)"
@@ -519,14 +474,12 @@ config BR2_neoverse_n1
select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
config BR2_tsv110
bool "tsv110"
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
comment "armv8.4a cores"
@@ -535,7 +488,6 @@ config BR2_saphira
depends on BR2_ARCH_IS_64
select BR2_ARM_CPU_HAS_FP_ARMV8
select BR2_ARM_CPU_ARMV8A
- select BR2_ARCH_HAS_MMU_OPTIONAL
select BR2_ARCH_NEEDS_GCC_AT_LEAST_8
endchoice
diff --git a/arch/Config.in.sh b/arch/Config.in.sh
index c1ba449dd5..94b034c158 100644
--- a/arch/Config.in.sh
+++ b/arch/Config.in.sh
@@ -7,14 +7,19 @@ choice
config BR2_sh2a
bool "sh2a (SH2A big endian)"
+ select BR2_ARCH_HAS_MMU_OPTIONAL
config BR2_sh4
bool "sh4 (SH4 little endian)"
+ select BR2_ARCH_HAS_MMU_MANDATORY
config BR2_sh4eb
bool "sh4eb (SH4 big endian)"
+ select BR2_ARCH_HAS_MMU_MANDATORY
config BR2_sh4a
bool "sh4a (SH4A little endian)"
+ select BR2_ARCH_HAS_MMU_MANDATORY
config BR2_sh4aeb
bool "sh4aeb (SH4A big endian)"
+ select BR2_ARCH_HAS_MMU_MANDATORY
endchoice
config BR2_ARCH
--
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 related [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH 1/1] package/binutils: disable 2.32 on unuspported FLAT platforms
2022-04-13 20:51 ` Thomas Petazzoni via buildroot
@ 2022-04-17 6:50 ` James Hilliard
2022-04-19 19:42 ` Thomas Petazzoni via buildroot
0 siblings, 1 reply; 4+ messages in thread
From: James Hilliard @ 2022-04-17 6:50 UTC (permalink / raw)
To: Thomas Petazzoni; +Cc: Romain Naour, Giulio Benetti, Yann E. MORIN, buildroot
On Wed, Apr 13, 2022 at 2:51 PM Thomas Petazzoni
<thomas.petazzoni@bootlin.com> wrote:
>
> Hello James,
>
> On Fri, 8 Apr 2022 20:07:19 -0600
> James Hilliard <james.hilliard1@gmail.com> wrote:
>
> > These architectures are unsupported in config.bfd:
> > https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=bfd/config.bfd;h=0e1ddb659c3ab7160aab0a7c173b85052f870e65;hb=a9d9a104dde6a749f40ce5c4576a0042a7d52d1f
> >
> > Fixes:
> > - http://autobuild.buildroot.net/results/332/33277d4687ca9a04dbfb02c50e5755ff9e55b0b4
> > - http://autobuild.buildroot.net/results/5e3/5e34d11393e14fc36fd6e72b69679bc4fd1e3798
> > - http://autobuild.buildroot.net/results/63d/63d01d33ae30f86b63b9f42a9fea116f2f3e9005
> > - http://autobuild.buildroot.net/results/45b/45bc90fd2dde7bb201d7f999db1a8024cf889a06
> > - http://autobuild.buildroot.net/results/d1b/d1b1dfe449f82944bd48215da3cdffd05797e2e9
> > - http://autobuild.buildroot.net/results/a3e/a3eb1ff6bf6357242ec7993db63e57d4afeccc7b
> > - http://autobuild.buildroot.net/results/f4d/f4d52cabee61ee0f234b03c1ec1bd02e85e7bb20
> >
> > Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
> > ---
> > package/binutils/Config.in.host | 7 +++++++
> > 1 file changed, 7 insertions(+)
> >
> > diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host
> > index ea1f020989..e1c59bfbd0 100644
> > --- a/package/binutils/Config.in.host
> > +++ b/package/binutils/Config.in.host
> > @@ -15,6 +15,13 @@ choice
> > config BR2_BINUTILS_VERSION_2_32_X
> > bool "binutils 2.32"
> > depends on !BR2_csky
> > + depends on !(BR2_aarch64 && BR2_BINFMT_FLAT)
> > + depends on !(BR2_aarch64_be && BR2_BINFMT_FLAT)
> > + depends on !(BR2_sh2a && BR2_BINFMT_FLAT)
> > + depends on !(BR2_sh4 && BR2_BINFMT_FLAT)
> > + depends on !(BR2_sh4a && BR2_BINFMT_FLAT)
> > + depends on !(BR2_sh4aeb && BR2_BINFMT_FLAT)
> > + depends on !(BR2_sh4eb && BR2_BINFMT_FLAT)
>
> I'm not sure that how we want to handle this. Indeed, even with newer
> binutils versions, I really doubt supporting aarch64 with the FLAT
> binary format makes a lot of sense.
Well our newer binutils versions do already have FLAT disabled
entirely by setting:
depends on !BR2_BINFMT_FLAT
>
> As far as I'm aware, there's currently no practical use-case for Linux
> noMMU on aarch64 and SH4, so I would simply disallow that. So on ARM, I
> would only allow the MMU to be disabled on ARMv7-M, and on SuperH, for
> SH2A. I.e something like the below patch.
>
> Of course, that leaves the case of BR2_sh2a. But if binutils
> 2.35/2.36/2.37 are broken for the FLAT format (which is why they are
> disabled), and 2.32 is disabled for SH2A/FLAT, then there's nothing
> left available for SH2A/FLAT
Hmm, my assumption was that even though FLAT may not be supported
by the buildroot toolchain it may be possible some external toolchains
could have support for them, so I figured best just disable known invalid
options here for buildroot toolchain binutils.
> Except that
> package/binutils/Config.in.host is wrong in disabling 2.35/2.36/2.37
> for all FLAT configs: the bug is only related to ARM.
Hmm, so maybe this set of depends plus an arm exclusion is needed
for newer binutils?
>
> However, I feel strange that sh2a/FLAT was not supported back in
> binutils 2.32. sh2a/FLAT has been around for a very long time. In fact
> what happens is that we have a patch to allow sh2a as an architecture
> name: package/binutils/2.32/0001-sh-conf.patch. But that patch is
> probably no longer sufficient, and some adjustements are also needed in
> bfd/config.bfd.
So, that patch doesn't seem to add uclinux as a supported target,
which seems to be required for BR2_BINFMT_FLAT builds based on:
https://github.com/buildroot/buildroot/blob/2022.02.1/package/Makefile.in#L44-L45
https://github.com/buildroot/buildroot/blob/2022.02.1/package/Makefile.in#L40
https://github.com/buildroot/buildroot/blob/2022.02.1/package/binutils/binutils.mk#L83
https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=bfd/config.bfd;h=0e1ddb659c3ab7160aab0a7c173b85052f870e65;hb=a9d9a104dde6a749f40ce5c4576a0042a7d52d1f#l1243
The failures from what I can tell here are due to the lack of a uclinux
target for sh2a in bfd/config.bfd.
>
> Bottom line: there is more work than just this proposal, which simply
> papers over the problem without really fixing it.
Yeah, that's probably a bit outside my area of expertise, I was just
adding these dependencies by tracing the configure failure conditions.
I'm not really familiar with no-mmu builds in general so wouldn't really
know what's correct for the architecture mmu settings.
>
> diff --git a/arch/Config.in b/arch/Config.in
> index 98b0e40d51..e51ef60f40 100644
> --- a/arch/Config.in
> +++ b/arch/Config.in
> @@ -228,7 +228,6 @@ config BR2_s390x
>
> config BR2_sh
> bool "SuperH"
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> help
> SuperH (or SH) is a 32-bit reduced instruction set computer
> (RISC) instruction set architecture (ISA) developed by
> diff --git a/arch/Config.in.arm b/arch/Config.in.arm
> index 85040ac89f..16f053fba3 100644
> --- a/arch/Config.in.arm
> +++ b/arch/Config.in.arm
> @@ -73,21 +73,27 @@ config BR2_ARM_CPU_HAS_THUMB2
>
> config BR2_ARM_CPU_ARMV4
> bool
> + select BR2_ARCH_HAS_MMU_MANDATORY
>
> config BR2_ARM_CPU_ARMV5
> bool
> + select BR2_ARCH_HAS_MMU_MANDATORY
>
> config BR2_ARM_CPU_ARMV6
> bool
> + select BR2_ARCH_HAS_MMU_MANDATORY
>
> config BR2_ARM_CPU_ARMV7A
> bool
> + select BR2_ARCH_HAS_MMU_MANDATORY
>
> config BR2_ARM_CPU_ARMV7M
> bool
> + select BR2_ARCH_HAS_MMU_OPTIONAL
>
> config BR2_ARM_CPU_ARMV8A
> bool
> + select BR2_ARCH_HAS_MMU_MANDATORY
>
> choice
> prompt "Target Architecture Variant"
> @@ -103,23 +109,19 @@ config BR2_arm920t
> select BR2_ARM_CPU_HAS_ARM
> select BR2_ARM_CPU_HAS_THUMB
> select BR2_ARM_CPU_ARMV4
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_arm922t
> bool "arm922t"
> select BR2_ARM_CPU_HAS_ARM
> select BR2_ARM_CPU_HAS_THUMB
> select BR2_ARM_CPU_ARMV4
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_fa526
> bool "fa526/626"
> select BR2_ARM_CPU_HAS_ARM
> select BR2_ARM_CPU_ARMV4
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_strongarm
> bool "strongarm sa110/sa1100"
> select BR2_ARM_CPU_HAS_ARM
> select BR2_ARM_CPU_ARMV4
> - select BR2_ARCH_HAS_MMU_OPTIONAL
>
> comment "armv5 cores"
> config BR2_arm926t
> @@ -128,18 +130,15 @@ config BR2_arm926t
> select BR2_ARM_CPU_MAYBE_HAS_VFPV2
> select BR2_ARM_CPU_HAS_THUMB
> select BR2_ARM_CPU_ARMV5
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_iwmmxt
> bool "iwmmxt"
> select BR2_ARM_CPU_HAS_ARM
> select BR2_ARM_CPU_ARMV5
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_xscale
> bool "xscale"
> select BR2_ARM_CPU_HAS_ARM
> select BR2_ARM_CPU_HAS_THUMB
> select BR2_ARM_CPU_ARMV5
> - select BR2_ARCH_HAS_MMU_OPTIONAL
>
> comment "armv6 cores"
> config BR2_arm1136j_s
> @@ -147,34 +146,29 @@ config BR2_arm1136j_s
> select BR2_ARM_CPU_HAS_ARM
> select BR2_ARM_CPU_HAS_THUMB
> select BR2_ARM_CPU_ARMV6
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_arm1136jf_s
> bool "arm1136jf-s"
> select BR2_ARM_CPU_HAS_ARM
> select BR2_ARM_CPU_HAS_VFPV2
> select BR2_ARM_CPU_HAS_THUMB
> select BR2_ARM_CPU_ARMV6
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_arm1176jz_s
> bool "arm1176jz-s"
> select BR2_ARM_CPU_HAS_ARM
> select BR2_ARM_CPU_HAS_THUMB
> select BR2_ARM_CPU_ARMV6
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_arm1176jzf_s
> bool "arm1176jzf-s"
> select BR2_ARM_CPU_HAS_ARM
> select BR2_ARM_CPU_HAS_VFPV2
> select BR2_ARM_CPU_HAS_THUMB
> select BR2_ARM_CPU_ARMV6
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_arm11mpcore
> bool "mpcore"
> select BR2_ARM_CPU_HAS_ARM
> select BR2_ARM_CPU_MAYBE_HAS_VFPV2
> select BR2_ARM_CPU_HAS_THUMB
> select BR2_ARM_CPU_ARMV6
> - select BR2_ARCH_HAS_MMU_OPTIONAL
>
> comment "armv7a cores"
> config BR2_cortex_a5
> @@ -184,7 +178,6 @@ config BR2_cortex_a5
> select BR2_ARM_CPU_MAYBE_HAS_VFPV4
> select BR2_ARM_CPU_HAS_THUMB2
> select BR2_ARM_CPU_ARMV7A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_cortex_a7
> bool "cortex-A7"
> select BR2_ARM_CPU_HAS_ARM
> @@ -192,7 +185,6 @@ config BR2_cortex_a7
> select BR2_ARM_CPU_HAS_VFPV4
> select BR2_ARM_CPU_HAS_THUMB2
> select BR2_ARM_CPU_ARMV7A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_cortex_a8
> bool "cortex-A8"
> select BR2_ARM_CPU_HAS_ARM
> @@ -200,7 +192,6 @@ config BR2_cortex_a8
> select BR2_ARM_CPU_HAS_VFPV3
> select BR2_ARM_CPU_HAS_THUMB2
> select BR2_ARM_CPU_ARMV7A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_cortex_a9
> bool "cortex-A9"
> select BR2_ARM_CPU_HAS_ARM
> @@ -208,7 +199,6 @@ config BR2_cortex_a9
> select BR2_ARM_CPU_MAYBE_HAS_VFPV3
> select BR2_ARM_CPU_HAS_THUMB2
> select BR2_ARM_CPU_ARMV7A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_cortex_a12
> bool "cortex-A12"
> select BR2_ARM_CPU_HAS_ARM
> @@ -216,7 +206,6 @@ config BR2_cortex_a12
> select BR2_ARM_CPU_HAS_VFPV4
> select BR2_ARM_CPU_HAS_THUMB2
> select BR2_ARM_CPU_ARMV7A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_cortex_a15
> bool "cortex-A15"
> select BR2_ARM_CPU_HAS_ARM
> @@ -224,7 +213,6 @@ config BR2_cortex_a15
> select BR2_ARM_CPU_HAS_VFPV4
> select BR2_ARM_CPU_HAS_THUMB2
> select BR2_ARM_CPU_ARMV7A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_cortex_a15_a7
> bool "cortex-A15/A7 big.LITTLE"
> select BR2_ARM_CPU_HAS_ARM
> @@ -232,7 +220,6 @@ config BR2_cortex_a15_a7
> select BR2_ARM_CPU_HAS_VFPV4
> select BR2_ARM_CPU_HAS_THUMB2
> select BR2_ARM_CPU_ARMV7A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9
> config BR2_cortex_a17
> bool "cortex-A17"
> @@ -241,7 +228,6 @@ config BR2_cortex_a17
> select BR2_ARM_CPU_HAS_VFPV4
> select BR2_ARM_CPU_HAS_THUMB2
> select BR2_ARM_CPU_ARMV7A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
> config BR2_cortex_a17_a7
> bool "cortex-A17/A7 big.LITTLE"
> @@ -250,14 +236,12 @@ config BR2_cortex_a17_a7
> select BR2_ARM_CPU_HAS_VFPV4
> select BR2_ARM_CPU_HAS_THUMB2
> select BR2_ARM_CPU_ARMV7A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
> config BR2_pj4
> bool "pj4"
> select BR2_ARM_CPU_HAS_ARM
> select BR2_ARM_CPU_HAS_VFPV3
> select BR2_ARM_CPU_ARMV7A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
>
> comment "armv7m cores"
> config BR2_cortex_m3
> @@ -286,7 +270,6 @@ config BR2_cortex_a32
> select BR2_ARM_CPU_HAS_THUMB2
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
> config BR2_cortex_a35
> bool "cortex-A35"
> @@ -295,7 +278,6 @@ config BR2_cortex_a35
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
> config BR2_cortex_a53
> bool "cortex-A53"
> @@ -304,7 +286,6 @@ config BR2_cortex_a53
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_cortex_a57
> bool "cortex-A57"
> select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
> @@ -312,7 +293,6 @@ config BR2_cortex_a57
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_cortex_a57_a53
> bool "cortex-A57/A53 big.LITTLE"
> select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
> @@ -320,7 +300,6 @@ config BR2_cortex_a57_a53
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
> config BR2_cortex_a72
> bool "cortex-A72"
> @@ -329,7 +308,6 @@ config BR2_cortex_a72
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
> config BR2_cortex_a72_a53
> bool "cortex-A72/A53 big.LITTLE"
> @@ -338,7 +316,6 @@ config BR2_cortex_a72_a53
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
> config BR2_cortex_a73
> bool "cortex-A73"
> @@ -347,7 +324,6 @@ config BR2_cortex_a73
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
> config BR2_cortex_a73_a35
> bool "cortex-A73/A35 big.LITTLE"
> @@ -356,7 +332,6 @@ config BR2_cortex_a73_a35
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
> config BR2_cortex_a73_a53
> bool "cortex-A73/A53 big.LITTLE"
> @@ -365,14 +340,12 @@ config BR2_cortex_a73_a53
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
> config BR2_emag
> bool "emag"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
> config BR2_exynos_m1
> bool "exynos-m1"
> @@ -381,63 +354,54 @@ config BR2_exynos_m1
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
> config BR2_falkor
> bool "falkor"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
> config BR2_phecda
> bool "phecda"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
> config BR2_qdf24xx
> bool "qdf24xx"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
> config BR2_thunderx
> bool "thunderx (aka octeontx)"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
> config BR2_thunderxt81
> bool "thunderxt81 (aka octeontx81)"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
> config BR2_thunderxt83
> bool "thunderxt83 (aka octeontx83)"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
> config BR2_thunderxt88
> bool "thunderxt88"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
> config BR2_thunderxt88p1
> bool "thunderxt88p1"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
> config BR2_xgene1
> bool "xgene1"
> @@ -446,7 +410,6 @@ config BR2_xgene1
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
>
> comment "armv8.1a cores"
> @@ -455,21 +418,18 @@ config BR2_thunderx2t99
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
> config BR2_thunderx2t99p1
> bool "thunderx2t99p1"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
> config BR2_vulcan
> bool "vulcan"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
>
> comment "armv8.2a cores"
> @@ -478,21 +438,18 @@ config BR2_cortex_a55
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_8
> config BR2_cortex_a75
> bool "cortex-A75"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_8
> config BR2_cortex_a75_a55
> bool "cortex-A75/A55 big.LITTLE"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_8
> config BR2_cortex_a76
> bool "cortex-A76"
> @@ -501,7 +458,6 @@ config BR2_cortex_a76
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
> config BR2_cortex_a76_a55
> bool "cortex-A76/A55 big.LITTLE"
> @@ -510,7 +466,6 @@ config BR2_cortex_a76_a55
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
> config BR2_neoverse_n1
> bool "neoverse-N1 (aka ares)"
> @@ -519,14 +474,12 @@ config BR2_neoverse_n1
> select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
> config BR2_tsv110
> bool "tsv110"
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
>
> comment "armv8.4a cores"
> @@ -535,7 +488,6 @@ config BR2_saphira
> depends on BR2_ARCH_IS_64
> select BR2_ARM_CPU_HAS_FP_ARMV8
> select BR2_ARM_CPU_ARMV8A
> - select BR2_ARCH_HAS_MMU_OPTIONAL
> select BR2_ARCH_NEEDS_GCC_AT_LEAST_8
> endchoice
>
> diff --git a/arch/Config.in.sh b/arch/Config.in.sh
> index c1ba449dd5..94b034c158 100644
> --- a/arch/Config.in.sh
> +++ b/arch/Config.in.sh
> @@ -7,14 +7,19 @@ choice
>
> config BR2_sh2a
> bool "sh2a (SH2A big endian)"
> + select BR2_ARCH_HAS_MMU_OPTIONAL
> config BR2_sh4
> bool "sh4 (SH4 little endian)"
> + select BR2_ARCH_HAS_MMU_MANDATORY
> config BR2_sh4eb
> bool "sh4eb (SH4 big endian)"
> + select BR2_ARCH_HAS_MMU_MANDATORY
> config BR2_sh4a
> bool "sh4a (SH4A little endian)"
> + select BR2_ARCH_HAS_MMU_MANDATORY
> config BR2_sh4aeb
> bool "sh4aeb (SH4A big endian)"
> + select BR2_ARCH_HAS_MMU_MANDATORY
> endchoice
>
> config BR2_ARCH
>
>
> --
> 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] 4+ messages in thread
* Re: [Buildroot] [PATCH 1/1] package/binutils: disable 2.32 on unuspported FLAT platforms
2022-04-17 6:50 ` James Hilliard
@ 2022-04-19 19:42 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 4+ messages in thread
From: Thomas Petazzoni via buildroot @ 2022-04-19 19:42 UTC (permalink / raw)
To: James Hilliard; +Cc: Romain Naour, buildroot, Giulio Benetti, Yann E. MORIN
Hello,
On Sun, 17 Apr 2022 00:50:19 -0600
James Hilliard <james.hilliard1@gmail.com> wrote:
> > I'm not sure that how we want to handle this. Indeed, even with newer
> > binutils versions, I really doubt supporting aarch64 with the FLAT
> > binary format makes a lot of sense.
>
> Well our newer binutils versions do already have FLAT disabled
> entirely by setting:
> depends on !BR2_BINFMT_FLAT
Right, but as I state below, this is incorrect: they are disabled
because they introduce a regression on ARM noMMU. Other noMMU
architectures are (as far as we know), not affected.
> > As far as I'm aware, there's currently no practical use-case for Linux
> > noMMU on aarch64 and SH4, so I would simply disallow that. So on ARM, I
> > would only allow the MMU to be disabled on ARMv7-M, and on SuperH, for
> > SH2A. I.e something like the below patch.
> >
> > Of course, that leaves the case of BR2_sh2a. But if binutils
> > 2.35/2.36/2.37 are broken for the FLAT format (which is why they are
> > disabled), and 2.32 is disabled for SH2A/FLAT, then there's nothing
> > left available for SH2A/FLAT
>
> Hmm, my assumption was that even though FLAT may not be supported
> by the buildroot toolchain it may be possible some external toolchains
> could have support for them, so I figured best just disable known invalid
> options here for buildroot toolchain binutils.
Practically speaking, nobody is using/testing FLAT on aarch64, SH4 or
other MMU-capable architectures. We should support reasonable use-cases
only IMO.
> > Except that
> > package/binutils/Config.in.host is wrong in disabling 2.35/2.36/2.37
> > for all FLAT configs: the bug is only related to ARM.
>
> Hmm, so maybe this set of depends plus an arm exclusion is needed
> for newer binutils?
I'm not following you here.
> > However, I feel strange that sh2a/FLAT was not supported back in
> > binutils 2.32. sh2a/FLAT has been around for a very long time. In fact
> > what happens is that we have a patch to allow sh2a as an architecture
> > name: package/binutils/2.32/0001-sh-conf.patch. But that patch is
> > probably no longer sufficient, and some adjustements are also needed in
> > bfd/config.bfd.
>
> So, that patch doesn't seem to add uclinux as a supported target,
No, it makes it support sh2a as an architecture name.
> which seems to be required for BR2_BINFMT_FLAT builds based on:
> https://github.com/buildroot/buildroot/blob/2022.02.1/package/Makefile.in#L44-L45
> https://github.com/buildroot/buildroot/blob/2022.02.1/package/Makefile.in#L40
> https://github.com/buildroot/buildroot/blob/2022.02.1/package/binutils/binutils.mk#L83
> https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=bfd/config.bfd;h=0e1ddb659c3ab7160aab0a7c173b85052f870e65;hb=a9d9a104dde6a749f40ce5c4576a0042a7d52d1f#l1243
>
> The failures from what I can tell here are due to the lack of a uclinux
> target for sh2a in bfd/config.bfd.
I need to have a closer look it seems.
> > Bottom line: there is more work than just this proposal, which simply
> > papers over the problem without really fixing it.
>
> Yeah, that's probably a bit outside my area of expertise, I was just
> adding these dependencies by tracing the configure failure conditions.
>
> I'm not really familiar with no-mmu builds in general so wouldn't really
> know what's correct for the architecture mmu settings.
Yeah, that's also why I'm advocating for a broader solution. I'll try
to cook some patches. I don't think I'll fix all problems in one go,
but we can progressively get there.
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] 4+ messages in thread
end of thread, other threads:[~2022-04-19 19:42 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-09 2:07 [Buildroot] [PATCH 1/1] package/binutils: disable 2.32 on unuspported FLAT platforms James Hilliard
2022-04-13 20:51 ` Thomas Petazzoni via buildroot
2022-04-17 6:50 ` James Hilliard
2022-04-19 19:42 ` Thomas Petazzoni via buildroot
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.