Building gcc with --coverage
David Tengeri
dtengeri@inf.u-szeged.hu
Tue Apr 24 13:32:00 GMT 2012
On 2012-04-20 16:18, David Tengeri wrote:
> Hello,
>
> I want to measure the test coverage of gcc based on the tests shipped
> with it. To accomplish this, I tried to compile gcc 4.6.2 with the
> --coverage flag. But I got some errors and I don't know how to handle
> them. I googled it, but I didn't find any useful information, maybe
> somebody can help me.
>
> I tried to compile gcc on 3 different systems. On my desktop, which
> runs a 64-bit Arch Linux, and I made a 32-bit Arch Linux and a 32-bit
> Debian 6.0 virtual machine on VirtualBox.
>
> The normal builds are OK.
>
> The configure command I've used on both systems:
> ../gcc_4_6_2/configure --prefix="/home/dtengeri/install/"
> --enable-languages="c,c++" CFLAGS="-g -O0 -fprofile-arcs
> -ftest-coverage" CXXFLAGS="-g -O0 -fprofile-arcs -ftest-coverage"
> LDFLAGS="-fprofile-arcs -ftest-coverage"
>
> [configure-stage1-target-libgomp] Error 77
> The config.log says:
> /home/dtengeri/build/./gcc/cc1: symbol lookup error:
> /home/dtengeri/build/./gcc/libgcc_s.so.1: undefined symbol: atexit
>
> atexit is defined in glibc. I have version 2.15-10 of glibc on my
> system. I've tried to pass -lc to LDFLAGS, but it didn't help.
>
> Next I added --disable-shared parameter to the configure. In this case
> the build process reached stage 2.
> The compile stopped at configuring libiberty, because it can't find
> gcov related functions. So I modified the makefile and add the
> -fprofile-arcs flag to the XGCC_FLAGS_FOR_TARGET variable. After this
> the compile continued, but a segmentation fault occured at stage 2, at
> one of the configure of libgcc.
>
> The second try was on a 32-bit Arch Linux running on VirtualBox. I got
> the same problem here. It missed the fstat() symbol without
> --disable-shared parameter and there was a segmentation fault with the
> --disable-shared parameter.
>
> My third attempt was on the Debian.
> I had to make the change of XGCC_FLAGS_FOR_TARGET in the Makefile here
> too.
>
> First, the compile stopped when trying to configure libiberty at stage
> 2.It stopped at the checking for working fork. I left it for hours but
> nothing changed, it still wanted to check for working fork. So I
> changed the configure script in libiberty to bypass this check. The
> same error happened with gcc, so I modified the gcc/configure script too.
> The next stop in the build process was the following command:
> echo | /home/dtengeri/build/./gcc/xgcc -B/home/dtengeri/build/./gcc/
> -E -dM - | \
> sed -n -e 's/^#define \([^_][a-zA-Z0-9_]*\).*/\1/p' \
> -e 's/^#define \(_[^_A-Z][a-zA-Z0-9_]*\).*/\1/p' | \
> sort -u > tmp-macro_list
>
> And this command didn't finish its job. I left it for a day. At the
> end of the day it allocates all of the memory on the virtual machine
> and used its cpu on 100%.
>
> The situation is the same with --disable-shared on and off.
>
> So I'm stucked here and I don't know what to do next.
>
> Does anybody has any expreience in building gcc with --coverage option?
>
> Regards,
> David Tengeri
>
Ok, now I know this was a dumb question. There is --enable-coverage
configure option, which does the same I want.... Now it compiles fine.
Regards,
David
More information about the Gcc-help
mailing list