Package: src:gcc-8 Version: 8-20171023-1 gcc-8 introduce a configuration option EH_MECHANISM for gnat. Our previous patch for sjlj doesn't include this. So the libada-sjlj failed to build.
The patch `gcc-8-gnat.diff' include: 1. sync the configure.ac/Makefile.in file in libada-sjlj from libada. the previous ones have be outdated. 2. The key point of the failure is: - $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" RTSDIR="$(RTSDIR)" \ + $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="-gcc" RTSDIR="$(RTSDIR)" \ we need to pass EH_MECHANISM="-gcc". if note some adb/ads files will not be included. 3. re-enable `with_ada' and `with_gnatsjlj' The diff file `sjlj.diff' is the difference of libada and libada-sjlj. It is here just for reference, to help for the sync libada to libada-sjlj. -- YunQiang Su
diff --git a/debian/patches/ada-sjlj.diff b/debian/patches/ada-sjlj.diff index 1b50a03..32fde70 100644 --- a/debian/patches/ada-sjlj.diff +++ b/debian/patches/ada-sjlj.diff @@ -6,9 +6,9 @@ Index: b/src/libada-sjlj/Makefile.in =================================================================== --- /dev/null +++ b/src/libada-sjlj/Makefile.in -@@ -0,0 +1,201 @@ +@@ -0,0 +1,203 @@ +# Makefile for libada. -+# Copyright (C) 2003-2015 Free Software Foundation, Inc. ++# Copyright (C) 2003-2017 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by @@ -69,15 +69,15 @@ Index: b/src/libada-sjlj/Makefile.in +PICFLAG = @PICFLAG@ +GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc +GNATLIBCFLAGS= -g -O2 -+GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) \ -+ -fexceptions -DIN_RTS @have_getipinfo@ ++GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) $(CFLAGS_FOR_TARGET) \ ++ -fexceptions -DIN_RTS @have_getipinfo@ @have_capability@ + +host_subdir = @host_subdir@ +GCC_DIR=$(MULTIBUILDTOP)../../$(host_subdir)/gcc + +target_noncanonical:=@target_noncanonical@ -+gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) -+libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)$(MULTISUBDIR) ++version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) ++libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) +ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR)) +ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR)) + @@ -87,10 +87,10 @@ Index: b/src/libada-sjlj/Makefile.in +# by recursive make invocations in gcc/ada/Makefile.in +LIBADA_FLAGS_TO_PASS = \ + "MAKEOVERRIDES=" \ -+ "LDFLAGS=$(LDFLAGS)" \ ++ "LDFLAGS=$(LDFLAGS) -Wl,--as-needed -Wl,-z,defs" \ + "LN_S=$(LN_S)" \ + "SHELL=$(SHELL)" \ -+ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \ ++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) -gnatn" \ + "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \ + "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \ + "PICFLAG_FOR_TARGET=$(PICFLAG)" \ @@ -132,7 +132,7 @@ Index: b/src/libada-sjlj/Makefile.in + $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons + +install-gnatlib: $(GCC_DIR)/ada/Makefile -+ $(MAKE) -C $(GCC_DIR)/ada $(AM_MAKEFLAGS) $(LIBADA_FLAGS_TO_PASS) install-gnatlib-sjlj ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib-sjlj + +# Check uninstalled version. +check: @@ -199,8 +199,10 @@ Index: b/src/libada-sjlj/Makefile.in +configure_deps = \ + $(srcdir)/configure.ac \ + $(srcdir)/../config/acx.m4 \ ++ $(srcdir)/../config/multi.m4 \ + $(srcdir)/../config/override.m4 \ -+ $(srcdir)/../config/multi.m4 ++ $(srcdir)/../config/picflag.m4 \ ++ $(srcdir)/../config/unwind_ipinfo.m4 + +$(srcdir)/configure: @MAINT@ $(configure_deps) + cd $(srcdir) && $(AUTOCONF) @@ -212,9 +214,9 @@ Index: b/src/libada-sjlj/configure.ac =================================================================== --- /dev/null +++ b/src/libada-sjlj/configure.ac -@@ -0,0 +1,152 @@ +@@ -0,0 +1,156 @@ +# Configure script for libada. -+# Copyright (C) 2003-2016 Free Software Foundation, Inc. ++# Copyright (C) 2003-2017 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by @@ -341,12 +343,8 @@ Index: b/src/libada-sjlj/configure.ac +AC_PROG_AWK +AC_PROG_LN_S + -+# Determine what GCC version number to use in filesystem paths. -+GCC_BASE_VER -+ +# Determine what to build for 'gnatlib' -+if test ${enable_shared} = yes ; then -+ # Note that build=target is almost certainly the wrong test; FIXME ++if test ${enable_shared} = yes; then + default_gnatlib_target="gnatlib-shared" +else + default_gnatlib_target="gnatlib-plain" @@ -355,11 +353,19 @@ Index: b/src/libada-sjlj/configure.ac + +# Check for _Unwind_GetIPInfo +GCC_CHECK_UNWIND_GETIPINFO -+have_getipinfo= +if test x$have_unwind_getipinfo = xyes; then + have_getipinfo=-DHAVE_GETIPINFO ++else ++ have_getipinfo= +fi -+AC_SUBST(have_getipinfo) ++AC_SUBST([have_getipinfo]) ++ ++# Check for <sys/capability.h> ++AC_CHECK_HEADER([sys/capability.h], have_capability=-DHAVE_CAPABILITY, have_capability=) ++AC_SUBST([have_capability]) ++ ++# Determine what GCC version number to use in filesystem paths. ++GCC_BASE_VER + +# Output: create a Makefile. +AC_CONFIG_FILES([Makefile]) @@ -419,7 +425,7 @@ Index: b/src/gcc/ada/gcc-interface/Makefile.in # Link flags used to build gnat tools. By default we prefer to statically # link with libgcc to avoid a dependency on shared libgcc (which is tricky -@@ -2272,6 +2272,26 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD +@@ -2268,6 +2268,26 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads @@ -446,16 +452,16 @@ Index: b/src/gcc/ada/gcc-interface/Makefile.in ../stamp-gnatlib2-$(RTSDIR): $(RM) $(RTSDIR)/s-*.ali $(RM) $(RTSDIR)/s-*$(objext) -@@ -2553,7 +2573,7 @@ gnatlib-shared: +@@ -2549,7 +2569,7 @@ gnatlib-shared: # commenting the pragma instead of deleting the line, as the latter might # result in getting multiple blank lines, hence possible style check errors. gnatlib-sjlj: - $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" \ -+ $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" RTSDIR="$(RTSDIR)" \ ++ $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="-gcc" RTSDIR="$(RTSDIR)" \ THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR) sed \ -e 's/Frontend_Exceptions.*/Frontend_Exceptions : constant Boolean := True;/' \ -@@ -2562,6 +2582,7 @@ gnatlib-sjlj: +@@ -2558,6 +2578,7 @@ gnatlib-sjlj: $(RTSDIR)/system.ads > $(RTSDIR)/s.ads $(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads $(MAKE) $(FLAGS_TO_PASS) \ @@ -463,7 +469,7 @@ Index: b/src/gcc/ada/gcc-interface/Makefile.in EH_MECHANISM="" \ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ -@@ -2613,6 +2634,8 @@ b_gnatm.o : b_gnatm.adb +@@ -2609,6 +2630,8 @@ b_gnatm.o : b_gnatm.adb ADA_INCLUDE_DIR = $(libsubdir)/adainclude ADA_RTL_OBJ_DIR = $(libsubdir)/adalib @@ -491,7 +497,7 @@ Index: b/src/gcc/ada/gcc-interface/Make-lang.in =================================================================== --- a/src/gcc/ada/gcc-interface/Make-lang.in +++ b/src/gcc/ada/gcc-interface/Make-lang.in -@@ -844,6 +844,7 @@ ada.install-common: +@@ -846,6 +846,7 @@ ada.install-common: install-gnatlib: $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib$(LIBGNAT_TARGET) diff --git a/debian/rules.defs b/debian/rules.defs index bc1a0a5..e5a9741 100644 --- a/debian/rules.defs +++ b/debian/rules.defs @@ -700,7 +700,7 @@ ifeq ($(DEB_STAGE)-$(filter libgnat, $(with_rtlibs)),rtlibs-) with_ada := disabled for rtlibs stage endif -with_ada := not yet built for GCC 8 +with_ada := yes #ifneq ($(single_package),yes) # with_separate_gnat := yes @@ -733,7 +733,7 @@ endif ifeq ($(with_ada),yes) enabled_languages += ada with_libgnat := yes - # FIXME for GCC 8: with_gnatsjlj := yes + with_gnatsjlj := yes endif # C++ -------------------------
diff -urN src/libada/Makefile.in src/libada-sjlj/Makefile.in --- src/libada/Makefile.in 2017-10-27 19:27:35.617024083 +0800 +++ src/libada-sjlj/Makefile.in 2017-10-27 19:27:35.773030900 +0800 @@ -94,11 +94,12 @@ "exeext=.exeext.should.not.be.used " \ 'CC=the.host.compiler.should.not.be.needed' \ "GCC_FOR_TARGET=$(CC)" \ - "CFLAGS=$(CFLAGS)" + "CFLAGS=$(CFLAGS)" \ + "RTSDIR=rts-sjlj" # Rules to build gnatlib. .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool -gnatlib: @default_gnatlib_target@ +gnatlib: gnatlib-sjlj gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile test -f stamp-libada || \ @@ -112,7 +113,7 @@ gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile test -f stamp-libada || \ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \ - && touch stamp-libada + && touch stamp-libada-sjlj -rm -rf adainclude -rm -rf adalib $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude @@ -122,7 +123,7 @@ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons install-gnatlib: $(GCC_DIR)/ada/Makefile - $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib + $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib-sjlj # Check uninstalled version. check: