Add ARM Cortex-M3 support
v3 cover Add ARM Cortex-M3 support
Hi all,
this patchset introduces support for the M3 processors. These processors don't have an MMU and they don't support the regular ARM mode (only Thumb and Thumb2).
The OSELAS 2014.12.0 toolchain is added, along with a few patches to make it usable within BR since it has some quirks (patches #2 and #3).
I'm planning to send a defconfig for the CIAA board[1] once it's mainlined in Linux. But, for now, this config can generate a proper rootfs:
BR2_arm=y
BR2_cortex_m3=y
BR2_TOOLCHAIN_EXTERNAL=y
The changes from v2 are:
- Patch #1 adapted to new MMU/BINFMT configs
- INFLATE.deb patch dropped as it didn't work for every .deb.
- elf2flt patch dropped, as it didn't make sense and it's not needed for now. We encountered some problems building a custom U-boot and it's likely that the problem is there.
Any comments and testing welcome!
[1] http://www.proyecto-ciaa.com.ar/
Guido Mart?nez (4):
arm: update processor types
toolchain: allow for stupid toolchains
toolchain: introduce BR2_TOOLCHAIN_HAS_RESOLVER
toolchain-external: add OSELAS 2014.12.0 Cortex-M3 toolchain
arch/Config.in.arm | 5 +++ package/busybox/busybox.mk | 3 ++ toolchain/Config.in | 3 ++ toolchain/helpers.mk | 6 ++-- toolchain/toolchain-external/Config.in | 42 ++++++++++++++++++++++ .../toolchain-external/toolchain-external.hash | 4 +++ toolchain/toolchain-external/toolchain-external.mk | 10 ++++++ 7 files changed, 71 insertions(+), 2 deletions(-)
Signature · 1 line
2.1.4
PATCH v3 1/4 arm: update processor types
Add the Cortex M3 variant. These microcontrollers don't support regular ARM instructions and don't have an MMU.
--- arch/Config.in.arm | 5 +++++ 1 file changed, 5 insertions(+)
arch/Config.in.arm +5 -0
@@ -146,6 +146,10 @@ config BR2_cortex_a15 select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_ARMV7A select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_m3 + bool "cortex-M3" + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_HAS_THUMB2 config BR2_fa526 bool "fa526/626" select BR2_ARM_CPU_HAS_ARM
@@ -408,6 +412,7 @@ config BR2_GCC_TARGET_CPU default "cortex-a9" if BR2_cortex_a9 default "cortex-a12" if BR2_cortex_a12 default "cortex-a15" if BR2_cortex_a15 + default "cortex-m3" if BR2_cortex_m3 default "fa526" if BR2_fa526 default "marvell-pj4" if BR2_pj4 default "strongarm" if BR2_strongarm
Signature · 1 line
2.1.4
PATCH 1/4 arm: update processor types
Guido, All,
On 2015-06-26 14:33 -0300, Guido Mart?nez spake thusly:
Quoted 4 lines
Add the Cortex M3 variant. These microcontrollers don't support regular ARM instructions and don't have an MMU.
Signed-off-by Guido Mart?nez <[email protected]>
Regards,
Yann E. MORIN.
Quoted 34 lines
--- arch/Config.in.arm | 5 +++++ 1 file changed, 5 insertions(+)arch/Config.in.arm +5
-0@@ -146,6 +146,10 @@ config BR2_cortex_a15 select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_ARMV7A select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_m3 + bool "cortex-M3" + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_HAS_THUMB2 config BR2_fa526 bool "fa526/626" select BR2_ARM_CPU_HAS_ARM@@ -408,6 +412,7 @@ config BR2_GCC_TARGET_CPU default "cortex-a9" if BR2_cortex_a9 default "cortex-a12" if BR2_cortex_a12 default "cortex-a15" if BR2_cortex_a15 + default "cortex-m3" if BR2_cortex_m3 default "fa526" if BR2_fa526 default "marvell-pj4" if BR2_pj4 default "strongarm" if BR2_strongarmSignature · 6 lines
2.1.4 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH v3 2/4 toolchain: allow for stupid toolchains
In reply to Guido Martínezcheck_arm_abi builds a test C file to check that the toolchain is working correctly, with the output redirected to /dev/null.
However, some toolchains (OSELAS 2014.12.0, for instance) foolishly append ".gdb" to the output filename for an intermediate file, causing an attempt to write to /dev/null.gdb, which obviously fails.
Fix this by adding changing the output to a temporary file, which is later removed along with any other "suffixed" files.
--- toolchain/helpers.mk | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
toolchain/helpers.mk +4 -2
@@ -308,12 +308,14 @@ check_arm_abi = \ echo "External toolchain uses the unsuported OABI" ; \ exit 1 ; \ fi ; \ - if ! echo 'int main(void) {}' | $${__CROSS_CC} -x c -o /dev/null - ; then \ + if ! echo 'int main(void) {}' | $${__CROSS_CC} -x c -o $(BUILD_DIR)/.br-toolchain-test.tmp - ; then \ + rm -f $(BUILD_DIR)/.br-toolchain-test.tmp*; \ abistr_$(BR2_ARM_EABI)='EABI'; \ abistr_$(BR2_ARM_EABIHF)='EABIhf'; \ echo "Incorrect ABI setting: $${abistr_y} selected, but toolchain is incompatible"; \ exit 1 ; \ - fi + fi ; \ + rm -f $(BUILD_DIR)/.br-toolchain-test.tmp* # # Check that the external toolchain supports C++
Signature · 1 line
2.1.4
PATCH 2/4 toolchain: allow for stupid toolchains
Guido, All,
On 2015-06-26 14:33 -0300, Guido Mart?nez spake thusly:
Quoted 7 lines
check_arm_abibuilds a test C file to check that the toolchain is working correctly, with the output redirected to/dev/null.However, some toolchains (OSELAS 2014.12.0, for instance) foolishly append ".gdb" to the output filename for an intermediate file, causing an attempt to write to
/dev/null.gdb, which obviously fails.
Quoted 5 lines
Fix this by adding changing the output to a temporary file, which is later removed along with any other "suffixed" files.
Suggested-by "Yann E. MORIN" <[email protected]>Signed-off-by Guido Mart?nez <[email protected]>
Regards,
Yann E. MORIN.
Quoted 32 lines
--- toolchain/helpers.mk | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)toolchain/helpers.mk +4
-2@@ -308,12 +308,14 @@ check_arm_abi = \ echo "External toolchain uses the unsuported OABI" ; \ exit 1 ; \ fi ; \ - if ! echo 'int main(void) {}' | $${__CROSS_CC} -x c -o /dev/null - ; then \ + if ! echo 'int main(void) {}' | $${__CROSS_CC} -x c -o $(BUILD_DIR)/.br-toolchain-test.tmp - ; then \ + rm -f $(BUILD_DIR)/.br-toolchain-test.tmp*; \ abistr_$(BR2_ARM_EABI)='EABI'; \ abistr_$(BR2_ARM_EABIHF)='EABIhf'; \ echo "Incorrect ABI setting: $${abistr_y} selected, but toolchain is incompatible"; \ exit 1 ; \ - fi + fi ; \ + rm -f $(BUILD_DIR)/.br-toolchain-test.tmp* # # Check that the external toolchain supports C++Signature · 6 lines
2.1.4 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH v3 3/4 toolchain: introduce BR2_TOOLCHAIN_HAS_RESOLVER
In reply to Guido MartínezAdd a Kconfig option specifying if the toolchain supports name resolving (or at least has stubs for it) so we can disable packages that depend on that (or they would fail to link). For now, only disable the 'nslookup' tool from BusyBox if there's no resolver support.
For now, every toolchain supports name resolving.
--- package/busybox/busybox.mk | 3 +++ toolchain/Config.in | 3 +++ toolchain/toolchain-external/Config.in | 29 +++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+)
package/busybox/busybox.mk +3 -0
@@ -156,6 +156,9 @@ endif # full-blown versions of apps installed by other packages with sym/hard links. define BUSYBOX_NOCLOBBER_INSTALL $(SED) 's/^noclobber="0"$$/noclobber="1"/' $(@D)/applets/install.sh + $(if $(BR2_TOOLCHAIN_HAS_RESOLVER),, + $(call KCONFIG_DISABLE_OPT,CONFIG_NSLOOKUP,$(@D)/.config) + ) endef define BUSYBOX_KCONFIG_FIXUP_CMDS
toolchain/Config.in +3 -0
@@ -20,6 +20,9 @@ config BR2_TOOLCHAIN_USES_GLIBC config BR2_TOOLCHAIN_USES_UCLIBC bool +config BR2_TOOLCHAIN_HAS_RESOLVER + bool + config BR2_TOOLCHAIN_USES_MUSL bool select BR2_USE_WCHAR
toolchain/toolchain-external/Config.in +29 -0
@@ -18,6 +18,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 + select BR2_TOOLCHAIN_HAS_RESOLVER help Linaro toolchain for the ARM architecture. It uses Linaro GCC 2014.09 (based on gcc 4.9), Linaro GDB 2013.10 (based on
@@ -44,6 +45,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 + select BR2_TOOLCHAIN_HAS_RESOLVER help Linaro toolchain for the ARM big endian architecture. It uses Linaro GCC 2014.09 (based on gcc 4.9), Linaro GDB
@@ -69,6 +71,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201405 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the ARM architecture, from Mentor Graphics. It uses gcc 4.8.3, binutils 2.24.51, glibc
@@ -98,6 +101,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201311 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the ARM architecture, from Mentor Graphics. It uses gcc 4.8.1, binutils 2.23.52, glibc
@@ -126,6 +130,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201305 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the ARM architecture, from Mentor Graphics. It uses gcc 4.7.3, binutils 2.23.52, glibc
@@ -159,6 +164,7 @@ config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A_201109 select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HAS_RESOLVER # kernel headers: 2.6.31 help Texas Instruments Arago 2011.09 toolchain, with gcc 4.5.3,
@@ -181,6 +187,7 @@ config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HAS_RESOLVER # kernel headers: 2.6.31 help Texas Instruments Arago ARMv5 2011.09 toolchain, with gcc
@@ -199,6 +206,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the MIPS architecture, from Mentor Graphics. It uses gcc 4.9.2, binutils 2.24.51, glibc
@@ -284,6 +292,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201411 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the MIPS architecture, from Mentor Graphics. It uses gcc 4.9.1, binutils 2.24.51, glibc
@@ -369,6 +378,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201405 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the MIPS architecture, from Mentor Graphics. It uses gcc 4.8.3, binutils 2.24.51, glibc
@@ -457,6 +467,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201405 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the Nios-II architecture, from Mentor Graphics. It uses gcc 4.8.3, binutils 2.24.51,
@@ -472,6 +483,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the Nios-II architecture, from Mentor Graphics. It uses gcc 4.7.3, binutils 2.23.52,
@@ -488,6 +500,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201203 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the PowerPC architecture, from Mentor Graphics. It uses gcc 4.6.3, binutils 2.21.53,
@@ -504,6 +517,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201103 select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HAS_RESOLVER # kernel headers: 2.6.38 help Sourcery CodeBench toolchain for the PowerPC architecture,
@@ -536,6 +550,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009 select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HAS_RESOLVER # kernel headers: 2.6.35 help Sourcery CodeBench toolchain for the PowerPC architecture,
@@ -569,6 +584,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201209 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the SuperH architecture, from Mentor Graphics. It uses gcc 4.7.2, binutils 2.23.51,
@@ -592,6 +608,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201203 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the SuperH architecture, from Mentor Graphics. It uses gcc 4.6.3, binutils 2.21.53,
@@ -616,6 +633,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201103 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS # kernel headers: 2.6.38 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the SuperH architecture, from Mentor Graphics. It uses gcc 4.5.2, binutils 2.20,
@@ -641,6 +659,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_201405 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the amd64 (x86_64) architectures, from Mentor Graphics. It uses gcc 4.8.3,
@@ -665,6 +684,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201209 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the x86/x86_64 architectures, from Mentor Graphics. It uses gcc 4.7.2,
@@ -692,6 +712,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201203 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the x86/x86_64 architectures, from Mentor Graphics. It uses gcc 4.6.3,
@@ -720,6 +741,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109 select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the x86/x86_64 architectures, from Mentor Graphics. It uses gcc 4.6.1,
@@ -748,6 +770,7 @@ config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2014R1 select BR2_TOOLCHAIN_HAS_THREADS_DEBUG select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + select BR2_TOOLCHAIN_HAS_RESOLVER help Toolchain for the Blackfin architecture, from http://blackfin.uclinux.org.
@@ -764,6 +787,7 @@ config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2013R1 select BR2_TOOLCHAIN_HAS_THREADS_DEBUG select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + select BR2_TOOLCHAIN_HAS_RESOLVER help Toolchain for the Blackfin architecture, from http://blackfin.uclinux.org.
@@ -780,6 +804,7 @@ config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2 select BR2_TOOLCHAIN_HAS_THREADS_DEBUG select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + select BR2_TOOLCHAIN_HAS_RESOLVER help Toolchain for the Blackfin architecture, from http://blackfin.uclinux.org.
@@ -794,6 +819,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + select BR2_TOOLCHAIN_HAS_RESOLVER help Toolchain for the AArch64 architecture, from http://www.linaro.org/engineering/armv8/
@@ -808,6 +834,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + select BR2_TOOLCHAIN_HAS_RESOLVER help Sourcery CodeBench toolchain for the AArch64 architecture, from Mentor Graphics. It uses gcc 4.8.3, binutils 2.24,
@@ -823,6 +850,7 @@ config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS select BR2_INSTALL_LIBSTDCPP select BR2_HOSTARCH_NEEDS_IA32_LIBS select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + select BR2_TOOLCHAIN_HAS_RESOLVER help Toolchain based on the Musl C library, provided by the musl-cross project. It uses gcc 4.9.2, binutils 2.25 and
@@ -849,6 +877,7 @@ config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_2014_12 select BR2_TOOLCHAIN_HAS_THREADS select BR2_TOOLCHAIN_HAS_THREADS_DEBUG select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + select BR2_TOOLCHAIN_HAS_RESOLVER help Toolchain for the ARC cores, from https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases
Signature · 1 line
2.1.4
PATCH 3/4 toolchain: introduce BR2_TOOLCHAIN_HAS_RESOLVER
Guido, All,
On 2015-06-26 14:33 -0300, Guido Mart?nez spake thusly:
Quoted 6 lines
Add a
Kconfigoption specifying if the toolchain supports name resolving (or at least has stubs for it) so we can disable packages that depend on that (or they would fail to link). For now, only disable the 'nslookup' tool from BusyBox if there's no resolver support.For now, every toolchain supports name resolving.
I'm a bit skeptical about this change.
Let's see:
- adds a new 'select' for all existing external pre-configured
toolchains;
- misses the cases for internal toolchain and exterdnal custom
toolchains;
- disables nslookup in busybox when resolver is mising;
- misses the fixing the bind package which can install nslookup, too.
So, I find this is a bit of noise for a relatively infrequent setup. And you're missing quite a few cases.
I'd rather we disable nslookup from our default busybox configuration.
(Note: the bind case is not a problem for you, because it already depends on MMU which Cortex-M3 do not have, so bind is inherently protected from such limited toolchains.)
Quoted 12 lines
Signed-off-by Guido Mart?nez <[email protected]>--- package/busybox/busybox.mk | 3 +++ toolchain/Config.in | 3 +++ toolchain/toolchain-external/Config.in | 29 +++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+)package/busybox/busybox.mk +0
-0
package/busybox/busybox.mk endif · line 161
Quoted 6 lines
package/busybox/busybox.mk +3
-0@@ -156,6 +156,9 @@ endif # full-blown versions of apps installed by other packages with sym/hard links. define BUSYBOX_NOCLOBBER_INSTALL $(SED) 's/^noclobber="0"$$/noclobber="1"/' $(@D)/applets/install.sh + $(if $(BR2_TOOLCHAIN_HAS_RESOLVER),, + $(call KCONFIG_DISABLE_OPT,CONFIG_NSLOOKUP,$(@D)/.config) + )
This hunk should go into its own macro, and used in BUSYBOX_KCONFIG_FIXUP_CMDS, below, like so:
ifeq ($(BR2_TOOLCHAIN_HAS_RESOLVER),)
define BUSYBOX_UNSET_NSLOOKUP
$(call KCONFIG_DISABLE_OPT,CONFIG_NSLOOKUP,$(@D)/.config)
endef
endif
define BUSYBOX_KCONFIG_FIXUP_CMDS
[existing calls]
$(BUSYBOX_UNSET_NSLOOKUP)
endefBut I'd really prefer we just ditch nslookup from our default busybox configuration, to avoid all this noise.
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH v3 4/4 toolchain-external: add OSELAS 2014.12.0 Cortex-M3 toolchain
In reply to Guido MartínezBinary toolchain based on uClibc for Cortex-M3 processor based on GCC 4.9.2.
This toolchain has no resolver support, thus, we don't select BR2_HAS_RESOLVER_SUPPORT.
--- toolchain/toolchain-external/Config.in | 13 +++++++++++++ toolchain/toolchain-external/toolchain-external.hash | 4 ++++ toolchain/toolchain-external/toolchain-external.mk | 10 ++++++++++ 3 files changed, 27 insertions(+)
toolchain/toolchain-external/Config.in +13 -0
@@ -195,6 +195,18 @@ config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 This toolchain uses software-floating point. +config BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412 + bool "OSELAS ARM Cortex-M3 2014.12" + depends on BR2_arm + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + select BR2_LARGEFILE + select BR2_INET_IPV6 + select BR2_HOSTARCH_NEEDS_IA32_LIBS + help + OSELAS binary toolchain for Cortex-M3. + config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505 bool "Sourcery CodeBench MIPS 2015.05" depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
@@ -941,6 +953,7 @@ config BR2_TOOLCHAIN_EXTERNAL_PREFIX default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201405 default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A_201109 default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 + default "arm-cortexm3-uclinuxeabi" if BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412 default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201405
toolchain/toolchain-external/toolchain-external.hash +4 -0
@@ -74,3 +74,7 @@ sha256 79a1a4be93e2a63acb137170e98bdfbf744bd9ca7b15b76ab512d1e0dfec834e crossx8 sha256 aec4d560dc601e397fc86a9759166005afba22ad666d1a48019b5102c534ccc1 crossx86-sh4eb-linux-musl-1.1.6.tar.xz sha256 68eda0795aacd4371b45a6c58c5c75e86c0c2fdf7ebc2c0b7d3752462c848260 crossx86-x86_64-linux-musl-1.1.6.tar.xz sha256 6bef5ee2cdb9fa35e49ce0a270f6d7c48f3268c6f6345ad5ca0b8137982b4690 crossx86-x86_64-x32-linux-musl-1.1.6.tar.xz + +# Oselas Cortex-M3 toolchain +# Locally calculated +sha1 75e7ae45b514b10ad64ff5588770434cea755496 oselas.toolchain-2014.12.0-arm-cortexm3-uclinuxeabi-gcc-4.9.2-uclibc-0.9.33.2-binutils-2.24-kernel-3.16-sanitized_2014.12.0_i386.deb
toolchain/toolchain-external/toolchain-external.mk +10 -0
@@ -293,6 +293,9 @@ TOOLCHAIN_EXTERNAL_SOURCE = mips-2014.11-22-mips-linux-gnu-i686-pc-linux-gnu.tar else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505),y) TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu TOOLCHAIN_EXTERNAL_SOURCE = mips-2015.05-18-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2 +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412),y) +TOOLCHAIN_EXTERNAL_SITE = http://debian.pengutronix.de/debian/pool/main/o/oselas.toolchain/ +TOOLCHAIN_EXTERNAL_SOURCE = oselas.toolchain-2014.12.0-arm-cortexm3-uclinuxeabi-gcc-4.9.2-uclibc-0.9.33.2-binutils-2.24-kernel-3.16-sanitized_2014.12.0_i386.deb else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305),y) TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/nios2-linux-gnu TOOLCHAIN_EXTERNAL_SOURCE = sourceryg++-2013.05-43-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2
@@ -421,6 +424,13 @@ define TOOLCHAIN_EXTERNAL_EXTRACT_CMDS $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS)) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS) | \ $(TAR) $(TAR_STRIP_COMPONENTS)=3 --hard-dereference -C $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) $(TAR_OPTIONS) - endef +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412),y) +# Special handling for OSELAS toolchains +define TOOLCHAIN_EXTERNAL_EXTRACT_CMDS + mkdir -p $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) + ar fp $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE) data.tar.xz | $(XZCAT) | \ + $(TAR) $(TAR_STRIP_COMPONENTS)=5 --hard-dereference -C $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) $(TAR_OPTIONS) - +endef else ifneq ($(TOOLCHAIN_EXTERNAL_SOURCE),) # Normal handling of toolchain tarball extraction. define TOOLCHAIN_EXTERNAL_EXTRACT_CMDS
Signature · 1 line
2.1.4
PATCH 4/4 toolchain-external: add OSELAS 2014.12.0 Cortex-M3 toolchain
Guido, All,
On 2015-06-26 14:33 -0300, Guido Mart?nez spake thusly:
Quoted 7 lines
Binary toolchain based on uClibc for Cortex-M3 processor based on GCC 4.9.2.
This toolchain has no resolver support, thus, we don't select
BR2_HAS_RESOLVER_SUPPORT.Signed-off-by Guido Mart?nez <[email protected]>
[--SNIP--]
toolchain/toolchain-external/toolchain-external.hash sha256 79a1a4be93e2a63acb137170e98bdfbf744bd9ca7b15b76ab512d1e0dfec834e crossx8 · line 80
Quoted 12 lines
toolchain/toolchain-external/toolchain-external.hash +4
-0@@ -74,3 +74,7 @@ sha256 79a1a4be93e2a63acb137170e98bdfbf744bd9ca7b15b76ab512d1e0dfec834e crossx8 sha256 aec4d560dc601e397fc86a9759166005afba22ad666d1a48019b5102c534ccc1 crossx86-sh4eb-linux-musl-1.1.6.tar.xz sha256 68eda0795aacd4371b45a6c58c5c75e86c0c2fdf7ebc2c0b7d3752462c848260 crossx86-x86_64-linux-musl-1.1.6.tar.xz sha256 6bef5ee2cdb9fa35e49ce0a270f6d7c48f3268c6f6345ad5ca0b8137982b4690 crossx86-x86_64-x32-linux-musl-1.1.6.tar.xz + +# Oselas Cortex-M3 toolchain +# Locally calculated +sha1 75e7ae45b514b10ad64ff5588770434cea755496 oselas.toolchain-2014.12.0-arm-cortexm3-uclinuxeabi-gcc-4.9.2-uclibc-0.9.33.2-binutils-2.24-kernel-3.16-sanitized_2014.12.0_i386.deb
We prefer sha256 when locally computed.
But in this case, we do have an upstream-provided set of hashes:
http://debian.pengutronix.de/debian/dists/sid/main/binary-i386/Packages
so we should use it (even though it is not https... :-( ):
# From: http://debian.pengutronix.de/debian/dists/sid/main/binary-i386/Packages sha1 75e7ae45b514b10ad64ff5588770434cea755496 oselas....... sha256 1c542d3aad4e592270918d54bb02a90580902d573dc4d9b59aabfd0697220f3e oselas.......
Otherwise, looks good.
Yet, there is also a 64-bit variant for this toolchain, so maybe we could download the one corresponding to the user's host, like so:
[...]
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412),y)
TOOLCHAIN_EXTERNAL_SITE = http://debian.pengutronix.de/debian/pool/main/o/oselas.toolchain/
ifeq ($(HOSTARCH),x86)
TOOLCHAIN_EXTERNAL_SOURCE = oselas.toolchain-[...]_i386.deb
else
TOOLCHAIN_EXTERNAL_SOURCE = oselas.toolchain-[...]_amd64.deb
endif
else ifeq (...)
[...]And of course, no longer needed to have the option select BR2_HOSTARCH_NEEDS_IA32_LIBS in the Config.in, since there would be a 64-bit-native variant.
(But don't forget to add the hashes for that variant, too! ;-) )
Regards,
Yann E. MORIN.
Quoted 35 lines
toolchain/toolchain-external/toolchain-external.mk +10
-0@@ -293,6 +293,9 @@ TOOLCHAIN_EXTERNAL_SOURCE = mips-2014.11-22-mips-linux-gnu-i686-pc-linux-gnu.tar else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505),y) TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu TOOLCHAIN_EXTERNAL_SOURCE = mips-2015.05-18-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2 +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412),y) +TOOLCHAIN_EXTERNAL_SITE = http://debian.pengutronix.de/debian/pool/main/o/oselas.toolchain/ +TOOLCHAIN_EXTERNAL_SOURCE = oselas.toolchain-2014.12.0-arm-cortexm3-uclinuxeabi-gcc-4.9.2-uclibc-0.9.33.2-binutils-2.24-kernel-3.16-sanitized_2014.12.0_i386.deb else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305),y) TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/nios2-linux-gnu TOOLCHAIN_EXTERNAL_SOURCE = sourceryg++-2013.05-43-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2@@ -421,6 +424,13 @@ define TOOLCHAIN_EXTERNAL_EXTRACT_CMDS $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS)) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS) | \ $(TAR) $(TAR_STRIP_COMPONENTS)=3 --hard-dereference -C $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) $(TAR_OPTIONS) - endef +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412),y) +# Special handling for OSELAS toolchains +define TOOLCHAIN_EXTERNAL_EXTRACT_CMDS + mkdir -p $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) + ar fp $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE) data.tar.xz | $(XZCAT) | \ + $(TAR) $(TAR_STRIP_COMPONENTS)=5 --hard-dereference -C $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) $(TAR_OPTIONS) - +endef else ifneq ($(TOOLCHAIN_EXTERNAL_SOURCE),) # Normal handling of toolchain tarball extraction. define TOOLCHAIN_EXTERNAL_EXTRACT_CMDSSignature · 6 lines
2.1.4 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
v3 cover Add ARM Cortex-M3 support
In reply to Guido MartínezDear Guido Mart?nez,
Quoted 3 lines · Guido Mart?nez
Guido Mart?nez (4):
arm: update processor types
toolchain: allow for stupid toolchains
Both of these applied.
Quoted 2 lines
toolchain: introduce
BR2_TOOLCHAIN_HAS_RESOLVER
toolchain-external: add OSELAS 2014.12.0 Cortex-M3 toolchain
There have been some comments from Yann on these patches, so I've marked them as "Changes Requested" in patchwork. Could you rework them as suggested by Yann, and resend updated versions?
Also, now that there is Cortex-M3 support listed, please make sure it works fine with the internal toolchain backend, and if it doesn't work, add the appropriate exceptions (for example, glibc and musl cannot be built for Cortex-M3, as far as I know). Can you send a follow-up patch for this?
Thanks a lot!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
v3 cover Add ARM Cortex-M3 support
Hi Thomas,
Quoted 9 lines · Thomas Petazzoni
Dear Guido Mart?nez,
Quoted 2 lines · Guido Mart?nez
toolchain: introduce
BR2_TOOLCHAIN_HAS_RESOLVER
toolchain-external: add OSELAS 2014.12.0 Cortex-M3 toolchainThere have been some comments from Yann on these patches, so I've marked them as "Changes Requested" in patchwork. Could you rework them as suggested by Yann, and resend updated versions?
Yes, will do! I agree with Yann in removing nslookup from the default busybox config. I think that's easier for everyone.
Quoted 5 lines
Also, now that there is Cortex-M3 support listed, please make sure it works fine with the internal toolchain backend, and if it doesn't work, add the appropriate exceptions (for example, glibc and musl cannot be built for Cortex-M3, as far as I know). Can you send a follow-up patch for this?
Right, it doesn't work right now since there are a few places that force the selection of ARM instructions where Thumb is not available, and that won't work on M3. I'll try to fix it and get back.
Thanks!
Signature · 2 lines
Guido Mart?nez, VanguardiaSur www.vanguardiasur.com.ar
v4 cover Add ARM Cortex-M3 support
In reply to Guido MartínezHi all,
this patchset introduces support for the M3 processors. These processors don't have an MMU and they don't support the regular ARM mode (only Thumb and Thumb2).
The OSELAS 2014.12.0 toolchain is added, in 32-bit and 64-bit variants.
I'm planning to send a defconfig for the CIAA board[1] once it's mainlined in Linux. But, for now, this config can generate a proper rootfs:
BR2_arm=y
BR2_cortex_m3=y
The changes from v3 are:
* Patches 1 and 2 were committed, so dropped.
* Add x86 and x86_64 versions of the toolchain, as suggested by Yann.
* Drop the HAS_RESOLVER patch and just disable nslookup from the default busybox config.
* Disable the internal toolchain for Cortex-M3. It won't work for now since ARM instructions are used as a fall back in some cases.
Any comments and testing welcome!
[1] http://www.proyecto-ciaa.com.ar/
Guido Mart?nez (3):
busybox: disable nslookup applet
toolchain-external: add OSELAS 2014.12.0 Cortex-M3 toolchain
toolchain: disable internal for blackfin
package/busybox/busybox.config | 2 +- toolchain/Config.in | 1 + toolchain/toolchain-external/Config.in | 12 ++++++++++++ toolchain/toolchain-external/toolchain-external.hash | 6 ++++++ toolchain/toolchain-external/toolchain-external.mk | 14 ++++++++++++++ 5 files changed, 34 insertions(+), 1 deletion(-)
Signature · 1 line
2.1.4
PATCH v4 1/3 busybox: disable nslookup applet
Some toolchains have no resolver support (res_* family), so they fail to build this applet (which is the only user of those functions). Instead of selectively disabling it on such limited toolchains, just drop it from the default config, since (to the best of my knowledge) is not widely used.
--- package/busybox/busybox.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
package/busybox/busybox.config +1 -1
@@ -838,7 +838,7 @@ CONFIG_IPRULE=y CONFIG_NETSTAT=y # CONFIG_FEATURE_NETSTAT_WIDE is not set # CONFIG_FEATURE_NETSTAT_PRG is not set -CONFIG_NSLOOKUP=y +# CONFIG_NSLOOKUP is not set # CONFIG_NTPD is not set # CONFIG_FEATURE_NTPD_SERVER is not set # CONFIG_FEATURE_NTPD_CONF is not set
Signature · 1 line
2.1.4
PATCH v4 2/3 toolchain-external: add OSELAS 2014.12.0 Cortex-M3 toolchain
In reply to Guido MartínezBinary toolchain based on uClibc for Cortex-M3 processor based on GCC 4.9.2.
This commit adds both the i386 and amd64 versions of the toolchain, and chooses one based on $(HOSTARCH), as suggested by Yann.
--- toolchain/toolchain-external/Config.in | 12 ++++++++++++ toolchain/toolchain-external/toolchain-external.hash | 6 ++++++ toolchain/toolchain-external/toolchain-external.mk | 14 ++++++++++++++ 3 files changed, 32 insertions(+)
toolchain/toolchain-external/Config.in +12 -0
@@ -188,6 +188,17 @@ config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 This toolchain uses software-floating point. +config BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412 + bool "OSELAS ARM Cortex-M3 2014.12" + depends on BR2_cortex_m3 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + select BR2_LARGEFILE + select BR2_INET_IPV6 + help + OSELAS binary toolchain for Cortex-M3. + config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505 bool "Sourcery CodeBench MIPS 2015.05" depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
@@ -912,6 +923,7 @@ config BR2_TOOLCHAIN_EXTERNAL_PREFIX default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201405 default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A_201109 default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 + default "arm-cortexm3-uclinuxeabi" if BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412 default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201405
toolchain/toolchain-external/toolchain-external.hash +6 -0
@@ -74,3 +74,9 @@ sha256 79a1a4be93e2a63acb137170e98bdfbf744bd9ca7b15b76ab512d1e0dfec834e crossx8 sha256 aec4d560dc601e397fc86a9759166005afba22ad666d1a48019b5102c534ccc1 crossx86-sh4eb-linux-musl-1.1.6.tar.xz sha256 68eda0795aacd4371b45a6c58c5c75e86c0c2fdf7ebc2c0b7d3752462c848260 crossx86-x86_64-linux-musl-1.1.6.tar.xz sha256 6bef5ee2cdb9fa35e49ce0a270f6d7c48f3268c6f6345ad5ca0b8137982b4690 crossx86-x86_64-x32-linux-musl-1.1.6.tar.xz + +# Oselas Cortex-M3 toolchain +# From: http://debian.pengutronix.de/debian/dists/sid/main/binary-i386/Packages +sha256 1c542d3aad4e592270918d54bb02a90580902d573dc4d9b59aabfd0697220f3e oselas.toolchain-2014.12.0-arm-cortexm3-uclinuxeabi-gcc-4.9.2-uclibc-0.9.33.2-binutils-2.24-kernel-3.16-sanitized_2014.12.0_i386.deb +# From: http://debian.pengutronix.de/debian/dists/sid/main/binary-amd64/Packages +sha256 050cd9296763dc9cf15f293ff612e2987f5bc9cbae5aa338f28f6f057753ce7a oselas.toolchain-2014.12.0-arm-cortexm3-uclinuxeabi-gcc-4.9.2-uclibc-0.9.33.2-binutils-2.24-kernel-3.16-sanitized_2014.12.0_amd64.deb
toolchain/toolchain-external/toolchain-external.mk +14 -0
@@ -293,6 +293,13 @@ TOOLCHAIN_EXTERNAL_SOURCE = mips-2014.11-22-mips-linux-gnu-i686-pc-linux-gnu.tar else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505),y) TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu TOOLCHAIN_EXTERNAL_SOURCE = mips-2015.05-18-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2 +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412),y) +TOOLCHAIN_EXTERNAL_SITE = http://debian.pengutronix.de/debian/pool/main/o/oselas.toolchain/ +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_SOURCE = oselas.toolchain-2014.12.0-arm-cortexm3-uclinuxeabi-gcc-4.9.2-uclibc-0.9.33.2-binutils-2.24-kernel-3.16-sanitized_2014.12.0_i386.deb +else +TOOLCHAIN_EXTERNAL_SOURCE = oselas.toolchain-2014.12.0-arm-cortexm3-uclinuxeabi-gcc-4.9.2-uclibc-0.9.33.2-binutils-2.24-kernel-3.16-sanitized_2014.12.0_amd64.deb +endif else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305),y) TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/nios2-linux-gnu TOOLCHAIN_EXTERNAL_SOURCE = sourceryg++-2013.05-43-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2
@@ -421,6 +428,13 @@ define TOOLCHAIN_EXTERNAL_EXTRACT_CMDS $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS)) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS) | \ $(TAR) --strip-components=3 --hard-dereference -C $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) $(TAR_OPTIONS) - endef +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412),y) +# Special handling for OSELAS toolchains +define TOOLCHAIN_EXTERNAL_EXTRACT_CMDS + mkdir -p $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) + ar fp $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE) data.tar.xz | $(XZCAT) | \ + $(TAR) --strip-components=5 --hard-dereference -C $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) $(TAR_OPTIONS) - +endef else ifneq ($(TOOLCHAIN_EXTERNAL_SOURCE),) # Normal handling of toolchain tarball extraction. define TOOLCHAIN_EXTERNAL_EXTRACT_CMDS
Signature · 1 line
2.1.4
PATCH v4 2/3 toolchain-external: add OSELAS 2014.12.0 Cortex-M3 toolchain
Hi Guido,
toolchain/toolchain-external/Config.in config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 · line 198
Quoted 8 lines · Guido Mart?nez
toolchain/toolchain-external/Config.in +8
-0+config BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412 + bool "OSELAS ARM Cortex-M3 2014.12" + depends on BR2_cortex_m3 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + select BR2_LARGEFILE + select BR2_INET_IPV6
These two symbols were removed recently. All toolchains should now support LFS and IPv6.
baruch
Signature · 3 lines
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -PATCH v4 2/3 toolchain-external: add OSELAS 2014.12.0 Cortex-M3 toolchain
Quoted 14 lines · Baruch Siach
Hi Guido,
toolchain/toolchain-external/Config.in config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 · line 198
Quoted 8 lines · Guido Mart?nez
toolchain/toolchain-external/Config.in +8
-0+config BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412 + bool "OSELAS ARM Cortex-M3 2014.12" + depends on BR2_cortex_m3 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + select BR2_LARGEFILE + select BR2_INET_IPV6These two symbols were removed recently. All toolchains should now support LFS and IPv6.
Ah, OK I missed that! Will remove those two.
Signature · 2 lines
Guido Mart?nez, VanguardiaSur www.vanguardiasur.com.ar
PATCH v4 3/3 toolchain: disable internal for blackfin
In reply to Guido MartínezThe internal toolchain won't work with Cortex-M3, mostly because of the fact that some packages (notably: uclibc and glibc) fall back to regular ARM instructions in some situations, and Cortex-M3 has no support for those kind of instructions.
So, just disable it for now and rely on the external toolchain.
--- toolchain/Config.in | 1 + 1 file changed, 1 insertion(+)
toolchain/Config.in +1 -0
@@ -40,6 +40,7 @@ choice config BR2_TOOLCHAIN_BUILDROOT bool "Buildroot toolchain" depends on !BR2_bfin + depends on !BR2_cortex_m3 select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS config BR2_TOOLCHAIN_EXTERNAL
Signature · 1 line
2.1.4
PATCH v4 3/3 toolchain: disable internal for blackfin
Hi Guido,
Quoted 6 lines · Guido Mart?nez
The internal toolchain won't work with Cortex-M3, mostly because of the fact that some packages (notably: uclibc and glibc) fall back to regular ARM instructions in some situations, and Cortex-M3 has no support for those kind of instructions.
So, just disable it for now and rely on the external toolchain.
Subject line does not match the patch.
baruch
Signature · 3 lines
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -PATCH v4 3/3 toolchain: disable internal for blackfin
Quoted 11 lines · Baruch Siach
Hi Guido,
Quoted 6 lines · Guido Mart?nez
The internal toolchain won't work with Cortex-M3, mostly because of the fact that some packages (notably: uclibc and glibc) fall back to regular ARM instructions in some situations, and Cortex-M3 has no support for those kind of instructions.
So, just disable it for now and rely on the external toolchain.
Subject line does not match the patch.
Ugh, that's what I get for looking at the log and copying.
Sorry!
Signature · 2 lines
Guido Mart?nez, VanguardiaSur www.vanguardiasur.com.ar
PATCH v4 3/3 toolchain: disable internal for blackfin
In reply to Guido MartínezHi Guido,
Guido Mart?nez wrote,
Quoted 6 lines
The internal toolchain won't work with Cortex-M3, mostly because of the fact that some packages (notably: uclibc and glibc) fall back to regular ARM instructions in some situations, and Cortex-M3 has no support for those kind of instructions.
So, just disable it for now and rely on the external toolchain.
uClibc-ng compiles fine for Cortex-M3 when you use thumb, flat binaries and disable ld.so.
I am still in the progress of running the code on Freescale Kinetis K70 from Emcraft. But I am optimistic.
(context functions must be disabled)
best regards
Waldemar
PATCH v5 1/3 busybox: disable nslookup applet
In reply to Guido MartínezSome toolchains have no resolver support (res_* family), so they fail to build this applet (which is the only user of those functions). Instead of selectively disabling it on such limited toolchains, just drop it from the default config, since (to the best of my knowledge) is not widely used.
--- package/busybox/busybox.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
package/busybox/busybox.config +1 -1
@@ -838,7 +838,7 @@ CONFIG_IPRULE=y CONFIG_NETSTAT=y # CONFIG_FEATURE_NETSTAT_WIDE is not set # CONFIG_FEATURE_NETSTAT_PRG is not set -CONFIG_NSLOOKUP=y +# CONFIG_NSLOOKUP is not set # CONFIG_NTPD is not set # CONFIG_FEATURE_NTPD_SERVER is not set # CONFIG_FEATURE_NTPD_CONF is not set
Signature · 1 line
2.1.4
PATCH v5 2/3 toolchain-external: add OSELAS 2014.12.0 Cortex-M3 toolchain
Binary toolchain based on uClibc for Cortex-M3 processor based on GCC 4.9.2.
This commit adds both the i386 and amd64 versions of the toolchain, and chooses one based on $(HOSTARCH), as suggested by Yann.
--- toolchain/toolchain-external/Config.in | 10 ++++++++++ toolchain/toolchain-external/toolchain-external.hash | 6 ++++++ toolchain/toolchain-external/toolchain-external.mk | 14 ++++++++++++++ 3 files changed, 30 insertions(+)
toolchain/toolchain-external/Config.in +10 -0
@@ -188,6 +188,15 @@ config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 This toolchain uses software-floating point. +config BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412 + bool "OSELAS ARM Cortex-M3 2014.12" + depends on BR2_cortex_m3 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + help + OSELAS binary toolchain for Cortex-M3. + config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505 bool "Sourcery CodeBench MIPS 2015.05" depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
@@ -912,6 +921,7 @@ config BR2_TOOLCHAIN_EXTERNAL_PREFIX default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201405 default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A_201109 default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 + default "arm-cortexm3-uclinuxeabi" if BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412 default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201405
toolchain/toolchain-external/toolchain-external.hash +6 -0
@@ -74,3 +74,9 @@ sha256 79a1a4be93e2a63acb137170e98bdfbf744bd9ca7b15b76ab512d1e0dfec834e crossx8 sha256 aec4d560dc601e397fc86a9759166005afba22ad666d1a48019b5102c534ccc1 crossx86-sh4eb-linux-musl-1.1.6.tar.xz sha256 68eda0795aacd4371b45a6c58c5c75e86c0c2fdf7ebc2c0b7d3752462c848260 crossx86-x86_64-linux-musl-1.1.6.tar.xz sha256 6bef5ee2cdb9fa35e49ce0a270f6d7c48f3268c6f6345ad5ca0b8137982b4690 crossx86-x86_64-x32-linux-musl-1.1.6.tar.xz + +# Oselas Cortex-M3 toolchain +# From: http://debian.pengutronix.de/debian/dists/sid/main/binary-i386/Packages +sha256 1c542d3aad4e592270918d54bb02a90580902d573dc4d9b59aabfd0697220f3e oselas.toolchain-2014.12.0-arm-cortexm3-uclinuxeabi-gcc-4.9.2-uclibc-0.9.33.2-binutils-2.24-kernel-3.16-sanitized_2014.12.0_i386.deb +# From: http://debian.pengutronix.de/debian/dists/sid/main/binary-amd64/Packages +sha256 050cd9296763dc9cf15f293ff612e2987f5bc9cbae5aa338f28f6f057753ce7a oselas.toolchain-2014.12.0-arm-cortexm3-uclinuxeabi-gcc-4.9.2-uclibc-0.9.33.2-binutils-2.24-kernel-3.16-sanitized_2014.12.0_amd64.deb
toolchain/toolchain-external/toolchain-external.mk +14 -0
@@ -293,6 +293,13 @@ TOOLCHAIN_EXTERNAL_SOURCE = mips-2014.11-22-mips-linux-gnu-i686-pc-linux-gnu.tar else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505),y) TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu TOOLCHAIN_EXTERNAL_SOURCE = mips-2015.05-18-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2 +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412),y) +TOOLCHAIN_EXTERNAL_SITE = http://debian.pengutronix.de/debian/pool/main/o/oselas.toolchain/ +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_SOURCE = oselas.toolchain-2014.12.0-arm-cortexm3-uclinuxeabi-gcc-4.9.2-uclibc-0.9.33.2-binutils-2.24-kernel-3.16-sanitized_2014.12.0_i386.deb +else +TOOLCHAIN_EXTERNAL_SOURCE = oselas.toolchain-2014.12.0-arm-cortexm3-uclinuxeabi-gcc-4.9.2-uclibc-0.9.33.2-binutils-2.24-kernel-3.16-sanitized_2014.12.0_amd64.deb +endif else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305),y) TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/nios2-linux-gnu TOOLCHAIN_EXTERNAL_SOURCE = sourceryg++-2013.05-43-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2
@@ -421,6 +428,13 @@ define TOOLCHAIN_EXTERNAL_EXTRACT_CMDS $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS)) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS) | \ $(TAR) --strip-components=3 --hard-dereference -C $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) $(TAR_OPTIONS) - endef +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412),y) +# Special handling for OSELAS toolchains +define TOOLCHAIN_EXTERNAL_EXTRACT_CMDS + mkdir -p $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) + ar fp $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE) data.tar.xz | $(XZCAT) | \ + $(TAR) --strip-components=5 --hard-dereference -C $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) $(TAR_OPTIONS) - +endef else ifneq ($(TOOLCHAIN_EXTERNAL_SOURCE),) # Normal handling of toolchain tarball extraction. define TOOLCHAIN_EXTERNAL_EXTRACT_CMDS
Signature · 1 line
2.1.4
PATCH v5 3/3 toolchain: disable internal for Cortex-M3
In reply to Guido MartínezThe internal toolchain won't work with Cortex-M3, mostly because of the fact that some packages (notably: uclibc and glibc) fall back to regular ARM instructions in some situations, and Cortex-M3 has no support for those kind of instructions.
So, just disable it for now and rely on the external toolchain.
--- toolchain/Config.in | 1 + 1 file changed, 1 insertion(+)
toolchain/Config.in +1 -0
@@ -40,6 +40,7 @@ choice config BR2_TOOLCHAIN_BUILDROOT bool "Buildroot toolchain" depends on !BR2_bfin + depends on !BR2_cortex_m3 select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS config BR2_TOOLCHAIN_EXTERNAL
Signature · 1 line
2.1.4
PATCH v5 1/3 busybox: disable nslookup applet
In reply to Guido MartínezDear Guido Mart?nez,
Quoted 7 lines · Guido Mart?nez
Some toolchains have no resolver support (res_* family), so they fail to build this applet (which is the only user of those functions). Instead of selectively disabling it on such limited toolchains, just drop it from the default config, since (to the best of my knowledge) is not widely used.
Signed-off-by Guido Mart?nez <[email protected]>
I know this solution was suggested to you instead of adding a new toolchain option that tells us whether resolver support is available or not.
However, the problem with the solution of changing the Busybox config file is that it fixes Busybox only: there will possibly be plenty of other packages using res_*(). And we will have no way to fix those packages in a proper way, except possibly by making them 'depends on !BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412'. But if other OSELAS toolchains for other architectures also lack resolver support, then we will have to add more and more of those exclusions.
Conclusion: I am wondering if your initial solution was not the right one.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v5 1/3 busybox: disable nslookup applet
Hello,
Quoted 12 lines · Thomas Petazzoni
I know this solution was suggested to you instead of adding a new toolchain option that tells us whether resolver support is available or not.
However, the problem with the solution of changing the Busybox config file is that it fixes Busybox only: there will possibly be plenty of other packages using res_*(). And we will have no way to fix those packages in a proper way, except possibly by making them 'depends on !BR2_TOOLCHAIN_EXTERNAL_OSELAS_ARM_CORTEX_M3_201412'. But if other OSELAS toolchains for other architectures also lack resolver support, then we will have to add more and more of those exclusions.
Quoted 2 lines
Conclusion: I am wondering if your initial solution was not the right one.
I did a comparison between the uClibc_config.h of the OSELAS Cortex-M3 toolchain and the uClibc_config.h of a uClibc toolchain built by Buildroot, and there are quite a few differences in the configuration.
First and foremost, OSELAS is using uClibc 0.9.33.2 with almost no patches. And in Buildroot, we had to add a lot of patches to uClibc to make it properly support a number of packages (which is also why we've switched to uClibc-ng as the default C library).
And then, the uClibc configuration itself is quite different: a number of features that we enable by default in the Buildroot uClibc configuration are not enabled in the OSELAS Cortex-M3 uClibc. So when we will start adding the OSELAS Cortex-M3 toolchain in the autobuilders, it will probably start showing a number of failures caused by this uClibc version/configuration being quite different from the usual Buildroot expectations.
So, we've got two possibilities here:
1/ Just give up on the OSELAS toolchain, and focus on making Buildroot
capable of building a Cortex-M3 toolchain.
2/ Really add the toolchain anyway, but be prepared for some
additional work to handle all those issues. Since the Cortex-M3 is noMMU, it means that a significant fraction of the packages are not available, so maybe it will be more reasonable that I expect. But I was in fact hoping to be able to add other OSELAS toolchains, even for MMU capable platforms. But if they have such uClibc configurations, we might be limited to using their glibc toolchains.
What do you think?
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v5 1/3 busybox: disable nslookup applet
Quoted 30 lines · Thomas Petazzoni
I did a comparison between the
uClibc_config.hof the OSELAS Cortex-M3 toolchain and theuClibc_config.hof a uClibc toolchain built by Buildroot, and there are quite a few differences in the configuration.First and foremost, OSELAS is using uClibc 0.9.33.2 with almost no patches. And in Buildroot, we had to add a lot of patches to uClibc to make it properly support a number of packages (which is also why we've switched to uClibc-ng as the default C library).
And then, the uClibc configuration itself is quite different: a number of features that we enable by default in the Buildroot uClibc configuration are not enabled in the OSELAS Cortex-M3 uClibc. So when we will start adding the OSELAS Cortex-M3 toolchain in the autobuilders, it will probably start showing a number of failures caused by this uClibc version/configuration being quite different from the usual Buildroot expectations.
So, we've got two possibilities here:
1/ Just give up on the OSELAS toolchain, and focus on making Buildroot
capable of building a Cortex-M3 toolchain.2/ Really add the toolchain anyway, but be prepared for some
additional work to handle all those issues. Since the Cortex-M3 is noMMU, it means that a significant fraction of the packages are not available, so maybe it will be more reasonable that I expect. But I was in fact hoping to be able to add other OSELAS toolchains, even for MMU capable platforms. But if they have such uClibc configurations, we might be limited to using their glibc toolchains.
Quoted 1 line
What do you think?
As far as i remember as you say uclibc for M3 requires minimal patching. IMHO option 1 would be best rather than the "black box" solution (besides a lack of options being problematic).
It would help Waldemar include any required patches upstream in uclibc-ng going forward.
Regards.
PATCH v5 1/3 busybox: disable nslookup applet
In reply to Thomas PetazzoniHi Thomas,
Quoted 32 lines · Thomas Petazzoni
[...]
I did a comparison between the
uClibc_config.hof the OSELAS Cortex-M3 toolchain and theuClibc_config.hof a uClibc toolchain built by Buildroot, and there are quite a few differences in the configuration.First and foremost, OSELAS is using uClibc 0.9.33.2 with almost no patches. And in Buildroot, we had to add a lot of patches to uClibc to make it properly support a number of packages (which is also why we've switched to uClibc-ng as the default C library).
And then, the uClibc configuration itself is quite different: a number of features that we enable by default in the Buildroot uClibc configuration are not enabled in the OSELAS Cortex-M3 uClibc. So when we will start adding the OSELAS Cortex-M3 toolchain in the autobuilders, it will probably start showing a number of failures caused by this uClibc version/configuration being quite different from the usual Buildroot expectations.
So, we've got two possibilities here:
1/ Just give up on the OSELAS toolchain, and focus on making Buildroot
capable of building a Cortex-M3 toolchain.2/ Really add the toolchain anyway, but be prepared for some
additional work to handle all those issues. Since the Cortex-M3 is noMMU, it means that a significant fraction of the packages are not available, so maybe it will be more reasonable that I expect. But I was in fact hoping to be able to add other OSELAS toolchains, even for MMU capable platforms. But if they have such uClibc configurations, we might be limited to using their glibc toolchains.
Quoted 1 line
What do you think?
I have no problem with option 1. In fact, I was going to try to do it anyway even if the OSELAS toolchain got accepted. I'll start looking into it in detail and report back. I haven't done anything similar in the past so it might take me a while.
Thanks to all who reviewed the patches!
Signature · 2 lines
Guido Mart?nez, VanguardiaSur www.vanguardiasur.com.ar