Re: libc.so dependency on libssp_nonshared.a

From: Gleb Kurtsou <gleb_at_freebsd.org>
Date: Mon, 2 Feb 2015 23:47:09 -0800
On (02/02/2015 17:06), Jeremie Le Hen wrote:
> Hi Gleb,
> On Sun, Feb 1, 2015 at 9:24 PM, Gleb Kurtsou <gleb_at_freebsd.org> wrote:
> > I came across some build issues in libc.so and SSP.
> >
> > libc.ldscript (aka libc.so) unconditionally includes _at__at_LIBDIR_at__at_/libssp_nonshared.a
> >
> > libssp* are not built if WITHOUT_SSP defined.
> >
> > ObsoleteFiles.inc doesn't mention libssp*.
> >
> > Consider WITHOUT_SSP=yes case.  As soon as one does clean installworld
> > and/or removes stale libssp_nonshared.a ld fails to link anything
> > because of missing libssp_nonshared.a
> 
> I think nowadays it would make sense to get it of WITHOUT_SSP
> altogether.  This will turn this into a non-issue.

Do you mean building libssp_nonshared unconditionally? It makes perfect
sense. The library is a single stub function.

By building libssp* conditionally we may expect that -fstack-protector
complier option won't work. I wasn't able to reproduce this potential
problem. libc provides __stack_chk_fail and __stack_chk_guard. And I
failed to create a test case that would generate code using anything
like __memcpy_chk.

Perhaps we should change MK_SSP to operate as documented (add
-fstack-protector to CFLAGS) and consider adding MK_SSP_SUPPORT option
for libraries.  Although there is no reason to have MK_SSP_SUPPORT if
that would imply failure to run binaries or compile with
-fstack-protector.


> > libc.so during buildworld (as found under /usr/obj) is symlink to the
> > actual shared library, but not ldscript.  Is it intentional?  I wouldn't
> > expect make -C /usr/src/bin/cat to match buildworld result closely
> > assuming src and world are in sync, but they seem to have different idea
> > of what libc is..
> 
> I don't remember the details except this was pretty twisted :).  I
> don't work enough on this subject to keep it warm in my head and each
> time I need to go back to it, it takes me hours.
> 
> The code is here if you want to give a try:
> http://svnweb.freebsd.org/base/head/share/mk/bsd.lib.mk?view=annotate#l335

indeed.
Received on Tue Feb 03 2015 - 06:46:00 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:55 UTC