Re: Fwd: mesa | Remove USE_ELF_TLS macro (!17213)

Fangrui Song <[email protected]>
Newsgroups gmane.linux.lib.musl.general,gmane.comp.video.mesa3d.devel
Message-ID <[email protected]>
On 2022-06-25, 罗勇刚(Yonggang Luo) wrote:
>On Sat, Jun 25, 2022 at 12:47 PM Markus Wichmann <[email protected]> wrote:
>>
>> On Sat, Jun 25, 2022 at 11:36:09AM +0800, 罗勇刚(Yonggang Luo) wrote:
>> > So I am confused. What's the situation about ELF-TLS support in musl?
>> > Is that still broken now?
>>
>> musl has always supported ELF-TLS anywhere except in libc itself. That
>> was also never the problem. The problem was that the mesa people select
>> the initial-exec TLS model explicitly, even though libGL ends up being
>> dlopen()ed quite often, and then you should be using the general-dynamic
>> model instead.
>
>My question is does musl support ELS-TLS when using dl-open.

It is supported.

For shared objects using the initial-exec TLS model, they must be at load time (DT_NEEDED),
not via dlopen.
See https://maskray.me/blog/2021-02-14-all-about-thread-local-storage
for background.

>
>>
>> According to [1], Rich proposed dropping the initial-exec attribute and
>> replacing it with -mtls-dialect=gnu2 eight years ago. Has that happened
>> yet? If so, dlopen()ing libGL with musl ought to work.
>
>`initial-exec` are only specified for  __GLIBC__, If musl  not predefined
>macro ` __GLIBC__`
>```
>#if defined(__GLIBC__)
>#define __THREAD_INITIAL_EXEC thread_local
>__attribute__((tls_model("initial-exec")))
>#define REALLY_INITIAL_EXEC
>#else
>#define __THREAD_INITIAL_EXEC thread_local
>#endif
>```

On x86, you may enable (currently GCC only) -mtls-dialect=gnu2 to get
performance boost. It's just a tiny bit slower than initial-exec.

I added x86-32 TLSDESC and mixed TLS GD/TLSDESC support to lld 14 after
I saw the -mtls-dialect=gnu2 build system improvement in mesa :)

>
>>
>> Ciao,
>> Markus
>>
>> [1] https://gitlab.freedesktop.org/mesa/mesa/-/issues/966
>
>
>
>--
>         此致
>礼
>罗勇刚
>Yours
>    sincerely,
>Yonggang Luo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.