http://bugs.winehq.org/show_bug.cgi?id=18832
Summary: compiling with -fprofile-generate fails on sfnt2fnt due to hidden symbol Product: Wine Version: 1.1.23 Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: tools AssignedTo: wine-bugs@winehq.org ReportedBy: scott@open-vote.org
I've been attempting to experiment with compiling Wine using profile guided optimization, however make fails in tools/sfnt2fnt due to a hidden symbol.
GCC version: 4.3 on Ubuntu 9.04
x86_64-linux-gnu-gcc -m32 -Wall -g -O2 -fprofile-generate -o sfnt2fnt sfnt2fnt.o -L../libs/wine -lwine ../libs/port/libwine_port.a -lfreetype -lz -Wl,--rpath,$ORIGIN/../libs/wine /usr/bin/ld: sfnt2fnt: hidden symbol `__gcov_merge_add' in /usr/lib/gcc/x86_64-linux-gnu/4.3.3/32/libgcov.a(_gcov_merge_add.o) is referenced by DSO /usr/bin/ld: final link failed: Nonrepresentable section on output collect2: ld returned 1 exit status make[1]: *** [sfnt2fnt] Error 1 make[1]: Leaving directory `/home/scott/src/wine-1.1.23-profiled/tools' make: *** [tools] Error 2
If I try hacking the makefile to add the -fno-profile-generate flag after that one, I get this error:
x86_64-linux-gnu-gcc -m32 -Wall -g -O2 -fprofile-generate -fno-profile-generate -o sfnt2fnt sfnt2fnt.o -L../libs/wine -lwine ../libs/port/libwine_port.a -lfreetype -lz -Wl,--rpath,$ORIGIN/../libs/wine sfnt2fnt.o: In function `exit_on_signal': /home/scott/src/wine-1.1.23-profiled/tools/sfnt2fnt.c:167: undefined reference to `__gcov_indirect_call_profiler' sfnt2fnt.o: In function `cleanup': /home/scott/src/wine-1.1.23-profiled/tools/sfnt2fnt.c:162: undefined reference to `__gcov_indirect_call_profiler' sfnt2fnt.o: In function `main': /home/scott/src/wine-1.1.23-profiled/tools/sfnt2fnt.c:567: undefined reference to `__gcov_indirect_call_profiler' sfnt2fnt.o: In function `fill_fontinfo': /home/scott/src/wine-1.1.23-profiled/tools/sfnt2fnt.c:416: undefined reference to `__gcov_one_value_profiler' sfnt2fnt.o: In function `global constructors keyed to 65535_0_main': /home/scott/src/wine-1.1.23-profiled/tools/sfnt2fnt.c:793: undefined reference to `__gcov_init' sfnt2fnt.o:(.data+0x44): undefined reference to `__gcov_merge_add' sfnt2fnt.o:(.data+0x50): undefined reference to `__gcov_merge_single' ../libs/wine/libwine.so: undefined reference to `__gcov_pow2_profiler' ../libs/wine/libwine.so: undefined reference to `__gcov_interval_profiler' ../libs/wine/libwine.so: undefined reference to `__gcov_execv' collect2: ld returned 1 exit status make[1]: *** [sfnt2fnt] Error 1 make[1]: Leaving directory `/home/scott/src/wine-1.1.23-profiled/tools' make: *** [tools] Error 2
This is strange as compiling without -fprofile-generate works fine.