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: