Hi guys, Attached is a backport to gcc-4.4 of all my multiarch changes to date for gcc-4.5. Thanks, -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer http://www.debian.org/ slangasek@ubuntu.com vorlon@debian.org
# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: steve.langasek@linaro.org-20110317080930-\ # w1x4iozcu4a86okt # target_branch: svn+ssh://svn.debian.org/svn/gcccvs/branches/sid/gcc-\ # 4.4 # testament_sha1: 0e2cfcd8f7daa9f2f06ef081267b0ccc5d9dad1e # timestamp: 2011-03-17 01:09:47 -0700 # base_revision_id: svn-v4:6ca36cf4-e1d1-0310-8c6f-\ # e303bb2178ca:branches/sid/gcc-4.4:5107 # # Begin patch === modified file 'debian/changelog' --- debian/changelog 2011-03-13 22:21:44 +0000 +++ debian/changelog 2011-03-17 08:09:30 +0000 @@ -1,3 +1,34 @@ +gcc-4.4 (4.4.5-15) UNRELEASED; urgency=low + + * Backport multiarch support from gcc-4.5. + * debian/control.m4: add missing Multi-Arch: same for libgcc4; make sure + Multi-Arch: same doesn't get set for libmudflap when building an + Architecture: all cross-compiler package. + * debian/rules2: use $libdir for libiberty.a. + * debian/rules2: the spu build is not a multiarch build; look in the + correct directory. + * debian/rules.d/binary-java.mk: jvm-exports path is /usr/lib/jvm-exports, + not $(libdir)/jvm-exports. OTOH, libgcj_bc *is* in $(libdir). + * debian/patches/gcc-multiarch-*.diff: make sure we're using the same + set_multiarch_path definition for all variants. + * debian/control.m4: Make sure our libs Pre-Depend on + 'multiarch-support' when building for multiarch. + * debian/patches/gcc-multiarch*, debian/rules.patch: use i386 in the + multiarch path for amd64 / kfreebsd-amd64, not i486 or i686. This lets + us use a common set of paths on both Debian and Ubuntu, regardless of + the target default optimization level. + * debian/rules.conf: when building for multiarch, we require a + libc-dev that supports the corresponding paths. + * debian/rules.conf: Make dpkg-dev versioned build-dependency + conditional on whether we want to build for multiarch. + * Add a new patch, gcc-multiarch+biarch.diff, used only when building for + multiarch to set our multilib paths to the correct relative directories. + * debian/rules.defs: support turning on multiarch build by distribution. + * debian/rules2: When DEB_HOST_MULTIARCH is available, use it as our + multiarch path. + + -- Steve Langasek <vorlon@debian.org> Thu, 17 Mar 2011 01:07:37 -0700 + gcc-4.4 (4.4.5-14) unstable; urgency=low * Update to SVN 20110313 from the gcc-4_4-branch (r170916). === modified file 'debian/control.m4' --- debian/control.m4 2011-03-13 22:21:44 +0000 +++ debian/control.m4 2011-03-17 08:09:30 +0000 @@ -46,9 +46,9 @@ ')dnl SRCNAME Standards-Version: 3.9.1 ifdef(`TARGET',`dnl cross -Build-Depends: dpkg-dev (>= 1.14.15), debhelper (>= 5.0.62), dpkg-cross (>= 1.25.99), LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP AUTOGEN_BUILD_DEP CLOOG_BUILD_DEP AUTO_BUILD_DEP SOURCE_BUILD_DEP CROSS_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP zlib1g-dev, gawk, lzma, xz-utils, patchutils, BINUTILS_BUILD_DEP, bison (>= 1:2.3), flex, realpath (>= 1.9.12), lsb-release, make (>= 3.81), quilt +Build-Depends: DPKG_BUILD_DEP debhelper (>= 5.0.62), dpkg-cross (>= 1.25.99), LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP AUTOGEN_BUILD_DEP CLOOG_BUILD_DEP AUTO_BUILD_DEP SOURCE_BUILD_DEP CROSS_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP zlib1g-dev, gawk, lzma, xz-utils, patchutils, BINUTILS_BUILD_DEP, bison (>= 1:2.3), flex, realpath (>= 1.9.12), lsb-release, make (>= 3.81), quilt ',`dnl native -Build-Depends: dpkg-dev (>= 1.14.15), debhelper (>= 5.0.62), g++-multilib [amd64 i386 mips mipsel powerpc ppc64 s390 sparc kfreebsd-amd64], LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP AUTO_BUILD_DEP AUTOGEN_BUILD_DEP libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], zlib1g-dev, gawk, lzma, xz-utils, patchutils, BINUTILS_BUILD_DEP, binutils-hppa64 (>= BINUTILSV) [hppa], gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, texinfo (>= 4.3), FORTRAN_BUILD_DEP locales [locale_no_archs], procps, sharutils, PASCAL_BUILD_DEP JAVA_BUILD_DEP GNAT_BUILD_DEP SPU_BUILD_DEP CLOOG_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP ELF_BUILD_DEP CHECK_BUILD_DEP GDC_BUILD_DEP realpath (>= 1.9.12), chrpath, lsb-release, make (>= 3.81), quilt +Build-Depends: DPKG_BUILD_DEP debhelper (>= 5.0.62), g++-multilib [amd64 i386 mips mipsel powerpc ppc64 s390 sparc kfreebsd-amd64], LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP AUTO_BUILD_DEP AUTOGEN_BUILD_DEP libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], zlib1g-dev, gawk, lzma, xz-utils, patchutils, BINUTILS_BUILD_DEP, binutils-hppa64 (>= BINUTILSV) [hppa], gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, texinfo (>= 4.3), FORTRAN_BUILD_DEP locales [locale_no_archs], procps, sharutils, PASCAL_BUILD_DEP JAVA_BUILD_DEP GNAT_BUILD_DEP SPU_BUILD_DEP CLOOG_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP ELF_BUILD_DEP CHECK_BUILD_DEP GDC_BUILD_DEP realpath (>= 1.9.12), chrpath, lsb-release, make (>= 3.81), quilt Build-Depends-Indep: LIBSTDCXX_BUILD_INDEP JAVA_BUILD_INDEP ')dnl dnl Build-Conflicts: qt3-dev-tools @@ -167,6 +167,7 @@ Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} ifdef(`TARGET',`Provides: libgcc1-TARGET-dcv1 ',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support '))`'dnl Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') Shared version of the support library, a library of internal subroutines @@ -200,6 +201,7 @@ Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} ifdef(`TARGET',`Provides: libgcc2-TARGET-dcv1 ',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support '))`'dnl Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') Shared version of the support library, a library of internal subroutines @@ -230,6 +232,9 @@ ifenabled(`lib4gcc',` Package: libgcc4`'LS Architecture: ifdef(`TARGET',`all',`hppa') +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl Section: ifdef(`TARGET',`devel',`libs') Priority: ifdef(`TARGET',`extra',required) Depends: ifdef(`STANDALONEJAVA',`gcj`'PV-base (>= ${gcj:Version})',`BASEDEP'), ${shlibs:Depends}, ${misc:Depends} @@ -245,6 +250,8 @@ Package: libgcc4-dbg`'LS Architecture: ifdef(`TARGET',`all',`hppa') +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +'))`'dnl Section: debug Priority: extra Depends: BASEDEP, libgcc4`'LS (= ${gcc:Version}), ${misc:Depends} @@ -376,6 +383,7 @@ Package: libgccmath`'GCCMATH_SO`'LS Architecture: i386 ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support ')`'dnl Section: libs Priority: PRI(optional) @@ -568,8 +576,9 @@ ifenabled(`libmudf',` Package: libmudflap`'MF_SO`'LS Architecture: ifdef(`TARGET',`all',`any') -ifdef(`MULTIARCH', `Multi-Arch: same -')`'dnl +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl Section: ifdef(`TARGET',`devel',`libs') Priority: ifdef(`TARGET',`extra',`PRI(optional)') Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} @@ -579,8 +588,8 @@ Package: libmudflap`'MF_SO-dbg`'LS Architecture: ifdef(`TARGET',`all',`any') -ifdef(`MULTIARCH', `Multi-Arch: same -')`'dnl +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +'))`'dnl Section: debug Priority: extra Depends: BASEDEP, libmudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends} @@ -666,6 +675,7 @@ Package: libssp`'SSP_SO`'LS Architecture: any ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support ')`'dnl Section: libs Priority: PRI(optional) @@ -716,6 +726,7 @@ Section: ifdef(`TARGET',`devel',`libs') Architecture: ifdef(`TARGET',`all',`any') ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support '))`'dnl Priority: ifdef(`TARGET',`extra',`PRI(optional)') Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} @@ -878,6 +889,7 @@ Section: ifdef(`TARGET',`devel',`libs') Architecture: ifdef(`TARGET',`all',`any') ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support '))`'dnl Priority: ifdef(`TARGET',`extra',`PRI(optional)') Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} @@ -1008,6 +1020,7 @@ Section: ifdef(`TARGET',`devel',`libs') Architecture: ifdef(`TARGET',`all',`any') ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support '))`'dnl Priority: ifdef(`TARGET',`extra',PRI(optional)) Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} @@ -1093,6 +1106,7 @@ Section: libs Architecture: NEON_ARCHS ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support ')`'dnl Priority: extra Depends: BASEDEP, libgcc1-neon`'LS, ${shlibs:Depends}, ${misc:Depends} @@ -1301,6 +1315,7 @@ Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} ifdef(`TARGET',`Provides: libstdc++CXX_SO-TARGET-dcv1 ',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support '))`'dnl Conflicts: scim (<< 1.4.2-1) Description: The GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') === added file 'debian/patches/gcc-multiarch+biarch.diff' --- debian/patches/gcc-multiarch+biarch.diff 1970-01-01 00:00:00 +0000 +++ debian/patches/gcc-multiarch+biarch.diff 2011-03-17 08:09:30 +0000 @@ -0,0 +1,55 @@ +# DP: Use multiarch dirs for the default multilib dir. + +Index: gcc-4.4-4.4.5/src/gcc/config/s390/t-linux64 +=================================================================== +--- gcc-4.4-4.4.5.orig/src/gcc/config/s390/t-linux64 ++++ gcc-4.4-4.4.5/src/gcc/config/s390/t-linux64 +@@ -1,8 +1,9 @@ + MULTILIB_OPTIONS = m64/m31 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib64 ../lib ++MULTILIB_OSDIRNAMES = $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib64),../../lib64,.) $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib32),../../lib32,.) + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib + + EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o ++ +Index: gcc-4.4-4.4.5/src/gcc/config/sparc/t-linux64 +=================================================================== +--- gcc-4.4-4.4.5.orig/src/gcc/config/sparc/t-linux64 ++++ gcc-4.4-4.4.5/src/gcc/config/sparc/t-linux64 +@@ -1,6 +1,6 @@ + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib64 ../lib ++MULTILIB_OSDIRNAMES = $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib64),../../lib64,.) $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib32),../../lib32,.) + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib +Index: gcc-4.4-4.4.5/src/gcc/config/i386/t-linux64 +=================================================================== +--- gcc-4.4-4.4.5.orig/src/gcc/config/i386/t-linux64 ++++ gcc-4.4-4.4.5/src/gcc/config/i386/t-linux64 +@@ -7,7 +7,7 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) ++MULTILIB_OSDIRNAMES = $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib64),../../lib64,.) $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib32),../../lib32,.) + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib +Index: gcc-4.4-4.4.5/src/gcc/config/rs6000/t-linux64 +=================================================================== +--- gcc-4.4-4.4.5.orig/src/gcc/config/rs6000/t-linux64 ++++ gcc-4.4-4.4.5/src/gcc/config/rs6000/t-linux64 +@@ -19,7 +19,7 @@ + MULTILIB_EXTRA_OPTS = fPIC mstrict-align + MULTILIB_EXCEPTIONS = m64/msoft-float + MULTILIB_EXCLUSIONS = m64/!m32/msoft-float +-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) nof ++MULTILIB_OSDIRNAMES = $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib64),../../lib64,.) $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../../lib32,.) + MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT) + + softfp_wrap_start := '\#ifndef __powerpc64__' === removed file 'debian/patches/gcc-multiarch-i686-linaro.diff' --- debian/patches/gcc-multiarch-i686-linaro.diff 2010-09-14 12:47:01 +0000 +++ debian/patches/gcc-multiarch-i686-linaro.diff 1970-01-01 00:00:00 +0000 @@ -1,375 +0,0 @@ -# DP: Add multiarch support to GCC. -# DP: -# DP: Convert the multilib option to a target triplet, -# DP: add multiarch include directories and libraries path: -# DP: /usr/local/include/<arch>-linux-gnu -# DP: /usr/include/<arch>-linux-gnu -# DP: /usr/lib/<arch>-linux-gnu -# DP: to the system paths. - -2009-03-24 Arthur Loiret <aloiret@debian.org> - - * configure.ac: Handle --enable-multiarch and --with-multiarch-defaults. - * config.gcc: Define MULTIARCH_DEFAULTS if multiarch is enabled. - * config.in [!USED_FOR_TARGET]: Undef ENABLE_MULTIARCH. - * gcc.c: include multiarch.h. - (set_multiarch_dir): New function. Adds the multiarch directories to - the library path. - [ENABLE_MULTIARCH]: Use it. - * cppdefault.c [LOCAL_INCLUDE_DIR, STANDARD_INCLUDE_DIR] Add an include - directory for multiarch directories. - * incpath.c: include multiarch.h - [ENABLE_MULTIARCH]: Add the multiarch directory to include directories. - * Makefile.in (MULTIARCH_H): New. Use it for incpath.o and gcc.o. - * multiarch.h: New file. ---- - gcc/Makefile.in | 7 ++-- - gcc/config.gcc | 9 +++++ - gcc/config.in | 4 ++ - gcc/configure.ac | 13 ++++++++ - gcc/cppdefault.c | 6 +++ - gcc/gcc.c | 41 ++++++++++++++++++++++++ - gcc/incpath.c | 28 ++++++++++++++++ - gcc/multiarch.h | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 8 files changed, 196 insertions(+), 3 deletions(-) - -diff -urN gcc.orig/Makefile.in gcc/Makefile.in ---- a/src/gcc.orig/Makefile.in 2010-06-12 -+++ b/src/gcc/Makefile.in 2010-06-12 -@@ -815,6 +815,7 @@ - endif - - # Shorthand variables for dependency lists. -+MULTIARCH_H = multiarch.h - TOPLEV_H = toplev.h input.h - TARGET_H = $(TM_H) target.h insn-modes.h - MACHMODE_H = machmode.h mode-classes.def insn-modes.h -@@ -1843,7 +1844,7 @@ - - incpath.o: incpath.c incpath.h $(CONFIG_H) $(SYSTEM_H) $(CPPLIB_H) \ - intl.h prefix.h coretypes.h $(TM_H) cppdefault.h $(TARGET_H) \ -- $(MACHMODE_H) $(FLAGS_H) toplev.h -+ $(MACHMODE_H) $(FLAGS_H) toplev.h $(MULTIARCH_H) - - c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ - $(RTL_H) $(C_TREE_H) $(GGC_H) $(TARGET_H) $(FLAGS_H) $(FUNCTION_H) output.h \ -@@ -1985,7 +1986,7 @@ - - gcc.o: gcc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h multilib.h \ - Makefile $(lang_specs_files) specs.h prefix.h $(GCC_H) $(FLAGS_H) \ -- configargs.h $(OBSTACK_H) opts.h -+ configargs.h $(OBSTACK_H) opts.h $(MULTIARCH_H) - (SHLIB_LINK='$(SHLIB_LINK)'; \ - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ - $(DRIVER_DEFINES) \ -diff -urN gcc.orig/config.gcc gcc/config.gcc ---- a/src/gcc.orig/config.gcc 2010-06-12 -+++ b/src/gcc/config.gcc 2010-06-12 -@@ -3422,3 +3422,12 @@ - target_cpu_default=$target_cpu_default2 - fi - fi -+ -+if test x${enable_multiarch} = xyes; then -+ multiarch_defaults=`echo ${target_noncanonical} | sed -e 's/unknown-//'` -+ multiarch_define="__`echo ${multiarch_defaults} | tr '-' '_'`__" -+ if test x${with_multiarch_defaults} != x; then -+ multiarch_defaults=${with_multiarch_defaults} -+ fi -+ tm_defines="${tm_defines} ${multiarch_define}=1 MULTIARCH_DEFAULTS=\\\"${multiarch_defaults}\\\"" -+fi -diff -urN gcc.orig/config.in gcc/config.in ---- a/src/gcc.orig/config.in 2010-06-12 -+++ b/src/gcc/config.in 2010-06-12 -@@ -179,6 +179,10 @@ - #undef ENABLE_WIN32_REGISTRY - #endif - -+/* Define if you want to use multiarch. */ -+#ifndef USED_FOR_TARGET -+#undef ENABLE_MULTIARCH -+#endif - - /* Define to the name of a file containing a list of extra machine modes for - this architecture. */ -diff -urN gcc.orig/configure.ac gcc/configure.ac ---- a/src/gcc.orig/configure.ac 2010-06-12 -+++ b/src/gcc/configure.ac 2010-06-12 -@@ -589,6 +589,19 @@ - [], [enable_multilib=yes]) - AC_SUBST(enable_multilib) - -+# Determine whether or not multiarch is enabled. -+AC_ARG_ENABLE(multiarch, -+[ --enable-multiarch enable multiarch support], -+[ -+ enable_multiarch=yes -+ AC_DEFINE(ENABLE_MULTIARCH, 1, -+ [Define if you want to use multiarch.]) -+],[]) -+AC_SUBST(enable_multiarch) -+ -+AC_ARG_WITH(multiarch-defaults, -+[ --with-multiarch-defaults set the default multiarch directory.],) -+ - # Enable __cxa_atexit for C++. - AC_ARG_ENABLE(__cxa_atexit, - [ --enable-__cxa_atexit enable __cxa_atexit for C++], -diff -urN gcc.orig/cppdefault.c gcc/cppdefault.c ---- a/src/gcc.orig/cppdefault.c 2007-07-26 -+++ b/src/gcc/cppdefault.c 2010-06-12 -@@ -60,6 +60,9 @@ - #endif - #ifdef LOCAL_INCLUDE_DIR - /* /usr/local/include comes before the fixincluded header files. */ -+# ifdef ENABLE_MULTIARCH -+ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, -+# endif - { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, - #endif - #ifdef PREFIX_INCLUDE_DIR -@@ -95,6 +98,9 @@ - #endif - #ifdef STANDARD_INCLUDE_DIR - /* /usr/include comes dead last. */ -+# ifdef ENABLE_MULTIARCH -+ { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 2 }, -+# endif - { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 0 }, - #endif - { 0, 0, 0, 0, 0, 0 } -diff -urN gcc.orig/gcc.c gcc/gcc.c ---- a/src/gcc.orig/gcc.c 2010-06-12 -+++ b/src/gcc/gcc.c 2010-06-12 -@@ -71,6 +71,7 @@ - #include "system.h" - #include "coretypes.h" - #include "multilib.h" /* before tm.h */ -+#include "multiarch.h" - #include "tm.h" - #include <signal.h> - #if ! defined( SIGCHLD ) && defined( SIGCLD ) -@@ -383,6 +384,9 @@ - static int used_arg (const char *, int); - static int default_arg (const char *, int); - static void set_multilib_dir (void); -+#ifdef ENABLE_MULTIARCH -+static void set_multiarch_dir (void); -+#endif - static void print_multilib_info (void); - static void perror_with_name (const char *); - static void fatal_ice (const char *, ...) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN; -@@ -6924,6 +6928,11 @@ - the subdirectory based on the options. */ - set_multilib_dir (); - -+#ifdef ENABLE_MULTIARCH -+ /* Add the multiarch directories to libraries path. */ -+ set_multiarch_dir (); -+#endif -+ - /* Warn about any switches that no pass was interested in. */ - - for (i = 0; (int) i < n_switches; i++) -@@ -8078,6 +8087,39 @@ - multilib_os_dir = multilib_dir; - } - -+#ifdef ENABLE_MULTIARCH -+/* Add the multiarch directories to libraries path. This uses the converted -+ multiarch triplet from the multilib value. -+ For example, if the target supports -m32/-m64 as multilib option and -+ defaults to 64, it will add /usr/lib/$triplet_target64/lib to library -+ path if either -m64 or no multilib option at all is set. And it will -+ add /usr/lib/$triplet_target32 if -m32 is set. Triplets are defined in -+ multiarch.def. */ -+ -+static void -+set_multiarch_dir (void) -+{ -+ const char *multiarch, *path; -+ -+ multiarch = multilib_to_multiarch (multilib_dir); -+ if (multiarch == NULL) -+ { -+ fatal_ice ("\ -+Internal error: no multiarch mapping for multilib (%s)\n\ -+Please submit a full bug report.\n\ -+See %s for instructions.", -+ multilib_dir ? multilib_dir : multilib_defaults, bug_report_url); -+ } -+ else if (multiarch) -+ { -+ path = concat (STANDARD_STARTFILE_PREFIX_2, multiarch, -+ dir_separator_str, NULL); -+ add_prefix (&startfile_prefixes, path, NULL, -+ PREFIX_PRIORITY_LAST, 0, 1); -+ } -+} -+#endif -+ - /* Print out the multiple library subdirectory selection - information. This prints out a series of lines. Each line looks - like SUBDIRECTORY;@OPTION@OPTION, with as many options as is -diff -urN gcc.orig/incpath.c gcc/incpath.c ---- a/src/gcc.orig/incpath.c 2010-06-12 -+++ b/src/gcc/incpath.c 2010-06-12 -@@ -32,6 +32,7 @@ - #include "cppdefault.h" - #include "flags.h" - #include "toplev.h" -+#include "multiarch.h" - - /* Microsoft Windows does not natively support inodes. - VMS has non-numeric inodes. */ -@@ -134,6 +135,9 @@ - const struct default_include *p; - int relocated = cpp_relocated(); - size_t len; -+#ifdef ENABLE_MULTIARCH -+ const char *multiarch; -+#endif - - if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0) - { -@@ -152,8 +156,20 @@ - if (!strncmp (p->fname, cpp_GCC_INCLUDE_DIR, len)) - { - char *str = concat (iprefix, p->fname + len, NULL); -+#ifdef ENABLE_MULTIARCH -+ if (p->multilib == 1 && imultilib) -+ str = concat (str, dir_separator_str, imultilib, NULL); -+ else if (p->multilib == 2) -+ { -+ multiarch = multilib_to_multiarch (imultilib); -+ if (!multiarch) -+ continue; -+ str = concat (str, dir_separator_str, multiarch, NULL); -+ } -+#else - if (p->multilib && imultilib) - str = concat (str, dir_separator_str, imultilib, NULL); -+#endif - add_path (str, SYSTEM, p->cxx_aware, false); - } - } -@@ -197,8 +213,20 @@ - else - str = update_path (p->fname, p->component); - -+#ifdef ENABLE_MULTIARCH -+ if (p->multilib == 1 && imultilib) -+ str = concat (str, dir_separator_str, imultilib, NULL); -+ else if (p->multilib == 2) -+ { -+ multiarch = multilib_to_multiarch (imultilib); -+ if (!multiarch) -+ continue; -+ str = concat (str, dir_separator_str, multiarch, NULL); -+ } -+#else - if (p->multilib && imultilib) - str = concat (str, dir_separator_str, imultilib, NULL); -+#endif - - add_path (str, SYSTEM, p->cxx_aware, false); - } -diff -urN gcc.orig/multiarch.h gcc/multiarch.h ---- a/src/gcc.orig/multiarch.h 1970-01-01 -+++ b/src/gcc/multiarch.h 2010-06-12 -@@ -0,0 +1,95 @@ -+/* Header for multiarch handling (include directories, libraries path). -+ Copyright (C) 2009 Free Software Foundation, Inc. -+ Contributed by Arthur Loiret <aloiret@debian.org> -+ -+This file is part of GCC. -+ -+GCC is free software; you can redistribute it and/or modify it under -+the terms of the GNU General Public License as published by the Free -+Software Foundation; either version 3, or (at your option) any later -+version. -+ -+GCC is distributed in the hope that it will be useful, but WITHOUT ANY -+WARRANTY; without even the implied warranty of MERCHANTABILITY or -+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+for more details. -+ -+You should have received a copy of the GNU General Public License -+along with GCC; see the file COPYING3. If not see -+<http://www.gnu.org/licenses/>. */ -+ -+#ifndef GCC_MULTIARCH_H -+#define GCC_MULTIARCH_H -+ -+#include "tm.h" -+ -+struct multiarch_mapping -+{ -+ const char *const multilib; -+ const char *const multiarch; -+}; -+ -+const struct multiarch_mapping multiarch_mappings[] = { -+#ifdef ENABLE_MULTIARCH -+ { "", MULTIARCH_DEFAULTS }, -+# if defined(__x86_64_linux_gnu__) -+ { "32", "i686-linux-gnu" }, -+# endif -+# if defined(__i486_linux_gnu__) || defined(__i686_linux_gnu__) -+ { "64", "x86_64-linux-gnu" }, -+# endif -+# if defined(__powerpc64_linux_gnu__) -+ { "32", "powerpc-linux-gnu" }, -+# endif -+# if defined(__powerpc_linux_gnu__) -+ { "64", "powerpc64-linux-gnu" }, -+# endif -+# if defined(__sparc64_linux_gnu__) -+ { "32", "sparc-linux-gnu" }, -+# endif -+# if defined(__sparc_linux_gnu__) -+ { "64", "sparc64-linux-gnu" }, -+# endif -+# if defined(__s390x_linux_gnu__) -+ { "31", "s390-linux-gnu" }, -+# endif -+# if defined(__s390_linux_gnu__) -+ { "64", "s390x-linux-gnu" }, -+# endif -+# if defined(__mips_linux_gnu__) -+ { "n32", "mips64-linux-gnuabin32" }, -+ { "64", "mips64-linux-gnuabi64" }, -+# endif -+# if defined(__mipsel_linux_gnu__) -+ { "n32", "mips64el-linux-gnuabin32" }, -+ { "64", "mips64el-linux-gnuabi64" }, -+# endif -+# if defined(__x86_64_kfreebsd_gnu__) -+ { "32", "i486-kfreebsd-gnu" }, -+# endif -+# if defined(__sh4_linux_gnu__) -+ { "m4", "sh4-linux-gnu" }, -+ { "m4-nofpu", "sh4_nofpu-linux-gnu" }, -+# endif -+#endif /* ENABLE_MULTIARCH */ -+ { 0, 0 } -+}; -+ -+/* Convert the multilib option to the corresponding target triplet. -+ See multiarch.def and config.gcc for multilib/multiarch pairs. -+ When the default multilib is used, the corresponding multilib/multiarch -+ pair is { "", $target_tripplet }. */ -+static inline const char* -+multilib_to_multiarch (const char *imultilib) -+{ -+ const struct multiarch_mapping *p; -+ -+ for (p = multiarch_mappings; p->multiarch; p++) -+ { -+ if (!strcmp(p->multilib, imultilib ? imultilib : "")) -+ return p->multiarch; -+ } -+ return NULL; -+} -+ -+#endif /* GCC_MULTIARCH_H */ === removed file 'debian/patches/gcc-multiarch-i686.diff' --- debian/patches/gcc-multiarch-i686.diff 2010-08-13 16:57:34 +0000 +++ debian/patches/gcc-multiarch-i686.diff 1970-01-01 00:00:00 +0000 @@ -1,356 +0,0 @@ -# DP: Add multiarch support to GCC. -# DP: -# DP: Convert the multilib option to a target triplet, -# DP: add multiarch include directories and libraries path: -# DP: /usr/local/include/<arch>-linux-gnu -# DP: /usr/include/<arch>-linux-gnu -# DP: /usr/lib/<arch>-linux-gnu -# DP: to the system paths. - -2009-03-24 Arthur Loiret <aloiret@debian.org> - - * configure.ac: Handle --enable-multiarch and --with-multiarch-defaults. - * config.gcc: Define MULTIARCH_DEFAULTS if multiarch is enabled. - * config.in [!USED_FOR_TARGET]: Undef ENABLE_MULTIARCH. - * gcc.c: include multiarch.h. - (set_multiarch_dir): New function. Adds the multiarch directories to - the library path. - [ENABLE_MULTIARCH]: Use it. - * cppdefault.c [LOCAL_INCLUDE_DIR, STANDARD_INCLUDE_DIR] Add an include - directory for multiarch directories. - * incpath.c: include multiarch.h - [ENABLE_MULTIARCH]: Add the multiarch directory to include directories. - * Makefile.in (MULTIARCH_H): New. Use it for incpath.o and gcc.o. - * multiarch.h: New file. ---- - gcc/Makefile.in | 7 ++-- - gcc/config.gcc | 9 +++++ - gcc/config.in | 4 ++ - gcc/configure.ac | 13 ++++++++ - gcc/cppdefault.c | 6 +++ - gcc/gcc.c | 41 ++++++++++++++++++++++++ - gcc/incpath.c | 28 ++++++++++++++++ - gcc/multiarch.h | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 8 files changed, 196 insertions(+), 3 deletions(-) - ---- a/src/gcc/Makefile.in -+++ b/src/gcc/Makefile.in -@@ -806,6 +806,7 @@ - endif - - # Shorthand variables for dependency lists. -+MULTIARCH_H = multiarch.h - TOPLEV_H = toplev.h input.h - TARGET_H = $(TM_H) target.h insn-modes.h - MACHMODE_H = machmode.h mode-classes.def insn-modes.h -@@ -1818,7 +1819,7 @@ - - incpath.o: incpath.c incpath.h $(CONFIG_H) $(SYSTEM_H) $(CPPLIB_H) \ - intl.h prefix.h coretypes.h $(TM_H) cppdefault.h $(TARGET_H) \ -- $(MACHMODE_H) -+ $(MACHMODE_H) $(MULTIARCH_H) - - c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ - $(RTL_H) $(C_TREE_H) $(GGC_H) $(TARGET_H) $(FLAGS_H) $(FUNCTION_H) output.h \ -@@ -1959,7 +1960,7 @@ - - gcc.o: gcc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h multilib.h \ - Makefile $(lang_specs_files) specs.h prefix.h $(GCC_H) $(FLAGS_H) \ -- configargs.h $(OBSTACK_H) opts.h -+ configargs.h $(OBSTACK_H) opts.h $(MULTIARCH_H) - (SHLIB_LINK='$(SHLIB_LINK)'; \ - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ - $(DRIVER_DEFINES) \ - ---- a/src/gcc/config.gcc -+++ b/src/gcc/config.gcc -@@ -3173,3 +3173,12 @@ then - target_cpu_default=$target_cpu_default2 - fi - fi -+ -+if test x${enable_multiarch} = xyes; then -+ multiarch_defaults=`echo ${target_noncanonical} | sed -e 's/unknown-//'` -+ multiarch_define="__`echo ${multiarch_defaults} | tr '-' '_'`__" -+ if test x${with_multiarch_defaults} != x; then -+ multiarch_defaults=${with_multiarch_defaults} -+ fi -+ tm_defines="${tm_defines} ${multiarch_define}=1 MULTIARCH_DEFAULTS=\\\"${multiarch_defaults}\\\"" -+fi ---- a/src/gcc/config.in -+++ b/src/gcc/config.in -@@ -155,6 +155,10 @@ - #undef ENABLE_WIN32_REGISTRY - #endif - -+/* Define if you want to use multiarch. */ -+#ifndef USED_FOR_TARGET -+#undef ENABLE_MULTIARCH -+#endif - - /* Define to the name of a file containing a list of extra machine modes for - this architecture. */ ---- a/src/gcc/configure.ac -+++ b/src/gcc/configure.ac -@@ -585,6 +585,19 @@ AC_ARG_ENABLE(multilib, - [], [enable_multilib=yes]) - AC_SUBST(enable_multilib) - -+# Determine whether or not multiarch is enabled. -+AC_ARG_ENABLE(multiarch, -+[ --enable-multiarch enable multiarch support], -+[ -+ enable_multiarch=yes -+ AC_DEFINE(ENABLE_MULTIARCH, 1, -+ [Define if you want to use multiarch.]) -+],[]) -+AC_SUBST(enable_multiarch) -+ -+AC_ARG_WITH(multiarch-defaults, -+[ --with-multiarch-defaults set the default multiarch directory.],) -+ - # Enable __cxa_atexit for C++. - AC_ARG_ENABLE(__cxa_atexit, - [ --enable-__cxa_atexit enable __cxa_atexit for C++], ---- a/src/gcc/cppdefault.c -+++ b/src/gcc/cppdefault.c -@@ -60,6 +60,9 @@ const struct default_include cpp_include_defaults[] - #endif - #ifdef LOCAL_INCLUDE_DIR - /* /usr/local/include comes before the fixincluded header files. */ -+# ifdef ENABLE_MULTIARCH -+ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, -+# endif - { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, - #endif - #ifdef PREFIX_INCLUDE_DIR -@@ -95,6 +98,9 @@ const struct default_include cpp_include_defaults[] - #endif - #ifdef STANDARD_INCLUDE_DIR - /* /usr/include comes dead last. */ -+# ifdef ENABLE_MULTIARCH -+ { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 2 }, -+# endif - { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 0 }, - #endif - { 0, 0, 0, 0, 0, 0 } ---- a/src/gcc/gcc.c -+++ b/src/gcc/gcc.c -@@ -71,6 +71,7 @@ compilation is specified by a string called a "spec". */ - #include "system.h" - #include "coretypes.h" - #include "multilib.h" /* before tm.h */ -+#include "multiarch.h" - #include "tm.h" - #include <signal.h> - #if ! defined( SIGCHLD ) && defined( SIGCLD ) -@@ -345,6 +346,9 @@ static void give_switch (int, int); - static int used_arg (const char *, int); - static int default_arg (const char *, int); - static void set_multilib_dir (void); -+#ifdef ENABLE_MULTIARCH -+static void set_multiarch_dir (void); -+#endif - static void print_multilib_info (void); - static void perror_with_name (const char *); - static void fatal_ice (const char *, ...) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN; -@@ -6504,6 +6508,11 @@ main (int argc, char **argv) - the subdirectory based on the options. */ - set_multilib_dir (); - -+#ifdef ENABLE_MULTIARCH -+ /* Add the multiarch directories to libraries path. */ -+ set_multiarch_dir (); -+#endif -+ - /* Warn about any switches that no pass was interested in. */ - - for (i = 0; (int) i < n_switches; i++) -@@ -7576,6 +7585,27 @@ set_multilib_dir (void) - multilib_os_dir = multilib_dir; - } - -+#ifdef ENABLE_MULTIARCH -+/* Add the multiarch directories to libraries path. This uses the converted -+ multiarch triplet from the multilib value. -+ For example, if the target supports -m32/-m64 as multilib option and -+ defaults to 64, it will add /usr/lib/$triplet_target64/lib to library -+ path if either -m64 or no multilib option at all is set. And it will -+ add /usr/lib/$triplet_target32 if -m32 is set. Triplets are defined in -+ multiarch.def. */ -+ -+static void -+set_multiarch_dir (void) -+{ -+ const char *path; -+ -+ path = concat (STANDARD_STARTFILE_PREFIX_2, MULTIARCH_DEFAULTS, -+ dir_separator_str, NULL); -+ add_prefix (&startfile_prefixes, path, NULL, -+ PREFIX_PRIORITY_LAST, 0, 1); -+} -+#endif -+ - /* Print out the multiple library subdirectory selection - information. This prints out a series of lines. Each line looks - like SUBDIRECTORY;@OPTION@OPTION, with as many options as is ---- a/src/gcc/incpath.c -+++ b/src/gcc/incpath.c -@@ -30,6 +30,7 @@ - #include "intl.h" - #include "incpath.h" - #include "cppdefault.h" -+#include "multiarch.h" - - /* Microsoft Windows does not natively support inodes. - VMS has non-numeric inodes. */ -@@ -132,6 +133,9 @@ add_standard_paths (const char *sysroot, const char *iprefix, - const struct default_include *p; - int relocated = cpp_relocated(); - size_t len; -+#ifdef ENABLE_MULTIARCH -+ const char *multiarch; -+#endif - - if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0) - { -@@ -150,8 +154,20 @@ add_standard_paths (const char *sysroot, const char *iprefix, - if (!strncmp (p->fname, cpp_GCC_INCLUDE_DIR, len)) - { - char *str = concat (iprefix, p->fname + len, NULL); -+#ifdef ENABLE_MULTIARCH -+ if (p->multilib == 1 && imultilib) -+ str = concat (str, dir_separator_str, imultilib, NULL); -+ else if (p->multilib == 2) -+ { -+ multiarch = multilib_to_multiarch (imultilib); -+ if (!multiarch) -+ continue; -+ str = concat (str, dir_separator_str, multiarch, NULL); -+ } -+#else - if (p->multilib && imultilib) - str = concat (str, dir_separator_str, imultilib, NULL); -+#endif - add_path (str, SYSTEM, p->cxx_aware, false); - } - } -@@ -195,8 +211,20 @@ add_standard_paths (const char *sysroot, const char *iprefix, - else - str = update_path (p->fname, p->component); - -+#ifdef ENABLE_MULTIARCH -+ if (p->multilib == 1 && imultilib) -+ str = concat (str, dir_separator_str, imultilib, NULL); -+ else if (p->multilib == 2) -+ { -+ multiarch = multilib_to_multiarch (imultilib); -+ if (!multiarch) -+ continue; -+ str = concat (str, dir_separator_str, multiarch, NULL); -+ } -+#else - if (p->multilib && imultilib) - str = concat (str, dir_separator_str, imultilib, NULL); -+#endif - - add_path (str, SYSTEM, p->cxx_aware, false); - } ---- /dev/null -+++ b/src/gcc/multiarch.h -@@ -0,0 +1,95 @@ -+/* Header for multiarch handling (include directories, libraries path). -+ Copyright (C) 2009 Free Software Foundation, Inc. -+ Contributed by Arthur Loiret <aloiret@debian.org> -+ -+This file is part of GCC. -+ -+GCC is free software; you can redistribute it and/or modify it under -+the terms of the GNU General Public License as published by the Free -+Software Foundation; either version 3, or (at your option) any later -+version. -+ -+GCC is distributed in the hope that it will be useful, but WITHOUT ANY -+WARRANTY; without even the implied warranty of MERCHANTABILITY or -+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+for more details. -+ -+You should have received a copy of the GNU General Public License -+along with GCC; see the file COPYING3. If not see -+<http://www.gnu.org/licenses/>. */ -+ -+#ifndef GCC_MULTIARCH_H -+#define GCC_MULTIARCH_H -+ -+#include "tm.h" -+ -+struct multiarch_mapping -+{ -+ const char *const multilib; -+ const char *const multiarch; -+}; -+ -+const struct multiarch_mapping multiarch_mappings[] = { -+#ifdef ENABLE_MULTIARCH -+ { "", MULTIARCH_DEFAULTS }, -+# if defined(__x86_64_linux_gnu__) -+ { "32", "i686-linux-gnu" }, -+# endif -+# if defined(__i486_linux_gnu__) || defined(__i686_linux_gnu__) -+ { "64", "x86_64-linux-gnu" }, -+# endif -+# if defined(__powerpc64_linux_gnu__) -+ { "32", "powerpc-linux-gnu" }, -+# endif -+# if defined(__powerpc_linux_gnu__) -+ { "64", "powerpc64-linux-gnu" }, -+# endif -+# if defined(__sparc64_linux_gnu__) -+ { "32", "sparc-linux-gnu" }, -+# endif -+# if defined(__sparc_linux_gnu__) -+ { "64", "sparc64-linux-gnu" }, -+# endif -+# if defined(__s390x_linux_gnu__) -+ { "31", "s390-linux-gnu" }, -+# endif -+# if defined(__s390_linux_gnu__) -+ { "64", "s390x-linux-gnu" }, -+# endif -+# if defined(__mips_linux_gnu__) -+ { "n32", "mips64-linux-gnuabin32" }, -+ { "64", "mips64-linux-gnuabi64" }, -+# endif -+# if defined(__mipsel_linux_gnu__) -+ { "n32", "mips64el-linux-gnuabin32" }, -+ { "64", "mips64el-linux-gnuabi64" }, -+# endif -+# if defined(__x86_64_kfreebsd_gnu__) -+ { "32", "i486-kfreebsd-gnu" }, -+# endif -+# if defined(__sh4_linux_gnu__) -+ { "m4", "sh4-linux-gnu" }, -+ { "m4-nofpu", "sh4_nofpu-linux-gnu" }, -+# endif -+#endif /* ENABLE_MULTIARCH */ -+ { 0, 0 } -+}; -+ -+/* Convert the multilib option to the corresponding target triplet. -+ See multiarch.def and config.gcc for multilib/multiarch pairs. -+ When the default multilib is used, the corresponding multilib/multiarch -+ pair is { "", $target_tripplet }. */ -+static inline const char* -+multilib_to_multiarch (const char *imultilib) -+{ -+ const struct multiarch_mapping *p; -+ -+ for (p = multiarch_mappings; p->multiarch; p++) -+ { -+ if (!strcmp(p->multilib, imultilib ? imultilib : "")) -+ return p->multiarch; -+ } -+ return NULL; -+} -+ -+#endif /* GCC_MULTIARCH_H */ === modified file 'debian/patches/gcc-multiarch-linaro.diff' --- debian/patches/gcc-multiarch-linaro.diff 2010-09-14 12:47:01 +0000 +++ debian/patches/gcc-multiarch-linaro.diff 2011-03-17 08:09:30 +0000 @@ -171,7 +171,7 @@ /* Warn about any switches that no pass was interested in. */ for (i = 0; (int) i < n_switches; i++) -@@ -8078,6 +8087,39 @@ +@@ -8078,6 +8087,27 @@ multilib_os_dir = multilib_dir; } @@ -187,24 +187,12 @@ +static void +set_multiarch_dir (void) +{ -+ const char *multiarch, *path; ++ const char *path; + -+ multiarch = multilib_to_multiarch (multilib_dir); -+ if (multiarch == NULL) -+ { -+ fatal_ice ("\ -+Internal error: no multiarch mapping for multilib (%s)\n\ -+Please submit a full bug report.\n\ -+See %s for instructions.", -+ multilib_dir ? multilib_dir : multilib_defaults, bug_report_url); -+ } -+ else if (multiarch) -+ { -+ path = concat (STANDARD_STARTFILE_PREFIX_2, multiarch, -+ dir_separator_str, NULL); -+ add_prefix (&startfile_prefixes, path, NULL, -+ PREFIX_PRIORITY_LAST, 0, 1); -+ } ++ path = concat (STANDARD_STARTFILE_PREFIX_2, MULTIARCH_DEFAULTS, ++ dir_separator_str, NULL); ++ add_prefix (&startfile_prefixes, path, NULL, ++ PREFIX_PRIORITY_LAST, 0, 1); +} +#endif + @@ -313,7 +301,7 @@ +#ifdef ENABLE_MULTIARCH + { "", MULTIARCH_DEFAULTS }, +# if defined(__x86_64_linux_gnu__) -+ { "32", "i486-linux-gnu" }, ++ { "32", "i386-linux-gnu" }, +# endif +# if defined(__i486_linux_gnu__) || defined(__i686_linux_gnu__) + { "64", "x86_64-linux-gnu" }, @@ -345,7 +333,7 @@ + { "64", "mips64el-linux-gnuabi64" }, +# endif +# if defined(__x86_64_kfreebsd_gnu__) -+ { "32", "i486-kfreebsd-gnu" }, ++ { "32", "i386-kfreebsd-gnu" }, +# endif +# if defined(__sh4_linux_gnu__) + { "m4", "sh4-linux-gnu" }, === modified file 'debian/patches/gcc-multiarch.diff' --- debian/patches/gcc-multiarch.diff 2010-10-20 20:20:08 +0000 +++ debian/patches/gcc-multiarch.diff 2011-03-17 08:09:30 +0000 @@ -7,6 +7,9 @@ # DP: /usr/lib/<arch>-linux-gnu # DP: to the system paths. +2011-03-08 Steve Langasek <steve.langasek@linaro.org> + * Canonicalize x86 to i386 everywhere, not i486/i686 + 2009-03-24 Arthur Loiret <aloiret@debian.org> * configure.ac: Handle --enable-multiarch and --with-multiarch-defaults. @@ -294,7 +297,7 @@ +#ifdef ENABLE_MULTIARCH + { "", MULTIARCH_DEFAULTS }, +# if defined(__x86_64_linux_gnu__) -+ { "32", "i486-linux-gnu" }, ++ { "32", "i386-linux-gnu" }, +# endif +# if defined(__i486_linux_gnu__) || defined(__i686_linux_gnu__) + { "64", "x86_64-linux-gnu" }, @@ -326,7 +329,7 @@ + { "64", "mips64el-linux-gnuabi64" }, +# endif +# if defined(__x86_64_kfreebsd_gnu__) -+ { "32", "i486-kfreebsd-gnu" }, ++ { "32", "i386-kfreebsd-gnu" }, +# endif +# if defined(__sh4_linux_gnu__) + { "m4", "sh4-linux-gnu" }, === modified file 'debian/rules.conf' --- debian/rules.conf 2011-03-13 22:21:44 +0000 +++ debian/rules.conf 2011-03-17 08:09:30 +0000 @@ -108,9 +108,16 @@ UPLOADERS = Arthur Loiret <arthur.loiret@gmail.com> endif -DPKG_BUILD_DEP = dpkg-dev (>= 1.14.15) +DPKG_BUILD_DEP = dpkg-dev (>= 1.14.15), +ifeq ($(with_multiarch_lib),yes) + DPKG_BUILD_DEP = dpkg-dev (>= 1.16.0~ubuntu4), +endif +ifeq ($(multiarch_stage1),yes) + DPKG_BUILD_DEP = dpkg-dev (>= 1.16.0~ubuntu4), +endif + ifeq ($(DEB_CROSS),yes) - DPKG_BUILD_DEP +=, dpkg-cross (>= 1.25.99) + DPKG_BUILD_DEP += dpkg-cross (>= 1.25.99), endif # The binutils version needed. @@ -132,9 +139,13 @@ # libc-dev dependencies libc_ver := 2.5 +libc_dev_ver := $(libc_ver) ifneq (,$(findstring gnat,$(PKGSOURCE))) libc_ver := 2.9-21 endif +ifeq ($(with_multiarch_lib),yes) + libc_dev_ver := 2.13-0ubuntu6 +endif ifeq ($(DEB_TARGET_ARCH_OS),linux) ifneq (,$(findstring $(DEB_TARGET_ARCH),alpha ia64)) LIBC_DEP = libc6.1 @@ -202,11 +213,11 @@ endif # Add suffix and required version -LIBC_DEV_DEP := $(LIBC_DEV_DEP)$(LS) (>= $(libc_ver)) +LIBC_DEV_DEP := $(LIBC_DEV_DEP)$(LS) (>= $(libc_dev_ver)) # TODO: make this automatic, there must be a better way to define LIBC_DEP. ifneq ($(DEB_CROSS),yes) - LIBC_BUILD_DEP = libc6.1-dev (>= $(libc_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_ver)) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= $(libc_ver)), + LIBC_BUILD_DEP = libc6.1-dev (>= $(libc_dev_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_dev_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_dev_ver)) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= $(libc_dev_ver)), LIBC_BIARCH_BUILD_DEP = libc6-dev-amd64 [i386], libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64], lib64gcc1 [i386 powerpc sparc s390], libc6-dev-mips64 [mips mipsel], libc6-dev-mipsn32 [mips mipsel], else LIBC_BUILD_DEP = $(LIBC_DEV_DEP), @@ -267,7 +278,7 @@ endif ifneq ($(DEB_CROSS),yes) -LIBC_BUILD_DEP := libc6.1-dev (>= $(libc_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_ver)) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= $(libc_ver)) +LIBC_BUILD_DEP := libc6.1-dev (>= $(libc_dev_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_dev_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_dev_ver)) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= $(libc_dev_ver)) JAVA_BUILD_DEP := libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-i386] | libc0.1-dbg [kfreebsd-i386 kfreebsd-amd64] | libc6-dbg, zlib1g-dev, libantlr-java, ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION)) @@ -518,6 +529,7 @@ -DMPFR_BUILD_DEP="$(MPFR_BUILD_DEP)" \ -DMPC_BUILD_DEP="$(MPC_BUILD_DEP)" \ -DELF_BUILD_DEP="$(ELF_BUILD_DEP)" \ + -DDPKG_BUILD_DEP="$(DPKG_BUILD_DEP)" \ -DSOURCE_BUILD_DEP="$(SOURCE_BUILD_DEP)" \ -DCROSS_BUILD_DEP="$(CROSS_BUILD_DEP)" \ -DMULTILIB_ARCHS="$(multilib_archs)" \ === modified file 'debian/rules.d/binary-java.mk' --- debian/rules.d/binary-java.mk 2010-08-25 20:43:44 +0000 +++ debian/rules.d/binary-java.mk 2011-03-17 08:09:30 +0000 @@ -83,7 +83,7 @@ $(PF)/$(libdir)/libgcj.spec \ $(jvm_dir)/include \ $(jvm_dir)/bin/{appletviewer,jar,jarsigner,javadoc,javah,native2ascii,rmic,serialver} \ - $(PF)/$(libdir)/jvm-exports + $(PF)/lib/jvm-exports ifneq ($(GFDL_INVARIANT_FREE),yes) files_jdk += \ @@ -567,7 +567,7 @@ mv $(d_jdk)/$(PF)/$(libdir)/libgcj.spec $(d_jdk)/$(gcc_lib_dir)/ - install -m 755 $(d)/$(PF)/lib/libgcj_bc.so.1 \ + install -m 755 $(d)/$(PF)/$(libdir)/libgcj_bc.so.1 \ $(d_jdk)/$(gcc_lib_dir)/libgcj_bc.so $(builddir)/gcc/xgcc -B$(builddir)/gcc/ -shared -fpic -xc /dev/null \ -o build/libgcj.so -Wl,-soname,libgcj.so.$(GCJ_SONAME) -nostdlib === modified file 'debian/rules.defs' --- debian/rules.defs 2011-02-27 22:02:11 +0000 +++ debian/rules.defs 2011-03-17 08:09:30 +0000 @@ -32,6 +32,7 @@ DEB_HOST_GNU_CPU ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU) DEB_HOST_GNU_SYSTEM ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_SYSTEM) DEB_HOST_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE) +DEB_HOST_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH) CHANGELOG_VARS := $(shell dpkg-parsechangelog | \ sed -n 's/ /_/g;/^[^_]/s/^\([^:]*\):_\(.*\)/\1=\2/p') @@ -309,6 +310,15 @@ # keep_in_control := yes #endif +# is this a multiarch-enabled build? +#ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick)) +# with_multiarch_lib := yes +#endif + +#ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick)) +# multiarch_stage1 := yes +#endif + ifneq ($(DEB_STAGE),stage1) # build a -base package. ifneq ($(DEB_CROSS),yes) === modified file 'debian/rules.patch' --- debian/rules.patch 2011-03-13 21:45:41 +0000 +++ debian/rules.patch 2011-03-17 08:09:30 +0000 @@ -293,11 +293,7 @@ debian_patches += libmudflap-no-testsuite endif -ifeq ($(biarch_cpu),i686) - debian_patches += gcc-multiarch-i686$(if $(with_linaro_branch),-linaro) -else - debian_patches += gcc-multiarch$(if $(with_linaro_branch),-linaro) -endif +debian_patches += gcc-multiarch$(if $(with_linaro_branch),-linaro) ifeq ($(biarch64),yes) ifeq (,$(findstring libjava, $(biarch_multidir_names))) @@ -318,11 +314,18 @@ ifeq (,$(findstring libjava, $(biarch_multidir_names))) debian_patches += libjava-nobiarch-check endif - debian_patches += config-ml gcc-multilib64dir + debian_patches += config-ml endif -ifneq (,$(findstring sparc64,$(DEB_TARGET_ARCH))) - debian_patches += gcc-multilib64dir +ifeq ($(with_multiarch_lib),yes) + debian_patches += gcc-multiarch+biarch +else + ifeq ($(biarch32),yes) + debian_patches += gcc-multilib64dir + endif + ifneq (,$(findstring sparc64,$(DEB_TARGET_ARCH))) + debian_patches += gcc-multilib64dir + endif endif ifeq ($(biarchn32)-$(biarch64),yes-yes) === modified file 'debian/rules2' --- debian/rules2 2011-01-20 00:26:50 +0000 +++ debian/rules2 2011-03-17 08:09:30 +0000 @@ -142,6 +142,12 @@ CONFARGS += --program-suffix=-$(BASE_VERSION) endif +# if this variable exists at all, it's reasonable to use it, giving us +# multiarch support for free +ifneq ($(DEB_HOST_MULTIARCH),) + MULTIARCH_CONFARG = --with-multiarch-defaults=$(DEB_HOST_MULTIARCH) +endif + ifdef DEB_STAGE CONFARGS += \ --disable-libgomp \ @@ -168,6 +174,7 @@ CONFARGS += \ --enable-shared \ --enable-multiarch \ + $(MULTIARCH_CONFARG) \ --enable-linker-build-id \ --with-system-zlib \ @@ -574,7 +581,7 @@ endif ifeq ($(with_multiarch_lib),yes) - libdir = lib/$(DEB_TARGET_GNU_TYPE) + libdir = lib/$(DEB_HOST_MULTIARCH) else libdir = lib endif @@ -591,12 +598,12 @@ ifeq ($(with_common_gcclibdir),yes) gcc_lib_dir = $(PF)/$(libdir)/gcc/$(TARGET_ALIAS)/$(BASE_VERSION) gcc_lexec_dir = $(libexecdir)/gcc/$(TARGET_ALIAS)/$(BASE_VERSION) - gcc_spu_lib_dir = $(PF)/spu/$(libdir)/gcc/spu/$(BASE_VERSION) + gcc_spu_lib_dir = $(PF)/spu/lib/gcc/spu/$(BASE_VERSION) gcc_spu_lexec_dir = $(spulibexecdir)/gcc/spu/$(BASE_VERSION) else gcc_lib_dir = $(PF)/$(libdir)/gcc/$(TARGET_ALIAS)/$(GCC_VERSION) gcc_lexec_dir = $(libexecdir)/gcc/$(TARGET_ALIAS)/$(GCC_VERSION) - gcc_spu_lib_dir = $(PF)/spu/$(libdir)/gcc/spu/$(GCC_VERSION) + gcc_spu_lib_dir = $(PF)/spu/lib/gcc/spu/$(GCC_VERSION) gcc_spu_lexec_dir = $(spulibexecdir)/gcc/spu/$(GCC_VERSION) endif @@ -957,6 +964,7 @@ --prefix=/$(PF) \ --libexecdir=/$(libexecdir) \ --enable-multiarch \ + $(MULTIARCH_CONFARG) \ --disable-shared \ --disable-nls \ --disable-threads \ @@ -998,6 +1006,7 @@ --libexecdir=/$(libexecdir) \ --program-suffix=-$(BASE_VERSION) \ --enable-multiarch \ + $(MULTIARCH_CONFARG) \ --disable-nls \ --disable-libmudflap \ --with-arch=armv7-a --with-tune=cortex-a8 \ @@ -1032,6 +1041,7 @@ --prefix=/$(PF) \ --libexecdir=/$(libexecdir) \ --enable-multiarch \ + $(MULTIARCH_CONFARG) \ --disable-nls \ --disable-libmudflap \ --program-suffix=-$(BASE_VERSION) \ @@ -1679,7 +1689,7 @@ : # remove files not needed from the hppa64 build rm -rf $(d)/$(PF)/info rm -rf $(d)/$(PF)/man - rm -f $(d)/$(PF)/lib/libiberty.a + rm -f $(d)/$(PF)/$(libdir)/libiberty.a rm -f $(d)/$(PF)/bin/*{protoize,gcov,gccbug,gcc} rm -rf $(d)/$(PF)/hppa64-linux-gnu/include @@ -1729,7 +1739,7 @@ : # remove files not needed from the spu build rm -rf $(d)/$(PF)/info rm -rf $(d)/$(PF)/man - rm -f $(d)/$(PF)/lib/libiberty.a + rm -f $(d)/$(PF)/$(libdir)/libiberty.a rm -f $(d)/$(PF)/bin/*{protoize,gcov,gccbug,gcc} rm -rf $(d)/$(PF)/spu/include @@ -2118,7 +2128,7 @@ : # remove files not needed rm -rf $(d_spu)/$(PF)/info # rm -rf $(d_spu)/$(PF)/man - rm -f $(d_spu)/$(PF)/lib/libiberty.a + rm -f $(d_spu)/$(PF)/$(libdir)/libiberty.a rm -f $(d_spu)/$(PF)/bin/*{protoize,gcov,gccbug,gcc} # rm -rf $(d_spu)/$(PF)/spu/include # Begin bundle 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 /Q15bwFmQCtMCX4khLzP/xdyRThQkG32Co8=
Attachment:
signature.asc
Description: Digital signature