Selaa lähdekoodia

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>
Peter S. Mazinger 13 vuotta sitten
vanhempi
commit
ce69c1eab4

+ 2 - 3
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 \

+ 11 - 0
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 */