[PATCH 2/2] Enable ILP32 mode on aarch64

Yury Norov ynorov@caviumnetworks.com
Thu Dec 1 05:32:00 GMT 2016


On Tue, Nov 29, 2016 at 10:51:52AM -0800, Steve Ellcey wrote:
> This is the final patch to enable ILP32 mode for aarch64.  It contains
> the structural changes in the aarch64 directories to support both modes
> as well as configure and make changes.
> 
> This patch (combined with the earlier one) does not cause any regressions
> in the LP64 mode.  I get 7 fails with or without the ILP32 patches in my
> tree.  I do get some failures in ILP32 mode that are not there in LP64 mode,
> in that mode I get a total of 22 failures.  I will be working on these failures
> but I would like to get this code checked in while I work on them so that other
> people might be able to investigate them as well.
> 
> If you want to build and run aarch64 ILP32 code, you will need some non-glibc
> patches.  The kernel patches for ILP32 have been submitted but are not yet
> checked in.  You can find them here:
> 
>   http://lists.infradead.org/pipermail/linux-arm-kernel/2016-October/462993.html
> 
> There is also a binutils patch you will probably want, that is here:
> 
>   https://sourceware.org/ml/binutils/2016-11/msg00335.html
> 
> And there are two GCC patches that are here:
> 
>   https://gcc.gnu.org/ml/gcc-patches/2016-10/msg00522.html
>   https://gcc.gnu.org/ml/gcc-patches/2016-04/msg01726.html
> 
> OK to checkin?
> 
> Steve Ellcey
> sellcey@caviumnetworks.com
> 
> 2016-11-29  Andrew Pinski  <andrew.pinski@caviumnetworks.com>
> 	    Yury Norov  <ynorov@caviumnetworks.com>
> 	    Steve Ellcey  <sellcey@caviumnetworks.com>
> 
> 	* sysdeps/aarch64/configure.ac (HAVE_AARCH64_ILP32): New define.
> 	(default-abi): Allow for ilp32 ABI.
> 	* sysdeps/aarch64/configure: Regenerate.
> 	* sysdeps/aarch64/Implies: Deleted.
> 	* sysdeps/aarch64/ilp32/Implies: New file.
> 	* sysdeps/aarch64/ilp32/Implies-after: New file.
> 	* sysdeps/aarch64/lp64/Implies: New file.
> 	* sysdeps/aarch64/lp64/Implies-after: New file.
> 	* sysdeps/aarch64/preconfigure (machine): Check for ilp32/lp64.
> 	* sysdeps/aarch64/tls-macros.h (TLS_IE): Ifdef for ILP32.
> 	* sysdeps/generic/ldconfig.h (FLAG_AARCH64_LIB32): New define.
> 	* sysdeps/unix/sysv/linux/aarch64/Implies: Remove generic and
> 	wordsize-64 entries.
> 	* sysdeps/unix/sysv/linux/aarch64/Makefile (abi-variants): Add
> 	new variants for ilp32 and ilp32_be.
> 	(abi-lp64-options, abi-lp64_be-options): define __LP64__ and
> 	undefine __ILP32__.
> 	(abi-lp64-condition, abi-lp64_be-condition): Check for __WORDSIZE
> 	equal to 64.
> 	(abi-ilp32-options, abi-ilp32-condition, abi-ilp32_be-options,
> 	abi-ilp32_be-condition): New.
> 	* sysdeps/unix/sysv/linux/aarch64/configure.ac (arch_minimum_kernel):
> 	Use different value for ILP32.
> 	(LIBC_SLIBDIR_RTLDDIR): Modify for ILP32.
> 	* sysdeps/unix/sysv/linux/aarch64/ilp32/Implies: Ditto.
> 	* sysdeps/unix/sysv/linux/aarch64/bits/stat.h: New file.
> 	* sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h: Ditto.
> 	* sysdeps/unix/sysv/linux/aarch64/bits/utmp.h: Ditto.
> 	* sysdeps/unix/sysv/linux/aarch64/bits/utmpx.h: Ditto.
> 	* sysdeps/unix/sysv/linux/aarch64/ilp32/kernel_stat.h: Ditto.

> 	* sysdeps/unix/sysv/linux/aarch64/ilp32/msgctl.c: Ditto.
> 	* sysdeps/unix/sysv/linux/aarch64/ilp32/semctl.c: Ditto.
> 	* sysdeps/unix/sysv/linux/aarch64/ilp32/shmctl.c: Ditto.

This shouldn't be here. Adhemerval has consolidation series, and we
build ilp32 on top of it, and we don't need custom implementations
for that syscalls. Currently aarch64/ilp32 doesn't provide any custom
syscall or function implementation - that's what Joseph asked.
 
Yury



More information about the Libc-alpha mailing list