From patchwork Tue Jan 24 19:34:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Steve Ellcey X-Patchwork-Id: 19008 Received: (qmail 60002 invoked by alias); 24 Jan 2017 19:34:18 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 59978 invoked by uid 89); 24 Jan 2017 19:34:17 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=H*r:104.47.36, H*r:sk:mail-sn, H*r:sk:NAM02-S, us X-HELO: NAM02-SN1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Steve.Ellcey@cavium.com; Message-ID: <1485286440.4759.53.camel@caviumnetworks.com> Subject: Re: [PATCH] Add ifunc memcpy and memmove for aarch64 From: Steve Ellcey To: Adhemerval Zanella , Date: Tue, 24 Jan 2017 11:34:00 -0800 In-Reply-To: <8f728880-108e-d028-2751-f79e22c8f3d7@linaro.org> References: <4b2ac221-f201-e740-13c4-9abf69149941@linaro.org> <1485214395.4759.44.camel@caviumnetworks.com> <8f728880-108e-d028-2751-f79e22c8f3d7@linaro.org> MIME-Version: 1.0 X-ClientProxiedBy: DM5PR16CA0039.namprd16.prod.outlook.com (10.172.42.153) To BLUPR0701MB1058.namprd07.prod.outlook.com (10.160.34.155) X-MS-Office365-Filtering-Correlation-Id: bfad7fd4-7bb9-428a-78c3-08d4448ff494 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BLUPR0701MB1058; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1058; 3:VvbEO9nxsPPIGs/vGvOQ11hpyvsE+Gb9Cta/Ww75vO7HSmLpkOSZGpg46l5yxm5EpbHOokBVzL+MGtizpbP1OKQbKjKfzK+qISGjggg8vjSV87XIV9xfYhdGFqTAyrPJK6tvXW8C9T/qMPejbjBuDye8043JL3QwdQ/CfllB+TpoVEufeLgd+h1FpIANUN+iDDUnShgmABZHNV2UfeZ2SGCYOQc2WIbCpIDhG9Dx4t2HiRJ4/4O4bR0iUgOaz1daJ8LJAmbqZ3KrLAvDVHjojA==; 25:q+Z3+4/ljNA+koVE2BQ9S4sBJXxlNT4O2gDp/o00yBoiFFeVq8HjndOUB8hYejMQBL7ZcWg7duQuwD61YW9XYyObh46PxTWRu+t95KHkZl6Nxt0wYzM6OIdRq75OW7wHxOv7xS01n7x9DcYfvse4v4RKUGdxBbtPae6iwQVyezIvlGJ//LxzQ3EvPanY43V4F5LpgQ0AtQfk2VHQTTnrSkAdnz+yWHfQHPkUFJk3qoSVKfVzc7FOJl7ozEEVovLs0DWkdN392JNM1//7wK+7MGzpnTl8xLJfqH/YcgNAcIDN8L2zg1qnF+h9mgef2ovMDV2jgVq3/ELEw4yyyV5YFBURxD0CIGXMZybtuae8q7gC5Ez3UrXcZBPh/WNFf7tHtoUs28kBFWpqWZH2jRrv7i4g4ZckbOxAm60GVRzOZAwsjYFDLYnG2VLM/4tH1aOtztSoxW6sPecN3DRc0SjxRA== X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1058; 31:lVMEjWqRdipQI24+PEIjxkx37szjgmJoAyL0SRVuTG/Cf0Q2txeKKPp2VTH6yhiCBFLsKGbKVR1K6E7g+x0JQsaJN99sU/4eAg1DJJx3KSVvRsqk5aeC9bt0iRRYhSs88E9iiQ7PSSOGbEzf2P4KkTfyaueBfak3qpYdPG62d9+U8Ht5S/VO1Avl2yTuri2TluUnM5Q6cuc/A9WqWZxIk3baKYBnuBtR250ErGFph6KVb34GoiCWRlPA/7t+YJvtvdySjQYWxzqrgdzfeQHjSg==; 20:8k4OER/24Qj3TY0SeU1lbOiflZ8nmr+So/SQQ/CbVg0/F1sbskbVN5QSzMYNOA2gNgAAcerFosUxfM+DYtFasfv19GQlh2BWNenuVvxN/vNvT1bB7tcqfCp6cwbn4QwtUXLc7JiDAGn4pxLt7p0Zof1Voz5Pg3BldJE/thlFPnuEfvH4NQGPynhoepljsTqi+On7ULYlGpxoFZvkn9SUGhXzq841hNdacCQdjW6HO6aLanpT+uqTafFrRslfE2FD24yhwD6ByEfF/iNu71fT0ewRa7Bd3wXfFczUnHUtu3GNk5eZj09pwri+2fiUGl0H97Fg9p6B1PEje4JuFH0wlVpsLQNmc92fIxR9rUtjN/Y1uz2MsgObIkSZsvUAiWxaLpFeMs8nH3UZuupI0FFk6WRgonP0k9nEpecLnyNffMZtr0u4IrqYris8S2SBT9nSwjGz+tjDm/Dn9vUPfRN8IOEX+Z5kcTa7tYU7FoKQNKJZ715ao1Zn61SFMqbKwQvfOV9b500bjXT5dGU2UlgYmekvLHQbbiRww6cf7NXEgJD3t1LKp/Dplokeuh1ORSDxNfJ8opommDJPR+nQfdQ0u4GvG9S5o+j1sdjencoB7Tc= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(166708455590820); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123562025)(20161123560025)(20161123564025)(20161123555025)(6072148); SRVR:BLUPR0701MB1058; BCL:0; PCL:0; RULEID:; SRVR:BLUPR0701MB1058; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1058; 4:mlpa9yh00gMLwlp81l8pLWNTZ/DAurcDin3k46dgBN127bbIQyAJmGY6XCbKYjeIW0lJgSieJVKK9LxURK8FU9sNo2C+4GF+ax1E6Tj6caJI86W9vQEdDE0SrPkrnJQKcP+MC0w1xA4Fk5FHJSmlrjfkrb81Zlg0R5OhSqXx5T/rP2X7VifemShFp2YSA1Ab/CVwWoZY45BG+thsPEYojadJmNtAZM+cwQ2oIrck/0CE00d8NPTJeL9+3v7nNilBfZxvDhnkukCct2BIhK3vWmPMBb6M314uNxPnmqxXB+wL7luFF1hBj5CaVYzDfxeYtdRatHx9vLhOAEWFIPfQY7qnHmPiBWChAvxkZrd1vUzjtTa+gguZMrkrb6MPHvFXi//ZHyGd3cQLlibu46SjIyvvl8Mm3ukKmbPIE21/PFPga77zu2hUGiLrJOZTt7Bmd8T10N44xBV7A4cLBaEc+MA4yccS0F/77ppQR9b36uGRpfqUjV4SoZaFEhw2xWSBXZ4mCEY+rcgp2u8IzckMIuCjiv8rztiOfYp/aNJLG6s5HZBSBakdusIbg/9B99fyqm8+xr6K3omuKsnol+X/hyZfiwePLU4uulzAqg6gZup++pmJY/Min324s/h7V0rf X-Forefront-PRVS: 0197AFBD92 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(39450400003)(189002)(24454002)(377424004)(199003)(106356001)(229853002)(105586002)(103116003)(76176999)(101416001)(5820100001)(6486002)(66066001)(53416004)(38730400001)(47776003)(42186005)(36756003)(69596002)(33646002)(6512007)(25786008)(305945005)(6506006)(23676002)(50226002)(6306002)(6116002)(3846002)(7736002)(2906002)(2870700001)(42882006)(5660300001)(2950100002)(50466002)(107886002)(189998001)(81156014)(81166006)(8676002)(97736004)(5001770100001)(68736007)(53936002)(50986999)(92566002)(99106002); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1058; H:sellcey-dt.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTFVQUjA3MDFNQjEwNTg7MjM6a0JjYktmcWRZQ2hIQ3A0TFVjMEVVMFJo?= =?utf-8?B?dTNyeGpUYWRRSk5wVWZ6V0JkQTJGQ2hlNmJ2b3ZJdjNtQ3lmOXZvU3hyejhR?= =?utf-8?B?QU5GK0JSQndIZVhxRUJnZGpUQk54Yi9BY05YSkw3akExVE05Q2RwREdHNUh5?= =?utf-8?B?MUZwdUhYYWlLR0h4NlByTklXNDhPbExwMnNDNkNBQXc2bktVVENQVTVsMGwz?= =?utf-8?B?YVZxWFh6T0xLekFWeU01MXdSUlNOa1lTczlCaTdoL25NTXVFN3pjOWZod0pU?= =?utf-8?B?cW5SMGUwSUNPSjdrRThVUDRGOGM2Qm80UHI5Skg2VWVLWjQvMHoxK1IxTWVo?= =?utf-8?B?eDNHckdxN1FQaGo3azBlUHpQTCtpanJkZjFMcUpjTU11RmxHM0ZuV0lUT0Fn?= =?utf-8?B?RmJpa201djVVeFc2YS9KRDZGUmRnbjdUUkhDQ0RjNnFIcTIwTGE0MVpaSXov?= =?utf-8?B?dWlDVllNQUdJc1VhZ0lnSXR4OTN1eGx6a3dCSDg1UUs5YjVjU21oNFg4WlpT?= =?utf-8?B?MVZxN3pzczlPZTYrMHI5YTVpNnY0NUI1UUFhdm11UTVHa1BKbElQbkxVM29H?= =?utf-8?B?VXlLR3lIUnJDTWJlY01WV1pKK1g3cW40alo3dG1Ua0pxOTd3Uk1PTFlIMWpX?= =?utf-8?B?SkFZZ2xDRVJ5M1Fzd20wcXF2ZzRWUmxTMXgwUEh0ZnljYjJKZkVEWTBSWG5h?= =?utf-8?B?SnNPM2lSZ3k4VTZ0eVYzTmlxUXZyNFdrM2drb2hJUzJuN2VGRDljbUtjK29Y?= =?utf-8?B?S1pJWm9sYk1TRDFiL1ZSTjZYRzNhNlBpZnkxUWQ0VWNlM2xSMUQ5Sk15NlJi?= =?utf-8?B?T0J6L0YyS0gxSU9NQ0p5QU5JbmRkRWh0QjJRVk9iVVpNRjMwaTRNZXFnTDZC?= =?utf-8?B?UGdhV04vYkN4ZVNrUUVvQktXNC8rQUU3RHpBZ1I0ZG0rWTB6Y0VrNUpvVXBD?= =?utf-8?B?SWRaMWlCK0tjWmZ2dzQ1eDN1eWlMek10RHQyd29hMDRkVVVheXExeUhiSUpq?= =?utf-8?B?RU1kT3dOc3prdmFSWDN6ZGhUV1JsRkw2ZjZjTmt4VjdrOGR3OHM5RXNtRlFh?= =?utf-8?B?Q29MU3pxcGtuUGVNUGluTlFuby8vUUpENTZnZVkxUnFsRVl0WDJWSmlZamRk?= =?utf-8?B?QWhQVFRiRlgxYkNxSHhhMWZ4NkJMblpWQyt4REZzeVFadm9EYTA5S3psWEpD?= =?utf-8?B?dWJ0M1J0VmRYN2xxUUd6cGdsNDR3U2FhcGtEK01xNWFWNkZiVENkV0hnMCt4?= =?utf-8?B?aGEzdzhDQXlVbXlseGNZWExQOEduZlRYR0J4VlFiZGNoSm9NTjJSQlBVTTZa?= =?utf-8?B?L0cxNWphblk0MnlPM0NHQjBFSXloay8zR3FNdlNBdlk2R0w4Q0FzZGgxbjhF?= =?utf-8?B?QlIyMXVpcGcvdWRISlJqRkJjUFhMTk1hait1RjlYR1V0eWl0VzE4L1ViN3li?= =?utf-8?B?NXlHVnd0ZkJtL1UwWXB6eDY0aE5TT2UyekQzZXJhRE1iLzl0YS9maWU1a2xN?= =?utf-8?B?aVRGUFpWYjgxRTRLTDR6cDRPOXhnK1dyT0dZRVJjZk42UUpNckUzdEVmWk1Q?= =?utf-8?B?TGtNeWQ2MitDMmw2NXFvYlNnYXM1SWlCTjVGVHdsZkpSR3RsbmwvSWorc0hj?= =?utf-8?B?NUJOVGc1dG9ZT21UMHhqck1zSHc4elJ6Y0JKaDdVQkFUVlRrd1dmWXJNMVh1?= =?utf-8?Q?AcSozYeVVC3qFD+1xo1JopBy+He/IDCrPc1rMAcjG?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1058; 6:aODdpm3J+XErg9cytlFsBAxTA0iBvlcJ4S5z63nRYJ+NjwdW2tZlUv9W4J/bVEiL0EOe7F8tEBlF25jhutsYoufuP9zjrnT8nbSdalpsEkvWaf3reTXvRPU4GpYkJSJnd22VyQVfDtvdaXPi5E9sWavLBMFXuESlgrvHoXzEM5KzSvmnb2Y5mojae7pN0exM85ggjQxI2dqqukdbAwb61mubVWbKuHiMoN7bUrKncf5rn8kdi+zDceRfi2ma/dEUSQWaeS8U6rvPzPA3XkYYvnpEPnZ2cJs7LuCidaFfd/gBeYHqpYsQ+E1TRTrWMLvZdYQo/R6gasua2tLPsfZ+Pi/bWyTDtTlDFqAIeHYRpkhvTzDjY0SZroyTJSvqZ43RqsyRi/68Rrdit8rj6C510Dy8R+B4645pmn7ocgKMvY0=; 5:lzeomMxgiSY6Dr3/7Uh6GWvMj12/ux+zNQMFNZrjzTAS2wiujh3koo6yOYfW3C0k9F7QUybWdYsK81tEVE+fV+/eIJQECsTUXAh73AdbgnSdxvVG13rVTNOWsWQNWD/KhmmY+Jdun5vutevsSPHBpKzMtdqjaX5kEpV/LqAEfqw=; 24:hgvO8a0lsKO8TgYTaT4LnqLzJ6a+NSn334cqak7vXaJTUfvzzLexa/2phkttx7Xeq0yl2MGB1zGCXmaCM75bH8fATcRnP9eLXINxU5xRuL4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1058; 7:a8hnWC5nORERgN9R43ZNyajwOb5+gglmprZyG/sR6mIaOjERQ6ZDyuxLDQ0486HISoBD/BLGzMbs9gQbGPpWtXLwtJE9l/DLM1O3bcbj5yU4KhahOw5T2reon6b00uQSWOOmVF375kirGj9kjvrsKe9HxDqaAHRZAEQO+UX1+kYmk9nQREytVKOxw8+XQRJrZue9rMWKTju03yoC7GOFknI9SoOyrp22ZOSCk1ua1/A5Y5cOeuDEtgHkpl0szy1nWp9MvJ0RcMnmiYUcLZ2Iu1yTeRx2+adFfsycxIRGJWJgZKUhze48AxYYZzDaf+Ccx6BJbQ+7y56zGHzqkPrurOqcMYNQwAXTWnxdkAPGATeBzm4CtZjA5XnymNUKBKYoFAqkbJJX4Y1br5xZUT2bER8Tv9sLmDq6HZ0A8j35x0poRQaZLmwP1KVPzcNKebvLw7Rmldy1/UeoWyPTTqXaiA== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jan 2017 19:34:03.6632 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1058 On Tue, 2017-01-24 at 12:09 -0200, Adhemerval Zanella wrote: > This branch in my personal repo [1] have a workable draft version for > aarch64.  It contains 2 patches, one that implements the cpu-features.c > for aarch64 and another one that actually uses it to implement the > thundex ifunc. > > On the first patch I would like to remove the sysdeps/aarch64/ldsodefs.h and > make only Linux specific, because of hwcap. I will try to cleanup this up > later. > > [1] https://github.com/zatrazz/glibc/tree/master-aarch64-ifunc Thanks Adhemerval, That clears a lot of things up.  One thing I noticed in your tree is that you only call init_cpu_features from  __libc_start_main for the static glibc.  On x86 they also defined DL_PLATFORM_INIT to be a routine that calls init_cpu_features for the dynamically loaded glibc.  I added this code to sysdeps/aarch64/dl-machine.h but when I added it I got a build error.  I am using the same prototype for dl_platform_init that x86 has so I am not sure why I get this error. Steve Ellcey sellcey@caviumnetworks.com The error I get is: In file included from dynamic-link.h:92:0,                  from dl-conflict.c:59: ../sysdeps/aarch64/dl-machine.h: In function ‘_dl_resolve_conflicts’: ../sysdeps/aarch64/dl-machine.h:432:1: error: invalid storage class for function ‘dl_platform_init’  dl_platform_init (void)  ^~~~~~~~~~~~~~~~ ../o-iterator.mk:9: recipe for target '/home/ubuntu/sellcey/glibc-ifunc-new/obj-glibc64/elf/dl-conflict.o' failed make[2]: *** [/home/ubuntu/sellcey/glibc-ifunc-new/obj-glibc64/elf/dl-conflict.o] Error 1 diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl- machine.h index 84b8aec..7f38a68 100644 --- a/sysdeps/aarch64/dl-machine.h +++ b/sysdeps/aarch64/dl-machine.h @@ -426,4 +426,20 @@ elf_machine_lazy_rel (struct link_map *map,      _dl_reloc_bad_type (map, r_type, 1);  }   +#define DL_PLATFORM_INIT dl_platform_init () + +static inline void __attribute__ ((unused)) +dl_platform_init (void) +{ +  if (GLRO(dl_platform) != NULL && *GLRO(dl_platform) == '\0') +    /* Avoid an empty string which would disturb us.  */ +    GLRO(dl_platform) = NULL; + +#ifdef SHARED +  /* init_cpu_features has been called early from __libc_start_main in +     static executable.  */ +  init_cpu_features (&GLRO(dl_aarch64_cpu_features)); +#endif +} +  #endif