On Wed, Aug 31, 2016 at 5:13 PM, Benoît Canet <ben...@cloudius-systems.com> wrote:
> case R_X86_64_TPOFF64: > // FIXME: assumes TLS segment comes before DYNAMIC segment > I'm not sure this code even runs when loading a shared object. I think it only runs when loading the kernel, and there is another piece of code with R_X86_64_TPOFF64 which gets used when loading objects. > > > This is not the case: > > See in the dump: > I don't understand what I see in that dump. To understand this FIXME, please refer to commit f09e0059: I think the FIXME refers to that we need t->tls.size() to have been previously set. You can add a printout to see if hasn't been set. 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? > > 00000000000c8d90 <runtime.c128hash>: > c8d90: 48 8b 0d 29 72 38 00 mov 0x387229(%rip),%rcx # > 44ffc0 <_DYNAMIC+0x200> > c8d97: 64 48 8b 09 mov %fs:(%rcx),%rcx > c8d9b: 48 3b 61 10 cmp 0x10(%rcx),%rsp > c8d9f: 76 60 jbe c8e01 <runtime.c128hash+0x71> > > *static_cast<u64*>(addr) = t->dyn_tabs.lookup(sym)->st_value - > t->tls.size; > break; > case R_X86_64_IRELATIVE: > > > On Wed, Aug 31, 2016 at 4:07 PM, Benoît Canet <ben...@cloudius-systems.com > > wrote: > >> This is what I saw in the code managing the flags. >> >> By anyway I think you are right and shared is an "impasse". >> >> On Wed, Aug 31, 2016 at 4:06 PM, Nadav Har'El <n...@scylladb.com> wrote: >> >>> >>> On Wed, Aug 31, 2016 at 4:26 PM, Benoît Canet < >>> ben...@cloudius-systems.com> wrote: >>> >>>> >>>> Buildmode shared alone crash. >>>> >>>> >>>> >>> the flags are |= between them. >>>> >>> >>> This is not what I see in https://golang.org/src/cmd/go/build.go >>> >>> But it seems these two options indeed have a funny interaction between >>> them - shared enables "dynlink" which gets remembered even when the build >>> mode is switched to PIE. >>> >>> >>> >> > -- 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.