diff --git a/docs/sections/building.md b/docs/sections/building.md
index 1489343..a7a894a 100644
--- a/docs/sections/building.md
+++ b/docs/sections/building.md
@@ -35,7 +35,12 @@
 Before proceeding, it is *essential* to ensure that the following prerequisites have been fulfilled:
 
 - GNU Arm embedded toolchain 10.2.1 (or higher) or the Arm Compiler version 6.16, or higher, is installed and available
-  on the path. Test the compiler by running:
+  on the path.
+
+> **Note**: There is a known issue with Arm GNU Embedded Toolchain version 12.2.Rel1. See
+> [Internal Compiler Error](./troubleshooting.md#internal-compiler-error) for details.
+
+  Test the compiler by running:
 
     ```commandline
     armclang -v
diff --git a/docs/sections/troubleshooting.md b/docs/sections/troubleshooting.md
index d5224c4..0b6f4f9 100644
--- a/docs/sections/troubleshooting.md
+++ b/docs/sections/troubleshooting.md
@@ -9,6 +9,7 @@
   - [No matching distribution found for ethos-u-vela==3.5.0](./troubleshooting.md#no-matching-distribution-found-for-ethos_u_vela)
     - [How to update Python3 package to 3.7 version](./troubleshooting.md#how-to-update-python3-package-to-newer-version)
   - [Error trying to build on Arm Virtual Hardware](./troubleshooting.md#error-trying-to-build-on-arm-virtual-hardware)
+  - [Internal Compiler Error](./troubleshooting.md#internal-compiler-error)
 
 ## Inference results are incorrect for my custom files
 
@@ -247,4 +248,29 @@
 ```commandline
 python3 ./build_default.py
 ```
-and the error should be fixed.
\ No newline at end of file
+and the error should be fixed.
+
+## Internal Compiler Error
+
+There is a known issue with the Arm GNU toolchain version 12.2 (release December 22, 2022).
+Compiler from this toolchain throws up this error:
+
+```
+during RTL pass: combine
+/home/user/ml-embedded-evaluation-kit/dependencies/cmsis-nn/Source/SoftmaxFunctions/arm_softmax_s8.c: In function 'arm_exp_on_negative_values_mve_32x4':
+/home/user/ml-embedded-evaluation-kit/dependencies/cmsis-nn/Source/SoftmaxFunctions/arm_softmax_s8.c:74:1: internal compiler error: in trunc_int_for_mode, at explow.cc:59
+   74 | }
+      | ^
+0x7f0343d9b082 __libc_start_main
+	../csu/libc-start.c:308
+Please submit a full bug report, with preprocessed source (by using -freport-bug).
+Please include the complete backtrace with any bug report.
+See <https://bugs.linaro.org/> for instructions.
+```
+
+This is expected to be fixed in the next release of the toolchain. We recommend using the previous version 11.3.Rel1
+(from August 2022).
+
+See
+- [GCC patches: PR107987](https://gcc.gnu.org/pipermail/gcc-patches/2022-December/607963.html)
+- [CMSIS-NN issue 13](https://github.com/ARM-software/CMSIS-NN/issues/13)
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
 }
