The plugin API doesn't have a way to mark a symbol as TLS, but it
doesn't really matter since the linker simply overrides the
placeholder from the claimed file with the symbol provided in the
replacement. Unfortunately, I excluded common symbols from this logic
in gold, so the symbol isn't getting marked as TLS COMMON even when we
see the real ELF file. I just need to remind myself why the exclusion
is there and figure out how to fix it. I think all the information we
need is there, so no changes to the plugin API should be necessary.

-cary


On Thu, Sep 25, 2014 at 9:29 AM, Jan Hubicka <hubi...@ucw.cz> wrote:
>> On Thu, Sep 25, 2014 at 8:37 AM, H.J. Lu <hjl.to...@gmail.com> wrote:
>> > On Thu, Sep 25, 2014 at 8:24 AM, Ian Lance Taylor <i...@google.com> wrote:
>> >> On Wed, Sep 24, 2014 at 6:58 PM, Jan Hubicka <hubi...@ucw.cz> wrote:
>> >>>
>> >>>    b:   00 00
>> >>>                         9: R_X86_64_TPOFF32     
>> >>> __gcov_indirect_call_counters_ltopriv
>> >>
>> >> Look at the .o file where __gcov_indirect_call_counters_ltopriv is
>> >> defined.  That .o file must have the symbol marked as STT_TLS and it
>> >> must be defined in a section with the SHF_TLS flag.  If that is not
>> >> true, then that is your problem.
>> >
>> > SHF_TLS isn't required.
>> >
>> >     16: 0000000000000008     8 TLS     GLOBAL HIDDEN   COM
>> > __gcov_indirect_call_counters_ltopriv
>> >     17: 0000000000000008     8 TLS     GLOBAL HIDDEN   COM
>> > __gcov_indirect_call_callee_ltopriv
>> >
>> > are also sufficient.
>>
>> I can create a .o file with a hidden common symbol, but I can't
>> recreate the problem.  When I try, gold creates a TLS section and TLS
>> segment itself.
>>
>> How exactly is gold being invoked?
>
> It seems to happen with LTO compilation only, just build mainline tree
> and try the original testcase.
>
> Honza
>>
>> Ian

Reply via email to