Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <8c1d86e6-7ab9-43ed-8da5-27ebde624d0b@app.fastmail.com>
Date: Sat, 16 Aug 2025 19:37:58 +0200
From: Alex Rønne Petersen <alex@...xrp.com>
To: musl@...ts.openwall.com
Subject: Re: [PATCH] s390x: manually inline __tls_get_addr in __tls_get_offset

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.

Regards,
Alex

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.