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
prev parent 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