jiajheli / baremetal-gcov

GCC/gcov code coverage data extraction from the actual embedded system, without requiring a file system, or an operating system, or standard C libraries.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GCC/gcov code coverage data extraction from the actual embedded system, without requiring a file system, or an operating system, or standard C libraries.

See the PDF slide file in the repo for an overview, and see the github wiki for more information about customization options for your embedded system. Also see the simple Linux-compilable example in the repo.

Embedded gcov: Insert in your code

#include "gcov_public.h"
…
        // want this as early as possible,
        // but cannot call this until after
        // the trap table and system stuff are set up
        // may not be needed in all systems, depending on startup code
        __gcov_call_constructors();
…
                                case 9: // a command in my system
                                        __gcov_exit(); // dumps the data
                                        break;
…

Add the embedded gcov source files gcov_public.c and gcov_gcc.c to your build.

You likely want a separate gcov build target, with preprocessor flags.

May need a separate linker file for gnu ld, defining symbols for __gcov_call_constructors().

Then compile with gcc and usual coverage flags -ftest-coverage -fprofile-arcs

About

GCC/gcov code coverage data extraction from the actual embedded system, without requiring a file system, or an operating system, or standard C libraries.

License:Apache License 2.0


Languages

Language:C 74.6%Language:Shell 21.8%Language:Awk 3.3%Language:Makefile 0.3%