Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936059AbcJUVJj (ORCPT ); Fri, 21 Oct 2016 17:09:39 -0400 Received: from mail-bl2nam02on0087.outbound.protection.outlook.com ([104.47.38.87]:18978 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933451AbcJUVJb (ORCPT ); Fri, 21 Oct 2016 17:09:31 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: , , , , , CC: , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH 09/18] arm64: introduce binfmt_elf32.c Date: Fri, 21 Oct 2016 23:33:08 +0300 Message-ID: <1477081997-4770-10-git-send-email-ynorov@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1477081997-4770-1-git-send-email-ynorov@caviumnetworks.com> References: <1477081997-4770-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [95.143.213.121] X-ClientProxiedBy: AM3PR03CA051.eurprd03.prod.outlook.com (10.141.191.179) To CY1PR07MB2246.namprd07.prod.outlook.com (10.164.112.148) X-MS-Office365-Filtering-Correlation-Id: 23c99942-24ae-411c-2719-08d3f9f1bc87 X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2246;2:XcxaYiXLnjqUCgWfhLAPuxgcfBSMwlxLsIOO8xrKZi9sBIi2sQMpg7bn18mahCz3bvgogdGUuX/SsIc1CpzCmL/RVdh9FfaiQlsWpx57KjyPG+yyZ9ryiFRUorIjFo8vY225e1rQl3gPF4X1yQzDecPZbEXRi59qls4+ze/kB4sDdKb8GacI3XGoSxjHMJ8iJW5KX9ZmOrohkwcTx2qR8Q==;3:9pSUroU/m4eMp5POnW27XIYkrS1vqeX08oEAoKoP6aijtfyrxpahgKiJnl0HNc1sWmEAFjDFZ2RpV+3rJ5qYZGISfHuFeoYJTsYTART3jFhdyb5xV4IsUkDqorAp3OXCUZWqNyySWhdP4LovwkuEaw== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2246; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2246;25:SdhFT0i0BwqD6/pI/laB5KWkA/e8rL3GJ5wW7Fl2XwA+vBoUsuH3Hff5oXxMjWJAZyNTMDjiA+FXpAzAyZ0/eAjwj6VlH052eurSF9vLpriUx7pBlR25e1DVQ2ecDTRxoO8NVmN2nk29iLAAkMkn1LYEtxhriisdjMxIlHUIbyfAKvAlW7lXy76S/9pnbAvIqxdFeBNtwtO1V5j9Mm0iXO7ry9ueuzt3aQtHtDvV1EFhHQmQ9kxV4//IOpfwKflnqC66O3Wz/nsuJmF/lmFMkhpn4FbFf9bIel3gqWIzM6AYS0o5SEw1wwX9xEFtIssekznpJ/I24wlOWJRwD7a6M8RXpIGDwRmhzXSmDCrcI/8nJ/B2vX7dtGOyDgH0UOKkWz50YL7ylVoTelt5oulNsnUezOxSf0kskrPjEx3Sghh/go5IS5eo6eNOgZ2Fob8IlmkW2Dm5LZ2D/Gr+rnYz23w3UsnwhSlhkmoA/a5lwRFsn5NXDj6ByEJAwAy+eIYABoU/L0HFv7kOhDvVfL0RbJV8vcIMmsBYH0NP+HOSmTrL/lDJgS8Kv8JvgP3rlYZrr0lyuyaLgEBcCaLnU5UXKew8Le7mNncabzxnSsORnR5QiVhizKlnxZKPcv2PtHQeb4Q78uMwWJUGj74/56cZifQ4B0ylkoWZpxrUUyU9PUUbPLNtaCbm/tBKX15Bc57nVf1f7u0hVMBoYEaO2ZYjeszjlTojf+mxqdx/vLbFfGCq1D09HnbYfrnqx+kc1yh7w47YKkLUppgz0N9Y8wGCRA== X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2246;31:eRxjm7es/KCXuVcvMMOMtuzTn19i0OQTwtXr2QUaOhkt/PVQNA/xQMTsSqP924UClMd9uHMH2dZDMhyMlbGVMXDiWgZNyL9uegGe22j3raSoGYeJVteozdInO+WGQO/jwOZYxKYiw4vdAOB9qk2u3z1raR0XNT/Z3Xo1x8G6sgV2uYWmr6uQ8gRNtU0WzLzPuKpWozE2Hj1R8ecOsQxxUic1fJ6j1jtLmm6JRMPf0xnTzGWZ8RubtRezQjLW43MHN4aMQnmQAifbcwQsrnniH2rDxJgO4YaxVCMDZaRfE14=;20:86vMsZl2DEPJ6lv8VqOE5LKSzttyWumcxP+iwi2hUeGrjgKm6snTRrDQtDVigdX4jaSMBrALJygRf3/opAQGqUuUwXu3PmTi+DNYKQhAmCJsxgMYS1Hoza542/1iexXEv3uBSpKyKpIjgTgt1JC3bVCvl8yjwihZ07tP2VT6XNqZos3samuye7zuXmsA+m51J72bsQJt4XHuHcVZkAIvz7pYugrdV3r1hHTxSbSqFTM/n49pwqfh1r4UrnDUZKE6mL7yBVyXt83+zncWvm8OskKZnoYtU3IIaqPHZ0mesLsTMY091tkuRolHAa0motWZ26eYOP8RmvPOg8hESgnXJrvp9YlKbC/k5NknNrXeooN8wIGkPlvDaiUbpsx+dr5/vuZ9sK/PAJuB6g3/JcXwCygDFpw25p8bhb+kROab7nIIhfYXZ87OvPgUtcIwr8N+AUtJFbbF4NdlUIvt8T02E0UwcApN0KvyxexNnkwZEUDTMx42qs+iVR55Dp6XwaM8cXxv8UHBwWQOiSN+sbO5g1FgVny8r7+ROEx7flTQIwiyJz5YgeCpzb2Snb6kkKSpKY7/GHvJ88c4mnva1raupBzgUUPPNDYf+oqhH0u0z+E= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046);SRVR:CY1PR07MB2246;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2246; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2246;4:5SaIo2wN2Sk0HJOMGXhvSzfSwPnE7GScprvjWB+HlsljoYXT/xFGPnv2leViT15XGYkUpSU9+E34lipkc5gPKqz+RqToaAtwPO+uCMMWS4GX0deKV5AexayQcsJmUxE8BMk59RqC+FIaUcjM8CL021sL9EIVgMWLe4XZ1geJFPLmzBDvK+hz9AmqAFV4shSbiE40N4gkDYjlGI+EjlY3OaJ6+Arm2+Pt1n8HvAagEmNlMKPVW6iuDMdq466kOBjgFaS4SSHNcxSgIqE9u1gXT3pjcJgzJ6LEmVWPOh/xdLl2Gtv11V/yV3VttUXuVkCXPJ0/Mt9JSMb2AsqrquCWJjiLqLQd2succs1K8uKbaqIu9aJfaYAdrQX/D6j8g1GBAY36PEm5qD5SrhfsL4/nQg== X-Forefront-PRVS: 01026E1310 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(199003)(189002)(4326007)(101416001)(6116002)(76176999)(189998001)(50466002)(2906002)(3846002)(47776003)(97736004)(68736007)(105586002)(229853001)(66066001)(106356001)(92566002)(5003940100001)(77096005)(50226002)(5001770100001)(81166006)(76506005)(19580405001)(19580395003)(42186005)(7416002)(2950100002)(7846002)(81156014)(36756003)(586003)(33646002)(2201001)(5660300001)(50986999)(305945005)(48376002)(8676002)(7736002)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR07MB2246;H:localhost;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR07MB2246;23:hHjyo7p0GxnbSElPTqu+Q9H1zV7MZ1Ycs8zcjvJsY?= =?us-ascii?Q?Cg1GGJNvpC9ySB0Nitr55Ik6JRs7WiRZEL7WxcKO4DVaGuqUeQhuQKPhqpkK?= =?us-ascii?Q?yivF9He9NCbdE1I1cH8svo0YqoXx2k0j5KfhNi8O4yfK+YwvJ7GswmDDOsoc?= =?us-ascii?Q?eEurRnZs22bwWErVmVbEd/tMJgnpC+16uoTLc2M9Zc05Z5u0XF2iFlJ7/O15?= =?us-ascii?Q?0yQeeOSH+gasfK4QTxOi2GFZtWjJLyIklApjAM7uAufkxNM954cHygitsIEy?= =?us-ascii?Q?HgPB3XzHSQioApV56RUpSF772f6VduX6K8nr0FA1slQs7Z5l5dC8kiGULq6s?= =?us-ascii?Q?0dO0yp1zljIErco2ufLm9BbnTqYmYe/9o1+IuM3a28WSFhDT1fksFsbXsHE+?= =?us-ascii?Q?CMVrztFrM8CTl7bF4HNbcpL1OYi64knt5ZNnEYqiH4s+IRrH6j/7zmJGKzzb?= =?us-ascii?Q?d2pnnTtNfZuJGCeRxXEgi/gh4OSdorq72iAS7ii7dkGoY5Gf7JsvyfFsuvI3?= =?us-ascii?Q?U+m0nABTH30PBXozy3Rw2HvV6EK7+4dA833Z2070AtMcBvE09UB6qhomwzs6?= =?us-ascii?Q?slZL0wvhMOhje39eh/skVmhJuZVDwfJjqgTuGeleWZZRdBwN2P52usp4LWDg?= =?us-ascii?Q?ZZzx8RWXfCXxNgdvyS2omlxwy4y+4PVhQ/EPESxRCcD00S3hPvW7vCD3Yxmk?= =?us-ascii?Q?ho4xu8c4EU4s9dmmVeo7s6A25GCTuVirKlkzlw00SKuIWmyCMZfGAndksO4Y?= =?us-ascii?Q?gfc7bcpwb/HgiQ2ItzYjRte+ZxsXj/AzEYB94lkYi5Yoe8FJXU5wjcmAMyna?= =?us-ascii?Q?7qWUkTu4hO0Nxczjvg4IDC21ERLiYBCpx9a0wGdrCzxMz6Uz7lZGdF+9+wEK?= =?us-ascii?Q?10dFwBl62tHePYfUm+37JdJ/fWlpAjfE6wPPcpqT2ymBMZHJ3yI+jStJ6Ceh?= =?us-ascii?Q?sNgXYHg3nMc+jZ8pjNACJmlIAt9U5wFz9JvwbdDNKGEZjcoCqeptQXeCkmWJ?= =?us-ascii?Q?WOOMpS9JQCOtSJqcLUuSTootSBzXtKdwtKGMKXeUN440xWsV7AbofNDUH2s6?= =?us-ascii?Q?DAG8PfsFo7czfkW90lpPcP8ob5seTIJCwNJ5ICAT17xzgNb7w28apxS2X+Zk?= =?us-ascii?Q?rHcKf/q4xCKM9jZo9S8qxDjXvUp8gs52VGXL5GHljCdp5JjSRea2A=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2246;6:YozZInHu2iy6v3ryU/KedGAcsenGNSCR2BbQ2WqjfwxvmpNNYodx302yABtsNRPN+6qTi7ZTXBpHrrDz7WKPF3VNDak3biqDM4cqpBGhCd66jjZgUUWRKlmLCvAtfr+Qs//fviQhW5+6EiSKg7TtuGNEDG/q6DNaEsSf9YrCuhEpeTk5jS4jKyHLH2cyA9A4Wxz7ObKNNMN+WuuZEkrg/lcuuu0K43ujjxrQGdIarmBPBMl2D7YlvWwgK17+i95Nij7Xy5FkPjfo5z6fX+AfteWLES/xQvKMOqrbatbMjP1s5HjqRPPt5LTMNWrDSp7r;5:uo/wq7MTlgqga0bHPoXNQtLvIMELMVxEiuUlgzCZssWBGwoKVCqo8gY1NSt+36NhKDr6Th7tq2h5PDnMMEcpvZhWdJkxQwxPYht4ldsS0Nl2Zy55c+6pP3xrWBzQv4SG2QPgAHCJxqLMz/eeG6C8N2KOl7EW/WQC1uRpSe5exFg=;24:HRBLwwoBw241yuHicL9UATmdEnr19FOEogtpq/PB8bbzUK2KkaB1WtO0/X9h5N8gSNYvTYnT4bzi7qE5hORK20v5HsmwSBu5Men13axOtow=;7:yTt5yK1G+1ZPFCRI7MFwEOmcj2Cftlfy1SmqlMlZfiW57ZoHstheR0qna8y53vnACQLz6GkOkMl+HiL2itfHTeLM5MiUi7NVCCCROyeB3wNYHaGdRtTPAe6ToVAO0IBvmPaAlBvz5qnU8qYs9j0vvwnWIZ6wRxkExXddONmK+Y+m94Djdishz9y8vFp94ZJWhnGACwGibx1DtL4WmlSTZe8aYBHpzua+4APDJQdDkt3YCKxJA5Oe5m2VeAMv4+EatqH9p1BVb+mBLpFHPVMRq67lw+kaEo+2P3gstToEV/OaW/6W8X/NQIPshenN1PURJRT+9uUZP23Hdm+xZVRnVo3Km/JBoQ4SYlSlNfqq3ew= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2016 20:35:03.1186 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2246 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2906 Lines: 90 As we support more than one compat formats, it looks more reasonable to not use fs/compat_binfmt.c. Custom binfmt_elf32.c allows to move aarch32 specific definitions there and make code more maintainable and readable. Signed-off-by: Yury Norov --- arch/arm64/Kconfig | 1 - arch/arm64/include/asm/hwcap.h | 2 -- arch/arm64/kernel/Makefile | 2 +- arch/arm64/kernel/binfmt_elf32.c | 31 +++++++++++++++++++++++++++++++ 4 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 arch/arm64/kernel/binfmt_elf32.c diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 0cd786e..9efa86a 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -1003,7 +1003,6 @@ config AARCH32_EL0 def_bool y depends on ARM64_4K_PAGES || EXPERT select COMPAT - select COMPAT_BINFMT_ELF select HAVE_UID16 select OLD_SIGSUSPEND3 select COMPAT_OLD_SIGACTION diff --git a/arch/arm64/include/asm/hwcap.h b/arch/arm64/include/asm/hwcap.h index 2c7fc5d..99dfd92 100644 --- a/arch/arm64/include/asm/hwcap.h +++ b/arch/arm64/include/asm/hwcap.h @@ -47,8 +47,6 @@ #define ELF_HWCAP (elf_hwcap) #ifdef CONFIG_AARCH32_EL0 -#define COMPAT_ELF_HWCAP (compat_elf_hwcap) -#define COMPAT_ELF_HWCAP2 (compat_elf_hwcap2) extern unsigned int compat_elf_hwcap, compat_elf_hwcap2; #endif diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile index 8a19fda..abe5040 100644 --- a/arch/arm64/kernel/Makefile +++ b/arch/arm64/kernel/Makefile @@ -28,7 +28,7 @@ $(obj)/%.stub.o: $(obj)/%.o FORCE $(call if_changed,objcopy) arm64-obj-$(CONFIG_AARCH32_EL0) += sys32.o kuser32.o signal32.o \ - sys_compat.o entry32.o + sys_compat.o entry32.o binfmt_elf32.o arm64-obj-$(CONFIG_FUNCTION_TRACER) += ftrace.o entry-ftrace.o arm64-obj-$(CONFIG_MODULES) += arm64ksyms.o module.o arm64-obj-$(CONFIG_ARM64_MODULE_PLTS) += module-plts.o diff --git a/arch/arm64/kernel/binfmt_elf32.c b/arch/arm64/kernel/binfmt_elf32.c new file mode 100644 index 0000000..aec1c8a --- /dev/null +++ b/arch/arm64/kernel/binfmt_elf32.c @@ -0,0 +1,31 @@ +/* + * Support for AArch32 Linux ELF binaries. + */ + +/* AArch32 EABI. */ +#define EF_ARM_EABI_MASK 0xff000000 + +#define compat_start_thread compat_start_thread +#define COMPAT_SET_PERSONALITY(ex) \ +do { \ + clear_thread_flag(TIF_32BIT_AARCH64); \ + set_thread_flag(TIF_32BIT); \ +} while (0) + +#define COMPAT_ARCH_DLINFO +#define COMPAT_ELF_HWCAP (compat_elf_hwcap) +#define COMPAT_ELF_HWCAP2 (compat_elf_hwcap2) + +#ifdef __AARCH64EB__ +#define COMPAT_ELF_PLATFORM ("v8b") +#else +#define COMPAT_ELF_PLATFORM ("v8l") +#endif + +#define compat_arch_setup_additional_pages \ + aarch32_setup_vectors_page +struct linux_binprm; +extern int aarch32_setup_vectors_page(struct linux_binprm *bprm, + int uses_interp); + +#include "../../../fs/compat_binfmt_elf.c" -- 2.7.4