Skip to contentSkip to conversation

Add ARM Cortex-M3 support

PATCH Superseded Guido Martínez 6 participants 27 messages Jun 26, 2015 – Jul 15, 2015

lore
Share & tools
lore
#0 lore raw

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
#1 lore raw

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
index a2f00d2..9aa23a3 100644
@@ -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
#2 lore raw

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.

Regards,
Yann E. MORIN.

Quoted 34 lines
---
 arch/Config.in.arm | 5 +++++
 1 file changed, 5 insertions(+)
arch/Config.in.arm +5 -0
index a2f00d2..9aa23a3 100644
@@ -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 · 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.  |
'------------------------------^-------^------------------^--------------------'
#3 lore raw

PATCH v3 2/4 toolchain: allow for stupid toolchains

In reply to Guido Martínez

check_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
index 30eb065..0dc1864 100644
@@ -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
#4 lore raw

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_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.

Quoted 5 lines

Fix this by adding changing the output to a temporary file, which is later removed along with any other "suffixed" files.

Regards,
Yann E. MORIN.

Quoted 32 lines
---
 toolchain/helpers.mk | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
toolchain/helpers.mk +4 -2
index 30eb065..0dc1864 100644
@@ -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.  |
'------------------------------^-------^------------------^--------------------'
#5 lore raw

PATCH v3 3/4 toolchain: introduce BR2_TOOLCHAIN_HAS_RESOLVER

In reply to Guido Martínez

Add 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
index 090e174..f4e086e 100644
@@ -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
index a851ce4..7e66de0 100644
@@ -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
index e70989e..ec2d1a5 100644
@@ -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
#6 lore raw

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 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.

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
---
 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
index 090e174..f4e086e 100644

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)
    endef

But 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.  |
'------------------------------^-------^------------------^--------------------'
#7 lore raw

PATCH v3 4/4 toolchain-external: add OSELAS 2014.12.0 Cortex-M3 toolchain

In reply to Guido Martínez

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.

---
 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
index ec2d1a5..6980b1e 100644
@@ -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
index 3980c62..342ce21 100644
@@ -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
index 22f8118..e9514c1 100644
@@ -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
#8 lore raw

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.

[--SNIP--]

toolchain/toolchain-external/toolchain-external.hash sha256 79a1a4be93e2a63acb137170e98bdfbf744bd9ca7b15b76ab512d1e0dfec834e crossx8 · line 80

Quoted 12 lines
toolchain/toolchain-external/toolchain-external.hash +4 -0
index 3980c62..342ce21 100644
@@ -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
index 22f8118..e9514c1 100644
@@ -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 · 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.  |
'------------------------------^-------^------------------^--------------------'
#9 lore raw

v3 cover Add ARM Cortex-M3 support

In reply to Guido Martínez

Dear 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
#10 lore raw

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 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?

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
#11 lore raw

v4 cover Add ARM Cortex-M3 support

In reply to Guido Martínez

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, 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
#12 lore raw

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
index 8d1d80a..91c3006 100644
@@ -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
#13 lore raw

PATCH v4 2/3 toolchain-external: add OSELAS 2014.12.0 Cortex-M3 toolchain

In reply to Guido Martínez

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               | 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
index e70989e..66bf5cb 100644
@@ -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
index 3980c62..4c3bd92 100644
@@ -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
index fcb033c..092291d 100644
@@ -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
#14 lore raw

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 -
#15 lore raw

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_IPV6

These 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
#16 lore raw

PATCH v4 3/3 toolchain: disable internal for blackfin

In reply to 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.

---
 toolchain/Config.in | 1 +
 1 file changed, 1 insertion(+)
toolchain/Config.in +1 -0
index a851ce4..399d25b 100644
@@ -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
#17 lore raw

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 -
#18 lore raw

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
#19 lore raw

PATCH v4 3/3 toolchain: disable internal for blackfin

In reply to Guido Martínez

Hi 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

#20 lore raw

PATCH v5 1/3 busybox: disable nslookup applet

In reply to 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.

---
 package/busybox/busybox.config | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/busybox/busybox.config +1 -1
index 8d1d80a..91c3006 100644
@@ -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
#21 lore raw

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
index e70989e..f02d9ab 100644
@@ -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
index 3980c62..4c3bd92 100644
@@ -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
index fcb033c..092291d 100644
@@ -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
#22 lore raw

PATCH v5 3/3 toolchain: disable internal for Cortex-M3

In reply to 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.

---
 toolchain/Config.in | 1 +
 1 file changed, 1 insertion(+)
toolchain/Config.in +1 -0
index a851ce4..399d25b 100644
@@ -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
#23 lore raw

PATCH v5 1/3 busybox: disable nslookup applet

In reply to Guido Martínez

Dear 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.

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
#24 lore raw

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
#25 lore raw

PATCH v5 1/3 busybox: disable nslookup applet

Quoted 30 lines · Thomas Petazzoni

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.

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.

#26 lore raw

PATCH v5 1/3 busybox: disable nslookup applet

In reply to Thomas Petazzoni

Hi Thomas,

Quoted 32 lines · Thomas Petazzoni

[...]

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.

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