[Mesa-dev] [PATCH 7/7] configure.ac: static link LLVM by default

Tom Stellard tstellar at redhat.com
Thu Oct 5 17:11:13 UTC 2017

On 10/05/2017 08:40 AM, Emil Velikov wrote:
> On 5 October 2017 at 16:16, Tom Stellard <tstellar at redhat.com> wrote:
>> On 10/05/2017 06:33 AM, Michel Dänzer wrote:
>>> On 05/10/17 12:19 PM, Emil Velikov wrote:
>>>> From: Emil Velikov <emil.velikov at collabora.com>
>>>> A while back Michel reported that LLVM has symbol versioning to avoid
>>>> symbol collisions. Based on observations LLVM 5.0 is the first upstream
>>>> version to actually has it.
>>> Not exactly. Adam Jackson originally added symbol versioning in LLVM 3.6
>>> (in SVN r214418), but it was only effective when LLVM was built with
>>> autotools. As of 5.0, it's effective with cmake as well.
>>>> Since symbol collisions do come up again and again (fortunately not so
>>>> often) let's flip the switch back to static.
>>> It seems a bit weird to make this change now, that LLVM is solving the
>>> issue for good. But I don't feel strongly about it.
>> I agree with this, symbol versioning should solve the issues with  symbol
>> collisions, so why change this now?
> LLVM with symbol versioning as not so widely used as I/we hope it was.
> See the list in my other reply.

I looked at the list, but my preference is still that LLVM shared libraries
should remain the default.  What is motivating the change to static by
default?  Do the symbol collision problems affect most users?

Static linking really just works around a bug/deficiency in older versions
of LLVM and I think this is something distros should be handling.

static linking has the added downside of build breakage when LLVM changes
the component names for it's static libraries, which can be a pain.  Not
to mention the increase in library size.

As a compromise, if shared libraries are really causing a lot of issues,
then maybe you could make static the default for for LLVM < 5.0, but I really
prefer using shared libraries for all versions.


>> Also, do we have a linker script or some other mechanism to prevent
>> mesa's libraries from exporting LLVM symbols when statically linked?
> Good question, yes we do. The first one (for dri) by Maarten, the rest
> by yours truly... back in 2014.
> Although LLVM should really annotate it's symbols - either via
> __attribute__ ((visibility ("hidden")) or -fvisibility=hidden.
> But that's a topic for another day and/or place.
> Thanks
> Emil
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev

More information about the mesa-dev mailing list