Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/lib/libpthread
Pre-emptively making a thread where people can call this an ugly hack
On Tue, May 07, 2019 at 06:12:54PM +0000, Maya Rashish wrote:
> Module Name: src
> Committed By: maya
> Date: Tue May 7 18:12:53 UTC 2019
>
> Modified Files:
> src/lib/libpthread: Makefile
>
> Log Message:
> Replace the link command for libpthread.a so that we create a single section
> with all the libpthread symbols in it.
> This makes -lpthread behave like to -Wl,--whole-archive -lpthread.
>
> This avoids a situation where threaded static binaries use some libc thread
> stubs, which are racy.
>
> Fixes PR lib/54001: call_once2_32, call_once2_static test cases failing on
> amd64 since gcc7 import.
>
> Suggested by Jonathan Wakely, thanks!
>
>
> To generate a diff of this commit:
> cvs rdiff -u -r1.92 -r1.93 src/lib/libpthread/Makefile
>
> Please note that diffs are not public domain; they are subject to the
> copyright notices on the relevant files.
>
> Modified files:
>
> Index: src/lib/libpthread/Makefile
> diff -u src/lib/libpthread/Makefile:1.92 src/lib/libpthread/Makefile:1.93
> --- src/lib/libpthread/Makefile:1.92 Wed Apr 24 11:43:19 2019
> +++ src/lib/libpthread/Makefile Tue May 7 18:12:53 2019
> @@ -1,4 +1,4 @@
> -# $NetBSD: Makefile,v 1.92 2019/04/24 11:43:19 kamil Exp $
> +# $NetBSD: Makefile,v 1.93 2019/05/07 18:12:53 maya Exp $
> #
>
> NOSANITIZER= # defined
> @@ -269,6 +269,20 @@ MLINKS+= tss.3 tss_set.3
>
> INCS+= threads.h
>
> +# PR lib/54001: create libpthread.a as a single large object, with all the
> +# symbols in one section. ensures that if any libpthread function is used,
> +# you get all of them from libpthread, and not the libc stubs.
> +#
> +# This makes -lpthread equivalent to -Wl,--whole-archive -lpthread
> +
> +__archivebuild: .USE
> + ${_MKTARGET_BUILD}
> + @rm -f ${.TARGET}
> + ${LD} -r -o ${.TARGET}.o `NM=${NM} ${LORDER} ${.ALLSRC:M*o} | ${TSORT}`
> + ${AR} ${_ARFL} ${.TARGET} ${.TARGET}.o
> +
> +CLEANFILES+= ${.TARGET}.o
> +
> .include <bsd.lib.mk>
>
> .else
>
Home |
Main Index |
Thread Index |
Old Index