diff --git a/Chapter02/README.md b/Chapter02/README.md index 4d6755b..1d16fa7 100644 --- a/Chapter02/README.md +++ b/Chapter02/README.md @@ -3,8 +3,12 @@ This folder contains examples in C++ from second chapter. The folder contains following examples: +- instrument_functions.cpp - vector_dyn_mem.cpp - vector_dyn_mem_reserve.cpp - vector_pmr.cpp - terminate_handler.cpp - new_deleted.cpp + +## Functions instrumentation in GCC +Compile instrument_functions.cpp example using compiler flag -finstrument-functions diff --git a/Chapter02/instrument_functions.cpp b/Chapter02/instrument_functions.cpp new file mode 100644 index 0000000..d3f6c0d --- /dev/null +++ b/Chapter02/instrument_functions.cpp @@ -0,0 +1,32 @@ +#include + +// Stub DWT_CYCCNT register +#define DWT_CYCCNT 100 + +extern "C" +{ + __attribute__((no_instrument_function)) void __cyg_profile_func_enter(void *this_fn, void *call_site) + { + + printf("entry, %p, %d\n", this_fn, DWT_CYCCNT); + } + + __attribute__((no_instrument_function)) void __cyg_profile_func_exit(void *this_fn, void *call_site) + { + + printf("entry, %p, %d\n", this_fn, DWT_CYCCNT); + } +} + +void fun() +{ + printf("Hi from fun!\n"); +} + +int main() +{ + fun(); + printf("Hi from main!\n"); + + return 0; +} \ No newline at end of file