comp.lang.ada
 help / color / mirror / Atom feed
From: Stephen Leake <stephen_leake@stephe-leake.org>
Subject: Re: snag in building Ada mode Emacs module on Linux
Date: Wed, 27 May 2015 23:14:44 -0500
Date: 2015-05-27T23:14:44-05:00	[thread overview]
Message-ID: <85bnh51gp7.fsf@stephe-leake.org> (raw)
In-Reply-To: lysiaqxd6z.fsf@pushface.org

Simon Wright <simon@pushface.org> writes:

> Stephen Leake <stephen_leake@stephe-leake.org> writes:
>
>> The module doesn't compile on Linux, because GNAT GPL 2014 doesn't
>> provide a (static or dynamic) libgnat for the sjlj runtime that is
>> compiled with -fPIC. I need -fPIC on all code in order to include it
>> in the dynamic library that is the Emacs module. I need the sjlj
>> runtime to support raising exceptions in the module; since Emacs is
>> not an Ada main, it uses the sjlj exception method.
>
> What will you do with the exceptions once they propagate out of Ada? 

There's a top-level exception handler at the Ada/C boundary.

> Or
> is it that exceptions won't work at all, even if caught at the boundary
> and converted to a status return/out parameter?

They don't work at all; they generate SEGV.

>> Is there a similar problem on the Mac?
>
> Yes.
>
> Will it be easy to recompile the runtime with a different exception
> method? I don't even know what the switches would be! At least GNAT GPL
> 2014 comes with an adalib/Makefile.adalib; 

For GNAT GPL, apparently we can do:

cd /usr/gnat/lib/gcc/x86_64-pc-linux-gnu/4.7.4/rts-sjlj
chmod +w *
make -f Makefile.adalib ROOT=/usr/gnat CFLAGS='-fPIC'
chmod -w *

but I haven't tried it yet.

> the FSF GCCs don't (but the
> GPL 2014 one might well work with minimal change).

Hmph. I'll just dump that issue on the Linux packagers.

-- 
-- Stephe

      reply	other threads:[~2015-05-28  4:14 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-21 13:23 snag in building Ada mode Emacs module on Linux Stephen Leake
2015-05-21 13:39 ` Simon Wright
2015-05-28  4:14   ` Stephen Leake [this message]
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox