http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46266
Summary: gcov generates data for non-existing file <built-in> Product: gcc Version: 4.4.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: gcov-profile AssignedTo: unassig...@gcc.gnu.org ReportedBy: ober...@linux.vnet.ibm.com Using gcov on data from a binary compiled with options -std=c99 and -coverage results in gcov trying to access a non-existing source file <built-in>. How to reproduce: # echo "int main(){}" > x.c # gcc x.c -o x -std=c99 -coverage # ./x # gcov x File 'x.c' Lines executed:100.00% of 1 x.c:creating 'x.c.gcov' File '<built-in>' No executable lines # cat '<built-in>.gcov' -: 0:Source:<built-in> -: 0:Graph:x.gcno -: 0:Data:x.gcda -: 0:Runs:1 -: 0:Programs:1 gcc versions on which this behavior was observed: - Using built-in specs. Target: s390x-suse-linux Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.3 --enable-ssp --disable-libssp --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --program-suffix=-4.3 --enable-linux-futex --without-system-libunwind --with-tune=z9-109 --with-arch=z900 --with-long-double-128 --enable-decimal-float --build=s390x-suse-linux Thread model: posix gcc version 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux) - Using built-in specs. Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.3-4ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) The reason for this behavior seems to be that gcc adds an implicit "return 0" statement for main() (likely to comply with ISO/IEC 9899, section 5.1.2.2.3) and refers to that from the .gcno file. My expectation would be that gcov should disregard any data for code added implicitly by gcc. Ideally this code should also be excluded from profiling during compilation (i.e. no reference in .gcno files, no extra arc profiling code).