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

Bug#715038: add mips64(el) mipsn32(el) support to eglibc



I refreshed this patch with 2.18-6.

On Thu, May 8, 2014 at 10:53 AM, Yunqiang Su <wzssyqa@gmail.com> wrote:
> On Wed, May 7, 2014 at 11:02 PM, Aurelien Jarno <aurelien@aurel32.net> wrote:
>> On Fri, Apr 25, 2014 at 10:25:55PM +0800, Yunqiang Su wrote:
>>> On Fri, Apr 25, 2014 at 10:25 PM, Yunqiang Su <wzssyqa@gmail.com> wrote:
>>> > I refresh this patch with 2.18-4, and
>>> >
>>> > let libc6 breaks:
>>> >
>>> >           libc6-mips64 [mips64 mips64el],
>>> >           libc6-mipsn32 [mipsn32 mipsn32el],
>>> >           libc6-mips32 [mips mipsel],
>>> >
>>> >
>>> > On Thu, Feb 27, 2014 at 9:20 AM, Yunqiang Su <wzssyqa@gmail.com> wrote:
>>> >> I refresh this patch with 2.18-3
>>> >>
>>> >> On Mon, Oct 7, 2013 at 9:50 AM, YunQiang Su <wzssyqa@gmail.com> wrote:
>>> >>> I refresh the patches with 2.17-93.
>>> >>> It's time to consider to merge it.
>>> >>>
>>> >>> Now we have about 7000 packages build successfully already.
>>> >>> This architecture may be in debian-ports in near future.
>>
>> Please find my comments about this patch below.
>>
>>> [ snip ]
>>
>>> diff -urN a/debian/rules.d/build.mk b/debian/rules.d/build.mk
>>> --- a/debian/rules.d/build.mk 2014-03-02 15:01:31.000000000 +0000
>>> +++ b/debian/rules.d/build.mk 2014-04-25 14:14:27.708058521 +0000
>>> @@ -233,7 +233,7 @@
>>>       # the multiarch ld.so doesn't look at the (non-standard) /lib32, so we
>>>       # need path compatibility when biarch and multiarch packages are both
>>>       # installed.
>>> -     case $(call xx,slibdir) in /lib32 | /lib64 | /libx32) \
>>> +     case $(call xx,slibdir) in /lib32 | /lib64 | /libx32 | /lib) \
>>>         mkdir -p debian/tmp-$(curpass)/etc/ld.so.conf.d; \
>>>         conffile="debian/tmp-$(curpass)/etc/ld.so.conf.d/zz_$(curpass)-biarch-compat.conf"; \
>>>         echo "# Legacy biarch compatibility support" > $$conffile; \
>>
>> Why do you need this change? This will create a ld.so.conf entry even
>> for /lib, while ld.so should always be configured to look for /lib and
>> /lib/$(DEB_HOST_ARCH_MULTIARCH) without even an ld.so.conf entry.
>> Moreover, with this change such a file would be created for all
>> architectures, not only mips64.
>>
>> Please look why ld.so doesn't look to /lib by default.
>
> It looks /lib. I dropped this snip.
>
>>
>>> diff -urN a/debian/rules.d/build.mk.orig b/debian/rules.d/build.mk.orig
>>> --- a/debian/rules.d/build.mk.orig    1970-01-01 00:00:00.000000000 +0000
>>> +++ b/debian/rules.d/build.mk.orig    2014-04-25 14:14:27.708058521 +0000
>>
>>> [ snip ]
>>
>> Please don't include such an orig file in your patch.
>>
>>> [ snip ]
>>
>>> diff -urN a/debian/rules.d/control.mk.orig b/debian/rules.d/control.mk.orig
>>> --- a/debian/rules.d/control.mk.orig  1970-01-01 00:00:00.000000000 +0000
>>> +++ b/debian/rules.d/control.mk.orig  2014-04-25 14:14:27.708058521 +0000
>>
>> Same here
>>
>>> [ snip ]
>>
>>> diff -urN a/debian/rules.d/debhelper.mk b/debian/rules.d/debhelper.mk
>>> --- a/debian/rules.d/debhelper.mk     2014-03-02 15:01:31.000000000 +0000
>>> +++ b/debian/rules.d/debhelper.mk     2014-04-25 14:14:27.708058521 +0000
>>> @@ -223,7 +223,7 @@
>>>           pass="" \
>>>           suffix="" \
>>>           ;; \
>>> -       *:/lib32 | *:/lib64 | *:/libx32 | *:/lib/arm-linux-gnueabi*) \
>>> +       *:/lib32 | *:/lib64 | *:/libx32 | *:/lib | *:/lib/arm-linux-gnueabi*) \
>>
>> I guess it's because the multilib o32 version is installed in /lib,
>> right? But see below.
>>
>
> Yes
>
>>
>>>           templates="libc libc-dev" \
>>>           pass="-alt" \
>>>           suffix="-$(curpass)" \
>>> @@ -240,6 +240,9 @@
>>>           if [ "$$s" != "$$t" ] ; then \
>>>             cp $$s $$t ; \
>>>           fi ; \
>>> +             if [ "$$suffix" = "-mips32" ] ; then \
>>> +                sed -e '/ld.so.conf.d /etc/d' -i $$t; \
>>> +         fi ; \
>>
>> What is that supposed to do?
>
> This is used to avoid installing zz_mips32-biarch-compat.conf
> for /lib and /usr/lib .
>
> $$t is debian/libc6-mips32.install here.
>
>>
>>>           sed -e "s#TMPDIR#debian/tmp-$$curpass#g" -i $$t; \
>>>           sed -e "s#RTLDDIR#$$rtlddir#g" -i $$t; \
>>>           sed -e "s#SLIBDIR#$$slibdir#g" -i $$t; \
>>
>>
>>> [ snip ]
>>
>>> diff -urN a/debian/sysdeps/mips64el.mk b/debian/sysdeps/mips64el.mk
>>> --- a/debian/sysdeps/mips64el.mk      1970-01-01 00:00:00.000000000 +0000
>>> +++ b/debian/sysdeps/mips64el.mk      2014-04-25 14:14:27.712058556 +0000
>>> @@ -0,0 +1,54 @@
>>> +libc_add-ons = ports nptl $(add-ons)
>>> +libc_rtlddir = /lib64
>>> +
>>> +# build 32-bit (n32) alternative library
>>> +EGLIBC_PASSES += mipsn32
>>> +DEB_ARCH_REGULAR_PACKAGES += libc6-mipsn32 libc6-dev-mipsn32
>>> +mipsn32_add-ons = ports nptl $(add-ons)
>>> +mipsn32_configure_target = mips64el-linux-gnuabin32
>>> +mipsn32_CC = $(CC) -mabi=n32 -mno-plt
>>> +mipsn32_CXX = $(CXX) -mabi=n32 -mno-plt
>>> +libc6-mipsn32_shlib_dep = libc6-mipsn32 (>= $(shlib_dep_ver))
>>> +mipsn32_rtlddir = /lib32
>>> +mipsn32_slibdir = /lib32
>>> +mipsn32_libdir = /usr/lib32
>>> +mipsn32_extra_config_options := $(extra_config_options) --disable-profile
>>> +
>>> +# build 32-bit (o32) alternative library
>>> +EGLIBC_PASSES += mips32
>>> +DEB_ARCH_REGULAR_PACKAGES += libc6-mips32 libc6-dev-mips32
>>> +mips32_add-ons = ports nptl $(add-ons)
>>> +mips32_configure_target = mipsel-linux-gnu
>>> +mips32_CC = $(CC) -mabi=32 -mno-plt
>>> +mips32_CXX = $(CXX) -mabi=32 -mno-plt
>>> +libc6-mips32_shlib_dep = libc6-mips32 (>= $(shlib_dep_ver))
>>> +mips32_rtlddir = /lib
>>> +mips32_slibdir = /lib
>>> +mips32_libdir = /usr/lib
>>
>> For what I understand there, the o32 library is installed in /lib, which
>> might conflict with the system libraries on some aspects. Wouldn't it be
>> better to install it in for example in /libo32 instead? Of course
>> rtlddir would stay in /lib to be conform with the ABI.
>
> I agree with you about this, while some guys think install to /lib is required.
> https://lists.debian.org/debian-mips/2013/06/msg00006.html
>
> Let's try to explain to them again?
>
>>
>> Note that it is only for the multilib packages, so basically the
>> toolchain (libc + compiler). mips o32 multiarch packages will of course
>> be installed in /usr/lib/mips-linux-gnu.
>>
>> The same is also the case for the other mipsn32/mips64 .mk files.
>>
>> --
>> Aurelien Jarno                          GPG: 4096R/1DDD8C9B
>> aurelien@aurel32.net                 http://www.aurel32.net
>
>
>
> --
> Yunqiang Su



