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

Re: draft implementation for a Multi-Arch: foreign interface to gcc



On Sat, Apr 28, 2018 at 01:06:20PM +0200, Matthias Klose wrote:
> As addition to the feedback given on irc,

Thank you very much for spending time on this tricky feature and your
patience. I'm attaching an improved patch, but it is certainly not ready
for merging and I don't expect Matthias to look into it. This mail
merely constitutes a random snapshot of my work on the patch. Help from
others is appreciated.

>  - please complete the patch to cover all frontends.  while these
>    might not be necessary for your bootstrap effort, I'd like to
>    have all frontends be covered in an uniform way.

I've worked on this. It now covers cpp, cxx, d, fortran, gcc, go and
objc. Notably, it does not cover ada, brig or objc++. ada looks
complex. brig depends on hsail-tools, which is not Multi-Arch: foreign.
So we cannot do brig at this time. objc++ looks manageable.

>  - as the first step, please don't build any -for-host and -for-build
>    packages yet.

In the interest of keeping the diff manageable, this was the intention.
The addition of -for-host or -for-build packages will be covered in a
different bug report.

>  - for testing:

Given that the patch is still very much incomplete, I've not performed
much testing beyond native builds and running lintian.

Helmut
diff -u gcc-8-8.2.0/debian/changelog gcc-8-8.2.0/debian/changelog
--- gcc-8-8.2.0/debian/changelog
+++ gcc-8-8.2.0/debian/changelog
@@ -1,3 +1,10 @@
+gcc-8 (8.2.0-7.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * 
+
+ -- Helmut Grohne <helmut@subdivi.de>  Sat, 29 Sep 2018 13:31:54 +0200
+
 gcc-8 (8.2.0-7) unstable; urgency=medium
 
   * Update to SVN 20180917 (r264370) from the gcc-8-branch.
diff -u gcc-8-8.2.0/debian/control.m4 gcc-8-8.2.0/debian/control.m4
--- gcc-8-8.2.0/debian/control.m4
+++ gcc-8-8.2.0/debian/control.m4
@@ -35,6 +35,13 @@
 '))
 define(`TARGET_PACKAGE',`X-DH-Build-For-Type: target
 ')
+define(`_for_each',`ifelse(`$3',`',`',`pushdef(`$1',`$3')$2`'popdef(`$1')`'$0(`$1',`$2',shift(shift(shift($@))))')')
+define(`for_each_arch',`_for_each(`_arch',`dnl
+pushdef(`arch_deb',`patsubst(_arch,`=.*',`')')dnl
+pushdef(`arch_gnu',`patsubst(_arch,`.*=',`')')dnl
+pushdef(`arch_gnusuffix',`-patsubst(arch_gnu,`_',`-')')dnl
+$1`'popdef(`arch_gnusuffix')popdef(`arch_gnu')popdef(`arch_deb')',dnl
+patsubst(ARCH_GNUTYPE_MAP,`\s+',`,'))')
 
 divert`'dnl
 dnl --------------------------------------------------------------------------
@@ -701,21 +708,22 @@
 ')`'dnl x32dev
 ')`'dnl cdev
 
-ifenabled(`cdev',`
-Package: gcc`'PV`'TS
-Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+ifenabled(`cdev',`dnl
+for_each_arch(`
+Package: gcc`'PV`'arch_gnusuffix
+Architecture: ifdef(`TARGET',`any',arch_deb)
+Multi-Arch: foreign
 Section: devel
 Priority: optional
-Depends: cpp`'PV`'TS (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,')
+Depends: cpp`'PV`'arch_gnusuffix (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,')
   ifenabled(`gccxbase',` BASEDEP,')
   ${dep:libcc1},
-  binutils`'TS (>= ${binutils:Version}),
+  binutils`'arch_gnusuffix (>= ${binutils:Version}),
   ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends}
 Recommends: ${dep:libcdev}
-Replaces: gccgo-8 (<< ${gcc:Version}), cpp`'PV`'TS (<< 7.1.1-8)
-Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}),
+Replaces: gccgo-8 (<< ${gcc:Version}), cpp`'PV`'arch_gnusuffix (<< 7.1.1-8), gcc`'PV (<< 999:0TODO)
+Breaks: gcc`'PV (<< 0TODO)
+Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}),
  gcc`'PV-locales (>= ${gcc:SoftVersion}),
  libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}),
  libdbgdep(gomp`'GOMP_SO-dbg,),
@@ -730,15 +738,44 @@
 ')`'dnl
  libdbgdep(mpx`'MPX_SO-dbg,),
  libdbgdep(quadmath`'QMATH_SO-dbg,)
-Provides: c-compiler`'TS
+Provides: c-compiler`'arch_gnusuffix
 ifdef(`TARGET',`Conflicts: gcc-multilib
 ')`'dnl
 BUILT_USING`'dnl
-Description: GNU C compiler`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+Description: GNU C compiler for the arch_gnu architecture
+ This is the GNU C compiler for the arch_gnu architecture,
+ a fairly portable optimizing compiler for C.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gcc`'PV
+Architecture: any
+Section: devel
+Priority: optional
+Depends: gcc`'PV`'${target:suffix} (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,')
+  ifenabled(`gccxbase',` BASEDEP,')
+  binutils (>= ${binutils:Version}),
+  ${misc:Depends}
+Recommends: ${dep:libcdev}
+Replaces: gccgo-8 (<< ${gcc:Version}), cpp`'PV (<< 7.1.1-8)
+Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}),
+ gcc`'PV-locales (>= ${gcc:SoftVersion}),
+ libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}),
+ libdbgdep(gomp`'GOMP_SO-dbg,),
+ libdbgdep(itm`'ITM_SO-dbg,),
+ libdbgdep(atomic`'ATOMIC_SO-dbg,),
+ libdbgdep(asan`'ASAN_SO-dbg,),
+ libdbgdep(lsan`'LSAN_SO-dbg,),
+ libdbgdep(tsan`'TSAN_SO-dbg,),
+ libdbgdep(ubsan`'UBSAN_SO-dbg,),
+ifenabled(`libvtv',`',`
+ libdbgdep(vtv`'VTV_SO-dbg,),
+')`'dnl
+ libdbgdep(mpx`'MPX_SO-dbg,),
+ libdbgdep(quadmath`'QMATH_SO-dbg,)
+Provides: c-compiler
+BUILT_USING`'dnl
+Description: GNU C compiler
  This is the GNU C compiler, a fairly portable optimizing compiler for C.
-ifdef(`TARGET', `dnl
- .
- This package contains C cross-compiler for TARGET architecture.
 ')`'dnl
 
 ifenabled(`multilib',`
@@ -801,17 +838,35 @@
  This is the GNU C compiler, a fairly portable optimizing compiler for C.
 ')`'dnl cdev
 
-ifenabled(`cdev',`
-Package: cpp`'PV`'TS
-Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+ifenabled(`cdev',`dnl
+for_each_arch(`
+Package: cpp`'PV`'arch_gnusuffix
+Architecture: ifdef(`TARGET',`any',arch_deb)
+Multi-Arch: foreign
 Section: ifdef(`TARGET',`devel',`interpreters')
 Priority: optional
 Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
 Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion})
+Replaces: gccgo-8 (<< ${gcc:Version}), cpp`'PV (<< 999:0TODO)
+Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3), cpp`'PV (<< 0TODO)
+BUILT_USING`'dnl
+Description: GNU C preprocessor for arch_gnu
+ A macro processor that is used automatically by the GNU C compiler
+ to transform programs before actual compilation.
+ .
+ This package has been separated from gcc for the benefit of those who
+ require the preprocessor configured for arch_gnu architecture but not
+ the compiler.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: cpp`'PV
+Architecture: any
+Section: interpreters
+Priority: optional
+Depends: BASEDEP, cpp`'PV`'${target:suffix} (= ${gcc:Version}), ${misc:Depends}
+Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion})
 Replaces: gccgo-8 (<< ${gcc:Version})
-Breaks: libmagics++-dev (<< 2.28.0-4)ifdef(`TARGET',`',`, hardening-wrapper (<< 2.8+nmu3)')
+Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3)
 BUILT_USING`'dnl
 Description: GNU C preprocessor
  A macro processor that is used automatically by the GNU C compiler
@@ -819,9 +874,6 @@
  .
  This package has been separated from gcc for the benefit of those who
  require the preprocessor but not the compiler.
-ifdef(`TARGET', `dnl
- .
- This package contains preprocessor configured for TARGET architecture.
 ')`'dnl
 
 ifdef(`TARGET', `', `
@@ -853,23 +905,36 @@
 ')`'dnl cdev
 
 ifenabled(`c++',`
-ifenabled(`c++dev',`
-Package: g++`'PV`'TS
-Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+ifenabled(`c++dev',`dnl
+for_each_arch(`
+Package: g++`'PV`'arch_gnusuffix
+Architecture: ifdef(`TARGET',`any',arch_deb)
+Multi-Arch: foreign
 Section: devel
 Priority: optional
-Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends}
-Provides: c++-compiler`'TS`'ifdef(`TARGET)',`',`, c++abi2-dev')
-Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(stdc++CXX_SO`'PV-dbg,)
+Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends}
+Provides: c++-compiler`'arch_gnusuffix
+Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(stdc++CXX_SO`'PV-dbg,)
+Breaks: g++`'PV (<< 0TODO)
+Replaces: g++`'PV (<< 999:0TODO)
 BUILT_USING`'dnl
-Description: GNU C++ compiler`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+Description: GNU C++ compiler for arch_gnu architecture
  This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
-ifdef(`TARGET', `dnl
  .
- This package contains C++ cross-compiler for TARGET architecture.
-')`'dnl
+ This package contains C++ cross-compiler for arch_gnu architecture.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: g++`'PV
+Architecture: any
+Section: devel
+Priority: optional
+Depends: g++`'PV`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (= ${gcc:Version}), ${misc:Depends}
+Provides: c++-compiler, c++abi2-dev
+Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion})
+BUILT_USING`'dnl
+Description: GNU C++ compiler
+ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
+')`'dnl TARGET
 
 ifenabled(`multilib',`
 Package: g++`'PV-multilib`'TS
@@ -3254,21 +3319,34 @@
 
 ifenabled(`objc',`
 ifenabled(`objcdev',`
-Package: gobjc`'PV`'TS
+for_each_arch(`
+Package: gobjc`'PV`'arch_gnusuffix
 Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+Multi-Arch: foreign
 Priority: optional
-Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
-Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg,)
-Provides: objc-compiler`'TS
-ifdef(`__sparc__',`Conflicts: gcc`'PV-sparc64', `dnl')
+Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
+Breaks: gobjc`'PV (<< 0TODO)
+Replaces: gobjc`'PV (<< 999:0TODO)
+Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg,)
+Provides: objc-compiler`'arch_gnusuffix
 BUILT_USING`'dnl
+Description: GNU Objective-C compiler for the arch_gnu architecture
+ This is the GNU Objective-C compiler for the arch_gnu architecture,
+ which compiles Objective-C on platforms supported by the gcc compiler.
+ It uses the gcc backend to generate optimized code.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gobjc`'PV
+Architecture: any
+Priority: optional
+Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${misc:Depends}
+Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion})
+Provides: objc-compiler
 Description: GNU Objective-C compiler
  This is the GNU Objective-C compiler, which compiles
  Objective-C on platforms supported by the gcc compiler. It uses the
  gcc backend to generate optimized code.
-
+')`'dnl ifndef TARGET
 ifenabled(`multilib',`
 Package: gobjc`'PV-multilib`'TS
 Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
@@ -3558,22 +3636,34 @@
 ')`'dnl objc
 
 ifenabled(`fortran',`
-ifenabled(`fdev',`
-Package: gfortran`'PV`'TS
+ifenabled(`fdev',`dnl
+for_each_arch(`
+Package: gfortran`'PV`'arch_gnusuffix
 Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+Multi-Arch: foreign
 Priority: optional
-Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libidevdep(gfortran`'PV-dev,,=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
-Provides: fortran95-compiler, ${fortran:mod-version}
-Suggests: ${gfortran:multilib}, gfortran`'PV-doc,
+Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), libidevdep(gfortran`'PV-dev,,=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: gfortran`'PV-doc,
  libdbgdep(gfortran`'FORTRAN_SO-dbg,),
  libcoarrays-dev
 BUILT_USING`'dnl
+Description: GNU Fortran compiler for the arch_gnu architecture
+ This is the GNU Fortran compiler for the arch_gnu architecture,
+ which compiles Fortran on platforms supported by the gcc compiler.
+ It uses the gcc backend to generate optimized code.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gfortran`'PV
+Architecture: any
+Priority: optional
+Depends: gfortran`'PV`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (= ${gcc:Version}), ${misc:Depends}
+Provides: fortran95-compiler, ${fortran:mod-version}
+Suggests: ${gfortran:multilib}, gfortran`'PV-doc
 Description: GNU Fortran compiler
  This is the GNU Fortran compiler, which compiles
  Fortran on platforms supported by the gcc compiler. It uses the
  gcc backend to generate optimized code.
+')`'dnl TARGET
 
 ifenabled(`multilib',`
 Package: gfortran`'PV-multilib`'TS
@@ -3894,21 +3984,36 @@
 
 ifenabled(`ggo',`
 ifenabled(`godev',`
-Package: gccgo`'PV`'TS
+for_each_arch(`
+Package: gccgo`'PV`'arch_gnusuffix
+Architecture: ifdef(`TARGET',`any',arch_deb)
+Multi-Arch: foreign
+Priority: optional
+Depends: BASEDEP, ifdef(`STANDALONEGO',`${dep:libcc1}, ',`gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), ')libidevdep(go`'GO_SO,,>=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg,)
+Conflicts: ${golang:Conflicts}
+Breaks: libgo12`'LS (<< 8-20171209-2), gccgo`'PV (<< 0TODO)
+Replaces: libgo12`'LS (<< 8-20171209-2), gccgo`'PV (<< 999:0TODO)
+BUILT_USING`'dnl
+Description: GNU Go compiler for the arch_gnu architecture
+ This is the GNU Go compiler for the arch_gnu architecture, which
+ compiles Go on platforms supported by the gcc compiler. It uses the gcc
+ backend to generate optimized code.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gccgo`'PV
 Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
 Priority: optional
-Depends: BASEDEP, ifdef(`STANDALONEGO',`${dep:libcc1}, ',`gcc`'PV`'TS (= ${gcc:Version}), ')libidevdep(go`'GO_SO,,>=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Depends: BASEDEP, ifdef(`STANDALONEGO',`',`gcc`'PV (= ${gcc:Version}), ')${misc:Depends}
 Provides: go-compiler
 Suggests: ${go:multilib}, gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg,)
 Conflicts: ${golang:Conflicts}
 Breaks: libgo12`'LS (<< 8-20171209-2)
 Replaces: libgo12`'LS (<< 8-20171209-2)
-BUILT_USING`'dnl
 Description: GNU Go compiler
  This is the GNU Go compiler, which compiles Go on platforms supported
  by the gcc compiler. It uses the gcc backend to generate optimized code.
+')`'dnl no-TARGET
 
 ifenabled(`multilib',`
 Package: gccgo`'PV-multilib`'TS
@@ -4851,21 +4956,36 @@
 ')`'dnl gfdldoc
 ')`'dnl ada
 
-ifenabled(`d ',`
-Package: gdc`'PV`'TS
+ifenabled(`d ',`dnl
+for_each_arch(`
+Package: gdc`'PV`'arch_gnusuffix
 Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+Multi-Arch: foreign
 Priority: optional
-Depends: SOFTBASEDEP, g++`'PV`'TS (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends}
+Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends}
+Breaks: gdc`'PV (<< 0TODO)
+Replaces: gdc (<< 4.4.6-5), gdc`'PV (<< 999:0TODO)
+BUILT_USING`'dnl
+Description: GNU D compiler (version 2) for the arch_gnu architecture
+ This is the GNU D compiler for the arch_gnu architecture,
+ which compiles D on platforms supported by gcc.
+ It uses the gcc backend to generate optimised code.
+ .
+ This compiler supports D language version 2.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gdc`'PV
+Architecture: any
+Priority: optional
+Depends: gdc`'PV`'${target:suffix} (= ${gcc:SoftVersion}), SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${misc:Depends}
 Provides: gdc, d-compiler, d-v2-compiler
 Replaces: gdc (<< 4.4.6-5)
-BUILT_USING`'dnl
-Description: GNU D compiler (version 2)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+Description: GNU D compiler (version 2)
  This is the GNU D compiler, which compiles D on platforms supported by gcc.
  It uses the gcc backend to generate optimised code.
  .
  This compiler supports D language version 2.
+')`'dnl TARGET
 
 ifenabled(`multilib',`
 Package: gdc`'PV-multilib`'TS
diff -u gcc-8-8.2.0/debian/rules.conf gcc-8-8.2.0/debian/rules.conf
--- gcc-8-8.2.0/debian/rules.conf
+++ gcc-8-8.2.0/debian/rules.conf
@@ -636,6 +636,7 @@
 	-DTARGET_TOOL_BUILD_DEP='$(TARGET_TOOL_BUILD_DEP)' \
 	-DPHOBOS_BUILD_DEP="$(PHOBOS_BUILD_DEP)" \
 	-DOFFLOAD_BUILD_DEP="$(OFFLOAD_BUILD_DEP)" \
+	-DARCH_GNUTYPE_MAP="$(arch_gnutype_map)" \
 	-DMULTILIB_ARCHS="$(multilib_archs)" \
 	-DNEON_ARCHS="$(neon_archs)" \
 	-DTP=$(TP) \
@@ -1022,6 +1023,7 @@
 		echo 'dep:libcxxbiarchdbg=$(libstdc++biarchdbg)'; \
 		echo 'dep:libgnat=$(LIBGNAT_DEP)'; \
 		echo 'base:Breaks=$(BASE_BREAKS)'; \
+		echo 'target:suffix=-$(subst _,-,$(TARGET_ALIAS))'; \
 	) > debian/substvars.local.tmp
 ifneq (,$(filter $(DEB_TARGET_ARCH), $(multilib_archs)))
 	( \
diff -u gcc-8-8.2.0/debian/rules.d/binary-cpp.mk gcc-8-8.2.0/debian/rules.d/binary-cpp.mk
--- gcc-8-8.2.0/debian/rules.d/binary-cpp.mk
+++ gcc-8-8.2.0/debian/rules.d/binary-cpp.mk
@@ -1,5 +1,8 @@
 ifneq ($(DEB_STAGE),rtlibs)
-  arch_binaries  := $(arch_binaries) cpp
+  arch_binaries  := $(arch_binaries) cpp-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries  := $(arch_binaries) cpp
+  endif
   ifneq ($(DEB_CROSS),yes)
     ifneq ($(GFDL_INVARIANT_FREE),yes)
       indep_binaries := $(indep_binaries) cpp-doc
@@ -7,22 +10,59 @@
   endif
 endif
 
-dirs_cpp = \
+dirs_cppn = \
 	$(docdir) \
 	$(PF)/share/man/man1 \
 	$(PF)/bin \
-	$(gcc_lexec_dir)
+	$(gcc_lexec_dir) \
+	usr/share/lintian/overrides
 
-files_cpp = \
+dirs_cpp = \
+	$(docdir) \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
+
+files_cppn = \
 	$(PF)/bin/$(cmd_prefix)cpp$(pkg_ver) \
 	$(gcc_lexec_dir)/cc1
 
 ifneq ($(GFDL_INVARIANT_FREE),yes)
-  files_cpp += \
+  files_cppn += \
 	$(PF)/share/man/man1/$(cmd_prefix)cpp$(pkg_ver).1
 endif
 
 # ----------------------------------------------------------------------
+$(binary_stamp)-cpp-nat: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_cppn)
+	dh_installdirs -p$(p_cppn) $(dirs_cppn)
+	$(dh_compat2) dh_movefiles -p$(p_cppn) $(files_cppn)
+
+	echo '$(p_cppn) binary: hardening-no-pie' \
+	  > $(d_cppn)/usr/share/lintian/overrides/$(p_cppn)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	echo '$(p_cppn) binary: binary-without-manpage' \
+	  >> $(d_cppn)/usr/share/lintian/overrides/$(p_cppn)
+endif
+
+	debian/dh_doclink -p$(p_cppn) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_cppn)
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+	$(DWZ) $(d_cppn)/$(gcc_lexec_dir)/cc1
+endif
+	dh_strip -p$(p_cppn) \
+	  $(if $(unstripped_exe),-X/cc1)
+	dh_shlibdeps -p$(p_cppn)
+
+	echo $(p_cppn) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
 $(binary_stamp)-cpp: $(install_stamp)
 	dh_testdir
 	dh_testroot
@@ -30,21 +70,13 @@
 
 	rm -rf $(d_cpp)
 	dh_installdirs -p$(p_cpp) $(dirs_cpp)
-	$(dh_compat2) dh_movefiles -p$(p_cpp) $(files_cpp)
 
-ifeq ($(unprefixed_names),yes)
 	ln -sf $(cmd_prefix)cpp$(pkg_ver) \
 	    $(d_cpp)/$(PF)/bin/cpp$(pkg_ver)
-  ifneq ($(GFDL_INVARIANT_FREE),yes)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
 	ln -sf $(cmd_prefix)cpp$(pkg_ver).1 \
 	    $(d_cpp)/$(PF)/share/man/man1/cpp$(pkg_ver).1
-  endif
-endif
-
-	mkdir -p $(d_cpp)/usr/share/lintian/overrides
-	echo '$(p_cpp) binary: hardening-no-pie' \
-	  > $(d_cpp)/usr/share/lintian/overrides/$(p_cpp)
-ifeq ($(GFDL_INVARIANT_FREE),yes)
+else
 	echo '$(p_cpp) binary: binary-without-manpage' \
 	  >> $(d_cpp)/usr/share/lintian/overrides/$(p_cpp)
 endif
@@ -52,13 +84,6 @@
 	debian/dh_doclink -p$(p_cpp) $(p_xbase)
 	debian/dh_rmemptydirs -p$(p_cpp)
 
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
-	$(DWZ) $(d_cpp)/$(gcc_lexec_dir)/cc1
-endif
-	dh_strip -p$(p_cpp) \
-	  $(if $(unstripped_exe),-X/cc1)
-	dh_shlibdeps -p$(p_cpp)
-
 	echo $(p_cpp) >> debian/arch_binaries
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff -u gcc-8-8.2.0/debian/rules.d/binary-cxx.mk gcc-8-8.2.0/debian/rules.d/binary-cxx.mk
--- gcc-8-8.2.0/debian/rules.d/binary-cxx.mk
+++ gcc-8-8.2.0/debian/rules.d/binary-cxx.mk
@@ -2,21 +2,31 @@
   ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
     arch_binaries  := $(arch_binaries) cxx-multi
   endif
-  arch_binaries  := $(arch_binaries) cxx
+  arch_binaries  := $(arch_binaries) cxx-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries  := $(arch_binaries) cxx
+  endif
 endif
 
+dirs_cxxn = \
+	$(PF)/bin \
+	$(gcc_lexec_dir) \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
+
 dirs_cxx = \
 	$(docdir)/$(p_xbase)/C++ \
 	$(PF)/bin \
 	$(PF)/share/info \
-	$(gcc_lexec_dir) \
-	$(PF)/share/man/man1
-files_cxx = \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
+
+files_cxxn = \
 	$(PF)/bin/$(cmd_prefix)g++$(pkg_ver) \
 	$(gcc_lexec_dir)/cc1plus
 
 ifneq ($(GFDL_INVARIANT_FREE),yes)
-  files_cxx += \
+  files_cxxn += \
 	$(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1
 endif
 
@@ -24,6 +34,35 @@
 d_cxx_m	= debian/$(p_cxx_m)
 
 # ----------------------------------------------------------------------
+$(binary_stamp)-cxx-nat: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_cxxn)
+	dh_installdirs -p$(p_cxxn) $(dirs_cxxn)
+	$(dh_compat2) dh_movefiles -p$(p_cxxn) $(files_cxxn)
+
+	echo '$(p_cxxn) binary: hardening-no-pie' \
+	  > $(d_cxxn)/usr/share/lintian/overrides/$(p_cxxn)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	echo '$(p_cxxn) binary: binary-without-manpage' \
+	  >> $(d_cxxn)/usr/share/lintian/overrides/$(p_cxxn)
+endif
+
+	debian/dh_doclink -p$(p_cxxn) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_cxxn)
+
+	dh_shlibdeps -p$(p_cxxn)
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+	$(DWZ) \
+	  $(d_cxxn)/$(gcc_lexec_dir)/cc1plus
+endif
+	dh_strip -p$(p_cxxn) $(if $(unstripped_exe),-X/cc1plus)
+	echo $(p_cxxn) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
 $(binary_stamp)-cxx: $(install_stamp)
 	dh_testdir
 	dh_testroot
@@ -31,20 +70,14 @@
 
 	rm -rf $(d_cxx)
 	dh_installdirs -p$(p_cxx) $(dirs_cxx)
-	$(dh_compat2) dh_movefiles -p$(p_cxx) $(files_cxx)
 
-ifeq ($(unprefixed_names),yes)
 	ln -sf $(cmd_prefix)g++$(pkg_ver) \
 	    $(d_cxx)/$(PF)/bin/g++$(pkg_ver)
-  ifneq ($(GFDL_INVARIANT_FREE),yes)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
 	ln -sf $(cmd_prefix)g++$(pkg_ver).1.gz \
 	    $(d_cxx)/$(PF)/share/man/man1/g++$(pkg_ver).1.gz
-  endif
 endif
 
-	mkdir -p $(d_cxx)/usr/share/lintian/overrides
-	echo '$(p_cxx) binary: hardening-no-pie' \
-	  > $(d_cxx)/usr/share/lintian/overrides/$(p_cxx)
 ifeq ($(GFDL_INVARIANT_FREE),yes)
 	echo '$(p_cxx) binary: binary-without-manpage' \
 	  >> $(d_cxx)/usr/share/lintian/overrides/$(p_cxx)
@@ -56,12 +89,6 @@
 		$(d_cxx)/$(docdir)/$(p_xbase)/C++/changelog
 	debian/dh_rmemptydirs -p$(p_cxx)
 
-	dh_shlibdeps -p$(p_cxx)
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
-	$(DWZ) \
-	  $(d_cxx)/$(gcc_lexec_dir)/cc1plus
-endif
-	dh_strip -p$(p_cxx) $(if $(unstripped_exe),-X/cc1plus)
 	echo $(p_cxx) >> debian/arch_binaries
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff -u gcc-8-8.2.0/debian/rules.d/binary-d.mk gcc-8-8.2.0/debian/rules.d/binary-d.mk
--- gcc-8-8.2.0/debian/rules.d/binary-d.mk
+++ gcc-8-8.2.0/debian/rules.d/binary-d.mk
@@ -2,7 +2,10 @@
   ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchsf)))
     arch_binaries  := $(arch_binaries) gdc-multi
   endif
-  arch_binaries := $(arch_binaries) gdc
+  arch_binaries := $(arch_binaries) gdc-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries := $(arch_binaries) gdc
+  endif
 
   ifeq ($(with_libphobos),yes)
     $(lib_binaries) += libphobos-dev
@@ -48,11 +51,13 @@
   endif
 endif
 
-p_gdc           = gdc$(pkg_ver)$(cross_bin_arch)
+p_gdc_n		= gdc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+p_gdc           = gdc$(pkg_ver)
 p_gdc_m		= gdc$(pkg_ver)-multilib$(cross_bin_arch)
 p_libphobos     = libgphobos$(GPHOBOS_SONAME)
 p_libphobosdev  = libgphobos$(pkg_ver)-dev
 
+d_gdc_n		= debian/$(p_gdc_n)
 d_gdc           = debian/$(p_gdc)
 d_gdc_m		= debian/$(p_gdc_m)
 d_libphobos     = debian/$(p_libphobos)
@@ -66,20 +71,26 @@
 # FIXME: always here?
 gdc_include_dir := $(gcc_lib_dir)/include/d
 
-dirs_gdc = \
+dirs_gdc_n = \
 	$(PF)/bin \
 	$(PF)/share/man/man1 \
-	$(gcc_lexec_dir)
+	$(gcc_lexec_dir) \
+	usr/share/lintian/overrides
+
+dirs_gdc = \
+	$(PF)/bin \
+	$(PF)/share/man/man1
+
 ifneq ($(DEB_CROSS),yes)
-  dirs_gdc += \
+  dirs_gdc_n += \
 	$(gdc_include_dir)
 endif
 
-files_gdc = \
+files_gdc_n = \
 	$(PF)/bin/$(cmd_prefix)gdc$(pkg_ver) \
 	$(gcc_lexec_dir)/cc1d
 ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl)
-    files_gdc += \
+    files_gdc_n += \
 	$(PF)/share/man/man1/$(cmd_prefix)gdc$(pkg_ver).1
 endif
 
@@ -88,58 +99,71 @@
 	$(gdc_include_dir) \
 	$(gcc_lib_dir)
 
-$(binary_stamp)-gdc: $(install_stamp)
+$(binary_stamp)-gdc-nat: $(install_stamp)
 	dh_testdir
 	dh_testroot
 	mv $(install_stamp) $(install_stamp)-tmp
 
-	rm -rf $(d_gdc)
-	dh_installdirs -p$(p_gdc) $(dirs_gdc)
+	rm -rf $(d_gdc_n)
+	dh_installdirs -p$(p_gdc_n) $(dirs_gdc_n)
 
-	dh_installdocs -p$(p_gdc)
-	dh_installchangelogs -p$(p_gdc) src/gcc/d/ChangeLog
+	debian/dh_doclink -p$(p_gdc_n) $(p_xbase)
 
-	$(dh_compat2) dh_movefiles -p$(p_gdc) -X/zlib/ $(files_gdc)
+	$(dh_compat2) dh_movefiles -p$(p_gdc_n) -X/zlib/ $(files_gdc_n)
 
 ifeq ($(with_libphobos),yes)
-	mv $(d)/$(usr_lib)/libgphobos.spec $(d_gdc)/$(gcc_lib_dir)/
-endif
-
-ifeq ($(unprefixed_names),yes)
-	ln -sf $(cmd_prefix)gdc$(pkg_ver) \
-	    $(d_gdc)/$(PF)/bin/gdc$(pkg_ver)
-  ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl)
-	ln -sf $(cmd_prefix)gdc$(pkg_ver).1 \
-	    $(d_gdc)/$(PF)/share/man/man1/gdc$(pkg_ver).1
-  endif
+	mv $(d)/$(usr_lib)/libgphobos.spec $(d_gdc_n)/$(gcc_lib_dir)/
 endif
 
 # FIXME: __entrypoint.di needs to go into a libgdc-dev Multi-Arch: same package
 	# Always needed by gdc.
-	mkdir -p $(d_gdc)/$(gdc_include_dir)
+	mkdir -p $(d_gdc_n)/$(gdc_include_dir)
 	cp $(srcdir)/libphobos/libdruntime/__entrypoint.di \
-	    $(d_gdc)/$(gdc_include_dir)/.
+	    $(d_gdc_n)/$(gdc_include_dir)/.
 #ifneq ($(DEB_CROSS),yes)
-#	dh_link -p$(p_gdc) \
+#	dh_link -p$(p_gdc_n) \
 #		/$(gdc_include_dir) \
 #		/$(dir $(gdc_include_dir))/$(GCC_VERSION)
 #endif
 
-	dh_link -p$(p_gdc) \
-		/$(docdir)/$(p_gcc)/README.Bugs \
-		/$(docdir)/$(p_gdc)/README.Bugs
-
 ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
 	$(DWZ) \
-	  $(d_gdc)/$(gcc_lexec_dir)/cc1d
+	  $(d_gdc_n)/$(gcc_lexec_dir)/cc1d
 endif
-	dh_strip -p$(p_gdc) \
+	dh_strip -p$(p_gdc_n) \
 	  $(if $(unstripped_exe),-X/cc1d)
-	dh_shlibdeps -p$(p_gdc)
+	dh_shlibdeps -p$(p_gdc_n)
 
-	mkdir -p $(d_gdc)/usr/share/lintian/overrides
-	echo '$(p_gdc) binary: hardening-no-pie' \
-	  > $(d_gdc)/usr/share/lintian/overrides/$(p_gdc)
+	echo '$(p_gdc_n) binary: hardening-no-pie' \
+	  > $(d_gdc_n)/usr/share/lintian/overrides/$(p_gdc_n)
+
+	echo $(p_gdc_n) >> debian/arch_binaries
+
+	find $(d_gdc_n) -type d -empty -delete
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-gdc: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gdc)
+	dh_installdirs -p$(p_gdc) $(dirs_gdc)
+
+	dh_installdocs -p$(p_gdc)
+	dh_installchangelogs -p$(p_gdc) src/gcc/d/ChangeLog
+
+	ln -sf $(cmd_prefix)gdc$(pkg_ver) \
+	    $(d_gdc)/$(PF)/bin/gdc$(pkg_ver)
+ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl)
+	ln -sf $(cmd_prefix)gdc$(pkg_ver).1.gz \
+	    $(d_gdc)/$(PF)/share/man/man1/gdc$(pkg_ver).1.gz
+endif
+
+	dh_link -p$(p_gdc) \
+		/$(docdir)/$(p_gcc)/README.Bugs \
+		/$(docdir)/$(p_gdc)/README.Bugs
 
 	echo $(p_gdc) >> debian/arch_binaries
 
diff -u gcc-8-8.2.0/debian/rules.d/binary-fortran.mk gcc-8-8.2.0/debian/rules.d/binary-fortran.mk
--- gcc-8-8.2.0/debian/rules.d/binary-fortran.mk
+++ gcc-8-8.2.0/debian/rules.d/binary-fortran.mk
@@ -45,7 +45,10 @@
   ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
     arch_binaries  := $(arch_binaries) fdev-multi
   endif
-  arch_binaries  := $(arch_binaries) fdev
+  arch_binaries  := $(arch_binaries) fdev-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries  := $(arch_binaries) fdev
+  endif
   ifneq ($(DEB_CROSS),yes)
     ifneq ($(GFDL_INVARIANT_FREE),yes)
       indep_binaries := $(indep_binaries) fortran-doc
@@ -53,29 +56,38 @@
   endif
 endif
 
-p_g95	= gfortran$(pkg_ver)$(cross_bin_arch)
+p_g95n  = gfortran$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+p_g95	= gfortran$(pkg_ver)
 p_g95_m	= gfortran$(pkg_ver)-multilib$(cross_bin_arch)
 p_g95d	= gfortran$(pkg_ver)-doc
 p_flib	= libgfortran$(FORTRAN_SONAME)$(cross_lib_arch)
 
+d_g95n  = debian/$(p_g95n)
 d_g95	= debian/$(p_g95)
 d_g95_m	= debian/$(p_g95_m)
 d_g95d	= debian/$(p_g95d)
 
-dirs_g95 = \
-	$(docdir)/$(p_xbase)/fortran \
+dirs_g95n = \
 	$(PF)/bin \
 	$(gcc_lexec_dir) \
 	$(gcc_lib_dir) \
 	$(PF)/include \
-	$(PF)/share/man/man1
-files_g95 = \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
+
+dirs_g95 = \
+	$(docdir)/$(p_xbase)/fortran \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
+
+files_g95n = \
 	$(PF)/bin/$(cmd_prefix)gfortran$(pkg_ver) \
 	$(gcc_lib_dir)/finclude \
 	$(gcc_lexec_dir)/f951 
 
 ifneq ($(GFDL_INVARIANT_FREE),yes)
-  files_g95 += \
+  files_g95n += \
 	$(PF)/share/man/man1/$(cmd_prefix)gfortran$(pkg_ver).1
 endif
 
@@ -164,6 +176,41 @@
 	$(call do_fortran,sf)
 
 # ----------------------------------------------------------------------
+$(binary_stamp)-fdev-nat: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_g95n)
+	dh_installdirs -p$(p_g95n) $(dirs_g95n)
+
+	$(dh_compat2) dh_movefiles -p$(p_g95n) $(files_g95n)
+
+	mv $(d)/$(usr_lib)/libgfortran.spec $(d_g95n)/$(gcc_lib_dir)/
+
+	echo '$(p_g95n) binary: hardening-no-pie' \
+	  > $(d_g95n)/usr/share/lintian/overrides/$(p_g95n)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	echo '$(p_g95n) binary: binary-without-manpage' \
+	  >> $(d_g95n)/usr/share/lintian/overrides/$(p_g95n)
+endif
+
+	debian/dh_doclink -p$(p_g95n) $(p_xbase)
+
+	debian/dh_rmemptydirs -p$(p_g95n)
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+	$(DWZ) \
+	  $(d_g95n)/$(gcc_lexec_dir)/f951
+endif
+	dh_strip -p$(p_g95n) \
+	  $(if $(unstripped_exe),-X/f951)
+	dh_shlibdeps -p$(p_g95n)
+
+	echo $(p_g95n) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
 $(binary_stamp)-fdev: $(install_stamp)
 	dh_testdir
 	dh_testroot
@@ -172,22 +219,13 @@
 	rm -rf $(d_g95)
 	dh_installdirs -p$(p_g95) $(dirs_g95)
 
-	$(dh_compat2) dh_movefiles -p$(p_g95) $(files_g95)
-
-	mv $(d)/$(usr_lib)/libgfortran.spec $(d_g95)/$(gcc_lib_dir)/
-
-ifeq ($(unprefixed_names),yes)
 	ln -sf $(cmd_prefix)gfortran$(pkg_ver) \
 	    $(d_g95)/$(PF)/bin/gfortran$(pkg_ver)
-  ifneq ($(GFDL_INVARIANT_FREE),yes)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
 	ln -sf $(cmd_prefix)gfortran$(pkg_ver).1 \
 	    $(d_g95)/$(PF)/share/man/man1/gfortran$(pkg_ver).1
-  endif
 endif
 
-	mkdir -p $(d_g95)/usr/share/lintian/overrides
-	echo '$(p_g95) binary: hardening-no-pie' \
-	  > $(d_g95)/usr/share/lintian/overrides/$(p_g95)
 ifeq ($(GFDL_INVARIANT_FREE),yes)
 	echo '$(p_g95) binary: binary-without-manpage' \
 	  >> $(d_g95)/usr/share/lintian/overrides/$(p_g95)
@@ -199,13 +237,6 @@
 		$(d_g95)/$(docdir)/$(p_xbase)/fortran/changelog
 	debian/dh_rmemptydirs -p$(p_g95)
 
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
-	$(DWZ) \
-	  $(d_g95)/$(gcc_lexec_dir)/f951
-endif
-	dh_strip -p$(p_g95) \
-	  $(if $(unstripped_exe),-X/f951)
-	dh_shlibdeps -p$(p_g95)
 	echo $(p_g95) >> debian/arch_binaries
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff -u gcc-8-8.2.0/debian/rules.d/binary-gcc.mk gcc-8-8.2.0/debian/rules.d/binary-gcc.mk
--- gcc-8-8.2.0/debian/rules.d/binary-gcc.mk
+++ gcc-8-8.2.0/debian/rules.d/binary-gcc.mk
@@ -6,7 +6,10 @@
     arch_binaries  := $(arch_binaries) gcc-plugindev
   endif
 
-  arch_binaries  := $(arch_binaries) gcc
+  arch_binaries  := $(arch_binaries) gcc-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries  := $(arch_binaries) gcc
+  endif
 
   ifneq ($(DEB_CROSS),yes)
     ifneq ($(GFDL_INVARIANT_FREE),yes)
@@ -26,15 +29,21 @@
 # not all files $(PF)/include/*.h are part of gcc,
 # but it becomes difficult to name all these files ...
 
-dirs_gcc = \
-	$(docdir)/$(p_xbase)/{gcc,libssp,gomp,itm,quadmath,sanitizer,mpx} \
+dirs_gccn = \
 	$(PF)/bin \
 	$(gcc_lexec_dir) \
 	$(gcc_lib_dir)/{include,include-fixed} \
-	$(PF)/share/man/man1 $(libgcc_dir)
+	$(PF)/share/man/man1 $(libgcc_dir) \
+	usr/share/lintian/overrides
+
+dirs_gcc = \
+	$(docdir)/$(p_xbase)/{gcc,libssp,gomp,itm,quadmath,sanitizer,mpx} \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
 
 # XXX: what about triarch mapping?
-files_gcc = \
+files_gccn = \
 	$(PF)/bin/$(cmd_prefix){gcc,gcov,gcov-tool,gcov-dump}$(pkg_ver) \
 	$(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \
 	$(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \
@@ -43,15 +52,15 @@
 		&& echo $(gcc_lib_dir)/SYSCALLS.c.X)
 
 ifeq ($(with_libcc1_plugin),yes)
-    files_gcc += \
+    files_gccn += \
 	$(gcc_lib_dir)/plugin/libc[cp]1plugin.so{,.0,.0.0.0}
 endif
 
-files_gcc += \
+files_gccn += \
 	$(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0}
 
 ifeq ($(DEB_STAGE),stage1)
-    files_gcc += \
+    files_gccn += \
 	$(gcc_lib_dir)/include \
 	$(shell for h in \
 		  README limits.h syslimits.h; \
@@ -62,7 +71,7 @@
 endif
 
 ifneq ($(GFDL_INVARIANT_FREE),yes)
-    files_gcc += \
+    files_gccn += \
 	$(PF)/share/man/man1/$(cmd_prefix){gcc,gcov}$(pkg_ver).1 \
 	$(PF)/share/man/man1/$(cmd_prefix)gcov-{dump,tool}$(pkg_ver).1
 endif
@@ -83,6 +92,59 @@
 d_tst	= debian/$(p_tst)
 
 # ----------------------------------------------------------------------
+$(binary_stamp)-gcc-nat: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gccn)
+	dh_installdirs -p$(p_gccn) $(dirs_gccn)
+
+ifeq ($(with_gomp),yes)
+	mv $(d)/$(usr_lib)/libgomp*.spec $(d_gccn)/$(gcc_lib_dir)/
+endif
+ifeq ($(with_itm),yes)
+	mv $(d)/$(usr_lib)/libitm*.spec $(d_gccn)/$(gcc_lib_dir)/
+endif
+ifeq ($(with_asan),yes)
+	mv $(d)/$(usr_lib)/libsanitizer*.spec $(d_gccn)/$(gcc_lib_dir)/
+endif
+ifeq ($(with_mpx),yes)
+	mv $(d)/$(usr_lib)/libmpx.spec $(d_gccn)/$(gcc_lib_dir)/
+endif
+ifeq ($(with_cc1),yes)
+	rm -f $(d)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so
+	dh_link -p$(p_gccn) \
+	    /$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so.$(CC1_SONAME) \
+	    /$(gcc_lib_dir)/libcc1.so
+endif
+
+	$(dh_compat2) dh_movefiles -p$(p_gccn) $(files_gccn)
+
+#	dh_installdebconf
+	debian/dh_doclink -p$(p_gccn) $(p_xbase)
+
+	echo '$(p_gccn) binary: hardening-no-pie' \
+	  > $(d_gccn)/usr/share/lintian/overrides/$(p_gccn)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	echo '$(p_gccn) binary: binary-without-manpage' \
+	  >> $(d_gccn)/usr/share/lintian/overrides/$(p_gccn)
+endif
+
+	debian/dh_rmemptydirs -p$(p_gccn)
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+	$(DWZ) \
+	  $(d_gccn)/$(gcc_lexec_dir)/lto1 \
+	  $(d_gccn)/$(gcc_lexec_dir)/lto-wrapper \
+	  $(d_gccn)/$(gcc_lexec_dir)/collect2
+endif
+	dh_strip -p$(p_gccn) \
+	  $(if $(unstripped_exe),-X/lto1)
+	dh_shlibdeps -p$(p_gccn)
+	echo $(p_gccn) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
 $(binary_stamp)-gcc: $(install_dependencies)
 	dh_testdir
 	dh_testroot
@@ -102,12 +164,10 @@
 		$(d_gcc)/$(docdir)/$(p_xbase)/libssp/changelog
 endif
 ifeq ($(with_gomp),yes)
-	mv $(d)/$(usr_lib)/libgomp*.spec $(d_gcc)/$(gcc_lib_dir)/
 	cp -p $(srcdir)/libgomp/ChangeLog \
 		$(d_gcc)/$(docdir)/$(p_xbase)/gomp/changelog
 endif
 ifeq ($(with_itm),yes)
-	mv $(d)/$(usr_lib)/libitm*.spec $(d_gcc)/$(gcc_lib_dir)/
 	cp -p $(srcdir)/libitm/ChangeLog \
 		$(d_gcc)/$(docdir)/$(p_xbase)/itm/changelog
 endif
@@ -116,40 +176,28 @@
 		$(d_gcc)/$(docdir)/$(p_xbase)/quadmath/changelog
 endif
 ifeq ($(with_asan),yes)
-	mv $(d)/$(usr_lib)/libsanitizer*.spec $(d_gcc)/$(gcc_lib_dir)/
 	cp -p $(srcdir)/libsanitizer/ChangeLog \
 		$(d_gcc)/$(docdir)/$(p_xbase)/sanitizer/changelog
 endif
 ifeq ($(with_mpx),yes)
-	mv $(d)/$(usr_lib)/libmpx.spec $(d_gcc)/$(gcc_lib_dir)/
 	cp -p $(srcdir)/libmpx/ChangeLog \
 		$(d_gcc)/$(docdir)/$(p_xbase)/mpx/changelog
 endif
-ifeq ($(with_cc1),yes)
-	rm -f $(d)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so
-	dh_link -p$(p_gcc) \
-	    /$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so.$(CC1_SONAME) \
-	    /$(gcc_lib_dir)/libcc1.so
-endif
-
-	$(dh_compat2) dh_movefiles -p$(p_gcc) $(files_gcc)
 
-ifeq ($(unprefixed_names),yes)
 	for i in gcc gcov gcov-dump gcov-tool gcc-ar gcc-nm gcc-ranlib; do \
 	  ln -sf $(cmd_prefix)$$i$(pkg_ver) \
 	    $(d_gcc)/$(PF)/bin/$$i$(pkg_ver); \
 	done
-  ifneq ($(GFDL_INVARIANT_FREE),yes)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
 	for i in gcc gcov gcov-dump gcov-tool; do \
 	  ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \
 	    $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \
 	done
-  endif
+endif
 	for i in gcc-ar gcc-nm gcc-ranlib; do \
 	  ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \
 	    $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \
 	done
-endif
 
 #	dh_installdebconf
 	debian/dh_doclink -p$(p_gcc) $(p_xbase)
@@ -169,28 +217,14 @@
 	    echo ""; \
 	    cat $(builddir)/gcc/.bad_compare; \
 	  ) > $(d_gcc)/$(docdir)/$(p_xbase)/BOOTSTRAP_COMPARISION_FAILURE; \
-	else \
-	  true; \
 	fi
 
-	mkdir -p $(d_gcc)/usr/share/lintian/overrides
-	echo '$(p_gcc) binary: hardening-no-pie' \
-	  > $(d_gcc)/usr/share/lintian/overrides/$(p_gcc)
 ifeq ($(GFDL_INVARIANT_FREE),yes)
 	echo '$(p_gcc) binary: binary-without-manpage' \
 	  >> $(d_gcc)/usr/share/lintian/overrides/$(p_gcc)
 endif
 
 	debian/dh_rmemptydirs -p$(p_gcc)
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
-	$(DWZ) \
-	  $(d_gcc)/$(gcc_lexec_dir)/lto1 \
-	  $(d_gcc)/$(gcc_lexec_dir)/lto-wrapper \
-	  $(d_gcc)/$(gcc_lexec_dir)/collect2
-endif
-	dh_strip -p$(p_gcc) \
-	  $(if $(unstripped_exe),-X/lto1)
-	dh_shlibdeps -p$(p_gcc)
 	echo $(p_gcc) >> debian/arch_binaries
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff -u gcc-8-8.2.0/debian/rules.d/binary-go.mk gcc-8-8.2.0/debian/rules.d/binary-go.mk
--- gcc-8-8.2.0/debian/rules.d/binary-go.mk
+++ gcc-8-8.2.0/debian/rules.d/binary-go.mk
@@ -15,7 +15,10 @@
 endif
 
 ifneq ($(DEB_STAGE),rtlibs)
-  arch_binaries  := $(arch_binaries) gccgo
+  arch_binaries  := $(arch_binaries) gccgo-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries  := $(arch_binaries) gccgo
+  endif
   ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32)))
     arch_binaries  := $(arch_binaries) gccgo-multi
   endif
@@ -26,29 +29,36 @@
   endif
 endif
 
-p_go	= gccgo$(pkg_ver)$(cross_bin_arch)
+p_go_n  = gccgo$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+p_go	= gccgo$(pkg_ver)
 p_go_m	= gccgo$(pkg_ver)-multilib$(cross_bin_arch)
 p_god	= gccgo$(pkg_ver)-doc
 p_golib	= libgo$(GO_SONAME)$(cross_lib_arch)
 
+d_go_n  = debian/$(p_go_n)
 d_go	= debian/$(p_go)
 d_go_m	= debian/$(p_go_m)
 d_god	= debian/$(p_god)
 d_golib	= debian/$(p_golib)
 
-dirs_go = \
-	$(docdir)/$(p_xbase)/go \
+dirs_go_n = \
 	$(PF)/bin \
 	$(gcc_lexec_dir) \
 	$(gcc_lib_dir) \
 	$(PF)/include \
-	$(PF)/share/man/man1
-files_go = \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
+dirs_go = \
+	$(docdir)/$(p_xbase)/go \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
+files_go_n = \
 	$(PF)/bin/$(cmd_prefix)gccgo$(pkg_ver) \
 	$(gcc_lexec_dir)/go1
 
 ifneq (,$(filter $(build_type), build-native cross-build-native))
-  files_go += \
+  files_go_n += \
 	$(PF)/bin/$(cmd_prefix){go,gofmt}$(pkg_ver) \
 	$(gcc_lexec_dir)/cgo \
 	$(gcc_lexec_dir)/{buildid,test2json,vet} \
@@ -56,18 +66,20 @@
 endif
 
 ifneq ($(GFDL_INVARIANT_FREE),yes)
-  files_go += \
+  files_go_n += \
 	$(PF)/share/man/man1/$(cmd_prefix)gccgo$(pkg_ver).1
 endif
 
 ifeq ($(with_standalone_go),yes)
 
-  dirs_go += \
+  dirs_go_n += \
 	$(gcc_lib_dir)/include \
 	$(PF)/share/man/man1
+  dirs_go += \
+	$(PF)/share/man/man1
 
 # XXX: what about triarch mapping?
-  files_go += \
+  files_go_n += \
 	$(PF)/bin/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver) \
 	$(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \
 	$(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \
@@ -79,26 +91,26 @@
 		&& echo $(gcc_lib_dir)/SYSCALLS.c.X)
 
   ifeq ($(with_cc1),yes)
-    files_go += \
+    files_go_n += \
 	$(gcc_lib_dir)/plugin/libcc1plugin.so{,.0,.0.0.0}
   endif
 
   ifneq ($(GFDL_INVARIANT_FREE),yes)
-    files_go += \
+    files_go_n += \
 	$(PF)/share/man/man1/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver).1
   endif
 
   ifeq ($(biarch64),yes)
-    files_go += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o}
+    files_go_n += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o}
   endif
   ifeq ($(biarch32),yes)
-    files_go += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o}
+    files_go_n += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o}
   endif
   ifeq ($(biarchn32),yes)
-    files_go += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o}
+    files_go_n += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o}
   endif
   ifeq ($(biarchx32),yes)
-    files_go += $(gcc_lib_dir)/$(biarchx32subdir)/{libgcc*,libgcov.a,*.o}
+    files_go_n += $(gcc_lib_dir)/$(biarchx32subdir)/{libgcc*,libgcov.a,*.o}
   endif
 endif
 
@@ -194,13 +206,13 @@
 	$(call do_gccgo,x32)
 
 # ----------------------------------------------------------------------
-$(binary_stamp)-gccgo: $(install_stamp)
+$(binary_stamp)-gccgo-nat: $(install_stamp)
 	dh_testdir
 	dh_testroot
 	mv $(install_stamp) $(install_stamp)-tmp
 
-	rm -rf $(d_go)
-	dh_installdirs -p$(p_go) $(dirs_go)
+	rm -rf $(d_go_n)
+	dh_installdirs -p$(p_go_n) $(dirs_go_n)
 
 	mv $(d)/$(usr_lib)/{libgobegin,libgolibbegin}.a \
 		$(d)/$(gcc_lib_dir)/
@@ -221,16 +233,58 @@
 		$(d)/$(gcc_lib_dir)/x32/; \
 	fi
 
-	$(call do_go_dev,,$(p_go))
+	$(call do_go_dev,,$(p_go_n))
 
-	$(dh_compat2) dh_movefiles -p$(p_go) $(files_go)
+	$(dh_compat2) dh_movefiles -p$(p_go_n) $(files_go_n)
 
 ifneq (,$(findstring gccgo,$(PKGSOURCE)))
-	rm -rf $(d_go)/$(gcc_lib_dir)/include/cilk
-	rm -rf $(d_go)/$(gcc_lib_dir)/include/openacc.h
+	rm -rf $(d_go_n)/$(gcc_lib_dir)/include/cilk
+	rm -rf $(d_go_n)/$(gcc_lib_dir)/include/openacc.h
 endif
 
-ifeq ($(unprefixed_names),yes)
+ifeq ($(with_standalone_go),yes)
+  ifeq ($(with_gomp),yes)
+	mv $(d)/$(usr_lib)/libgomp*.spec $(d_go_n)/$(gcc_lib_dir)/
+  endif
+  ifeq ($(with_cc1),yes)
+	rm -f $(d)/$(usr_lib)/libcc1.so
+	dh_link -p$(p_go_n) \
+		/$(usr_lib)/libcc1.so.$(CC1_SONAME) /$(gcc_lib_dir)/libcc1.so
+  endif
+endif
+
+	echo '$(p_go_n) binary: unstripped-binary-or-object' \
+	  > $(d_go_n)/usr/share/lintian/overrides/$(p_go_n)
+	echo '$(p_go_n) binary: hardening-no-pie' \
+	  >> $(d_go_n)/usr/share/lintian/overrides/$(p_go_n)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	echo '$(p_go_n) binary: binary-without-manpage' \
+	  >> $(d_go_n)/usr/share/lintian/overrides/$(p_go_n)
+endif
+
+	debian/dh_doclink -p$(p_go_n) $(p_xbase)
+
+	debian/dh_rmemptydirs -p$(p_go_n)
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+	$(DWZ) \
+	  $(d_go_n)/$(gcc_lexec_dir)/go1
+endif
+	dh_strip -v -p$(p_go_n) -X/cgo -X/go$(pkg_ver) -X/gofmt$(pkg_ver) \
+	  -X/buildid -X/test2json -X/vet $(if $(unstripped_exe),-X/go1)
+	dh_shlibdeps -p$(p_go_n)
+	echo $(p_go_n) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-gccgo: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_go)
+	dh_installdirs -p$(p_go) $(dirs_go)
+
 	ln -sf $(cmd_prefix)gccgo$(pkg_ver) \
 	    $(d_go)/$(PF)/bin/gccgo$(pkg_ver)
 	ln -sf $(cmd_prefix)go$(pkg_ver) \
@@ -238,43 +292,27 @@
 	ln -sf $(cmd_prefix)gofmt$(pkg_ver) \
 	    $(d_go)/$(PF)/bin/gofmt$(pkg_ver)
   ifneq ($(GFDL_INVARIANT_FREE),yes)
-	ln -sf $(cmd_prefix)gccgo$(pkg_ver).1 \
-	    $(d_go)/$(PF)/share/man/man1/gccgo$(pkg_ver).1
+	ln -sf $(cmd_prefix)gccgo$(pkg_ver).1.gz \
+	    $(d_go)/$(PF)/share/man/man1/gccgo$(pkg_ver).1.gz
   endif
-	ln -sf $(cmd_prefix)go$(pkg_ver).1 \
-	    $(d_go)/$(PF)/share/man/man1/go$(pkg_ver).1
-	ln -sf $(cmd_prefix)gofmt$(pkg_ver).1 \
-	    $(d_go)/$(PF)/share/man/man1/gofmt$(pkg_ver).1
-endif
+	ln -sf $(cmd_prefix)go$(pkg_ver).1.gz \
+	    $(d_go)/$(PF)/share/man/man1/go$(pkg_ver).1.gz
+	ln -sf $(cmd_prefix)gofmt$(pkg_ver).1.gz \
+	    $(d_go)/$(PF)/share/man/man1/gofmt$(pkg_ver).1.gz
 
 ifeq ($(with_standalone_go),yes)
-  ifeq ($(unprefixed_names),yes)
 	for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \
 	  ln -sf $(cmd_prefix)$$i$(pkg_ver) \
 	    $(d_go)/$(PF)/bin/$$i$(pkg_ver); \
 	done
-    ifneq ($(GFDL_INVARIANT_FREE),yes)
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
 	for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \
-	  ln -sf $(cmd_prefix)gcc$(pkg_ver).1 \
-	    $(d_go)/$(PF)/share/man/man1/$$i$(pkg_ver).1; \
+	  ln -sf $(cmd_prefix)gcc$(pkg_ver).1.gz \
+	    $(d_go)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \
 	done
-    endif
-  endif
-  ifeq ($(with_gomp),yes)
-	mv $(d)/$(usr_lib)/libgomp*.spec $(d_go)/$(gcc_lib_dir)/
-  endif
-  ifeq ($(with_cc1),yes)
-	rm -f $(d)/$(usr_lib)/libcc1.so
-	dh_link -p$(p_go) \
-		/$(usr_lib)/libcc1.so.$(CC1_SONAME) /$(gcc_lib_dir)/libcc1.so
   endif
 endif
 
-	mkdir -p $(d_go)/usr/share/lintian/overrides
-	echo '$(p_go) binary: unstripped-binary-or-object' \
-	  > $(d_go)/usr/share/lintian/overrides/$(p_go)
-	echo '$(p_go) binary: hardening-no-pie' \
-	  > $(d_go)/usr/share/lintian/overrides/$(p_go)
 ifeq ($(GFDL_INVARIANT_FREE),yes)
 	echo '$(p_go) binary: binary-without-manpage' \
 	  >> $(d_go)/usr/share/lintian/overrides/$(p_go)
@@ -286,13 +324,6 @@
 #		$(d_go)/$(docdir)/$(p_base)/go/changelog
 	debian/dh_rmemptydirs -p$(p_go)
 
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
-	$(DWZ) \
-	  $(d_go)/$(gcc_lexec_dir)/go1
-endif
-	dh_strip -v -p$(p_go) -X/cgo -X/go$(pkg_ver) -X/gofmt$(pkg_ver) \
-	  -X/buildid -X/test2json -X/vet $(if $(unstripped_exe),-X/go1)
-	dh_shlibdeps -p$(p_go)
 	echo $(p_go) >> debian/arch_binaries
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff -u gcc-8-8.2.0/debian/rules.d/binary-objc.mk gcc-8-8.2.0/debian/rules.d/binary-objc.mk
--- gcc-8-8.2.0/debian/rules.d/binary-objc.mk
+++ gcc-8-8.2.0/debian/rules.d/binary-objc.mk
@@ -2,22 +2,58 @@
   ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
     arch_binaries  := $(arch_binaries) objc-multi
   endif
-  arch_binaries := $(arch_binaries) objc
+  arch_binaries := $(arch_binaries) objc-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries := $(arch_binaries) objc
+  endif
 endif
 
-p_objc	= gobjc$(pkg_ver)$(cross_bin_arch)
+p_objc_n = gobjc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+d_objc_n = debian/$(p_objc_n)
+
+p_objc	= gobjc$(pkg_ver)
 d_objc	= debian/$(p_objc)
 
 p_objc_m= gobjc$(pkg_ver)-multilib$(cross_bin_arch)
 d_objc_m= debian/$(p_objc_m)
 
+dirs_objc_n = \
+	$(gcc_lexec_dir) \
+	usr/share/lintian/overrides
+
 dirs_objc = \
-	$(docdir)/$(p_xbase)/ObjC \
-	$(gcc_lexec_dir)
+	$(docdir)/$(p_xbase)/ObjC
 
-files_objc = \
+files_objc_n = \
 	$(gcc_lexec_dir)/cc1obj
 
+$(binary_stamp)-objc-nat: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_objc_n)
+	dh_installdirs -p$(p_objc_n) $(dirs_objc_n)
+	$(dh_compat2) dh_movefiles -p$(p_objc_n) $(files_objc_n)
+
+	echo '$(p_objc_n) binary: hardening-no-pie' \
+	  > $(d_objc_n)/usr/share/lintian/overrides/$(p_objc_n)
+
+	debian/dh_doclink -p$(p_objc_n) $(p_xbase)
+
+	debian/dh_rmemptydirs -p$(p_objc_n)
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+	$(DWZ) \
+	  $(d_objc_n)/$(gcc_lexec_dir)/cc1obj
+endif
+	dh_strip -p$(p_objc_n) \
+	  $(if $(unstripped_exe),-X/cc1obj)
+	dh_shlibdeps -p$(p_objc_n)
+	echo $(p_objc_n) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
 $(binary_stamp)-objc: $(install_stamp)
 	dh_testdir
 	dh_testroot
@@ -25,7 +61,6 @@
 
 	rm -rf $(d_objc)
 	dh_installdirs -p$(p_objc) $(dirs_objc)
-	$(dh_compat2) dh_movefiles -p$(p_objc) $(files_objc)
 
 	cp -p $(srcdir)/libobjc/{README*,THREADS*} \
 		$(d_objc)/$(docdir)/$(p_xbase)/ObjC/.
@@ -33,25 +68,10 @@
 	cp -p $(srcdir)/libobjc/ChangeLog \
 		$(d_objc)/$(docdir)/$(p_xbase)/ObjC/changelog.libobjc
 
-	mkdir -p $(d_objc)/usr/share/lintian/overrides
-	echo '$(p_objc) binary: hardening-no-pie' \
-	  > $(d_objc)/usr/share/lintian/overrides/$(p_objc)
-ifeq ($(GFDL_INVARIANT_FREE),yes)
-	echo '$(p_objc) binary: binary-without-manpage' \
-	  >> $(d_objc)/usr/share/lintian/overrides/$(p_objc)
-endif
-
 	debian/dh_doclink -p$(p_objc) $(p_xbase)
 
 	debian/dh_rmemptydirs -p$(p_objc)
 
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
-	$(DWZ) \
-	  $(d_objc)/$(gcc_lexec_dir)/cc1obj
-endif
-	dh_strip -p$(p_objc) \
-	  $(if $(unstripped_exe),-X/cc1obj)
-	dh_shlibdeps -p$(p_objc)
 	echo $(p_objc) >> debian/arch_binaries
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff -u gcc-8-8.2.0/debian/rules2 gcc-8-8.2.0/debian/rules2
--- gcc-8-8.2.0/debian/rules2
+++ gcc-8-8.2.0/debian/rules2
@@ -1834,6 +1834,10 @@
   pkg_ver := -$(BASE_VERSION)
 endif
 
+p_gccn = gcc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+p_cppn = cpp$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+p_cxxn = g++$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+
 # if native or rtlibs build
 ifeq ($(if $(filter yes,$(DEB_CROSS)),$(if $(filter rtlibs,$(DEB_STAGE)),native,cross),native),native)
   p_base = gcc$(pkg_ver)-base
@@ -1867,9 +1871,12 @@
 d_base	= debian/$(p_base)
 d_xbase = debian/$(p_xbase)
 d_gcc	= debian/$(p_gcc)
+d_gccn  = debian/$(p_gccn)
 d_cpp	= debian/$(p_cpp)
+d_cppn  = debian/$(p_cppn)
 d_cppd	= debian/$(p_cppd)
 d_cxx	= debian/$(p_cxx)
+d_cxxn	= debian/$(p_cxxn)
 d_doc	= debian/$(p_doc)
 d_lgcc	= debian/$(p_lgcc)
 d_hppa64= debian/$(p_hppa64)

Reply to: