[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: gnat changes for gcc-4.9



Matthias Klose writes:
> thanks for merging back the Ada changes. r7211 did basically remove
> the go-use-gold.diff patch, which I did undo again.

OK.

> upstream now has zcx exception support for ARM, so would it be
> possible to drop the sjlj based exception support for the jessie
> release?  Is anybody using this on platforms where the zcx support is
> available? Asking because the current support isn't good enough for
> cross-building the package.

I'd be more than happy to switch to ZCX by default on ARM but I'm
reluctant to drop support for SJLJ entirely (it is provided as an
optional run-time library package, gnat-x.y-sjlj, containing only the
static library).  Many cross targets in particular require SJLJ.
(i.e. when GNAT is built as a cross-compiler, not when it is cross-built
as a native compiler for another arch).  I seem to remember that
distributed programs using PolyORB also require (or used to require)
SJLJ.

Currently, all architectures use ZCX by default, except arm, armel and
armhf.  Removing this special case would probably make it less difficult
to cross-build the package.  I'd be happy further to improve this.  For
starters, is it OK if I apply this change:

#
# old_revision [7bba5de1abb7ad3b6377861211f78f74e2e5b873]
#
# patch "debian/rules.defs"
#  from [9bcc0582ad336443ec66faf5d20bc39e3bb8afd7]
#    to [0ffcd613785071cd79a4f771b5ff9de624d9577a]
#
============================================================
--- debian/rules.defs	9bcc0582ad336443ec66faf5d20bc39e3bb8afd7
+++ debian/rules.defs	0ffcd613785071cd79a4f771b5ff9de624d9577a
@@ -536,29 +536,8 @@ ifeq ($(with_ada),yes)
 ifeq ($(with_ada),yes)
   enabled_languages += ada
   with_libgnat := yes
-  # There are two exception handling mechanisms: ZCX (Zero-Cost
-  # eXceptions) and SJLJ (setjump/longjump), selected and supported by
-  # libgnat.  Thus we build both versions of libgnat on architectures
-  # that support both (see ada-sjlj.diff).  Most cpus support both
-  # mechanisms; here, we declare the few that support only one.
-  libgnat_zcx_only_cpus :=
-  libgnat_sjlj_only_cpus := arm armel armhf
-  ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libgnat_sjlj_only_cpus)))
-    with_gnat_zcx := no
-  else
-    with_gnat_zcx := yes
-  endif
-  ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libgnat_zcx_only_cpus)))
-    with_gnat_sjlj := no
-  else
-    with_gnat_sjlj := yes
-  endif
-  ifeq ($(with_gnat_zcx)-$(with_gnat_sjlj),no-no)
-    # TODO: support cpus that do not support exceptions at all,
-    # perhaps by building a restricted runtime library?  For now, flag
-    # this as a packaging error.
-    $(error this target supports neither ZCX nor SJLJ)
-  endif
+  with_gnat_zcx := yes
+  with_gnat_sjlj := yes
 endif
 
 # C++ -------------------------



I'm hesitant as to whether I should drop the two variables,
with_gnat_zcx and with_gnat_sjlj, entirely.  Removing them implies
dropping support for any future architecture that supports only one
mechanism (all current architectures do support both, now).  But it
would simplify the Debian build machinery quite a bit.

> Also is there any progress in upstreaming the libgnatproj* additions?

No progress so far, sorry.

-- 
Ludovic Brenta.


Reply to: