From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933077AbcFQXz1 (ORCPT ); Fri, 17 Jun 2016 19:55:27 -0400 Received: from mail-by2on0074.outbound.protection.outlook.com ([207.46.100.74]:18815 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932858AbcFQXzW (ORCPT ); Fri, 17 Jun 2016 19:55:22 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , 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 Content-Type: text/plain 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; 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 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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" -- 2.7.4