uclibc/arm: doesn't build in thumb(1) mode with threads
authorGustavo Zacarias <gustavo@zacarias.com.ar>
Fri, 19 Jul 2013 13:06:33 +0000 (10:06 -0300)
committerPeter Korsgaard <jacmet@sunsite.dk>
Fri, 19 Jul 2013 21:46:56 +0000 (23:46 +0200)
It runs out of registers, it fails even in official form
(COMPILE_IN_THUMB_MODE=y) so just build it in ARM mode since EABI
mandates interworking.
Tested in an arm920t board.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
package/uclibc/Config.in
package/uclibc/uclibc.mk

index 8d16e8c2f5d1bf91f519c7bf5e14d76ead5e9875..90aae907ba23b37a9d5b7330785aee04b399796f 100644 (file)
@@ -185,7 +185,7 @@ config BR2_UCLIBC_ARM_TYPE
 config BR2_UCLIBC_ARM_BX
        bool
        depends on BR2_UCLIBC_TARGET_ARCH = "arm"
-       default y if !BR2_fa265 && !BR2_strongarm
+       default y if (BR2_ARM_CPU_HAS_THUMB || BR2_ARM_CPU_HAS_THUMB2)
 
 config BR2_UCLIBC_MIPS_ABI
        string
index d5ea7a4b76b52f2a29461ec10ccaaa7ade28caee..044de21d96709593f2df9061b0018c147f51e27b 100644 (file)
@@ -74,6 +74,11 @@ define UCLIBC_ARM_ABI_CONFIG
        $(call UCLIBC_OPT_SET,CONFIG_ARM_EABI,y,$(@D))
 endef
 
+# Thumb build is broken with threads, build in ARM mode
+ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_TOOLCHAIN_HAS_THREADS),yy)
+UCLIBC_EXTRA_CFLAGS += -marm
+endif
+
 ifeq ($(BR2_UCLIBC_ARM_BX),y)
 define UCLIBC_ARM_BX_CONFIG
        $(call UCLIBC_OPT_SET,USE_BX,y,$(@D))
@@ -348,7 +353,7 @@ endif
 UCLIBC_MAKE_FLAGS = \
        ARCH="$(UCLIBC_TARGET_ARCH)" \
        CROSS_COMPILE="$(TARGET_CROSS)" \
-       UCLIBC_EXTRA_CFLAGS="$(TARGET_ABI)" \
+       UCLIBC_EXTRA_CFLAGS="$(UCLIBC_EXTRA_CFLAGS) $(TARGET_ABI)" \
        HOSTCC="$(HOSTCC)"
 
 define UCLIBC_SETUP_DOT_CONFIG