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

Re: multiarch support for gcc-4.4



On Thu, Mar 17, 2011 at 01:12:27AM -0700, Steve Langasek wrote:

> Attached is a backport to gcc-4.4 of all my multiarch changes to date for
> gcc-4.5.

Here is a further set of changes to be applied on top of the previous patch.
The previous upload of multiarch gcc-4.4 to Ubuntu showed a couple of
regressions:

 - build failure on powerpc, caused by conflicting, conditionally-applied
   patches on that architecture only
 - wrong multilib os dir being declared on 64-bit archs, contributing to a
   binutils misbuild because libiberty.a isn't in the expected directory
   (binutils uses gcc -print-multi-os-directory to decide its install path;
   this seems wrong to me, but the multilib os dir was wrong anyway.)

The first issue only affects gcc-4.4 - the fix for this is taken from
gcc-4.5.  A cleanup of the second issue will be applied separately to
gcc-4.5 and forwarded when it's ready.

-- 
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-20110319095056-\
#   2j1t8tvrsyb0s9b8
# target_branch: svn+ssh://svn.debian.org/svn/gcccvs/branches/sid/gcc-\
#   4.4
# testament_sha1: be39276da488554069597b83280f74cb2a669c75
# timestamp: 2011-03-19 02:51:30 -0700
# base_revision_id: svn-v4:6ca36cf4-e1d1-0310-8c6f-\
#   e303bb2178ca:branches/sid/gcc-4.4:5125
# 
# Begin patch
=== modified file 'debian/changelog'
--- debian/changelog	2011-03-17 12:13:01 +0000
+++ debian/changelog	2011-03-19 09:50:56 +0000
@@ -26,6 +26,18 @@
   * debian/rules.defs: support turning on multiarch build by distribution.
   * debian/rules2: When DEB_HOST_MULTIARCH is available, use it as our
     multiarch path.
+  * rename debian/patches/powerpc-biarch.diff to
+    debian/patches/gcc-powerpc-nof.diff as in gcc-4.5 and apply
+    unconditionally to disable softfloat, to keep this change from being
+    mixed into the biarch32/biarch64/multiarch patches.
+  * debian/patches/gcc-multiarch+biarch.diff: restore the original intent of
+    the patch, namely, that the multilib dir for the default variant is
+    always equal to libdir (the multiarch dir), and we walk up the tree
+    to find lib<qual> for the secondary variant.
+  * debian/patches/gcc-multiarch+biarch32.diff: apply the same multilib
+    directory rewriting for biarch paths with multiarch as we do without;
+    still needed in the near term.  This corrects a regression that leads to
+    a binutils misbuild.  LP: #737887.
 
  -- Steve Langasek <vorlon@debian.org>  Thu, 17 Mar 2011 01:07:37 -0700
 

=== modified file 'debian/patches/gcc-multiarch+biarch.diff'
--- debian/patches/gcc-multiarch+biarch.diff	2011-03-17 12:13:01 +0000
+++ debian/patches/gcc-multiarch+biarch.diff	2011-03-19 09:50:56 +0000
@@ -4,17 +4,14 @@
 ===================================================================
 --- 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 @@
+@@ -1,6 +1,6 @@
  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,.)
++MULTILIB_OSDIRNAMES = $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib64),../../lib64,../lib64) .
  
  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
@@ -23,7 +20,7 @@
  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,.)
++MULTILIB_OSDIRNAMES = $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib64),../../lib64,../lib64) .
  
  LIBGCC = stmp-multilib
  INSTALL_LIBGCC = install-multilib
@@ -36,7 +33,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,.)
++MULTILIB_OSDIRNAMES = $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib64),../../lib64,../lib64) .
  
  LIBGCC = stmp-multilib
  INSTALL_LIBGCC = install-multilib
@@ -46,10 +43,10 @@
 +++ 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)
+ MULTILIB_EXCEPTIONS     =
+ MULTILIB_EXCLUSIONS     =
+-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,../lib64) .
+ MULTILIB_MATCHES        =
  
  softfp_wrap_start := '\#ifndef __powerpc64__'

