diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
index e25fe57..220fbf9 100644
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -27,7 +27,6 @@
     cipher.c
     cipher_wrap.c
     cmac.c
-    common.c
     ctr_drbg.c
     des.c
     dhm.c
diff --git a/library/Makefile b/library/Makefile
index 6611016..13b0b29 100644
--- a/library/Makefile
+++ b/library/Makefile
@@ -84,7 +84,6 @@
 	     cipher.o \
 	     cipher_wrap.o \
 	     cmac.o \
-	     common.o \
 	     ctr_drbg.o \
 	     des.o \
 	     dhm.o \
diff --git a/library/common.c b/library/common.c
deleted file mode 100644
index 4273600..0000000
--- a/library/common.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  Internal invasive testing helper functions
- *
- *  Copyright The Mbed TLS Contributors
- *  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.
- *  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-#include "common.h"
-
-#include <stddef.h>
-
-#if defined(MBEDTLS_TEST_HOOKS)
-static void (*err_add_hook)( int, int, const char *, int );
-void mbedtls_set_err_add_hook(void *hook)
-{
-    err_add_hook = hook;
-}
-int mbedtls_err_add( int high, int low, const char *file, int line )
-{
-    if( err_add_hook != NULL )
-        (*err_add_hook)( high, low, file, line );
-    return ( high + low );
-}
-#endif
diff --git a/library/common.h b/library/common.h
index a9b6187..5845766 100644
--- a/library/common.h
+++ b/library/common.h
@@ -29,7 +29,6 @@
 #include "mbedtls/config.h"
 #endif
 
-#if defined(MBEDTLS_TEST_HOOKS)
 /** Helper to define a function as static except when building invasive tests.
  *
  * If a function is only used inside its own source file and should be
@@ -45,31 +44,10 @@
  * #endif
  * ```
  */
+#if defined(MBEDTLS_TEST_HOOKS)
 #define MBEDTLS_STATIC_TESTABLE
-
-/** Helper macro and function to combine a high and low level error code.
- *
- * This function uses a hook (`mbedtls_test_err_add_hook`) to allow invasive
- * testing of its inputs. This is used in the test infrastructure to report
- * on errors when combining two error codes of the same level (e.g: two high
- * or two low level errors).
- *
- * To set a hook use
- * ```
- * mbedtls_set_err_add_hook(&mbedtls_check_foo);
- * ```
- */
-void mbedtls_set_err_add_hook( void *hook );
-int mbedtls_err_add( int high, int low, const char *file, int line );
-#define MBEDTLS_ERR_ADD( high, low )  \
-    ( mbedtls_err_add( high, low, __FILE__, __LINE__ ) )
-
 #else
 #define MBEDTLS_STATIC_TESTABLE static
-
-#define MBEDTLS_ERR_ADD( high, low ) \
-    ( high + low )
-
-#endif /* MBEDTLS_TEST_HOOKS */
+#endif
 
 #endif /* MBEDTLS_LIBRARY_COMMON_H */
diff --git a/library/error.c b/library/error.c
index 901a369..4e279b0 100644
--- a/library/error.c
+++ b/library/error.c
@@ -893,6 +893,22 @@
     return( NULL );
 }
 
+#if defined(MBEDTLS_TEST_HOOKS)
+static void (*err_add_hook)( int, int, const char *, int );
+
+void mbedtls_set_err_add_hook(void *hook)
+{
+    err_add_hook = hook;
+}
+
+int mbedtls_err_add( int high, int low, const char *file, int line )
+{
+    if( err_add_hook != NULL )
+        (*err_add_hook)( high, low, file, line );
+    return ( high + low );
+}
+#endif /* MBEDTLS_TEST_HOOKS */
+
 void mbedtls_strerror( int ret, char *buf, size_t buflen )
 {
     size_t len;
