From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932353AbcFUFrV (ORCPT ); Tue, 21 Jun 2016 01:47:21 -0400 Received: from mail-by2on0082.outbound.protection.outlook.com ([207.46.100.82]:59136 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932172AbcFUFrL (ORCPT ); Tue, 21 Jun 2016 01:47:11 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: , CC: , , , , , , , , , Andrew Pinski , Yury Norov Subject: [PATCH 12/27] [AARCH64] Add ILP32 support to elf_machine_load_address. Date: Tue, 21 Jun 2016 08:06:56 +0300 Message-ID: <1466485631-3532-14-git-send-email-ynorov@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1466485631-3532-1-git-send-email-ynorov@caviumnetworks.com> References: <1466485631-3532-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [95.143.213.121] X-ClientProxiedBy: HE1PR03CA0024.eurprd03.prod.outlook.com (10.163.170.162) To SN1PR07MB2256.namprd07.prod.outlook.com (10.164.47.150) X-MS-Office365-Filtering-Correlation-Id: a43de0ad-3213-4618-fbd8-08d399924dd1 X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2256;2:gsyHpFGSE+xwTtqGYPNS2gXGsCc2qgS1CCqb+t4YjfEprYpm2tk4VVxWblK8+5d4rjZmt6eVXhfstTZuYL0I5yxfWbTnySBd69qV+/vQJ2IqmGVZAS4xNM7zUOWdL1ziTe7OrEyDcxSuF0/LRDWsCbm4KyE2fy7XwDadFHU8iMinw6UNIYZlWj63hwNo88fV;3:2Ze2jX+wRZWf6vLEEddmXvW2VuGblklMTHDg/fCy634yWNH5ZxhdGEKYT0lJDwz7bGvyrd9hDxJcZ+OV0WNUda3WrdVG0klnB5TPe0Dzq+ZgLMPWJOAndyNfGwFwu38K;25:rGf8c9g1hqNNcoZDfxnOsvyZpgBBBLXZx0MPEl8aSrKO0w3dvRBm023KV9LpkiIGcR7MlkT6dYyA6SD0RSsKit0MwE1Jx9RBmtCPrzlI+91lxfmH6xob7AO5gcVd65yMd9geboI8yqWJwwsDSaiIDA+VPNf6Xl97hJHiqehLHyOvAnR0/p14kaAZYZ/nDEgG+tkD0YKXmiJijttiDTKwuSy6lRw+0e3sMKr2Ad37ppgRMwvtYTGoww34Zz7fDS8pk9sym7HqnwBZiBQO6RmPQ0oRLX7Oo/LAc3EisE6R4e+mXHlalPUlJeVpVOcDTLjg8rHjPaJ0Kc5vSD+iC6ICBPsecPoDRg64xlrM0Q9tG+zxwPwPCZLN37MfptC1O3cl1t0BSlAd6cRwSc0RJayVz+flb6QrMWr4Vzj0BhIatSs= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB2256; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2256;20:hnoRy3HLbph2MhisAzeci+pr5esEFb/tXZmmEHYolUUWGUxILTfT9f8DQfVf7odJUlAPDroWomiQMB0BXiecSAAHVcMjOBjwj0Y2XOV8mtUfzwjCn98VBdL5eLq6LjkegvMAzWjDaIX5I6dnepKGO9biSZHC1YPgpLPowEumBNQfsFGiSz49RqUQLkjiBt84qWFzhZtvdG2rfWVmmFuwndmlz5lxW6lMYrSfjoUDq5rr+w4Tb+cok/X+Yb49rnp1MlzuKYTBiW7lLBtOdczGNJyMUjWt8NZVIHdg23ydpOJX6H+jKDA/KQljgPSwsBFiEDaTQfeq7LYnZY8U6DDV6K/BVFyQ+krFqZoH+1i7VX0QYicTtZutf5JTHSIHBOnQ21pN57WbGn+3v4dzVa3LClH0Y6VHxQjss7OyI/Zse4mmxdmZgaL0cyDikqnF0IQFpgabjwzrxoTAu+ZuqvmmnTdstMWKmrr4MBGMlNh6/bx6YcQHWfvTnZ3A1aRxXHTpuklkFnr7wa0exVc9VztNsR+WZ6uv9BtrU5Xfo7KDy43XUEuj/Y0ivz5oSQM3GfaS+8yfNyrFI5yyi6eyFcxbINml/Ztc1PWgc7l8qm/AOpU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001);SRVR:SN1PR07MB2256;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB2256; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2256;4:nuQlAA7lHHER+vIFCMRIB4klHZxDg0jShgxmljtRKjGSVY0yLUb7veixL+onMXrMUQCejsecNkVPlxduRC9NvioQLzV5R0keRhsq1q0qzm1CWXKw/lf6lBNx0VZvAbEnkiSR4Qphb1GH+l/4nqsJWxuVXhtwNhtz4oYPXHCxC4LFfav7Z7muIaVzFmxMoKzvFiBSXwURWSV5US24NbmhVZSY4bXUSX6syVAIXXqMABE6n69+h8JPnH4EuheGLbCy9OePZX3GzmBRo24nVW5rVDuO5Xj3Oquey8Wugs3s8sAy2pBrNuAjrQk4OL3dYhq2JdeEpPvTSEzP1LynvKr8q67HIs89UGXZvGP0TlyMjwdxiQdwO7yZ5awzExNtZFft X-Forefront-PRVS: 098076C36C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(199003)(189002)(3846002)(2950100001)(107886002)(6116002)(97736004)(5001770100001)(36756003)(586003)(47776003)(2906002)(77096005)(76176999)(4326007)(50986999)(50226002)(5003940100001)(66066001)(42186005)(575784001)(68736007)(92566002)(7736002)(189998001)(4001430100002)(81156014)(81166006)(105586002)(7846002)(8676002)(229853001)(33646002)(101416001)(76506005)(19580395003)(48376002)(50466002)(19580405001)(106356001)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR07MB2256;H:localhost;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN1PR07MB2256;23:SfW03dtEEvyLbR751hwGGWo0N+y7W0WBcUglNwi+g?= =?us-ascii?Q?PKqaRWcUghOYf7cSYXhHz0bjV/VWlfw7WsPqu3DDcJQAphuJiWvuY7EBHOKr?= =?us-ascii?Q?oCTKQZ0oggRawtBlIu/WidE0cYljjazgrXtJIBuCr2m/2/I8suf6Ko5IXlzg?= =?us-ascii?Q?SroCXi2M1g+XiOy6RpsBgnVzYDBfh/4Y6g57bVwA8FMIxF7VDBHtJASz/EM0?= =?us-ascii?Q?scgvpPHb5BXIhKCgTekNDKDDOjFigQ4i/Ueo1mG9mCNTd/iXhxx5IrJct3YK?= =?us-ascii?Q?zW4nZSFWdDfu4Ie/WTooV6yzfWMDyDyQ4zlXkmvCd9yse8oSaLyr/iR40Gcz?= =?us-ascii?Q?+x8xg3S4WyWLMDUuN8I0x9scaYx29EjdN0LNk5prVjvSJaFrqIo2mLJkNX+f?= =?us-ascii?Q?bs4znCoKXJC0FybnvidbTecnIJe6Jrjm6zokSc+z2RyY0nyYtrBcBBSgIdzk?= =?us-ascii?Q?dKJfSJzIvDnLJwQOAV1rcBaimA7bdyb3mfIG1rIbLPEN1DZpfx3aTgM8JKi/?= =?us-ascii?Q?EgQK+0ML6oLW6vdnr4Lguu0BlzGXNX2oNqmNvZHf6wq416XQB9XSdBpS1J3V?= =?us-ascii?Q?o6E1JPrP9QDXyuxaiHClJZq90QFV+eqtL1Vtxf1ui+3FOIliRz0WqRFIGql2?= =?us-ascii?Q?0oVo+ZjFdiWJ3TxMl6C/J1P4fG5jpwYtOMvOvpMZQk9LDhsaRMyvMO1H4RN5?= =?us-ascii?Q?AwjSTlnqhTNpP+WTa7JhtBdVu0EPIYtwAT4YOiRLwqGwWbo+BZHSHU3zu7IE?= =?us-ascii?Q?p4BbLrZ6rrcUSD1cJl0fi83W5CniJrtG5edCEoQB370rB39x6S14zOjKqw8i?= =?us-ascii?Q?5Bf9mav6qPLPZhrCziVrkXOT2D66yV+MOs29iJaCARlXdlqu+6/zPPlnKZWl?= =?us-ascii?Q?jVBP4rdcFtulENOSCoNOw8+kQues/bd3qPLyBUqVbQEg/k1UL296ru4BvcEd?= =?us-ascii?Q?BEHXXVNUhs3lY12AWbb+vKmQqw/d47vXTgwwSS54qM1PbQhux1gbW30RV8Kb?= =?us-ascii?Q?Tx1c6WrZhqSuDR6s9pLrTmS+pB4kS4R9g7ST6umjBRCPJG6HDh5SEu/Jkrfj?= =?us-ascii?Q?g86QJqUVc0GNgb83w3A8TsF+B998X+1snFTA2V2rdObb2PntA//ra/67Kp8S?= =?us-ascii?Q?kMUfHSAluKzLigyj4dJVTEaFrkbXGqg?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2256;6:T8vm6JJ1ZXcKBgitdfMRLqAzb7wuuoa8EShwDk1LSXTBxI1ounRP8wrYKHytgerUIbdVErCNFc3nVFhW5AlXN89Pq2NTYHe5SUTxSQni9z30tMJtpJpOxtyZlYNW1FMJcBOqueXyGPMCXTVVsJYgFYyfOYM7zDQmLxyuKsfVbAbtOknmD9AthVRfCENtVLvtsHEOPR40rLa7Sdo7F+KqBLbP9GpGyrlqjm3B3Fd2BjJwyKjuzipqFHxI8Cu42T+2qSWjN/yVWfuU2THlGd4w99al9havD/AX1xlcWc3qhfk=;5:ABlzflraZmF4PdTHiG9QT1eXmRgI0vvgcmsi7hzx6oGY8Pcr0W2W2HGpbydxFnWbfdQ3yKdj0gJftYCEovJtswaogWumN3ydFDFCrrAcknGrRQL6UgsyiUsj1+tsq2T6FuB49riteRfWl/mdjYiKNw==;24:MJ+3gYaGQoH0UnrTY9oa2ILwPAjOP3JAnqPC3ZvTSgWNu/SYqTZolMfbjjQ5b6FLta3ZMOf36r0+7kP8+kWLA0CqBzj4z9aGXodde8L6kCs=;7:qkjOjxCG2T0FPLku5UK2hYgqEohUEMOdQlN2ztKKZXDBkcvlNL3TmrKEJnYwsntxciP8SGWHRtzDRFg4Oh+sdOmczwnZdf9JLmcPwV1cFLkD9ThfVfzXFeuAmynMOXViBg7+1OO3jJgyWNg5ncJsFTV+Uzki5RWcBJq9qEBF1xF/oqzVQ8032e+y1gCCaAZnvMIJZHDKpWV/ElN0/Za7tSDIBDwfDCuhFPqLIid6ie5kEAivffVGOHCY2LimW6jF SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2016 05:10:03.4520 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR07MB2256 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Andrew Pinski This adds ILP32 support to elf_machine_load_address. Since elf_machine_load_address depends on the static address being found without relocations, we need to use 16bit relocation which gets resolved at link time for ILP32. This is just like how the 32bit relocation gets resolved at link time for LP64. * sysdeps/aarch64/dl-machine.h (elf_machine_load_address): Add support for ILP32. Signed-off-by: Yury Norov --- sysdeps/aarch64/dl-machine.h | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h index 7a49852..771b0c6 100644 --- a/sysdeps/aarch64/dl-machine.h +++ b/sysdeps/aarch64/dl-machine.h @@ -54,19 +54,33 @@ elf_machine_load_address (void) by constructing a non GOT reference to the symbol, the dynamic address of the symbol we compute using adrp/add to compute the symbol's address relative to the PC. - This depends on 32bit relocations being resolved at link time - and that the static address fits in the 32bits. */ + This depends on 32/16bit relocations being resolved at link time + and that the static address fits in the 32/16 bits. */ ElfW(Addr) static_addr; ElfW(Addr) dynamic_addr; asm (" \n" " adrp %1, _dl_start; \n" +#ifdef __LP64__ " add %1, %1, #:lo12:_dl_start \n" +#else +" add %w1, %w1, #:lo12:_dl_start \n" +#endif " ldr %w0, 1f \n" " b 2f \n" "1: \n" +#ifdef __LP64__ " .word _dl_start \n" +#else +# ifdef __AARCH64EB__ +" .short 0 \n" +# endif +" .short _dl_start \n" +# ifndef __AARCH64EB__ +" .short 0 \n" +# endif +#endif "2: \n" : "=r" (static_addr), "=r" (dynamic_addr)); return dynamic_addr - static_addr; -- 2.7.4