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