Bug#798782: gcc-5: add gnat sjlj back
On 09/13/2015 05:43 PM, YunQiang Su wrote: > Some fix for cross-build-native: > debian/patches/cross-build-native.diff > patch src/libcc1/configure.ac > libcc1 use gcc_cv_objdump, while it is not set at all. > Use the same snap of code from src/gcc/configure.ac > Patch src/libgo/runtime/go-main.c >then main() has a return value `int', while it returns NULL, >and ... NULL is defined as (void *)0, in stddefs.h can you forward these upstream (as separate patches)? best what exactly goes wrong? Matthias
Bug#798782: gcc-5: add gnat sjlj back
On Wed, Sep 16, 2015 at 12:27 AM, YunQiang Suwrote: > On Wed, Sep 16, 2015 at 12:18 AM, Matthias Klose wrote: >> On 09/13/2015 03:23 PM, YunQiang Su wrote: >>> Some more fix to debian/rules.d/binary-ada.mk. >>> >> >> >> - $(cross_shlibdeps) dh_shlibdeps -p$(p_gnsjlj) >> - $(cross_gencontrol) dh_gencontrol -p$(p_gnsjlj) \ >> >> removing the cross_* macros looks wrong, because in your gcc-5-cross patch, >> you >> re-add this: > > No, it is not wrong. > With cross_* macros gnat-5-sjlj- will have a architecture > instead > of > > So, don't remove it. > >> >> + sed -i -e "/^Depends:/s/\(libgnat-[0-9]*\) (>= >> $(DEB_VER_GCC)$(CROSS_EXT))/\1 (>= $(DEB_VER_GCC))/g" \ >> + tmp/DEBIAN/control ; \ >> > > They are 2 different stories. > This is for > gnat-5-, which will depends on libgnat-5:. > If I don't sed it, it will become: > gnat-5-:host depends on libgnat-5: (>= 5.2.1-17cross1) > > While in our archive, the version of libgnat-5: is 5.2.1-17. If we add a symbol file for libgnat-5, it will resolved, as gnat-5- may depends on libgnat-5: (>= 5.2.1-16) or lower version, which is be sed by the previous line with sed. > >> I'm restoring the original behaviour >> > > > > > -- > YunQiang Su -- YunQiang Su
Bug#798782: gcc-5: add gnat sjlj back
On Wed, Sep 16, 2015 at 12:27 AM, YunQiang Suwrote: > On Wed, Sep 16, 2015 at 12:18 AM, Matthias Klose wrote: >> On 09/13/2015 03:23 PM, YunQiang Su wrote: >>> Some more fix to debian/rules.d/binary-ada.mk. >>> >> >> >> - $(cross_shlibdeps) dh_shlibdeps -p$(p_gnsjlj) >> - $(cross_gencontrol) dh_gencontrol -p$(p_gnsjlj) \ >> >> removing the cross_* macros looks wrong, because in your gcc-5-cross patch, >> you >> re-add this: > > No, it is not wrong. > With cross_* macros gnat-5-sjlj- will have a architecture > instead > of > > So, don't remove it. I mean don't remove this from my patch. ;) > >> >> + sed -i -e "/^Depends:/s/\(libgnat-[0-9]*\) (>= >> $(DEB_VER_GCC)$(CROSS_EXT))/\1 (>= $(DEB_VER_GCC))/g" \ >> + tmp/DEBIAN/control ; \ >> > > They are 2 different stories. > This is for > gnat-5-, which will depends on libgnat-5:. > If I don't sed it, it will become: > gnat-5-:host depends on libgnat-5: (>= 5.2.1-17cross1) > > While in our archive, the version of libgnat-5: is 5.2.1-17. > >> I'm restoring the original behaviour >> > > > > > -- > YunQiang Su -- YunQiang Su
Bug#798782: gcc-5: add gnat sjlj back
On Tue, Sep 15, 2015 at 3:26 PM, Matthias Klosewrote: > On 09/13/2015 05:43 PM, YunQiang Su wrote: >> Some fix for cross-build-native: > >> debian/patches/cross-build-native.diff >> patch src/libcc1/configure.ac >> libcc1 use gcc_cv_objdump, while it is not set at all. >> Use the same snap of code from src/gcc/configure.ac >> Patch src/libgo/runtime/go-main.c >>then main() has a return value `int', while it returns NULL, >>and ... NULL is defined as (void *)0, in stddefs.h > > can you forward these upstream (as separate patches)? best what exactly goes > wrong? https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67589 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67590 > > Matthias > > -- YunQiang Su
Bug#798782: gcc-5: add gnat sjlj back
On 09/13/2015 03:23 PM, YunQiang Su wrote: > Some more fix to debian/rules.d/binary-ada.mk. > - $(cross_shlibdeps) dh_shlibdeps -p$(p_gnsjlj) - $(cross_gencontrol) dh_gencontrol -p$(p_gnsjlj) \ removing the cross_* macros looks wrong, because in your gcc-5-cross patch, you re-add this: + sed -i -e "/^Depends:/s/\(libgnat-[0-9]*\) (>= $(DEB_VER_GCC)$(CROSS_EXT))/\1 (>= $(DEB_VER_GCC))/g" \ + tmp/DEBIAN/control ; \ I'm restoring the original behaviour
Bug#798782: gcc-5: add gnat sjlj back
On Wed, Sep 16, 2015 at 12:18 AM, Matthias Klosewrote: > On 09/13/2015 03:23 PM, YunQiang Su wrote: >> Some more fix to debian/rules.d/binary-ada.mk. >> > > > - $(cross_shlibdeps) dh_shlibdeps -p$(p_gnsjlj) > - $(cross_gencontrol) dh_gencontrol -p$(p_gnsjlj) \ > > removing the cross_* macros looks wrong, because in your gcc-5-cross patch, > you > re-add this: No, it is not wrong. With cross_* macros gnat-5-sjlj- will have a architecture instead of So, don't remove it. > > + sed -i -e "/^Depends:/s/\(libgnat-[0-9]*\) (>= > $(DEB_VER_GCC)$(CROSS_EXT))/\1 (>= $(DEB_VER_GCC))/g" \ > + tmp/DEBIAN/control ; \ > They are 2 different stories. This is for gnat-5-, which will depends on libgnat-5:. If I don't sed it, it will become: gnat-5-:host depends on libgnat-5: (>= 5.2.1-17cross1) While in our archive, the version of libgnat-5: is 5.2.1-17. > I'm restoring the original behaviour > -- YunQiang Su
Bug#798782: gcc-5: add gnat sjlj back
On 09/15/2015 06:31 PM, YunQiang Su wrote: > On Wed, Sep 16, 2015 at 12:27 AM, YunQiang Suwrote: >> On Wed, Sep 16, 2015 at 12:18 AM, Matthias Klose wrote: >>> On 09/13/2015 03:23 PM, YunQiang Su wrote: Some more fix to debian/rules.d/binary-ada.mk. >>> >>> >>> - $(cross_shlibdeps) dh_shlibdeps -p$(p_gnsjlj) >>> - $(cross_gencontrol) dh_gencontrol -p$(p_gnsjlj) \ >>> >>> removing the cross_* macros looks wrong, because in your gcc-5-cross patch, >>> you >>> re-add this: >> >> No, it is not wrong. >> With cross_* macros gnat-5-sjlj- will have a architecture >> instead >> of >> >> So, don't remove it. >> >>> >>> + sed -i -e "/^Depends:/s/\(libgnat-[0-9]*\) (>= >>> $(DEB_VER_GCC)$(CROSS_EXT))/\1 (>= $(DEB_VER_GCC))/g" \ >>> + tmp/DEBIAN/control ; \ >>> >> >> They are 2 different stories. >> This is for >> gnat-5-, which will depends on libgnat-5:. >> If I don't sed it, it will become: >> gnat-5-:host depends on libgnat-5: (>= 5.2.1-17cross1) >> >> While in our archive, the version of libgnat-5: is 5.2.1-17. > > If we add a symbol file for libgnat-5, it will resolved, as gnat-5- > may > depends on libgnat-5: (>= 5.2.1-16) or lower version, > which is be sed by the previous line with sed. ok, same as libcc1. However I would like to find a way to add the logic about host vs. target libs in the gcc-5 packaging.
Bug#798782: gcc-5: add gnat sjlj back
Some fix for cross-build-native: debian/patches/ada-libgnatvsn.diff: Should use the CC from build/Makefile, which will pass it CC correct. debian/patches/cross-build-native.diff patch src/libcc1/configure.ac libcc1 use gcc_cv_objdump, while it is not set at all. Use the same snap of code from src/gcc/configure.ac Patch src/libgo/runtime/go-main.c then main() has a return value `int', while it returns NULL, and ... NULL is defined as (void *)0, in stddefs.h debian/rules2 b/debian/rules2 when building gccjit for cross-build-native, it should be the same with DEB_CROSS was set. Know issue: for ppc64el, libgomp1 will lost *some* of acc_* symbols, not all. No idea why. The package list of env is also attached. On Sun, Sep 13, 2015 at 9:23 PM, YunQiang Suwrote: > Some more fix to debian/rules.d/binary-ada.mk. > > On Sat, 12 Sep 2015 23:56:13 +0800 YunQiang Su wrote: >> Package: src:gcc-5 >> Version: 5.2.1-17 >> >> I rewrite gnat sjlj support with a new src/libada-sjlj directory added, >> instead of the huge patch to src/gcc/ada/gcc-interfaces/Makefile.in. >> >> 0001_libgnatvsn-prj.diff >> as we build libgnatsvn/libgnatprj in build/TRIPLET, so fix something >> left. >> >> 0002_ada-sjlj.diff >> Rewrite gnat sjlj support, with a new added directory. >> It still builds zcx in build/gcc/ada/rts (not rts-natvie), >> while builds sjlj in build/gcc/ada/rts-sjlj. >> Some dependency chains ins Makefile.def are also got some change. >> ada-acats-sjlj.diff is not needed any more, as with this method of >> build, >> the upstream test just works. >> >> 0003_prepare-ada-cross-support.diff >>This is some changes for cross gnat support. >> Make package priority extra when cross build instead of optional. >> gcc-5-cross asks for it? >> dependencies = { module=all-target-libgnatvsn; >> on=all-target-libstdc++-v3; }; >> in fact libgnatprj requires some header files of libstdc++, >> no idea whether libgnatprj does. >> since libgnatprj depends on libgnatvsn, so add >> libgnatvsn here. >> This is found when cross build for mipsel >> TOOLS_LIBS: change the order and add stdc++ here. >>on some architecture, the old order doesn't work. >> now idea why. >>this order just work for all architecture in the >> list of gcc-5-cross. >> Maybe you still wish to disable ada cross by default here. >> >> >> -- >> YunQiang Su -- YunQiang Su diff --git a/debian/patches/ada-libgnatvsn.diff b/debian/patches/ada-libgnatvsn.diff index 222b4ab..980fc37 100644 --- a/debian/patches/ada-libgnatvsn.diff +++ b/debian/patches/ada-libgnatvsn.diff @@ -91,7 +91,7 @@ Index: b/src/libgnatvsn/Makefile.in +LIB_VERSION := $(strip $(shell grep ' Library_Version :' \ + @srcdir@/../gcc/ada/gnatvsn.ads | \ + sed -e 's/.*"\(.*\)".*/\1/')) -+GCC:=../../gcc/xgcc -B../../gcc/ -B/usr/@host@/lib ++GCC:=$(CC) +LIBGNAT_JUST_BUILT := -nostdinc -I../../gcc/ada/rts +CFLAGS := -g -O2 -gnatn +FULLVER := $(shell cat @srcdir@/../gcc/FULL-VER) diff --git a/debian/patches/cross-build-native.diff b/debian/patches/cross-build-native.diff new file mode 100644 index 000..66bfc8c --- /dev/null +++ b/debian/patches/cross-build-native.diff @@ -0,0 +1,49 @@ +Index: gcc-5-5.2.1/src/libcc1/configure.ac +=== +--- gcc-5-5.2.1.orig/src/libcc1/configure.ac gcc-5-5.2.1/src/libcc1/configure.ac +@@ -63,6 +63,31 @@ if test "$GXX" = yes; then + fi + AC_SUBST(libsuffix) + ++# Figure out what objdump we will be using. ++AS_VAR_SET_IF(gcc_cv_objdump,, [ ++if test -f $gcc_cv_binutils_srcdir/configure.in \ ++ && test -f ../binutils/Makefile \ ++ && test x$build = x$host; then ++ # Single tree build which includes binutils. ++ gcc_cv_objdump=../binutils/objdump$build_exeext ++elif test -x objdump$build_exeext; then ++ gcc_cv_objdump=./objdump$build_exeext ++elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then ++gcc_cv_objdump="$OBJDUMP_FOR_TARGET" ++else ++AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET) ++fi]) ++ ++AC_MSG_CHECKING(what objdump to use) ++if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then ++ # Single tree build which includes binutils. ++ AC_MSG_RESULT(newly built objdump) ++elif test x$gcc_cv_objdump = x; then ++ AC_MSG_RESULT(not found) ++else ++ AC_MSG_RESULT($gcc_cv_objdump) ++fi ++ + dnl Test for -lsocket and -lnsl. Copied from libgo/configure.ac. + AC_CACHE_CHECK([for socket libraries], libcc1_cv_lib_sockets, + [libcc1_cv_lib_sockets= +Index: gcc-5-5.2.1/src/libgo/runtime/go-main.c
Bug#798782: gcc-5: add gnat sjlj back
Some more fix to debian/rules.d/binary-ada.mk. On Sat, 12 Sep 2015 23:56:13 +0800 YunQiang Suwrote: > Package: src:gcc-5 > Version: 5.2.1-17 > > I rewrite gnat sjlj support with a new src/libada-sjlj directory added, > instead of the huge patch to src/gcc/ada/gcc-interfaces/Makefile.in. > > 0001_libgnatvsn-prj.diff > as we build libgnatsvn/libgnatprj in build/TRIPLET, so fix something > left. > > 0002_ada-sjlj.diff > Rewrite gnat sjlj support, with a new added directory. > It still builds zcx in build/gcc/ada/rts (not rts-natvie), > while builds sjlj in build/gcc/ada/rts-sjlj. > Some dependency chains ins Makefile.def are also got some change. > ada-acats-sjlj.diff is not needed any more, as with this method of > build, > the upstream test just works. > > 0003_prepare-ada-cross-support.diff >This is some changes for cross gnat support. > Make package priority extra when cross build instead of optional. > gcc-5-cross asks for it? > dependencies = { module=all-target-libgnatvsn; > on=all-target-libstdc++-v3; }; > in fact libgnatprj requires some header files of libstdc++, > no idea whether libgnatprj does. > since libgnatprj depends on libgnatvsn, so add > libgnatvsn here. > This is found when cross build for mipsel > TOOLS_LIBS: change the order and add stdc++ here. >on some architecture, the old order doesn't work. > now idea why. >this order just work for all architecture in the > list of gcc-5-cross. > Maybe you still wish to disable ada cross by default here. > > > -- > YunQiang Su Index: gcc/debian/rules.d/binary-ada.mk === --- gcc.orig/debian/rules.d/binary-ada.mk 2015-09-13 15:08:29.788151346 +0800 +++ gcc/debian/rules.d/binary-ada.mk2015-09-13 15:10:18.251920384 +0800 @@ -26,7 +26,7 @@ endif p_gnat = gnat-$(GNAT_VERSION)$(cross_bin_arch) -p_gnsjlj= gnat-$(GNAT_VERSION)-sjlj$(cross_bin_arch) +p_gnatsjlj= gnat-$(GNAT_VERSION)-sjlj$(cross_bin_arch) p_lgnat= libgnat-$(GNAT_VERSION)$(cross_lib_arch) p_lgnat_dbg = libgnat-$(GNAT_VERSION)-dbg$(cross_lib_arch) p_lgnatvsn = libgnatvsn$(GNAT_VERSION)$(cross_lib_arch) @@ -39,6 +39,7 @@ d_gbase= debian/$(p_gbase) d_gnat = debian/$(p_gnat) +d_gnatsjlj = debian/$(p_gnatsjlj) d_lgnat= debian/$(p_lgnat) d_lgnatvsn = debian/$(p_lgnatvsn) d_lgnatprj = debian/$(p_lgnatprj) @@ -288,8 +289,8 @@ dh_movefiles -p$(p_gnat) $(files_gnat) ifeq ($(with_gnatsjlj),yes) - dh_installdirs -p$(p_gnsjlj) $(gcc_lib_dir) - dh_movefiles -p$(p_gnsjlj) $(gcc_lib_dir)/rts-sjlj/adalib $(gcc_lib_dir)/rts-sjlj/adainclude + dh_installdirs -p$(p_gnatsjlj) $(gcc_lib_dir) + dh_movefiles -p$(p_gnatsjlj) $(gcc_lib_dir)/rts-sjlj/adalib $(gcc_lib_dir)/rts-sjlj/adainclude endif ifeq ($(with_libgnat),yes) @@ -307,7 +308,7 @@ endif debian/dh_doclink -p$(p_gnat) $(p_gbase) ifeq ($(with_gnatsjlj),yes) - debian/dh_doclink -p$(p_gnsjlj) $(p_gbase) + debian/dh_doclink -p$(p_gnatsjlj) $(p_gbase) endif ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) ifeq ($(with_check),yes) @@ -396,17 +397,16 @@ dh_builddeb -p$(p_gnat) ifeq ($(with_gnatsjlj),yes) - dh_strip -p$(p_gnsjlj) - dh_compress -p$(p_gnsjlj) - dh_fixperms -p$(p_gnsjlj) - find $(d_gnat)-sjlj -name '*.ali' | xargs chmod 444 - $(cross_shlibdeps) dh_shlibdeps -p$(p_gnsjlj) - $(cross_gencontrol) dh_gencontrol -p$(p_gnsjlj) \ + dh_strip -p$(p_gnatsjlj) + dh_compress -p$(p_gnatsjlj) + dh_fixperms -p$(p_gnatsjlj) + find $(d_gnatsjlj) -name '*.ali' | xargs chmod 444 + dh_shlibdeps -p$(p_gnatsjlj) + dh_gencontrol -p$(p_gnatsjlj) \ -- -v$(DEB_VERSION) $(common_substvars) - $(call cross_mangle_control,$(p_gnsjlj)) - dh_installdeb -p$(p_gnsjlj) - dh_md5sums -p$(p_gnsjlj) - dh_builddeb -p$(p_gnsjlj) + dh_installdeb -p$(p_gnatsjlj) + dh_md5sums -p$(p_gnatsjlj) + dh_builddeb -p$(p_gnatsjlj) endif trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
Bug#798782: gcc-5: add gnat sjlj back
Package: src:gcc-5 Version: 5.2.1-17 I rewrite gnat sjlj support with a new src/libada-sjlj directory added, instead of the huge patch to src/gcc/ada/gcc-interfaces/Makefile.in. 0001_libgnatvsn-prj.diff as we build libgnatsvn/libgnatprj in build/TRIPLET, so fix something left. 0002_ada-sjlj.diff Rewrite gnat sjlj support, with a new added directory. It still builds zcx in build/gcc/ada/rts (not rts-natvie), while builds sjlj in build/gcc/ada/rts-sjlj. Some dependency chains ins Makefile.def are also got some change. ada-acats-sjlj.diff is not needed any more, as with this method of build, the upstream test just works. 0003_prepare-ada-cross-support.diff This is some changes for cross gnat support. Make package priority extra when cross build instead of optional. gcc-5-cross asks for it? dependencies = { module=all-target-libgnatvsn; on=all-target-libstdc++-v3; }; in fact libgnatprj requires some header files of libstdc++, no idea whether libgnatprj does. since libgnatprj depends on libgnatvsn, so add libgnatvsn here. This is found when cross build for mipsel TOOLS_LIBS: change the order and add stdc++ here. on some architecture, the old order doesn't work. now idea why. this order just work for all architecture in the list of gcc-5-cross. Maybe you still wish to disable ada cross by default here. -- YunQiang Su diff --git a/debian/patches/ada-acats.diff b/debian/patches/ada-acats.diff index d06acfd..d420867 100644 --- a/debian/patches/ada-acats.diff +++ b/debian/patches/ada-acats.diff @@ -124,7 +125,7 @@ Index: b/src/gcc/testsuite/lib/gnat.exp === --- a/src/gcc/testsuite/lib/gnat.exp +++ b/src/gcc/testsuite/lib/gnat.exp -@@ -88,18 +88,24 @@ proc gnat_init { args } { +@@ -88,18 +88,25 @@ proc gnat_init { args } { global GNAT_UNDER_TEST global TOOL_EXECUTABLE global gnat_target_current @@ -141,10 +142,11 @@ Index: b/src/gcc/testsuite/lib/gnat.exp - set GNAT_UNDER_TEST "[local_find_gnatmake]" - } -} ++set target [target_info name] +set GNAT_UNDER_TEST "$rootme/../gnattools/gnatmake -I$rootme/ada/rts --GCC=$rootme/xgcc --GNATBIND=$rootme/../gnattools/gnatbind --GNATLINK=$rootme/../gnattools/gnatlink -cargs -B$rootme -largs --GCC=$rootme/xgcc -B$rootme -margs" +append ld_library_path ":$rootme/ada/rts" -+append ld_library_path ":$rootme/../libgnatvsn" -+append ld_library_path ":$rootme/../libgnatprj" ++append ld_library_path ":$rootme/../$target/libgnatvsn" ++append ld_library_path ":$rootme/../$target/libgnatprj" +set_ld_library_path_env_vars + +# gnatlink looks for system.ads itself and has no --RTS option, so @@ -156,7 +158,7 @@ Index: b/src/gcc/testsuite/lib/gnat.exp if ![info exists tmpdir] then { set tmpdir /tmp -@@ -121,31 +127,6 @@ proc gnat_target_compile { source dest t +@@ -121,31 +128,6 @@ proc gnat_target_compile { source dest t return [gcc_target_compile $source $dest $type $options] } diff --git a/debian/patches/ada-libgnatprj.diff b/debian/patches/ada-libgnatprj.diff index 46f6f02..ed31a0a 100644 --- a/debian/patches/ada-libgnatprj.diff +++ b/debian/patches/ada-libgnatprj.diff @@ -265,8 +265,8 @@ Index: b/src/configure.ac ENABLE_LIBADA=$enableval, ENABLE_LIBADA=yes) if test "${ENABLE_LIBADA}" != "yes" ; then -- noconfigdirs="$noconfigdirs libgnatvsn gnattools" -+ noconfigdirs="$noconfigdirs libgnatvsn libgnatprj gnattools" +- noconfigdirs="$noconfigdirs target-libgnatvsn gnattools" ++ noconfigdirs="$noconfigdirs target-libgnatvsn target-libgnatprj gnattools" fi AC_ARG_ENABLE(libssp, diff --git a/debian/patches/ada-libgnatvsn.diff b/debian/patches/ada-libgnatvsn.diff index 0dc3d35..222b4ab 100644 --- a/debian/patches/ada-libgnatvsn.diff +++ b/debian/patches/ada-libgnatvsn.diff @@ -262,7 +262,7 @@ Index: b/src/configure.ac ENABLE_LIBADA=yes) if test "${ENABLE_LIBADA}" != "yes" ; then - noconfigdirs="$noconfigdirs gnattools" -+ noconfigdirs="$noconfigdirs libgnatvsn gnattools" ++ noconfigdirs="$noconfigdirs target-libgnatvsn gnattools" fi AC_ARG_ENABLE(libssp, diff --git a/debian/patches/ada-acats-sjlj.diff b/debian/patches/ada-acats-sjlj.diff deleted file mode 100644 index 7dde89c..000 --- a/debian/patches/ada-acats-sjlj.diff +++ /dev/null @@ -1,44 +0,0 @@ -# DP: - When running the ACATS, look for the shared libraries in -# DP: build/gcc/ada/rts-shared-zcx instead of build/gcc/ada/rts. - a/src/gcc/testsuite/lib/gnat.exp -+++ b/src/gcc/testsuite/lib/gnat.exp -@@ -94,18 +94,18 @@ - - if { $gnat_initialized == 1 } { return } - --set GNAT_UNDER_TEST "$rootme/../gnattools/gnatmake -I$rootme/ada/rts --GCC=$rootme/xgcc