diff --git a/source/hal/source/components/stdout/source/retarget.c b/source/hal/source/components/stdout/source/retarget.c
index 47d5189..41c070a 100644
--- a/source/hal/source/components/stdout/source/retarget.c
+++ b/source/hal/source/components/stdout/source/retarget.c
@@ -1,6 +1,6 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2022 Arm Limited and/or its affiliates <open-source-office@arm.com>
- * SPDX-License-Identifier: Apache-2.0
+ * SPDX-FileCopyrightText: Copyright 2022 Arm Limited and/or its affiliates
+ * <open-source-office@arm.com> SPDX-License-Identifier: Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -287,3 +287,51 @@
 #endif /* #ifndef ferror */
 
 #endif /* !defined(USE_SEMIHOSTING) */
+
+/* If using GNU compiler */
+#if defined(__GNUC__)
+
+/* If Arm GNU compiler version > 11.3.0 */
+#if __GNUC__ > 11 || \
+    (__GNUC__ == 11 && (__GNUC_MINOR__ > 3 || (__GNUC_MINOR__ == 3 && __GNUC_PATCHLEVEL__ > 0)))
+struct stat;
+int _fstat_r(struct _reent* r, int fdes, struct stat* s)
+{
+    (void)(r);
+    (void)(fdes);
+    (void)(s);
+    return -1;
+}
+
+int _getpid_r(struct _reent* r)
+{
+    (void)(r);
+    return -1;
+}
+
+int _isatty_r(struct _reent* r, int desc)
+{
+    (void)(r);
+    (void)(desc);
+    return -1;
+}
+
+int _kill_r(struct _reent* r, int pid, int signal)
+{
+    (void)(r);
+    (void)(pid);
+    (void)(signal);
+    return -1;
+}
+
+_off_t _lseek_r(struct _reent* r, int fdes, _off_t offset, int w)
+{
+    (void)(r);
+    (void)(fdes);
+    (void)(offset);
+    (void)(w);
+    return -1;
+}
+
+#endif /* GNU  toolchain version > 11.3.0 */
+#endif /* If using GNU toolchain */
diff --git a/source/log/include/log_macros.h b/source/log/include/log_macros.h
index faf8435..6c115ab 100644
--- a/source/log/include/log_macros.h
+++ b/source/log/include/log_macros.h
@@ -1,6 +1,6 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2021 Arm Limited and/or its affiliates <open-source-office@arm.com>
- * SPDX-License-Identifier: Apache-2.0
+ * SPDX-FileCopyrightText: Copyright 2021 Arm Limited and/or its affiliates
+ * <open-source-office@arm.com> SPDX-License-Identifier: Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,50 +21,62 @@
 extern "C" {
 #endif
 
-#include <stdio.h>
 #include <inttypes.h>
+#include <stdio.h>
 
-#define LOG_LEVEL_TRACE       0
-#define LOG_LEVEL_DEBUG       1
-#define LOG_LEVEL_INFO        2
-#define LOG_LEVEL_WARN        3
-#define LOG_LEVEL_ERROR       4
+#define LOG_LEVEL_TRACE 0
+#define LOG_LEVEL_DEBUG 1
+#define LOG_LEVEL_INFO  2
+#define LOG_LEVEL_WARN  3
+#define LOG_LEVEL_ERROR 4
 
 #ifndef LOG_LEVEL
-#define LOG_LEVEL             LOG_LEVEL_INFO
+#define LOG_LEVEL LOG_LEVEL_INFO
 #endif /*LOG_LEVEL*/
 
-#define UNUSED(x)       ((void)(x))
+#if !defined(UNUSED)
+#define UNUSED(x) ((void)(x))
+#endif /* #if !defined(UNUSED) */
 
 #if (LOG_LEVEL == LOG_LEVEL_TRACE)
-    #define trace(...)        printf("TRACE - "); printf(__VA_ARGS__)
+#define trace(...)      \
+    printf("TRACE - "); \
+    printf(__VA_ARGS__)
 #else
-    #define trace(...)
-#endif  /* LOG_LEVEL == LOG_LEVEL_TRACE */
+#define trace(...)
+#endif /* LOG_LEVEL == LOG_LEVEL_TRACE */
 
 #if (LOG_LEVEL <= LOG_LEVEL_DEBUG)
-    #define debug(...)        printf("DEBUG - "); printf(__VA_ARGS__)
+#define debug(...)      \
+    printf("DEBUG - "); \
+    printf(__VA_ARGS__)
 #else
-    #define debug(...)
-#endif  /* LOG_LEVEL > LOG_LEVEL_TRACE */
+#define debug(...)
+#endif /* LOG_LEVEL > LOG_LEVEL_TRACE */
 
 #if (LOG_LEVEL <= LOG_LEVEL_INFO)
-    #define info(...)         printf("INFO - "); printf(__VA_ARGS__)
+#define info(...)      \
+    printf("INFO - "); \
+    printf(__VA_ARGS__)
 #else
-    #define info(...)
-#endif  /* LOG_LEVEL > LOG_LEVEL_DEBUG */
+#define info(...)
+#endif /* LOG_LEVEL > LOG_LEVEL_DEBUG */
 
 #if (LOG_LEVEL <= LOG_LEVEL_WARN)
-    #define warn(...)         printf("WARN - "); printf(__VA_ARGS__)
+#define warn(...)      \
+    printf("WARN - "); \
+    printf(__VA_ARGS__)
 #else
-    #define warn(...)
-#endif  /* LOG_LEVEL > LOG_LEVEL_INFO */
+#define warn(...)
+#endif /* LOG_LEVEL > LOG_LEVEL_INFO */
 
 #if (LOG_LEVEL <= LOG_LEVEL_ERROR)
-    #define printf_err(...)   printf("ERROR - "); printf(__VA_ARGS__)
+#define printf_err(...) \
+    printf("ERROR - "); \
+    printf(__VA_ARGS__)
 #else
-    #define printf_err(...)
-#endif  /* LOG_LEVEL > LOG_LEVEL_INFO */
+#define printf_err(...)
+#endif /* LOG_LEVEL > LOG_LEVEL_INFO */
 
 #ifdef __cplusplus
 }