=== added file 'debian/patches/gcc-multiarch+biarch32.diff'
--- debian/patches/gcc-multiarch+biarch32.diff	1970-01-01 00:00:00 +0000
+++ debian/patches/gcc-multiarch+biarch32.diff	2011-03-19 09:50:56 +0000
@@ -0,0 +1,53 @@
+# DP: Use lib instead of lib64 as multilibdir on amd64, sparc64 and ppc64,
+# DP: including when building for multiarch.
+
+Index: trunk/src/gcc/config/i386/t-linux64
+===================================================================
+--- trunk.orig/src/gcc/config/i386/t-linux64
++++ trunk/src/gcc/config/i386/t-linux64
+@@ -7,7 +7,7 @@
+ 
+ MULTILIB_OPTIONS = m64/m32
+ MULTILIB_DIRNAMES = 64 32 
+-MULTILIB_OSDIRNAMES = $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib64),../../lib64,../lib64) .
++MULTILIB_OSDIRNAMES = . $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib32),../../lib32,../lib32)
+ 
+ LIBGCC = stmp-multilib
+ INSTALL_LIBGCC = install-multilib
+Index: trunk/src/gcc/config/rs6000/t-linux64
+===================================================================
+--- trunk.orig/src/gcc/config/rs6000/t-linux64
++++ trunk/src/gcc/config/rs6000/t-linux64
+@@ -19,7 +19,7 @@
+ MULTILIB_EXTRA_OPTS     = fPIC mstrict-align
+ MULTILIB_EXCEPTIONS     =
+ MULTILIB_EXCLUSIONS     =
+-MULTILIB_OSDIRNAMES	= $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib64),../../lib64,../lib64) .
++MULTILIB_OSDIRNAMES	= . $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib32),../../lib32,../lib32)
+ MULTILIB_MATCHES        =
+ 
+ softfp_wrap_start := '\#ifndef __powerpc64__'
+Index: trunk/src/gcc/config/s390/t-linux64
+===================================================================
+--- trunk.orig/src/gcc/config/s390/t-linux64
++++ trunk/src/gcc/config/s390/t-linux64
+@@ -1,6 +1,6 @@
+ MULTILIB_OPTIONS = m64/m31
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib64),../../lib64,../lib64) .
++MULTILIB_OSDIRNAMES = . $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib32),../../lib32,../lib32)
+ 
+ LIBGCC = stmp-multilib
+ INSTALL_LIBGCC = install-multilib
+Index: trunk/src/gcc/config/sparc/t-linux64
+===================================================================
+--- trunk.orig/src/gcc/config/sparc/t-linux64
++++ trunk/src/gcc/config/sparc/t-linux64
+@@ -1,6 +1,6 @@
+ MULTILIB_OPTIONS = m64/m32
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib64),../../lib64,../lib64) .
++MULTILIB_OSDIRNAMES = . $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../../usr/lib32),../../lib32,../lib32)
+ 
+ LIBGCC = stmp-multilib
+ INSTALL_LIBGCC = install-multilib

=== modified file 'debian/patches/gcc-multilib64dir.diff'
--- debian/patches/gcc-multilib64dir.diff	2010-09-25 10:08:49 +0000
+++ debian/patches/gcc-multilib64dir.diff	2011-03-19 09:50:56 +0000
@@ -18,26 +18,15 @@
  INSTALL_LIBGCC = install-multilib
 --- a/src/gcc/config/rs6000/t-linux64
 +++ b/src/gcc/config/rs6000/t-linux64
-@@ -14,13 +14,13 @@ TARGET_LIBGCC2_CFLAGS += -mno-minimal-toc
- # it doesn't tell anything about the 32bit libraries on those systems.  Set
- # MULTILIB_OSDIRNAMES according to what is found on the target.
- 
--MULTILIB_OPTIONS        = m64/m32 msoft-float
--MULTILIB_DIRNAMES       = 64 32 nof
-+MULTILIB_OPTIONS        = m64/m32
-+MULTILIB_DIRNAMES       = 64 32
+@@ -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_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
-+MULTILIB_EXCEPTIONS     =
-+MULTILIB_EXCLUSIONS     =
-+MULTILIB_OSDIRNAMES	    = ../lib $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
-+MULTILIB_MATCHES        =
+ MULTILIB_EXCEPTIONS     =
+ MULTILIB_EXCLUSIONS     =
+-MULTILIB_OSDIRNAMES	= ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
++MULTILIB_OSDIRNAMES	= ../lib $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
+ MULTILIB_MATCHES        =
  
  softfp_wrap_start := '\#ifndef __powerpc64__'
- softfp_wrap_end := '\#endif'
 --- a/src/gcc/config/sparc/t-linux64
 +++ b/src/gcc/config/sparc/t-linux64
 @@ -1,6 +1,6 @@

