Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <71700e1e-8265-41da-bc03-6dbaf16e553d@app.fastmail.com>
Date: Sun, 17 Aug 2025 06:12:05 +0200
From: Alex Rønne Petersen <alex@...xrp.com>
To: "Rich Felker" <dalias@...c.org>
Cc: musl@...ts.openwall.com
Subject: Re: Re: [PATCH] s390x: manually inline __tls_get_addr in
 __tls_get_offset

On Sun, Aug 17, 2025, at 05:11, Rich Felker wrote:
> 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.

Ah, completely missed that somehow. Thanks!

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.