diff --git a/tools/gcov/gather_on_test.sh b/tools/gcov/gather_on_test.sh
new file mode 100755
index 0000000..348277e
--- /dev/null
+++ b/tools/gcov/gather_on_test.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+
+#
+# Copyright (c) 2022 Arm Limited.
+#
+# 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
+#
+# 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.
+#
+
+set -o errexit
+set -o pipefail
+set -o errtrace
+
+DEST=$1
+GCDA_DIR=/sys/kernel/debug/gcov
+TMP_DIR=
+
+usage() {
+    echo "Usage: $0 <output.tar.gz>" >&2
+    exit 1
+}
+
+cleanup() {
+    if [ -d "${TMP_DIR}" ]
+    then
+        rm -rf "${TMP_DIR}"
+    fi
+}
+
+trap cleanup EXIT
+
+if [ -z "${DEST}" ]
+then
+    usage
+fi
+
+# Find kernel directory
+readarray -t DRIVER_GCDA < <(find ${GCDA_DIR} -path '*/kernel/ethosu_driver.gcda')
+if [ ${#DRIVER_GCDA[*]} -le 0 ]
+then
+    echo "Error: Could not find Ethos-U kernel directory"
+    exit 1
+fi
+
+LDS_DIR=$(dirname "$(dirname "${DRIVER_GCDA[0]}")")
+DEST=$(realpath "${DEST}")
+TMP_DIR=$(mktemp -d)
+
+# Copy gcda objects to temporary directory
+cd "${LDS_DIR}"
+find . -name "*.gcda" -exec cp --parent {} "${TMP_DIR}" \;
+
+# Create tar.gz archive
+cd "${TMP_DIR}"
+find . -type f -print0 | xargs -0 tar -zcvf "${DEST}"