-- 
Yunqiang Su
diff -Nru eglibc-2.18/debian/changelog eglibc-2.18/debian/changelog
--- eglibc-2.18/debian/changelog	2014-05-14 15:00:30.000000000 +0000
+++ eglibc-2.18/debian/changelog	2014-05-19 19:21:47.000000000 +0000
@@ -1,4 +1,4 @@
-eglibc (2.18-6) unstable; urgency=medium
+eglibc (2.18-6+mips64) unstable; urgency=medium
 
   [ Samuel Thibault ]
   * patches/hurd-i386/cvs-libpthread_guardsize.diff: Fix guardsize semantic
diff -Nru eglibc-2.18/debian/control eglibc-2.18/debian/control
--- eglibc-2.18/debian/control	2014-05-14 15:00:31.000000000 +0000
+++ eglibc-2.18/debian/control	2014-05-19 18:57:16.000000000 +0000
@@ -3,12 +3,12 @@
 Priority: required
 Build-Depends: gettext, dpkg-dev (>= 1.16.0), bzip2, xz-utils, file, quilt,
  autoconf, gawk, debhelper (>= 7.4.3), rdfind, symlinks, netbase,
- linux-libc-dev (>= 3.2.1) [linux-any], linux-libc-dev (>= 3.4) [amd64 i386 x32],
+ linux-libc-dev (>= 3.2.1) [linux-any], linux-libc-dev (>= 3.4) [amd64 i386 x32], linux-libc-dev (>= 3.9) [mips64 mips64el],
  libaudit-dev [linux-any], libcap-dev [linux-any], libselinux-dev [linux-any],
  mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 1:0.5.git20140320~) [hurd-i386], gnumach-dev (>= 2:1.4-2~) [hurd-i386],
  kfreebsd-kernel-headers [kfreebsd-any],
  binutils (>= 2.21),
