Hello, In our GCC porting, we use newlib instead of libc. Today I tried to use profiling feedback based optimization with option -fprofile-arcs. But the executable doesn't produce .gcda file. I examined the disassembled binary file and found the following functions are basically just dummy ones: __gcov_init, __gcov_flush, __gcov_merge_add. I checked libgcov.c that contains these functions and found following code.
#if defined(inhibit_libc) /* If libc and its header files are not available, provide dummy functions. */ #ifdef L_gcov void __gcov_init (struct gcov_info *p __attribute__ ((unused))) {} void __gcov_flush (void) {} #endif #ifdef L_gcov_merge_add void __gcov_merge_add (gcov_type *counters __attribute__ ((unused)), unsigned n_counters __attribute__ ((unused))) {} #endif #ifdef L_gcov_merge_single void __gcov_merge_single (gcov_type *counters __attribute__ ((unused)), unsigned n_counters __attribute__ ((unused))) {} #endif #ifdef L_gcov_merge_delta void __gcov_merge_delta (gcov_type *counters __attribute__ ((unused)), unsigned n_counters __attribute__ ((unused))) {} #endif Both -Dinhibit_libc and -DL_gcov are used as shown in our building log file. I guess -Dinhibit_libc is added because we used newlibc instead of glibc. I tried to grep these functions in newlibc and didn't find them. My question is how to enable gcov with newlibc. Do I need to write my own versions of them? Any suggestion is greatly appreciated. Cheers, Bingfeng Mei Broadcom UK