arch: drop support for SH2A

Until commit "arch/Config.in.sh: fixup MMU selection" in this series,
SH2A could either be used with BR2_USE_MMU disabled or BR2_USE_MMU
enabled.

The later made absolutely no sense, since SH2A does not have a MMU:
MMU support was introduced starting from SH3 according to
https://en.wikipedia.org/wiki/SuperH#SH-3

Also, since commit 22d5501e03 ("arch:
tidy up binary formats config"), which was merged in Buildroot
2015.05, the architecture tuple used when BR2_sh2a=y and BR2_USE_MMU
disabled is sh2a-buildroot-uclinux-uclibc, and this was already
unsupported back in the days of Buildroot 2015.08 and binutils 2.24,
causing the build to fail with:

*** BFD does not support target sh2a-buildroot-uclinux-uclibc.

just like it fails to build today with recent version of binutils.

So, this has been broken since 2015.08, and nobody complained. SH2A is
seldom used, so it's time to kill it.

It is worth mentioning that there had been an attempt at resurrecting
SH2 support around 2015 (see https://lwn.net/Articles/647636/) as part
of the J2 core. This effort led to the addition of FDPIC support for
SH2A in the musl C library (and therefore proper ELF binaries, with
shared libraries), but that was never supported in Buildroot. Now that
the J2 project is essentially dead, there is no reason to bother with
this.

Fixes:

  http://autobuild.buildroot.net/results/63d01d33ae30f86b63b9f42a9fea116f2f3e9005/

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2022.05.x
Thomas Petazzoni 2022-04-19 23:34:48 +02:00 committed by Yann E. MORIN
parent aa8a2dacf2
commit 04ea3d38dd
5 changed files with 12 additions and 12 deletions

View File

@ -146,6 +146,13 @@ endif
comment "Legacy options removed in 2022.05"
config BR2_sh2a
bool "sh2a architecture support removed"
select BR2_LEGACY
help
The SuperH 2A (SH2A) architecture was not maintained, and
broken, so its support was dropped.
config BR2_BINUTILS_VERSION_2_35_X
bool "binutils 2.35.x has been removed"
select BR2_LEGACY

View File

@ -5,8 +5,6 @@ choice
help
Specific CPU variant to use
config BR2_sh2a
bool "sh2a (SH2A big endian)"
config BR2_sh4
bool "sh4 (SH4 little endian)"
select BR2_ARCH_HAS_MMU_MANDATORY
@ -22,7 +20,6 @@ config BR2_sh4aeb
endchoice
config BR2_ARCH
default "sh2a" if BR2_sh2a
default "sh4" if BR2_sh4
default "sh4eb" if BR2_sh4eb
default "sh4a" if BR2_sh4a
@ -33,7 +30,7 @@ config BR2_NORMALIZED_ARCH
config BR2_ENDIAN
default "LITTLE" if BR2_sh4 || BR2_sh4a
default "BIG" if BR2_sh2a || BR2_sh4eb || BR2_sh4aeb
default "BIG" if BR2_sh4eb || BR2_sh4aeb
config BR2_READELF_ARCH_NAME
default "Renesas / SuperH SH"

View File

@ -124,7 +124,6 @@ config BR2_UCLIBC_MIPS_NAN
config BR2_UCLIBC_SH_TYPE
string
default "SH2A" if BR2_sh2a
default "SH4" if BR2_sh4 || BR2_sh4eb
depends on BR2_UCLIBC_TARGET_ARCH = "sh"

View File

@ -31,7 +31,7 @@ config BR2_TOOLCHAIN_BUILDROOT_UCLIBC
BR2_arm || BR2_armeb || \
BR2_i386 || BR2_m68k || BR2_microblaze || \
BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \
BR2_or1k || BR2_powerpc || BR2_RISCV_64 || BR2_sh2a || \
BR2_or1k || BR2_powerpc || BR2_RISCV_64 || \
BR2_sh4 || BR2_sh4eb || BR2_sparc || BR2_xtensa || \
BR2_x86_64
select BR2_TOOLCHAIN_USES_UCLIBC

View File

@ -237,12 +237,9 @@ def fixup_config(sysinfo, configfile):
if 'BR2_PACKAGE_PYTHON3=y\n' in configlines and \
BR2_TOOLCHAIN_EXTERNAL_URL + 'mips64el-ctng_n64-linux-gnu.tar.xz"\n' in configlines:
return False
# libffi not available on sh2a and ARMv7-M, but propagating libffi
# arch dependencies in Buildroot is really too much work, so we
# handle this here.
if 'BR2_sh2a=y\n' in configlines and \
'BR2_PACKAGE_LIBFFI=y\n' in configlines:
return False
# libffi not available on ARMv7-M, but propagating libffi arch
# dependencies in Buildroot is really too much work, so we handle
# this here.
if 'BR2_ARM_CPU_ARMV7M=y\n' in configlines and \
'BR2_PACKAGE_LIBFFI=y\n' in configlines:
return False