- g++-4.8, g++-4.8-multilib [amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390x sparc sparc64 x32]
+ g++-4.8, g++-4.8-multilib [amd64 i386 kfreebsd-amd64 mips mipsel mipsn32 mipsn32el mips64 mips64el powerpc ppc64 s390x sparc sparc64 x32]
 Build-Depends-Indep: perl, po-debconf (>= 1.0)
 Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
 Uploaders: Clint Adams <clint@debian.org>, Aurelien Jarno <aurel32@debian.org>, Adam Conrad <adconrad@0c3.net>
@@ -135,7 +135,7 @@
  be removed once nothing on the system depends on it.
 
 Package: libc6
-Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
+Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
 Section: libs
 Priority: required
 Multi-Arch: same
@@ -155,6 +155,9 @@
           libc6-ppc64 [ppc64],
           libc6-s390x [s390x],
           libc6-sparc64 [sparc64],
+          libc6-mips64 [mips64 mips64el],
+          libc6-mipsn32 [mipsn32 mipsn32el],
+          libc6-mips32 [mips mipsel],
           hurd (<< 20120408-3) [hurd-i386]
 Description: Embedded GNU C Library: Shared libraries
  Contains the standard libraries that are used by nearly all programs on
@@ -162,7 +165,7 @@
  and the standard math library, as well as many others.
 
 Package: libc6-dev
-Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
+Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
 Section: libdevel
 Priority: optional
 Multi-Arch: same
@@ -178,7 +181,7 @@
  and link programs which use the standard C library.
 
 Package: libc6-dbg
-Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
+Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
 Section: debug
 Priority: extra
 Multi-Arch: same
@@ -189,7 +192,7 @@
  library.
 
 Package: libc6-prof
-Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
+Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
 Section: libdevel
 Priority: extra
 Multi-Arch: same
@@ -199,7 +202,7 @@
  with gprof.
 
 Package: libc6-pic
-Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
+Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
 Section: libdevel
 Priority: optional
 Multi-Arch: same
@@ -214,7 +217,7 @@
 
 Package: libc6-udeb
 XC-Package-Type: udeb
-Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
+Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
 Section: debian-installer
 Priority: extra
 Provides: libc6, libc-udeb, ${locale-compat:Depends}
@@ -247,6 +250,9 @@
           libc6-ppc64 [ppc64],
           libc6-s390x [s390x],
           libc6-sparc64 [sparc64],
+          libc6-mips64 [mips64 mips64el],
+          libc6-mipsn32 [mipsn32 mipsn32el],
+          libc6-mips32 [mips mipsel],
           hurd (<< 20120408-3) [hurd-i386]
 Description: Embedded GNU C Library: Shared libraries
  Contains the standard libraries that are used by nearly all programs on
@@ -339,6 +345,9 @@
           libc6-ppc64 [ppc64],
           libc6-s390x [s390x],
           libc6-sparc64 [sparc64],
+          libc6-mips64 [mips64 mips64el],
+          libc6-mipsn32 [mipsn32 mipsn32el],
+          libc6-mips32 [mips mipsel],
           hurd (<< 20120408-3) [hurd-i386]
 Description: Embedded GNU C Library: Shared libraries
  Contains the standard libraries that are used by nearly all programs on
@@ -431,6 +440,9 @@
           libc6-ppc64 [ppc64],
           libc6-s390x [s390x],
           libc6-sparc64 [sparc64],
+          libc6-mips64 [mips64 mips64el],
+          libc6-mipsn32 [mipsn32 mipsn32el],
+          libc6-mips32 [mips mipsel],
           hurd (<< 20120408-3) [hurd-i386]
 Description: Embedded GNU C Library: Shared libraries
  Contains the standard libraries that are used by nearly all programs on
@@ -678,8 +690,35 @@
  which use the standard C library. This is the 64bit version of the
  library, meant for PowerPC64 systems.
 
+Package: libc6-mips32
+Architecture: mipsn32 mipsn32el mips64 mips64el
+Section: libs
+Priority: optional
+Depends: libc6 (= ${binary:Version}), ${misc:Depends}
+Description: Embedded GNU C Library: o32 Shared libraries for MIPS64
+ This package includes shared versions of the standard C library and the
+ standard math library, as well as many others. This is the o32 version
+ of the library, meant for MIPS64 systems.
+
+Package: libc6-dev-mips32
+Architecture: mipsn32 mipsn32el mips64 mips64el
+Section: libdevel
+Priority: optional
+Provides: lib32c-dev
+Conflicts: libc6-dev (<< 2.13-14)
+Replaces: libc6-dev (<< 2.13-11)
+Depends: libc6-dev (= ${binary:Version}), libc6-mips32 (= ${binary:Version}),
+   libc6-dev-mipsn32 (= ${binary:Version}) [mips64 mips64el],
+   libc6-dev-mips64 (= ${binary:Version}) [mipsn32 mipsn32el],
+   ${misc:Depends}
+Recommends: gcc-multilib
+Description: Embedded GNU C Library: o32 Development Libraries for MIPS64
+ Contains the symlinks and object files needed to compile and link programs
+ which use the standard C library. This is the o32 version of the
+ library, meant for MIPS64 systems.
+
 Package: libc6-mipsn32
