[Mesa-dev] [LLVMdev] mesa-10.4.4: BROKEN TLS support in GLXwithllvm-toolchain v3.6.0rc2

Sedat Dilek sedat.dilek at gmail.com
Tue Feb 17 01:05:33 PST 2015


On Mon, Feb 16, 2015 at 12:45 PM, Marc Dietrich <marvin24 at gmx.de> wrote:
> Am Montag, 16. Februar 2015, 12:42:19 schrieb Sedat Dilek:
>> On Mon, Feb 16, 2015 at 10:39 AM, Marc Dietrich <marvin24 at gmx.de> wrote:
>> > Am Samstag, 14. Februar 2015, 18:20:12 schrieb Dimitry Andric:
>> >> On 11 Feb 2015, at 11:16, Sedat Dilek <sedat.dilek at gmail.com> wrote:
>> >> > On Wed, Feb 11, 2015 at 12:09 AM, Emil Velikov
>> >> > <emil.l.velikov at gmail.com>
>> >
>> > wrote:
>> >> >> On 10/02/15 13:17, Dimitry Andric wrote:
>> >> >>> On 09 Feb 2015, at 18:52, Sedat Dilek <sedat.dilek at gmail.com> wrote:
>> >> >>>> On Mon, Feb 9, 2015 at 6:44 PM, Emil Velikov
>> >> >>>> <emil.l.velikov at gmail.com>
>> >
>> > wrote:
>> >> >>>>> On 07/02/15 22:42, Sedat Dilek wrote:
>> >> >>> ...
>> >> >>>
>> >> >>>>>> In file included from ../../src/mapi/entry.c:49:
>> >> >>>>>> ./entry_x86-64_tls.h:66:1: warning: tentative array definition
>> >> >>>>>> assumed
>> >> >>>>>> to have one element
>> >> >>>>>> x86_64_entry_start[];
>> >> >>>>>> ^
>> >> >>>>>> fatal error: error in backend: symbol 'x86_64_entry_start' is
>> >> >>>>>> already
>> >> >>>>>> defined>>>
>> >> >>>
>> >> >>> ...
>> >> >>>
>> >> >>>>> It may be that it's a bug on our end, but it's a bit painful going
>> >> >>>>> through all the auto generated sources, the 10+ define guards and
>> >> >>>>> other
>> >> >>>>> magic that's inside src/mapi. Getting some idea on llvm/clang
>> >> >>>>> behaviour
>> >> >>>>> change should help out :-)
>> >> >>>>>
>> >> >>>>> Please open a bug-report with llvm and/or mesa, so that we have all
>> >> >>>>> the
>> >> >>>>> info in one place and things don't get lost.
>> >> >>>>
>> >> >>>> I am unsure if it is a bug in llvm/clang or in mesa.
>> >> >>>> Shall I open 2 bug-reports - in mesa and llvm BTS?
>> >> >>>
>> >> >>> Please have a look at this PR, which I opened in May 2014, and which
>> >> >>> is
>> >
>> > about the same issue:
>> >> >>>  http://llvm.org/PR19778
>> >> >>
>> >> >> Hi Dimitry,
>> >> >>
>> >> >> From a quick look at the bug, the llvm/clang devs are quoting the C11
>> >> >> spec, yet we're not building with -std=c11 so I'm not sure that
>> >> >> applies.
>> >> >> Feel free to forward that if interested - I'm a bit short on account
>> >> >> on
>> >> >> their bugzilla :-)
>> >> >>
>> >> >>> The assertion seems to have been transformed now into a backend
>> >> >>> error,
>> >> >>> but this may also be because you built clang without assertions. (Did
>> >> >>> you?)>>>
>> >> >>> In any case, the workaround is to change the static symbols into
>> >> >>> extern
>> >
>> > symbols, together with a hidden visibility attribute (as suggested by
>> > Rafael>
>> > EspĂ­ndola), similar to the fix I posted in this FreeBSD port bug:
>> >> >>>  https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=192286
>> >> >>>
>> >> >>> E.g., you can use these patches:
>> >> >>>
>> >> >>> https://svnweb.freebsd.org/ports/head/graphics/libGL/files/patch-src_
>> >> >>> _ma
>> >> >>> pi__entry_x86-64_tls.h?view=markup
>> >> >>> https://svnweb.freebsd.org/ports/head/graphics/libGL/files/patch-src_
>> >> >>> _m
>> >> >>> api__entry_x86_tls.h?view=markup
>> >> >>> https://svnweb.freebsd.org/ports/head/graphics/libGL/files/patch-src_
>> >> >>> _m
>> >> >>> api__entry_x86_tsd.h?view=markup>>
>> >> >>
>> >> >> These patches don't look at all bad. Can you give them a bit of TLS
>> >> >> and
>> >> >> send them to the list, please ? This also stands for the other patches
>> >> >> in FreeBSD's repo :-)
>> >> >
>> >> > On the one hand I am glad to see that there are patches available.
>> >> > I will give them a try when I am at home.
>> >> > On the other hand - knowing FreeBSD switched to llvm/clang as
>> >> > default-compiler - it's abit pity to see that stuff like this is not
>> >> > shared with upstream (did not look at the date of submission).
>> >> > If you have more patches in this area, please share them with upstream.
>> >>
>> >> The complete collection is here:
>> >>
>> >> https://svnweb.freebsd.org/ports/head/graphics/libGL/files/
>> >>
>> >> I didn't create most of these patches, so I can't really say what the
>> >> reason for them was, or whether they still apply to Mesa master.
>> >>
>> >> In any case, for this specific issue with Mesa's TLS related definitions
>> >> breaking clang, please consider the attached patch.
>> >
>> > I think there is no need to restrict this to clang only as it also works
>> > with gcc. I submitted a slightly different version to the mesa list which
>> > uses a macro instead and also adds some credits.
>>
>> Sorry for the late response... troubles with my Internet connection.
>>
>> Those two patches or do I need more?
>>
>> [PATCH 1/4] configure: add visibility macro detection to configure
>> [PATCH 2/4] add visibility hidden to tls entry points
>
> no that's all, sorry I still have two unrelated patches in my HEAD. So this
> should actually have been /2.
>

Hehe.

I haven't had the time to test them.
( Still doing all my OS updates with UMTS/HSPA. )

Can you send a new v2 with only those two patches?
Maybe together with a git-cover-letter?
To all involved people here for easier review.

Thanks.

- Sedat -


More information about the mesa-dev mailing list