From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/11581 Path: news.gmane.org!.POSTED!not-for-mail From: Jens Gustedt Newsgroups: gmane.linux.lib.musl.general Subject: Re: [PATCH 4/8] determine the existence of private futexes at the first thread creation Date: Sat, 24 Jun 2017 01:42:20 +0200 Organization: inria.fr Message-ID: <20170624014220.4e52f616@inria.fr> References: <20170623170535.GM1627@brightrain.aerifal.cx> <20170623234825.161cdaf2@inria.fr> <20170623220823.GR1627@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; boundary="Sig_/ZKgxJOTdkndaJlQIYVanDQu"; protocol="application/pgp-signature" X-Trace: blaine.gmane.org 1498261372 22198 195.159.176.226 (23 Jun 2017 23:42:52 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 23 Jun 2017 23:42:52 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-11594-gllmg-musl=m.gmane.org@lists.openwall.com Sat Jun 24 01:42:48 2017 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.84_2) (envelope-from ) id 1dOYDu-0005Pe-JP for gllmg-musl@m.gmane.org; Sat, 24 Jun 2017 01:42:46 +0200 Original-Received: (qmail 17953 invoked by uid 550); 23 Jun 2017 23:42:49 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 17935 invoked from network); 23 Jun 2017 23:42:49 -0000 X-IronPort-AV: E=Sophos;i="5.39,380,1493676000"; d="scan'208";a="280411598" In-Reply-To: <20170623220823.GR1627@brightrain.aerifal.cx> X-Mailer: Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) X-Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAAXNSR0IArs4c6QAAACRQTFRFERslNjAsLTE9Ok9wUk9TaUs8iWhSrYZkj42Rz6aD3sGZ Xref: news.gmane.org gmane.linux.lib.musl.general:11581 Archived-At: --Sig_/ZKgxJOTdkndaJlQIYVanDQu Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hello Rich, On Fri, 23 Jun 2017 18:08:23 -0400 Rich Felker wrote: > On Fri, Jun 23, 2017 at 11:48:25PM +0200, Jens Gustedt wrote: > > Hello Rich, > >=20 > > On Fri, 23 Jun 2017 13:05:35 -0400 Rich Felker > > wrote:=20 > > > This was intentional, the idea being that a 100% predictable > > > branch in a path where a syscall is being made anyway is much > > > less expensive than a GOT address load that gets hoisted all the > > > way to the top of the function and affects even code paths that > > > don't need to make the syscall. Whether it was a choice that > > > makes sense overall, I'm not sure, but that was the intent. =20 > >=20 > > So if we can avoid going through GOT, this would be better? > > I'd just add ATTR_LIBC_VISIBILITY to the variable, and then this > > should go away the same way as it is done for the libc object. =20 >=20 > It's not going through the GOT that's costly, but actually getting the > GOT address, which is used for both accesses through the GOT and > GOT-relative addressing. On several archs including i386, PC-relative > addressing is not directly available and requires hacks to load the PC > into a GPR, and these usually take some cycles themselves and spill > out of the free call-clobbered registers so that additional stack > shuffling is needed. So you are saying that when I add ATTR_LIBC_VISIBILITY and see something like movslq __futex_private(%rip), %rsi in the assembler (instead of GOP stuff), this is actually going through such a complicated mechanism? But then the same penalty applies for members of the "libc" object, doesn't it? E.g __lock accesses "libc.threads_minus_1" which results in something like movl 12+__libc(%rip), %eax In any case, all of this is probably not so important in view of the system call that is happening right after. So let's just drop it. What would you think of a patch that just cleans up the 128 vs FUTEX_PRIVATE issue? Just to improve readability? Also there is this missing volatile in __get_locale. Thanks Jens --=20 :: INRIA Nancy Grand Est ::: Camus ::::::: ICube/ICPS ::: :: ::::::::::::::: office Strasbourg : +33 368854536 :: :: :::::::::::::::::::::: gsm France : +33 651400183 :: :: ::::::::::::::: gsm international : +49 15737185122 :: :: http://icube-icps.unistra.fr/index.php/Jens_Gustedt :: --Sig_/ZKgxJOTdkndaJlQIYVanDQu Content-Type: application/pgp-signature Content-Description: Digitale Signatur von OpenPGP -----BEGIN PGP SIGNATURE----- iF0EARECAB0WIQSN9stI2OFN1pLljN0P0+hp2tU34gUCWU2nXAAKCRAP0+hp2tU3 4pNSAJwNa5keC1OnbjTOLTpYBZkyK8KuEACeMCcr68+Gy1p44ShgLi543CIVZao= =Wffs -----END PGP SIGNATURE----- --Sig_/ZKgxJOTdkndaJlQIYVanDQu--