=== added file 'debian/patches/gcc-powerpc-nof.diff'
--- debian/patches/gcc-powerpc-nof.diff	1970-01-01 00:00:00 +0000
+++ debian/patches/gcc-powerpc-nof.diff	2011-03-19 09:50:56 +0000
@@ -0,0 +1,24 @@
+# DP: Don't build nof multlib on powerpc.
+
+--- a/src/gcc/config/rs6000/t-linux64~	2010-04-05 21:47:52.681086416 +0000
++++ b/src/gcc/config/rs6000/t-linux64	2010-04-05 21:51:34.531670412 +0000
+@@ -31,13 +31,13 @@
+ # it doesn't tell anything about the 32bit libraries on those systems.  Set
+ # MULTILIB_OSDIRNAMES according to what is found on the target.
+ 
+-MULTILIB_OPTIONS        = m64/m32 msoft-float
+-MULTILIB_DIRNAMES       = 64 32 nof
++MULTILIB_OPTIONS        = m64/m32
++MULTILIB_DIRNAMES       = 64 32
+ 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_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
++MULTILIB_EXCEPTIONS     =
++MULTILIB_EXCLUSIONS     =
++MULTILIB_OSDIRNAMES	= ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
++MULTILIB_MATCHES        =
+ 
+ softfp_wrap_start := '\#ifndef __powerpc64__'
+ softfp_wrap_end := '\#endif'

=== removed file 'debian/patches/powerpc-biarch.diff'
--- debian/patches/powerpc-biarch.diff	2009-03-29 13:51:22 +0000
+++ debian/patches/powerpc-biarch.diff	1970-01-01 00:00:00 +0000
@@ -1,28 +0,0 @@
-# DP: enable biarch for 32 bit compiler
-
----
- gcc/config/rs6000/t-linux64 |   12 ++++++------
- 1 files changed, 6 insertions(+), 6 deletions(-)
-
---- a/src/gcc/config/rs6000/t-linux64
-+++ b/src/gcc/config/rs6000/t-linux64
-@@ -14,13 +14,13 @@ TARGET_LIBGCC2_CFLAGS += -mno-minimal-toc
- # it doesn't tell anything about the 32bit libraries on those systems.  Set
- # MULTILIB_OSDIRNAMES according to what is found on the target.
- 
--MULTILIB_OPTIONS        = m64/m32 msoft-float
--MULTILIB_DIRNAMES       = 64 32 nof
-+MULTILIB_OPTIONS        = m64/m32
-+MULTILIB_DIRNAMES       = 64 32
- 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_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
-+MULTILIB_EXCEPTIONS     =
-+MULTILIB_EXCLUSIONS     =
-+MULTILIB_OSDIRNAMES	= ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
-+MULTILIB_MATCHES        =
- 
- softfp_wrap_start := '\#ifndef __powerpc64__'
- softfp_wrap_end := '\#endif'

=== modified file 'debian/rules.patch'
--- debian/rules.patch	2011-03-17 12:13:01 +0000
+++ debian/rules.patch	2011-03-19 09:50:56 +0000
@@ -295,6 +295,8 @@
 
 debian_patches += gcc-multiarch$(if $(with_linaro_branch),-linaro)
 
+debian_patches += gcc-powerpc-nof
+
 ifeq ($(biarch64),yes)
   ifeq (,$(findstring libjava, $(biarch_multidir_names)))
     debian_patches += libjava-nobiarch-check
@@ -304,9 +306,6 @@
   ifeq ($(DEB_CROSS),yes)
     debian_patches += cross-biarch
   endif
-  ifeq ($(DEB_TARGET_ARCH),powerpc)
-    debian_patches += powerpc-biarch
-  endif
   debian_patches += s390-biarch
 endif
 
@@ -319,6 +318,12 @@
 
 ifeq ($(with_multiarch_lib),yes)
   debian_patches += gcc-multiarch+biarch
+  ifeq ($(biarch32),yes)
+    debian_patches += gcc-multiarch+biarch32
+  endif
+  ifneq (,$(findstring sparc64,$(DEB_TARGET_ARCH)))
+    debian_patches += gcc-multiarch+biarch32
+  endif
 else
   ifeq ($(biarch32),yes)
     debian_patches += gcc-multilib64dir

# Begin bundle
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
3sf/F3JFOFCQzKh0Kg==

Attachment: signature.asc
Description: Digital signature


Reply to: