Hi, guys This is Bamvor Jian Zhang from Huawei OS team. Recently, I am working on enable the ILP32 support for arm64 based on the community work[kernel\_ilp32][glibc\_ilp32]. ILP32 is a method for running 32bit application on 64bit platform, such binary is elf32 with aarch64 assembly and is compiled by 64bit compiler. Refer the following table: \- | arm 32bit | arm64 ILP32 | arm64 LP64 ----------------|-------------|-------------|------------- instruction set | armv7-a | armv8-a | armv8-a int | 32bit | 32bit | 32bit long | 32bit | **32bit** | 64bit pointer | 32bit | **32bit** | 64bit x32 and n32 is the ILP32 ABI in x86\_64 and MIPS 64 respectively. Right now, more than 99% of LTP test cases is passed. And we get 2.6% to 7.9% performance improvement compare with aarch64 without any optimization or tuning. Base on these work, we are sure that ILP32 is worth to work on and we could feel more confident if more and more packages build and test. The obs seems the best way to build ilp32 packages, I wondering is there any document or guidance about how to add ILP32 to an architecture or how to add a new ABI to a new architecture? I got 4 commit about aarch64 in obs source code[openbuildservice] with "git log --grep aarch64": effc064 [backend] aarch64 workers can also build 32bit arm e0bd2e5 [api] add aarch64 to xml schema file b71ecfe [api] add aarch64 architecture 0c08cbe [backend] add aarch64 architecture But I still not puzzled about how to start. I also found some Linux32 definitions in obs source code[openbuildservice], does it mean the ilp32 is supported on the following architecture? src/backend/BSCando.pm: 'x86_64' => [ 'x86_64', 'i586:linux32', 'i686:linux32' ], src/backend/BSCando.pm: 'parisc64'=> [ 'hppa64', 'hppa:linux32' ], src/backend/BSCando.pm: 'ppc64' => [ 'ppc64le', 'ppc64', 'ppc:linux32' ], src/backend/BSCando.pm: 'ppc64p7' => [ 'ppc64le', 'ppc64p7', 'ppc:linux32' ], src/backend/BSCando.pm: 'ppc64le' => [ 'ppc64le', 'ppc64', 'ppc:linux32' ], src/backend/BSCando.pm: 's390x' => [ 's390x', 's390:linux32' ], src/backend/BSCando.pm: 'sparc64' => [ 'sparc64v', 'sparc64', 'sparcv9v', 'sparcv9', 'sparcv8:linux32', 'sparc:linux32' ], BTW: basically, add ilp32 support means that adding ilp32 support to kernel, gcc and glibc. And pass CC or CXX with additional -mabi=ilp32 to overwrite the default -mabi=lp64 when building the packages. regards bamvor [kernel\_ilp32] kernel ilp32 patch(v3): https://lkml.org/lkml/2014/9/3/704 [glibc\_ilp32] glibc ilp32 patch: https://sourceware.org/ml/libc-alpha/2014-10/msg00596.html [openbuildservice] https://github.com/openSUSE/open-build-service.git -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-buildservice+owner@opensuse.org