On 12.09.2020 23:36, Joerg Sonnenberger wrote: > On Sat, Sep 12, 2020 at 10:24:16PM +0200, Kamil Rytarowski wrote: >> On 12.09.2020 22:06, Joerg Sonnenberger wrote: >>> On Fri, Sep 11, 2020 at 11:45:42PM +0200, Kamil Rytarowski wrote: >>>> On 11.09.2020 23:38, Joerg Sonnenberger wrote: >>>>> On Fri, Sep 11, 2020 at 04:07:24PM +0200, Kamil Rytarowski wrote: >>>>>> The current code is confusing, as it attempts to use unimplemented >>>>>> _PTHREAD_GETTCB_EXT() and in one place uses _lwp_getprivate_fast() in >>>>>> other _lwp_getprivate(). This caused my confusion... as I assumed that >>>>>> _lwp_getprivate_fast() is internal and _lwp_getprivate() for public >>>>>> consumption. >>>>> >>>>> _PTHREAD_GETTCB_EXT is a rump hack. There is no _lwp_getprivate_fast. >>>>> There is __lwp_getprivate_fast, which originally wasn't implemented on >>>>> architectures without a fast path (like VAX). Nowadays, all functional >>>>> ports provide either __lwp_getprivate_fast (potentially with a fall-back >>>>> to the system call) or __lwp_gettcb_fast. The difference is whether the >>>>> TLS register is biased or not. >>>>> >>>> >>>> Do you agree with this patch: >>>> >>>> http://netbsd.org/~kamil/patch-00278-_rtld_tls_self.txt >>> >>> No, I don't see the point. >>> >> >> What's the alternative to use in 3rd party code? > > Why do you need an alternative? > I need tls_tcb of the calling thread. https://github.com/llvm/llvm-project/blob/15b37e1cfa5f09af376a47a1bc67d67bb5c7848b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp#L406 https://github.com/llvm/llvm-project/blob/15b37e1cfa5f09af376a47a1bc67d67bb5c7848b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp#L458 What is the interface (ideally MI) for this for 3rd party code? > Joerg >
Attachment:
signature.asc
Description: OpenPGP digital signature