Date: Fri, 18 Sep 2009 11:15:15 +1000 From: Peter Jeremy <peterjeremy@acm.org> To: freebsd-current@freebsd.org Subject: Re: Stack protection breaks -fprofile-generate Message-ID: <20090918011515.GC1997@server.vk2pj.dyndns.org> In-Reply-To: <20090917121642.GA1997@server.vk2pj.dyndns.org> References: <20090917061054.GA48371@server.vk2pj.dyndns.org> <20090917121642.GA1997@server.vk2pj.dyndns.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--0ntfKIWw70PvrIHh Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 2009-Sep-17 22:16:42 +1000, Peter Jeremy <peterjeremy@acm.org> wrote: >On 2009-Sep-17 16:10:54 +1000, Peter Jeremy <peterjeremy@acm.org> wrote: >>Somewhere between early June and lastest 8.x, -fprofile-generate broke >>on i386. This looks to be related to stack protection. >> >>$ echo 'int main() { return 0; }' > x.c >>$ cc x.c >>$ cc -fprofile-generate x.c =20 >>/usr/lib/libgcov.a(_gcov.o)(.text+0x13df): In function `gcov_exit': >>/usr/src/gnu/lib/libgcov/../../../contrib/gcc/libgcov.c:532: undefined re= ference to `__stack_chk_fail_local' > >Checking on 8.0-BETA4 from yesterday (about SVN rev 197239), it fails >on i386 and succeeds on amd4. It looks suspiciously like this is >more fallout from r195697 but I'm not sure what the fix is. I had hoped r197277 might fix the problem but it doesn't: r197277 provides a weak __stack_chk_fail_local in libc.a but in my case, it's linking against libc.so. That said, libc.so _does_ have a definition of __stack_chk_fail_local so why isn't the linker finding it? builder% cc -Wl,-t -fprofile-generate x.c /usr/bin/ld: mode elf_i386_fbsd /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o /var/tmp//ccUyK2TI.o (/usr/lib/libgcov.a)_gcov_merge_add.o (/usr/lib/libgcov.a)_gcov.o -lgcc_s (/usr/lib/libgcc_s.so) -lc (/usr/lib/libc.so) -lgcc_s (/usr/lib/libgcc_s.so) /usr/lib/crtend.o /usr/lib/crtn.o /usr/lib/libgcov.a(_gcov.o)(.text+0x13df): In function `gcov_exit': /usr/src/gnu/lib/libgcov/../../../contrib/gcc/libgcov.c:532: undefined refe= rence to `__stack_chk_fail_local' /usr/bin/ld: link errors found, deleting executable `a.out' builder% nm -o -D /usr/lib/libc.so|grep __stack_chk_fail /usr/lib/libc.so:00027bbc T __stack_chk_fail /usr/lib/libc.so:00027bbc T __stack_chk_fail_local builder% nm -o /usr/lib/libgcov.a|grep __stack_chk_fail_local /usr/lib/libgcov.a:_gcov_execle.o: U __stack_chk_fail_local /usr/lib/libgcov.a:_gcov_execlp.o: U __stack_chk_fail_local /usr/lib/libgcov.a:_gcov_execl.o: U __stack_chk_fail_local /usr/lib/libgcov.a:_gcov.o: U __stack_chk_fail_local --=20 Peter Jeremy --0ntfKIWw70PvrIHh Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (FreeBSD) iEYEARECAAYFAkqy3yMACgkQ/opHv/APuIflqgCeL8srcDS1wAA2mj1JwxhjtobO m74AoLwh0mjpAKFV7vbPUOSrmayT7tm6 =Eb0K -----END PGP SIGNATURE----- --0ntfKIWw70PvrIHh--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090918011515.GC1997>