clang luajit unwinding

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

clang luajit unwinding

Ted Unangst-6
a little late to the party, but luajit is broken with clang because it needs
special libunwind support or something. that's the story so far.

anyway, looking closer at luajit I notice that "external" unwinding is only
the default on amd64. i386 and others use internal unwinding. one can also
disable unwinding by defining LJ_NO_UNWIND.

anyway, that's what I did, and things seem to work fine. there's a long
comment in src/lj_err.c that lays out the pros and cons of each approach,
mostly less c++ compat. i personally don't much care, and if it only works on
one architecture, I'd say it's questionable to rely on this feature.

maybe we can live without unwind in luajit?

Reply | Threaded
Open this post in threaded view
|

Re: clang luajit unwinding

Marc Espie-2
On Wed, May 31, 2017 at 01:59:28PM -0400, Ted Unangst wrote:

> a little late to the party, but luajit is broken with clang because it needs
> special libunwind support or something. that's the story so far.
>
> anyway, looking closer at luajit I notice that "external" unwinding is only
> the default on amd64. i386 and others use internal unwinding. one can also
> disable unwinding by defining LJ_NO_UNWIND.
>
> anyway, that's what I did, and things seem to work fine. there's a long
> comment in src/lj_err.c that lays out the pros and cons of each approach,
> mostly less c++ compat. i personally don't much care, and if it only works on
> one architecture, I'd say it's questionable to rely on this feature.
>
> maybe we can live without unwind in luajit?

Libobjc2 is also broken for the exact same reason, and that kills gnustep.

FreeBSD doesn't have any patches for libobjc nor luajit, so I guess they
probably have unwinder support in base.

I'm going to do a temp build with LJ_NO_UNWIND anyway, just so that I can
see further fallout.

Some of the ports that require luajit also do heavy C++, so I think there's
no real way around it.