On Wed, Aug 31, 2016 at 5:33 PM, Nadav Har'El <n...@scylladb.com> wrote:

> I'm more worried about the symbol(sym) part of this code... What if there
> is no symbol involved?  In this case (again see readelf --relocs for your
> object), there is no object...
>
> I think the code involved is the one added in commit
> b9b73661543e614c7dfb3616bd3a75acfa30911e:
>
>     x64: Fix R_X86_64_TPOFF64 relocation without symbol
>
> Maybe this code (the no-symbol case) has a bug?
>
>
This actually eveloved quite a bit since that patch. It now looks like:

    case R_X86_64_TPOFF64:
        if (sym) {
            auto sm = symbol(sym);
            sm.obj->alloc_static_tls();
            auto tls_offset = sm.obj->static_tls_end() +
sched::kernel_tls_size();
            *static_cast<u64*>(addr) = sm.symbol->st_value + addend -
tls_offset;
        } else {
            alloc_static_tls();
            auto tls_offset = static_tls_end() + sched::kernel_tls_size();
            *static_cast<u64*>(addr) = addend - tls_offset;
        }


This was written in commit 8e99d1537dc753410cca0197528118ed370ad589
specificially about support initial-exec tls model.
But maybe has a bug?

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to osv-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to