From patchwork Fri Jun 17 23:54:19 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 9185207 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 706AF601C0 for ; Fri, 17 Jun 2016 23:57:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5C076208C2 for ; Fri, 17 Jun 2016 23:57:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4F3E3280B0; Fri, 17 Jun 2016 23:57:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id C4D64208C2 for ; Fri, 17 Jun 2016 23:57:49 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1bE3cg-0002Sy-Bv; Fri, 17 Jun 2016 23:56:26 +0000 Received: from mail-eopbgr700054.outbound.protection.outlook.com ([40.107.70.54] helo=na01-by2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1bE3bg-0000KB-IZ for linux-arm-kernel@lists.infradead.org; Fri, 17 Jun 2016 23:55:25 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-caviumnetworks-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=MJhjNsZhIJtGUyWuvZC7ysoAL1F5TkvUk1DgI/TLBG0=; b=QoOfBBAaLuImk9rIL3Z4zfO3sTVIkOVi9flrbmofAG+JkrEDzwpG8CP7+CjkXrIeFU/pT5kNQTFlIDNxpHggMItSWF4HlTDi/xZytfpNDvOfxXDzal1uFwC8RQGa6/7NtV9nU/Ws9b+YoyYUQmWdZdJclK1+8k3okHANGoTOvWw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; Received: from localhost (50.233.148.158) by CY1PR07MB2246.namprd07.prod.outlook.com (10.164.112.148) with Microsoft SMTP Server (TLS) id 15.1.517.8; Fri, 17 Jun 2016 23:55:18 +0000 From: Yury Norov To: , , , , , , Subject: [PATCH 10/19] arm64: introduce binfmt_elf32.c Date: Sat, 18 Jun 2016 02:54:19 +0300 Message-ID: <1466207668-10549-11-git-send-email-ynorov@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1466207668-10549-1-git-send-email-ynorov@caviumnetworks.com> References: <1466207668-10549-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [50.233.148.158] X-ClientProxiedBy: BY2PR07CA0091.namprd07.prod.outlook.com (10.166.107.44) To CY1PR07MB2246.namprd07.prod.outlook.com (10.164.112.148) X-MS-Office365-Filtering-Correlation-Id: 49f499f2-d3f8-46b5-105e-08d3970ad655 X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2246; 2:+hsZkgZP0xlIW63+F85cVr3nwClpLPBYHUqZmGY/rIetiFn9DzQsZYMtscBzW2EANPdkWQ0/8zy3uRVavQSEqSGHFNbEh0MdSTQdgPJAzBYGYkV+W/98mZ7+Hn5LEYrk1ENLvQKlD+rhHo2XQvIY5BVwkG2/gMf0Jzi4mv5YR3vUnub6wwn4O90BXyszLSS3; 3:1rRZjoBN42ndx5fCBtp5euc12lgzmMx6f11oLJ+FMMqTBvnSkR7I+pPQdNd+kvvXyG768s8Qt9Fnk2dnXSw4PcLFVklyzyDP2oSKpdi0sQ6ZyFwYmTGqpsvCokJfSKyL X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2246; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2246; 25:WcIlAGT2yDjAtBJpmnGMhIfSZGAp4TljLRWTTglPfKVofTwhR7CNN2HLFco5yaGk5BeRdjHfRiOKjqCiaRmAKHjWj10qJ923GritOeS39179DDYtIWnzGq6z7U3n0AjYDVuI9DSkiRhqx6EiYniGDm1iufAAGXViIIDOADvdd7O5n8ceaTDxjwlls5erq9eqiDff9mdsMK3lTYrzPaMPBC+rFD35cPg5uTw1a29h5uWSCaXoqM1Ex+3UT1Fyo8SO3TnkIeYEVCRghq1dcWY92kN51VpHRkFnPRj+90AtUqvAy+DmKQsVivn+4sDdlnV+6i9lMANvLlKz+m1FJGi9gWMoAgTNOv89PuN/GcYjw6c/Y6/GayntVI5+Mv2l3dQ5N/GbRCxCvl0bumlHH9OyyEJRhhAuucWbWNEjo0QFinle2LexIg9ozHPRisM2Si+PU48P9h3DPZpZoipgnpeQo3WUnNgQOal2bzRVpCCC7/sviH26GtU4F4pR56l6mYBhmMQH6zRavkllfs9CKoZ1TLUn7mNeqkQwZt5BoQ2yfF+dhgp3UzWoZHtQBdBq6boibstS6QVLksJjRJ2gfknQeXJ+3qhTc5duDytZqDXBxb5+Cq/hJLO67hrn6ND+2jgNbEiBgFd6q0C10P47f3OrnyuTKG7MXS5O+GI92bRXzjeMLtejaujoHtsBn9zopom/KLgaxw2Qr29gMOC9jQ5K1oJwcVCp9AXUJHUyP/ePo82OjoKXZYFBNRJW7ndj512hOnVf+O5Dgt1Xnv6YTFavjg== X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2246; 20:RZxHJPbTXXuFT30EQW2eXbLGOkEifJ469/jbSwaPg5mmciKgQW3LYy5TRW5JDbn49U2Cetsasymzbt0sxLUHkIHHwYyhtmF8kST94TSt/+DRBLkaZXGMxoB0wgXA8Ro7nWsl93BJn0BKXQaTEHdWHvo7q8QbG9kfDyowvXXlo/Juy1G8X/usw7Un/qFoAaNfiyxmS8gYqYy+iawhf14nwSVkubkikKlHvi1OiE/6qMp0U3fPrvwhMMuoDLzRRQDbpVFComuMMW0ARPRHnsvxaACVkTad1iuFQXY+Hp9bkLoQYrCXO2/lL1hy05+x81OBDE5EMAVbQm84mXN4OL5t44noA2PIE7KHs6333GHNuW+PbDgdSHmrtArHYNyD/UHvki0zmceUxZX0qQQlKuxlPUSi3gBeT34DqlLS7oda1B+avoLkJZml2lfVKtGmbBbricEuIt2p8YQne8tXjLggvxJHu6xG6AQ6oiyU5bL3Du/gSnKuoxX4sXlR2Kf0JgXAa/edcbChLRs7zILQAX5JVqR/HvNpMRSTjqJNnYqbFoNUY6pUE9Ui/5fv1ho58dsEUWpoUoCY8HwN6qkhGHUNZq/bqHcJa8PmpxWtEqadQiM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001); SRVR:CY1PR07MB2246; BCL:0; PCL:0; RULEID:; SRVR:CY1PR07MB2246; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2246; 4:R6n4nQOKek0AYHNlaIS4/4zRmTl/+mj+uZL54iSjT8CXlJ+jTRQhouUzboWU99zHm/F8HcvGCLi2+jFAVwm3f3kYTb7XQDBww4CqVkxG5yyo2B248wJJi8OZqzEg26hVMSlv1ZITm/GwE6wCYWCy3X2q13/gY4WBVK1CL9lPrY0jDIZW5RL9OfblyqFfGcAVFp3rXQlzkEMJjLm8ryNiX/BPUCwB7agC5QLjGtsIUDg0lUiveqLLa8n8I3f86thki+zO78roPh5PQSwJfQNigaLt5EcFQT1T3dawwpVY3cp43Xqrb8mTgIkn+/RuJPl2F7GM3SKZ8nXqU7Gq8GfAv54PIpTxNW8GgwrwJ8Kizij8hGy6lxW5zvy1byxa/b16 X-Forefront-PRVS: 09760A0505 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(189002)(199003)(92566002)(2950100001)(33646002)(50466002)(8676002)(81166006)(81156014)(48376002)(77096005)(106356001)(105586002)(5003940100001)(101416001)(5004730100002)(229853001)(66066001)(47776003)(2201001)(36756003)(42186005)(76176999)(50986999)(76506005)(97736004)(5001770100001)(50226002)(586003)(3846002)(4326007)(189998001)(6116002)(68736007)(2906002)(7846002)(19580405001)(19580395003)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR07MB2246; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; CAT:NONE; LANG:en; CAT:NONE; Received-SPF: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR07MB2246; 23:cFSDJ7NQL+1hIkShHugzoD01C+153W2mDDuSpp7FL?= =?us-ascii?Q?3WX3k/X2XOIFHaV++4jWD7lOOTWFAlQVEjaBZSzB6w4NSKr6h6yS7aepD9nC?= =?us-ascii?Q?Fv3qDMb6LZAk5rkpmX8n2eIIf/QlcUvrj1qTNy3AgF/YBjLg3DKJQbkjUQ6u?= =?us-ascii?Q?NacXJ9pOMhCBKzCxfsRtlOsIufcQmOsjMqSWkxrJHM2t3ZUeqVUgimiVASQR?= =?us-ascii?Q?AKVLA95KVQ9DfAnHYT7ipOmFo+nd5XTfCo0VkTCbcaSERxT08dYw6aT2gljq?= =?us-ascii?Q?Lo95MQLChfCWaFcYD0lxXbj7U4CMTqxuoFZphNjZmSISubpsvgfzTtD11XdG?= =?us-ascii?Q?RFdn3eVlGahEIoHJp25rLJIvHjgghYsRMaYvJUDpqfNzeO7u93CcxG/C+HPY?= =?us-ascii?Q?sPxUB0hAewh8d7xTzmuaGj2rm4/Rk+kfD8DGXd1o5NxVyTj54aaOLzKoU7Ls?= =?us-ascii?Q?X3NKI5dx9gKpY0Sm/Wy3ck+xn8+2OKtFsoIOM82is1rrNB6FTHhLc7T6vSMq?= =?us-ascii?Q?Bv6YIrM2ZaE4qph3ACyEqaj3xGtMr4bI/jPhgXCsB/bkqhTBRFxtM4tiwVWy?= =?us-ascii?Q?4ap+FYNnFDT7zeX02ivK/oV3lbs+n55lFBTkajPTR3NonnNUYwEYATzSJO3V?= =?us-ascii?Q?AIZaVfrEWww50rNBGF60tWV0H/oRNEp8WqRjY4W0W6jGuAE0Mv6Kw09qMiGG?= =?us-ascii?Q?m+ImojiNiLaNwarr1rk89MgkiHNzU/CbKt1ff7Kx2zs5uej+pPB110eiI+SX?= =?us-ascii?Q?ssMY8pWuKVDsQt7xDdSaqk5eFp91TJp7mhW8ywMKzuN9auDDLBpB7b+8BrEv?= =?us-ascii?Q?LvBJInjpT+soyzFstkJfz+A3//yQ8dZse0heyj3XHtA0M5qC5/Brq4G2BEZu?= =?us-ascii?Q?hWVk8FxnNmasnRGq5if5JYsAblzu6khtqwOjedxSGbq7T6ZIsrw6mUu8NmUY?= =?us-ascii?Q?OY+PI1cKQmbM5uGLaVELlCLJensPPeUg2JC41U8db+2561daSdiJqFVH+KgV?= =?us-ascii?Q?HZvxs7k4YLX7sWrTnpmoaA5a2M1ZISTYO61YKYsXpUOyKlXCLUTjl2ddSlSN?= =?us-ascii?Q?cD4uZxrMis4hs24eh2unMDK4HOqLtEZDyC1WzP8a0fVmwJQPw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2246; 6:yI1ldhfw8GxnyGY4+i4s4w1TfEuGQMj2VJ9OH+5H9dOhCZiN9t53VUm1LpNZr4NDFhIpGnecg+SSu8y/OKU0qjR70uyr4+portLChdsK4+2SrnI8ahp6gcEdgvl26Gx2OYq/WP7lML/r8SRfLpNDraxNNEG92fBQ1Dtbe2CwDDxLLrN58tnk4f+bP3YKI1wIQdGtANdlTDvZJAm7r1ZQqPGc6XPLcEm+iTUdFijc5SvVE8lTkM8I2l1jpCMt5O4UyGMYi9U1egYHd6KEoXD7BSeg+bkyM4+Y2lTUecaFF1A=; 5:fp1VQ4LEWIROM87bB2T5kiMb6jbn3k1dwHolmk9pV29BdRXe7UqN71ejnZbIpwZ9qvL65can8nLL24ZAUsPG7gWjF9LxK52mgmq04bcLZ8nta+iY+xPP9i43Dg1IkqoHYvUZ5I2PhznE8DM61gzW3A==; 24:xw3czMbQh6gI+JXJWh0W/Aq2UojSKoPHWGSBp+9RuZjYJCAP9xRzeVVFycyNiFo2THQ46Nx+C1p/DdjF+lJsA00AgXQAIEVpPak6txoGzcU=; 7:kuSypklmMHFTYWvVonFsWMPsgL5xukiHceK8aSDoil1YFigBaffqYligJsGCZue1O9uxfdO1QMYGGXFaXKKycOVPx81B4cmU8cocnIv25aQYurHR7+CEcnJY8ZTZHxdcc8zyalLqbfEi9ZgtafsTV2Jlifr9XXdHbVml84Jq7fmQpIvPuFl/eEaeJGVUFQ5PRc7D8QU6yaEJkqJc2F78pg== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jun 2016 23:55:18.9487 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2246 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160617_165524_847411_CF761B21 X-CRM114-Status: GOOD ( 10.36 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kilobyte@angband.pl, manuel.montezelo@gmail.com, pinskia@gmail.com, szabolcs.nagy@arm.com, Nathan_Lynch@mentor.com, heiko.carstens@de.ibm.com, agraf@suse.de, geert@linux-m68k.org, Prasun.Kapoor@caviumnetworks.com, klimov.linux@gmail.com, broonie@kernel.org, ynorov@caviumnetworks.com, maxim.kuvyrkov@linaro.org, schwidefsky@de.ibm.com, bamvor.zhangjian@huawei.com, philipp.tomsich@theobroma-systems.com, linyongting@huawei.com, davem@davemloft.net, joseph@codesourcery.com, christoph.muellner@theobroma-systems.com Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP 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 aea8e61..f5735ec 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -979,7 +979,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 631a118..60d59cb 100644 --- a/arch/arm64/kernel/Makefile +++ b/arch/arm64/kernel/Makefile @@ -27,7 +27,7 @@ $(obj)/%.stub.o: $(obj)/%.o FORCE arm64-obj-$(CONFIG_AARCH32_EL0) += sys32.o kuser32.o signal32.o \ sys_compat.o entry32.o \ - ../../arm/kernel/opcodes.o + ../../arm/kernel/opcodes.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"