Enable aarch64-linux-musl-gcc for opteesp

In IoT devices it is common to use musl-libc as a more resource
efficient alternative to glibc. There is a GCC toolchain built for this
configuration available from https://musl.cc.
This patch enables using the musl-gcc cross compiler to compile opteesp
deployments. Note: only the compiler and not musl-libc is used.
The challenge is compilation of newlib.
This change implements two fixes:
  - extends the newlib patch to allow building bare-metal newlib with
    the musl-gcc compiler
  - fixes compiler.h and removes dependency on a glibc specific header
    file.

Change-Id: Icb35cd458c437c5b01cecb1a3f4ec937ad1760e6
Signed-off-by: Gyorgy Szing <Gyorgy.Szing@arm.com>
diff --git a/components/common/utils/include/compiler.h b/components/common/utils/include/compiler.h
index d0354c5..075530b 100644
--- a/components/common/utils/include/compiler.h
+++ b/components/common/utils/include/compiler.h
@@ -7,7 +7,15 @@
 #ifndef COMPILER_H
 #define COMPILER_H
 
+/* Some standard library implementations define some macros defined in this
+ * file without protection against redefinition. Depending on inclusion order
+ * through other file this results in compiler warnings being triggered.
+ * Including cdefs.h here makes the standard library implementation the
+ * definitive owner and thus solves the problem.
+ */
+#ifdef ENABLE_CDEFSH_FIX
 #include <sys/cdefs.h>
+#endif
 
 /*
  * Macros that should be used instead of using __attribute__ directly to