[LLVMdev] Heads-up: changing the structure of compiler-rt source tree

Iain Sandoe iain at codesourcery.com
Wed Feb 12 05:41:22 PST 2014


Hi David,

On 12 Feb 2014, at 13:23, David Chisnall wrote:

> On 12 Feb 2014, at 13:11, Iain Sandoe <iain at codesourcery.com> wrote:
> 
>> The bundling of the unwinder with libgcc_s gave us (i.e. 3rd party folks, outside the vendor's organisation) nothing but headaches.  Much happier to see it in libunwind.xxx 
> 
> I'd be interested to hear what these headaches are, to see if we can avoid them in the future.  

A system B is built with compiler Version X.Y .. it is released with several (maybe many) libraries &| frameworks linked to the unwinder in the rt from compiler x.y.

Later, one wishes to distribute code built with compiler P.Q which now has a different rt version, perhaps with enhancements.  However you cannot duplicate the unwinder (current design require a process-wide single unwinder).  So you're stuck with (a) not being able to use system libs already linked with the old unwinder or (b) replacing the old rt+unwinder with a new one.

For some systems (b) might be acceptable - but, in general, it is not (esp. if the system is in the category of, for example, OSX).  It makes it very difficult for a user of a 3rd party compiler to deliver code to run on such a system without jumping through tortuous hoops.

(a) is sometimes acceptable for stand-alone c/l or deamon code - but it's generally a non-starter for anything using a gui or having other wide linkage with the base system.

I suppose that these issues are lesser for systems where updating core components might be done at whim by the end-user, but even there it still seems to make control over releases/security less than satisfactory.

There are work-arounds, but they represent considerable bloat if one only wants to supply an application to run on system B, but built with an un-to-date compiler.  This is quite aside from the security implications of replacing the system's unwinder simply to get access to an app built with a newer compiler.

cheers
Iain





More information about the llvm-dev mailing list