summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter S. Mazinger <ps.m@gmx.net>2011-03-13 00:42:50 (GMT)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2012-06-15 12:00:23 (GMT)
commitce69c1eab4077dc3a327fd35177dceb1a824c930 (patch)
tree680fe095d1a1a505a3afb705dc4b678d94632e59
parent511f959892f039842feef9618738a8de9c860b92 (diff)
arm: consistency check OABI v. EABI
added check in toolchain and config Signed-off-by: Peter S. Mazinger <ps.m@gmx.net> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-rw-r--r--libc/sysdeps/linux/arm/Makefile.arch5
-rw-r--r--libc/sysdeps/linux/arm/bits/uClibc_arch_features.h11
2 files changed, 13 insertions, 3 deletions
diff --git a/libc/sysdeps/linux/arm/Makefile.arch b/libc/sysdeps/linux/arm/Makefile.arch
index cc73c45..093eb2d 100644
--- a/libc/sysdeps/linux/arm/Makefile.arch
+++ b/libc/sysdeps/linux/arm/Makefile.arch
@@ -21,9 +21,8 @@ CSRC += posix_fadvise.c posix_fadvise64.c
endif
# Is our compiler set up for EABI ?
-IS_EABI:=$(shell $(CC) $(CFLAGS) -x c - -E -dM </dev/null 2>/dev/null \
- | grep __ARM_EABI__ 2>&1 >/dev/null && echo 'y' \
- )
+CC_IS_EABI_CHECK = $(filter-out -include libc-symbols.h,$(CC) $(CFLAGS))
+$(eval $(call cache-output-var,IS_EABI,$(CC_IS_EABI_CHECK) -x c - -E -dM </dev/null 2>/dev/null | grep __ARM_EABI__ 2>&1 >/dev/null && echo 'y'))
ifeq ($(IS_EABI),y)
CSRC += aeabi_assert.c aeabi_atexit.c aeabi_errno_addr.c \
diff --git a/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h b/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h
index 14621d9..8c43e53 100644
--- a/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h
+++ b/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h
@@ -48,4 +48,15 @@
/* only weird assemblers generally need this */
#undef __UCLIBC_ASM_LINE_SEP__
+#ifdef __GNUC__
+# define __need_uClibc_config_h
+# include <bits/uClibc_config.h>
+# undef __need_uClibc_config_h
+# if defined __CONFIG_ARM_EABI__ && !defined __ARM_EABI__
+# error Your toolchain does not support EABI
+# elif !defined __CONFIG_ARM_EABI__ && defined __ARM_EABI__
+# error Your toolchain was built for EABI, but you have chosen OABI
+# endif
+#endif
+
#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */