[Bug gcov-profile/56773] New: Programs crash if compiled with --coverage, although they run correctly without --coverage

shavitmichael+GCC at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu Mar 28 21:12:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56773

             Bug #: 56773
           Summary: Programs crash if compiled with --coverage, although
                    they run correctly without --coverage
    Classification: Unclassified
           Product: gcc
           Version: 4.7.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: gcov-profile
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: shavitmichael+GCC@gmail.com


Compiling a C program with the --coverage option causes the program to crash
when run if the program has a global variable named "open".
Indeed declaring a variable "open" causes an Illegal instruction (core dumped),
and initializing it causes a Segmentation fault.


Example code: 
*****
#include <stdio.h>
int open = 1;
int main(void) {
  puts(“run”);
}
*****
Compiling this code with -O0 --coverage,  and running the program outputs:
run
Segmentation fault (core dumped)


However, if I remove the --coverage flag, or change the name of the variable
"open", the program runs just fine.
It looks like the gcov code tries to call a function called open, but ends up
calling the variable open.

Furthermore this doesn't seem to be an issue in version 4.2, however I haven’t
been able to verify for other version between 4.2 and 4.7.2.
More specifically, my gcc version is 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1)


More information about the Gcc-bugs mailing list