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

Bug#874587: glibc: Packaging support for arm64ilp32 architecture



Source: glibc
Version: 2.24-11
Severity: wishlist
Tags: patch

arm64ilp32 is a new 32-bit ABI 'ILP32' for the arm64 architecture,
which normally uses the 'LP64' ABI

We are adding support to Debian so that it is possible to build this
architecture. glibc is part of the toolchain bootstrap so needs to
support this. However the ABI is not yet in upstream glibc because
they are waiting for the kernel to adopt the final ABI interface
first. The branch for tracking is here: 
https://git.linaro.org/toolchain/glibc.git/log/?h=arm/ilp32

Attached is the (fairly trivial) patch for adding support to the debian
packaging so that once upstream supports this it can be built.

To actually build a glibc for arm64ilp32 you also need the 250K glibc
patch which I won't include here, and a couple of fixes. These three commits show what's needed:
https://anonscm.debian.org/cgit/users/wookey/rebootstrap.git/commit/?h=ilp32-stable&id=091d79dd8c23d4f02dbc32cf1fd3cf1a5716bf9a
https://anonscm.debian.org/cgit/users/wookey/rebootstrap.git/commit/?h=ilp32-stable&id=a72b2eefd6295fc5aad25ff3bc2ba8c9b913637e
https://anonscm.debian.org/cgit/users/wookey/rebootstrap.git/commit/?h=ilp32-stable&id=7883ccac72bfaaaeb6f4504db4010e8f32c1a5b1
diff -urN glibc-2.24/debian/control glibc-2.24.patched/debian/control
--- glibc-2.24/debian/control	2017-04-09 21:28:38.000000000 +0000
+++ glibc-2.24.patched/debian/control	2017-05-18 13:19:04.001882367 +0000
@@ -157,7 +157,7 @@
  be removed once nothing on the system depends on it.
 
 Package: libc6
-Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
+Architecture: amd64 arm64 arm64ilp32 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
 Section: libs
 Priority: required
 Multi-Arch: same
@@ -188,7 +188,7 @@
  and the standard math library, as well as many others.
 
 Package: libc6-dev
-Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
+Architecture: amd64 arm64 arm64ilp32 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
 Section: libdevel
 Priority: optional
 Multi-Arch: same
@@ -203,7 +203,7 @@
  and link programs which use the standard C library.
 
 Package: libc6-dbg
-Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
+Architecture: amd64 arm64 arm64ilp32 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
 Section: debug
 Priority: extra
 Multi-Arch: same
@@ -215,7 +215,7 @@
  library.
 
 Package: libc6-pic
-Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
+Architecture: amd64 arm64 arm64ilp32 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
 Section: libdevel
 Priority: optional
 Multi-Arch: same
@@ -231,7 +231,7 @@
 
 Package: libc6-udeb
 Package-Type: udeb
-Architecture: amd64 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
+Architecture: amd64 arm64 arm64ilp32 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
 Section: debian-installer
 Priority: extra
 Provides: libc6, libc-udeb, libnss-dns-udeb, libnss-files-udeb, ${locale-compat:Depends}
diff -urN glibc-2.24/debian/libc6.symbols.arm64ilp32 glibc-2.24.patched/debian/libc6.symbols.arm64ilp32
--- glibc-2.24/debian/libc6.symbols.arm64ilp32	1970-01-01 00:00:00.000000000 +0000
+++ glibc-2.24.patched/debian/libc6.symbols.arm64ilp32	2017-05-18 13:19:04.001882367 +0000
@@ -0,0 +1,5 @@
+#include "libc6.symbols.common"
+ld-linux-aarch64_ilp32.so.1 #PACKAGE# #MINVER#
+#include "symbols.wildcards"
+libc.so.6 #PACKAGE# #MINVER#
+#include "symbols.wildcards"
diff -urN glibc-2.24/debian/rules.d/control.mk glibc-2.24.patched/debian/rules.d/control.mk
--- glibc-2.24/debian/rules.d/control.mk	2017-04-09 21:28:38.000000000 +0000
+++ glibc-2.24.patched/debian/rules.d/control.mk	2017-05-18 13:19:04.001882367 +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 arm64 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
+libc6_archs   := amd64 arm64 arm64ilp32 armel armhf hppa i386 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el nios2 powerpc powerpcspe ppc64 ppc64el sparc sparc64 s390x sh3 sh4 x32
 libc6_1_archs := alpha
 
 control_deps := $(wildcard debian/control.in/*) $(addprefix debian/control.in/, $(libc_packages))

Reply to: