Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250817031120.GW1827@brightrain.aerifal.cx>
Date: Sat, 16 Aug 2025 23:11:21 -0400
From: Rich Felker <dalias@...c.org>
To: Alex Rønne Petersen <alex@...xrp.com>
Cc: musl@...ts.openwall.com
Subject: Re: Re: [PATCH] s390x: manually inline __tls_get_addr in
 __tls_get_offset

On Sat, Aug 16, 2025 at 07:37:58PM +0200, Alex Rønne Petersen wrote:
> On Fri, Jan 24, 2025, at 06:12, Alex Rønne Petersen wrote:
> > Calling __tls_get_addr with brasl is not valid since it's a global symbol; doing
> > so results in an R_390_PC32DBL relocation error from lld. We could fix this by
> > marking __tls_get_addr hidden since it is not part of the s390x ABI, or by using
> > a different instruction. However, given its simplicity, it makes more sense to
> > just manually inline it into __tls_get_offset for performance.
> >
> > The patch has been tested by applying to Zig's bundled musl copy and running the
> > full Zig test suite under qemu-s390x.
> > ---
> >  src/thread/s390x/__tls_get_offset.s | 20 ++++++++++----------
> >  1 file changed, 10 insertions(+), 10 deletions(-)
> >
> > diff --git a/src/thread/s390x/__tls_get_offset.s 
> > b/src/thread/s390x/__tls_get_offset.s
> > index 8ee92de8..405f118b 100644
> > --- a/src/thread/s390x/__tls_get_offset.s
> > +++ b/src/thread/s390x/__tls_get_offset.s
> > @@ -1,17 +1,17 @@
> >  	.global __tls_get_offset
> >  	.type __tls_get_offset,%function
> >  __tls_get_offset:
> > -	stmg  %r14, %r15, 112(%r15)
> > -	aghi  %r15, -160
> > +	ear   %r0, %a0
> > +	sllg  %r0, %r0, 32
> > +	ear   %r0, %a1
> > 
> > -	la    %r2, 0(%r2, %r12)
> > -	brasl %r14, __tls_get_addr
> > +	la    %r1, 0(%r2, %r12)
> > 
> > -	ear   %r1, %a0
> > -	sllg  %r1, %r1, 32
> > -	ear   %r1, %a1
> > +	lg    %r3, 0(%r1)
> > +	sllg  %r4, %r3, 3
> > +	lg    %r5, 8(%r0)
> > +	lg    %r2, 0(%r4, %r5)
> > +	ag    %r2, 8(%r1)
> > +	sgr   %r2, %r0
> > 
> > -	sgr   %r2, %r1
> > -
> > -	lmg   %r14, %r15, 272(%r15)
> >  	br    %r14
> > -- 
> > 2.43.0
> 
> Friendly ping.

This was already merged as commit 6af4f25b899e89e4b91f8c197ae5a6ce04bcce7b.

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.