-Architecture: mips mipsel
+Architecture: mips mipsel mips64 mips64el
 Section: libs
 Priority: optional
 Depends: libc6 (= ${binary:Version}), ${misc:Depends}
@@ -690,13 +729,13 @@
  of the library, meant for MIPS64 systems.
 
 Package: libc6-dev-mipsn32
-Architecture: mips mipsel
+Architecture: mips mipsel mips64 mips64el
 Section: libdevel
 Priority: optional
 Provides: libn32c-dev
 Conflicts: libc6-dev (<< 2.13-14)
 Replaces: libc6-dev (<< 2.13-11)
-Depends: libc6-mipsn32 (= ${binary:Version}), libc6-dev-mips64 (= ${binary:Version}), ${misc:Depends}
+Depends: libc6-mipsn32 (= ${binary:Version}), libc6-dev-mips64 (= ${binary:Version}) [mips mipsel], libc6-dev (= ${binary:Version}), ${misc:Depends}
 Recommends: gcc-multilib
 Description: Embedded GNU C Library: n32 Development Libraries for MIPS64
  Contains the symlinks and object files needed to compile and link programs
@@ -704,7 +743,7 @@
  library, meant for MIPS64 systems.
 
 Package: libc6-mips64
-Architecture: mips mipsel
+Architecture: mips mipsel mipsn32 mipsn32el
 Section: libs
 Priority: optional
 Depends: libc6 (= ${binary:Version}), ${misc:Depends}
@@ -715,7 +754,7 @@
  of the library, meant for MIPS64 systems.
 
 Package: libc6-dev-mips64
-Architecture: mips mipsel
+Architecture: mips mipsel mipsn32 mipsn32el
 Section: libdevel
 Priority: optional
 Provides: lib64c-dev
diff -Nru eglibc-2.18/debian/control.in/libc eglibc-2.18/debian/control.in/libc
--- eglibc-2.18/debian/control.in/libc	2014-05-14 15:00:30.000000000 +0000
+++ eglibc-2.18/debian/control.in/libc	2014-05-19 18:05:29.000000000 +0000
@@ -19,6 +19,9 @@
           libc6-ppc64 [ppc64],
           libc6-s390x [s390x],
           libc6-sparc64 [sparc64],
+          libc6-mips64 [mips64 mips64el],
+          libc6-mipsn32 [mipsn32 mipsn32el],
+          libc6-mips32 [mips mipsel],
           hurd (<< 20120408-3) [hurd-i386]
 Description: Embedded GNU C Library: Shared libraries
  Contains the standard libraries that are used by nearly all programs on
diff -Nru eglibc-2.18/debian/control.in/main eglibc-2.18/debian/control.in/main
--- eglibc-2.18/debian/control.in/main	2014-05-14 15:00:30.000000000 +0000
+++ eglibc-2.18/debian/control.in/main	2014-05-19 18:07:39.000000000 +0000
@@ -3,12 +3,12 @@
 Priority: required
 Build-Depends: gettext, dpkg-dev (>= 1.16.0), bzip2, xz-utils, file, quilt,
  autoconf, gawk, debhelper (>= 7.4.3), rdfind, symlinks, netbase,
- linux-libc-dev (>= 3.2.1) [linux-any], linux-libc-dev (>= 3.4) [amd64 i386 x32],
+ linux-libc-dev (>= 3.2.1) [linux-any], linux-libc-dev (>= 3.4) [amd64 i386 x32], linux-libc-dev (>= 3.9) [mips64 mips64el],
  libaudit-dev [linux-any], libcap-dev [linux-any], libselinux-dev [linux-any],
  mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 1:0.5.git20140320~) [hurd-i386], gnumach-dev (>= 2:1.4-2~) [hurd-i386],
  kfreebsd-kernel-headers [kfreebsd-any],
  binutils (>= 2.21),
- g++-4.8, g++-4.8-multilib [amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390x sparc sparc64 x32]
+ g++-4.8, g++-4.8-multilib [amd64 i386 kfreebsd-amd64 mips mipsel mipsn32 mipsn32el mips64 mips64el powerpc ppc64 s390x sparc sparc64 x32]
 Build-Depends-Indep: perl, po-debconf (>= 1.0)
 Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
 Uploaders: Clint Adams <clint@debian.org>, Aurelien Jarno <aurel32@debian.org>, Adam Conrad <adconrad@0c3.net>
