Date: Thu, 25 Sep 2008 20:50:43 GMT From: Jonathan Briggs <zlynx@acm.org> To: freebsd-gnats-submit@FreeBSD.org Subject: amd64/127640: GCC will not build shared libraries with -fprofile-generate on amd64 Message-ID: <200809252050.m8PKohFr095842@www.freebsd.org> Resent-Message-ID: <200809252100.m8PL0310007967@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 127640 >Category: amd64 >Synopsis: GCC will not build shared libraries with -fprofile-generate on amd64 >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-amd64 >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Sep 25 21:00:03 UTC 2008 >Closed-Date: >Last-Modified: >Originator: Jonathan Briggs >Release: 7.0-RELEASE >Organization: >Environment: FreeBSD freebsd64 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Feb 24 10:35:36 UTC 2008 root@driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64 >Description: I was porting a specialized database library to FreeBSD and the build failed with this error: /usr/bin/ld: /usr/lib/libgcov.a(_gcov_merge_add.o): relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC /usr/lib/libgcov.a: could not read symbols: Bad value The library uses -fprofile-generate, runs a test set, then rebuilds with -fprofile-use. It's worth a few ms per lookup. Also, this builds very well on i386 FreeBSD 7.0 and on many varieties of Linux and their GCC builds (Debian ia64, Gentoo amd64, CentOS 5.2, Fedora 5, 8, 9). I can work around the problem by just not doing a profile build. >How-To-Repeat: Put the following in a shell script: #!/bin/sh cat <<EOF | #include <stdio.h> int counter(int count) { int i; for(i=0; i<count; i++) { printf("loop %d\n", i); } return i; } EOF gcc -O2 -shared -fprofile-generate -fPIC -o t1.so -x c - >Fix: >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200809252050.m8PKohFr095842>