Skip site navigation (1)Skip section navigation (2)
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>