diff -Nru eglibc-2.18/debian/control.in/mips32 eglibc-2.18/debian/control.in/mips32
--- eglibc-2.18/debian/control.in/mips32	1970-01-01 00:00:00.000000000 +0000
+++ eglibc-2.18/debian/control.in/mips32	2014-05-19 18:05:29.000000000 +0000
@@ -0,0 +1,27 @@
+Package: libc6-mips32
+Architecture: mipsn32 mipsn32el mips64 mips64el
+Section: libs
+Priority: optional
+Depends: libc6 (= ${binary:Version}), ${misc:Depends}
+Description: Embedded GNU C Library: o32 Shared libraries for MIPS64
+ This package includes shared versions of the standard C library and the
+ standard math library, as well as many others. This is the o32 version
+ of the library, meant for MIPS64 systems.
+
+Package: libc6-dev-mips32
+Architecture: mipsn32 mipsn32el mips64 mips64el
+Section: libdevel
+Priority: optional
+Provides: lib32c-dev
+Conflicts: libc6-dev (<< 2.13-14)
+Replaces: libc6-dev (<< 2.13-11)
+Depends: libc6-dev (= ${binary:Version}), libc6-mips32 (= ${binary:Version}),
+   libc6-dev-mipsn32 (= ${binary:Version}) [mips64 mips64el],
+   libc6-dev-mips64 (= ${binary:Version}) [mipsn32 mipsn32el],
+   ${misc:Depends}
+Recommends: gcc-multilib
+Description: Embedded GNU C Library: o32 Development Libraries for MIPS64
+ Contains the symlinks and object files needed to compile and link programs
+ which use the standard C library. This is the o32 version of the
+ library, meant for MIPS64 systems.
+
diff -Nru eglibc-2.18/debian/control.in/mips64 eglibc-2.18/debian/control.in/mips64
--- eglibc-2.18/debian/control.in/mips64	2014-05-14 15:00:30.000000000 +0000
+++ eglibc-2.18/debian/control.in/mips64	2014-05-19 18:05:29.000000000 +0000
@@ -1,5 +1,5 @@
 Package: libc6-mips64
-Architecture: mips mipsel
+Architecture: mips mipsel mipsn32 mipsn32el
 Section: libs
 Priority: optional
 Depends: libc6 (= ${binary:Version}), ${misc:Depends}
@@ -10,7 +10,7 @@
  of the library, meant for MIPS64 systems.
 
 Package: libc6-dev-mips64
-Architecture: mips mipsel
+Architecture: mips mipsel mipsn32 mipsn32el
 Section: libdevel
 Priority: optional
 Provides: lib64c-dev
diff -Nru eglibc-2.18/debian/control.in/mipsn32 eglibc-2.18/debian/control.in/mipsn32
--- eglibc-2.18/debian/control.in/mipsn32	2014-05-14 15:00:30.000000000 +0000
+++ eglibc-2.18/debian/control.in/mipsn32	2014-05-19 18:05:29.000000000 +0000
@@ -1,5 +1,5 @@
 Package: libc6-mipsn32
-Architecture: mips mipsel
+Architecture: mips mipsel mips64 mips64el
 Section: libs
 Priority: optional
 Depends: libc6 (= ${binary:Version}), ${misc:Depends}
@@ -10,13 +10,13 @@
  of the library, meant for MIPS64 systems.
 
 Package: libc6-dev-mipsn32
-Architecture: mips mipsel
+Architecture: mips mipsel mips64 mips64el
 Section: libdevel
 Priority: optional
 Provides: libn32c-dev
 Conflicts: libc6-dev (<< 2.13-14)
 Replaces: libc6-dev (<< 2.13-11)
-Depends: libc6-mipsn32 (= ${binary:Version}), libc6-dev-mips64 (= ${binary:Version}), ${misc:Depends}
+Depends: libc6-mipsn32 (= ${binary:Version}), libc6-dev-mips64 (= ${binary:Version}) [mips mipsel], libc6-dev (= ${binary:Version}), ${misc:Depends}
 Recommends: gcc-multilib
 Description: Embedded GNU C Library: n32 Development Libraries for MIPS64
  Contains the symlinks and object files needed to compile and link programs
diff -Nru eglibc-2.18/debian/rules.d/control.mk eglibc-2.18/debian/rules.d/control.mk
--- eglibc-2.18/debian/rules.d/control.mk	2014-05-14 15:00:31.000000000 +0000
+++ eglibc-2.18/debian/rules.d/control.mk	2014-05-19 18:05:29.000000000 +0000
@@ -1,7 +1,7 @@
 libc_packages := libc6 libc6.1 libc0.1 libc0.3
 libc0_1_archs := kfreebsd-amd64 kfreebsd-i386
 libc0_3_archs := hurd-i386
