summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo Zacarias <gustavo@zacarias.com.ar>2013-07-19 13:06:33 (GMT)
committer Peter Korsgaard <jacmet@sunsite.dk>2013-07-19 21:46:56 (GMT)
commitd244782caadd17849910451e707366fcbec68cca (patch)
tree260dc8b48c071863f58f9f66e1bea0657255f8b1
parent103045534abe3a58bcec67fa4cf604f25ad88b38 (diff)
downloadbuildroot-d244782caadd17849910451e707366fcbec68cca.tar.gz
buildroot-d244782caadd17849910451e707366fcbec68cca.tar.bz2
uclibc/arm: doesn't build in thumb(1) mode with threads
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>
-rw-r--r--package/uclibc/Config.in2
-rw-r--r--package/uclibc/uclibc.mk7
2 files changed, 7 insertions, 2 deletions
diff --git a/package/uclibc/Config.in b/package/uclibc/Config.in
index 8d16e8c..90aae90 100644
--- a/package/uclibc/Config.in
+++ b/package/uclibc/Config.in
@@ -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
diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk
index d5ea7a4..044de21 100644
--- a/package/uclibc/uclibc.mk
+++ b/package/uclibc/uclibc.mk
@@ -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