Do not let GCC use built-in functions

In order to reduce the software dependency on the compiler, the project
is now compiled with the '-ffreestanding' flag. This is to prevent GCC
from replacing functions with more optimised versions. An example is
where GCC replaces a simple printf() with a puts().

Change-Id: I1973fe6957cd708e8432a0039af9d50e037bd884
diff --git a/Makefile b/Makefile
index 544af73..d3951ea 100644
--- a/Makefile
+++ b/Makefile
@@ -96,8 +96,9 @@
 				-Iarch/system/gic -Icommon/psci			\
 				-Iinclude/stdlib -Iinclude/stdlib/sys
 
-ASFLAGS			+= 	-nostdinc -Wa,--fatal-warnings -D__ASSEMBLY__ ${INCLUDES}
-CFLAGS			:= 	-nostdinc -Wall -Werror -std=c99 -c -Os \
+ASFLAGS			+= 	-nostdinc -ffreestanding -Wa,--fatal-warnings	\
+				-D__ASSEMBLY__ ${INCLUDES}
+CFLAGS			:= 	-nostdinc -ffreestanding -Wall -Werror -std=c99 -c -Os \
 				-DDEBUG=${DEBUG} ${INCLUDES} ${CFLAGS}
 
 LDFLAGS			+=	--fatal-warnings -O1
diff --git a/docs/change-log.md b/docs/change-log.md
index 08d1854..b400ac7 100644
--- a/docs/change-log.md
+++ b/docs/change-log.md
@@ -82,6 +82,9 @@
     Implementations for `putchar()` and `strchr()` were added to the local C
     library.
 
+*   GCC compiler built-in function support has been disabled in order to improve
+    compiler independence.
+
 
 ARM Trusted Firmware - version 0.2
 ==================================