-libc6_archs   := amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
+libc6_archs   := amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh4 x32
 libc6_1_archs := alpha ia64
 
 control_deps := $(wildcard debian/control.in/*) $(addprefix debian/control.in/, $(libc_packages))
@@ -33,6 +33,7 @@
 	cat debian/control.in/amd64		>> $@T
 	cat debian/control.in/powerpc		>> $@T
 	cat debian/control.in/ppc64		>> $@T
+	cat debian/control.in/mips32		>> $@T
 	cat debian/control.in/mipsn32		>> $@T
 	cat debian/control.in/mips64		>> $@T
 	cat debian/control.in/armhf		>> $@T
diff -Nru eglibc-2.18/debian/rules.d/debhelper.mk eglibc-2.18/debian/rules.d/debhelper.mk
--- eglibc-2.18/debian/rules.d/debhelper.mk	2014-05-14 15:00:31.000000000 +0000
+++ eglibc-2.18/debian/rules.d/debhelper.mk	2014-05-19 18:42:27.000000000 +0000
@@ -223,7 +223,7 @@
 	    pass="" \
 	    suffix="" \
 	    ;; \
-	  *:/lib32 | *:/lib64 | *:/libx32 | *:/lib/arm-linux-gnueabi*) \
+	  *:/lib32 | *:/lib64 | *:/libx32 | *:/lib | *:/lib/arm-linux-gnueabi*) \
 	    templates="libc libc-dev" \
 	    pass="-alt" \
 	    suffix="-$(curpass)" \
@@ -240,6 +240,9 @@
 	    if [ "$$s" != "$$t" ] ; then \
 	      cp $$s $$t ; \
 	    fi ; \
+		if [ "$$suffix" = "-mips32" ] ; then \
+		   sed -e '/ld.so.conf.d /d' -i $$t; \
+	    fi ; \
 	    sed -e "s#TMPDIR#debian/tmp-$$curpass#g" -i $$t; \
 	    sed -e "s#RTLDDIR#$$rtlddir#g" -i $$t; \
 	    sed -e "s#SLIBDIR#$$slibdir#g" -i $$t; \
diff -Nru eglibc-2.18/debian/sysdeps/mips64el.mk eglibc-2.18/debian/sysdeps/mips64el.mk
--- eglibc-2.18/debian/sysdeps/mips64el.mk	1970-01-01 00:00:00.000000000 +0000
+++ eglibc-2.18/debian/sysdeps/mips64el.mk	2014-05-19 18:05:29.000000000 +0000
@@ -0,0 +1,54 @@
+libc_add-ons = ports nptl $(add-ons)
+libc_rtlddir = /lib64
+
+# build 32-bit (n32) alternative library
+EGLIBC_PASSES += mipsn32
+DEB_ARCH_REGULAR_PACKAGES += libc6-mipsn32 libc6-dev-mipsn32
+mipsn32_add-ons = ports nptl $(add-ons)
+mipsn32_configure_target = mips64el-linux-gnuabin32
+mipsn32_CC = $(CC) -mabi=n32 -mno-plt
+mipsn32_CXX = $(CXX) -mabi=n32 -mno-plt
+libc6-mipsn32_shlib_dep = libc6-mipsn32 (>= $(shlib_dep_ver))
+mipsn32_rtlddir = /lib32
+mipsn32_slibdir = /lib32
+mipsn32_libdir = /usr/lib32
+mipsn32_extra_config_options := $(extra_config_options) --disable-profile
+
+# build 32-bit (o32) alternative library
+EGLIBC_PASSES += mips32
+DEB_ARCH_REGULAR_PACKAGES += libc6-mips32 libc6-dev-mips32
+mips32_add-ons = ports nptl $(add-ons)
+mips32_configure_target = mipsel-linux-gnu
+mips32_CC = $(CC) -mabi=32 -mno-plt
+mips32_CXX = $(CXX) -mabi=32 -mno-plt
+libc6-mips32_shlib_dep = libc6-mips32 (>= $(shlib_dep_ver))
+mips32_rtlddir = /lib
+mips32_slibdir = /lib
+mips32_libdir = /usr/lib
+mips32_extra_config_options := $(extra_config_options) --disable-profile
+
+define libc6-dev-mipsn32_extra_pkg_install
+
+mkdir -p debian/libc6-dev-mipsn32/usr/include
+ln -s mips64el-linux-gnuabi64/bits debian/libc6-dev-mipsn32/usr/include/
+ln -s mips64el-linux-gnuabi64/gnu debian/libc6-dev-mipsn32/usr/include/
+ln -s mips64el-linux-gnuabi64/fpu_control.h debian/libc6-dev-mipsn32/usr/include/
+
+mkdir -p debian/libc6-dev-mipsn32/usr/include/mips64el-linux-gnuabi64/gnu
+cp -a debian/tmp-mipsn32/usr/include/gnu/stubs-n32_hard.h \
+        debian/libc6-dev-mipsn32/usr/include/mips64el-linux-gnuabi64/gnu
+
+mkdir -p debian/libc6-dev-mipsn32/usr/include/sys
+for i in `ls debian/tmp-libc/usr/include/mips64el-linux-gnuabi64/sys` ; do \
+        ln -s ../mips64el-linux-gnuabi64/sys/$$i debian/libc6-dev-mipsn32/usr/include/sys/$$i ; \
+done
+
+endef
+
+define libc6-dev-mips32_extra_pkg_install
+
+mkdir -p debian/libc6-dev-mips32/usr/include/mips64el-linux-gnuabi64/gnu
+cp -a debian/tmp-mips32/usr/include/gnu/stubs-o32_hard.h \
+        debian/libc6-dev-mips32/usr/include/mips64el-linux-gnuabi64/gnu
+
+endef
diff -Nru eglibc-2.18/debian/sysdeps/mips64.mk eglibc-2.18/debian/sysdeps/mips64.mk
--- eglibc-2.18/debian/sysdeps/mips64.mk	1970-01-01 00:00:00.000000000 +0000
+++ eglibc-2.18/debian/sysdeps/mips64.mk	2014-05-19 18:05:29.000000000 +0000
@@ -0,0 +1,54 @@
+libc_add-ons = ports nptl $(add-ons)
+libc_rtlddir = /lib64
+
+# build 32-bit (n32) alternative library
+EGLIBC_PASSES += mipsn32
+DEB_ARCH_REGULAR_PACKAGES += libc6-mipsn32 libc6-dev-mipsn32
+mipsn32_add-ons = ports nptl $(add-ons)
+mipsn32_configure_target = mips64-linux-gnuabin32
+mipsn32_CC = $(CC) -mabi=n32 -mno-plt
+mipsn32_CXX = $(CXX) -mabi=n32 -mno-plt
+libc6-mipsn32_shlib_dep = libc6-mipsn32 (>= $(shlib_dep_ver))
+mipsn32_rtlddir = /lib32
+mipsn32_slibdir = /lib32
+mipsn32_libdir = /usr/lib32
+mipsn32_extra_config_options := $(extra_config_options) --disable-profile
+
+# build 32-bit (o32) alternative library
+EGLIBC_PASSES += mips32
+DEB_ARCH_REGULAR_PACKAGES += libc6-mips32 libc6-dev-mips32
+mips32_add-ons = ports nptl $(add-ons)
+mips32_configure_target = mips-linux-gnu
+mips32_CC = $(CC) -mabi=32 -mno-plt
+mips32_CXX = $(CXX) -mabi=32 -mno-plt
+libc6-mips32_shlib_dep = libc6-mips32 (>= $(shlib_dep_ver))
+mips32_rtlddir = /lib
+mips32_slibdir = /lib
+mips32_libdir = /usr/lib
+mips32_extra_config_options := $(extra_config_options) --disable-profile
+
+define libc6-dev-mipsn32_extra_pkg_install
+
+mkdir -p debian/libc6-dev-mipsn32/usr/include
+ln -s mips64-linux-gnuabi64/bits debian/libc6-dev-mipsn32/usr/include/
+ln -s mips64-linux-gnuabi64/gnu debian/libc6-dev-mipsn32/usr/include/
+ln -s mips64-linux-gnuabi64/fpu_control.h debian/libc6-dev-mipsn32/usr/include/
+
+mkdir -p debian/libc6-dev-mipsn32/usr/include/mips64-linux-gnuabi64/gnu
+cp -a debian/tmp-mipsn32/usr/include/gnu/stubs-n32_hard.h \
+        debian/libc6-dev-mipsn32/usr/include/mips64-linux-gnuabi64/gnu
+
+mkdir -p debian/libc6-dev-mipsn32/usr/include/sys
+for i in `ls debian/tmp-libc/usr/include/mips64-linux-gnuabi64/sys` ; do \
+        ln -s ../mips64-linux-gnuabi64/sys/$$i debian/libc6-dev-mipsn32/usr/include/sys/$$i ; \
+done
+
+endef
+
+define libc6-dev-mips32_extra_pkg_install
+
+mkdir -p debian/libc6-dev-mips32/usr/include/mips64-linux-gnuabi64/gnu
+cp -a debian/tmp-mips32/usr/include/gnu/stubs-o32_hard.h \
+        debian/libc6-dev-mips32/usr/include/mips64-linux-gnuabi64/gnu
+
+endef
diff -Nru eglibc-2.18/debian/sysdeps/mipsn32el.mk eglibc-2.18/debian/sysdeps/mipsn32el.mk
--- eglibc-2.18/debian/sysdeps/mipsn32el.mk	1970-01-01 00:00:00.000000000 +0000
+++ eglibc-2.18/debian/sysdeps/mipsn32el.mk	2014-05-19 18:05:29.000000000 +0000
@@ -0,0 +1,54 @@
+libc_add-ons = ports nptl $(add-ons)
+libc_rtlddir = /lib32
+
+# build 64 alternative library
+EGLIBC_PASSES += mips64
+DEB_ARCH_REGULAR_PACKAGES += libc6-mips64 libc6-dev-mips64
+mips64_add-ons = ports nptl $(add-ons)
+mips64_configure_target = mips64el-linux-gnuabi64
+mips64_CC = $(CC) -mabi=64 -mno-plt
+mips64_CXX = $(CXX) -mabi=64 -mno-plt
+libc6-mips64_shlib_dep = libc6-mips64 (>= $(shlib_dep_ver))
+mips64_rtlddir = /lib64
+mips64_slibdir = /lib64
+mips64_libdir = /usr/lib64
+mips64_extra_config_options := $(extra_config_options) --disable-profile
+
+# build 32-bit (o32) alternative library
+EGLIBC_PASSES += mips32
+DEB_ARCH_REGULAR_PACKAGES += libc6-mips32 libc6-dev-mips32
+mips32_add-ons = ports nptl $(add-ons)
+mips32_configure_target = mipsel-linux-gnu
+mips32_CC = $(CC) -mabi=32 -mno-plt
+mips32_CXX = $(CXX) -mabi=32 -mno-plt
+libc6-mips32_shlib_dep = libc6-mips32 (>= $(shlib_dep_ver))
+mips32_rtlddir = /lib
+mips32_slibdir = /lib
+mips32_libdir = /usr/lib
+mips32_extra_config_options := $(extra_config_options) --disable-profile
+
+define libc6-dev-mips64_extra_pkg_install
+
+mkdir -p debian/libc6-dev-mips64/usr/include
+ln -s mips64el-linux-gnuabin32/bits debian/libc6-dev-mips64/usr/include/
+ln -s mips64el-linux-gnuabin32/gnu debian/libc6-dev-mips64/usr/include/
+ln -s mips64el-linux-gnuabin32/fpu_control.h debian/libc6-dev-mips64/usr/include/
+
+mkdir -p debian/libc6-dev-mips64/usr/include/mips64el-linux-gnuabin32/gnu
+cp -a debian/tmp-mips64/usr/include/gnu/stubs-n64_hard.h \
+        debian/libc6-dev-mips64/usr/include/mips64el-linux-gnuabin32/gnu
+
+mkdir -p debian/libc6-dev-mips64/usr/include/sys
+for i in `ls debian/tmp-libc/usr/include/mips64el-linux-gnuabin32/sys` ; do \
+        ln -s ../mips64el-linux-gnuabin32/sys/$$i debian/libc6-dev-mips64/usr/include/sys/$$i ; \
+done
+
+endef
+
+define libc6-dev-mips32_extra_pkg_install
+
+mkdir -p debian/libc6-dev-mips32/usr/include/mips64el-linux-gnuabin32/gnu
+cp -a debian/tmp-mips32/usr/include/gnu/stubs-o32_hard.h \
+        debian/libc6-dev-mips32/usr/include/mips64el-linux-gnuabin32/gnu
+
+endef
diff -Nru eglibc-2.18/debian/sysdeps/mipsn32.mk eglibc-2.18/debian/sysdeps/mipsn32.mk
--- eglibc-2.18/debian/sysdeps/mipsn32.mk	1970-01-01 00:00:00.000000000 +0000
+++ eglibc-2.18/debian/sysdeps/mipsn32.mk	2014-05-19 18:05:29.000000000 +0000
@@ -0,0 +1,54 @@
+libc_add-ons = ports nptl $(add-ons)
+libc_rtlddir = /lib32
+
+# build 64 alternative library
+EGLIBC_PASSES += mips64
+DEB_ARCH_REGULAR_PACKAGES += libc6-mips64 libc6-dev-mips64
+mips64_add-ons = ports nptl $(add-ons)
+mips64_configure_target = mips64-linux-gnuabi64
+mips64_CC = $(CC) -mabi=64 -mno-plt
+mips64_CXX = $(CXX) -mabi=64 -mno-plt
+libc6-mips64_shlib_dep = libc6-mips64 (>= $(shlib_dep_ver))
+mips64_rtlddir = /lib64
+mips64_slibdir = /lib64
+mips64_libdir = /usr/lib64
+mips64_extra_config_options := $(extra_config_options) --disable-profile
+
+# build 32-bit (o32) alternative library
+EGLIBC_PASSES += mips32
+DEB_ARCH_REGULAR_PACKAGES += libc6-mips32 libc6-dev-mips32
+mips32_add-ons = ports nptl $(add-ons)
+mips32_configure_target = mips-linux-gnu
+mips32_CC = $(CC) -mabi=32 -mno-plt
+mips32_CXX = $(CXX) -mabi=32 -mno-plt
+libc6-mips32_shlib_dep = libc6-mips32 (>= $(shlib_dep_ver))
+mips32_rtlddir = /lib
+mips32_slibdir = /lib
+mips32_libdir = /usr/lib
+mips32_extra_config_options := $(extra_config_options) --disable-profile
+
+define libc6-dev-mips64_extra_pkg_install
+
+mkdir -p debian/libc6-dev-mips64/usr/include
+ln -s mips64-linux-gnuabin32/bits debian/libc6-dev-mips64/usr/include/
+ln -s mips64-linux-gnuabin32/gnu debian/libc6-dev-mips64/usr/include/
+ln -s mips64-linux-gnuabin32/fpu_control.h debian/libc6-dev-mips64/usr/include/
+
+mkdir -p debian/libc6-dev-mips64/usr/include/mips64-linux-gnuabin32/gnu
+cp -a debian/tmp-mips64/usr/include/gnu/stubs-n64_hard.h \
+        debian/libc6-dev-mips64/usr/include/mips64-linux-gnuabin32/gnu
+
+mkdir -p debian/libc6-dev-mips64/usr/include/sys
+for i in `ls debian/tmp-libc/usr/include/mips64-linux-gnuabin32/sys` ; do \
+        ln -s ../mips64-linux-gnuabin32/sys/$$i debian/libc6-dev-mips64/usr/include/sys/$$i ; \
+done
+
+endef
+
+define libc6-dev-mips32_extra_pkg_install
+
+mkdir -p debian/libc6-dev-mips32/usr/include/mips64-linux-gnuabin32/gnu
+cp -a debian/tmp-mips32/usr/include/gnu/stubs-o32_hard.h \
+        debian/libc6-dev-mips32/usr/include/mips64-linux-gnuabin32/gnu
+
+end

Reply to: