From patchwork Wed May 9 23:25:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Steve Ellcey X-Patchwork-Id: 27194 Received: (qmail 91988 invoked by alias); 9 May 2018 23:25:28 -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 91548 invoked by uid 89); 9 May 2018 23:25:28 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-languages-length:3267 X-HELO: NAM02-CY1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Steve.Ellcey@cavium.com; Message-ID: <1525908319.28825.220.camel@cavium.com> Subject: gettimeofday / vdso / aarch64 question From: Steve Ellcey Reply-To: sellcey@cavium.com To: libc-alpha Date: Wed, 09 May 2018 16:25:19 -0700 Mime-Version: 1.0 X-ClientProxiedBy: CO1PR15CA0064.namprd15.prod.outlook.com (2603:10b6:101:1f::32) To BN7PR07MB4562.namprd07.prod.outlook.com (2603:10b6:406:aa::28) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(2017052603328)(7153060)(49563074)(7193020); SRVR:BN7PR07MB4562; X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4562; 3:kQsjxIhourcwFBMvmdUmW3NIzb4i3NWVHF6AStyF3JL2ndUngkQbgA7k6DOfxAHXZBEVgMFS45zgbSg/hS+zCYx6mvHB/WCqanwNDb57Np3svgyzi8WDbNv3s509Ew0MQXZCn32uHvxgQqqylRrGCR9GS3f2LP54pUqTcw+O/h5+9M6qemMrinQoUsRJtGDWL7rxieEO6IKQd4PSMXgp8jgO6UpguBiqFEvSpApL2bOBz1cpsyUaeAt1wmZYPhro; 25:8r5uIArlqvXhLLtm5627JnaXj/0Jt8mqnnshyFxgO8Q9uI1oBC3oVuRsYfkNT/aH1NYcr/FMWZDx1klehCC36bQptc0dXjxxfu0ew50oZczJJQV068BiPhPcSSpwFC6VfjjtJ6lofS0auJaaYZJAFM2Vi2n+tz9P1WVasLfXGwPNinTOR83PBLZECjdBP3cdeAIj/lC0A5RqCIkJUYVrQEZM5Nf3eHFsxIxANX/Wr+Lg7SDg1RPGgR30tjDWV333z+zqpdVxtHoT815hZ6inRR6sZNvfd6YfBdDfzXaODE75RCqFOH4QVfbpMd6QaDg/FShTmQD9OfpH/S7sfLK/XQ==; 31:NXscmxVV4pjeqPNrZEaELM+mvoVDsncIP7/WHTVa/EUUy8XQIiQMg9qviN8j3DeXP/+NLXjuFMXx+MUGCc3HXAK22QXnoVKGdinD9W2Kgh0/4zfmbjJBHNNK5Sl2qxZQBYpWoXmCEYq5FWGri7hmKmI9uD1HhoDl7eGoRd0+6cJxLMRwib4M3XMlJSC8ZuRIWpiKA18kYdVTg3VkOYwoLTj1PqXYFeMlRupXeiFXPHA= X-MS-TrafficTypeDiagnostic: BN7PR07MB4562: X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4562; 20:JhGWOqFHT9Jx6xf5LOVK6kyAvAES/AtadvYxLU83iPK1njE1CatmaXm4ZmRyK/+w1NzqAKQksJNRTUFYxdgzaOPVfo2deajnOPhyBoaesL7iPtDWqxGNTZDIZ3kDrT2vpxL9g9xOHoxc3DWQvAlA8oZV53huehhX9AuL7D2X/e1CJkvXF0Ymhq3XnEsfPsurVlM0IzIq0cQeZGTTnpVxd2ChdTsPirvfIpJN5QM+v7zyU664VkzSvCwshEZWwzr0t+HDAkpwJru7AvjIISqjtZIu4haQ+0zzWM5ZHNhy/YGxMGM/plx3bZOo4L7pjR97g89lifckGnWa3ar/AhxEk1ZpzMkQj0oYFuJ135unjdZrZjFBOBWzGVsAYsaE6NbNt7XJ3FXBG1bD1gGdGIZeuTzx54rA9qxuzl/CVveg2vZXFCWWSlCo0usPVSeyZyzinZBVo1Or0RYY9MJ+J/hvHYqx6Mxgfoo+H1CtW1VR0PpAqXNbm03bzCL5yEd2PllX; 4:o9LRFPwIPl3p5ZVVWZQviV0Kh/RrwdavwD6kD8jY9YpAeZLM7ME+tnEAR0wPAWaCHtEmvd6SZ4d7LSqPw5C1DHz4d13NPtvkfspqndEsbIwfHTuaoutv1S4J/o5sZBE2D4Y3O+iZv9X076FCLndVzyDRDaYikoyjl9B8W+1cyoZvWLa69/swNFLHdrwgQkaFNw/uaZjtypI7gIuX5UCIxZT4l+iRsVkglk5MyzZG8EkQj8WdNLSb/TTRrOgDAz3yOJXy84a4s92tznSofjmZSA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(102415395)(6040522)(2401047)(8121501046)(5005006)(3231254)(944501410)(52105095)(93006095)(93001095)(10201501046)(3002001)(149027)(150027)(6041310)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:BN7PR07MB4562; BCL:0; PCL:0; RULEID:; SRVR:BN7PR07MB4562; X-Forefront-PRVS: 0667289FF8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(376002)(346002)(39860400002)(396003)(366004)(39380400002)(189003)(199004)(5660300001)(53936002)(6666003)(6116002)(106356001)(6916009)(568964002)(6512007)(3846002)(33964004)(84326002)(6486002)(105586002)(103116003)(16526019)(2476003)(59450400001)(43066004)(52116002)(6506007)(386003)(5000100001)(66066001)(186003)(4610100001)(16586007)(5890100001)(25786009)(316002)(305945005)(8676002)(72206003)(2906002)(68736007)(97736004)(26005)(478600001)(476003)(50226002)(81166006)(81156014)(36756003)(53416004)(2616005)(956004)(486006)(69596002)(3450700001)(7736002)(8936002)(99106002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN7PR07MB4562; H:sellcey-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN7PR07MB4562; 23:pzR7XA7mAOTYEv7fQvFxJcf61BrntUjRicr9S4Hjf?= =?us-ascii?Q?sLa8Ic6oTCaMlMFFfsMcufFPb5wTXJs6FP0JKmyOmkkWNPoopzP5Pa93374E?= =?us-ascii?Q?fel2efhpNrTYu42LxTDyXK2ViK/2R6Qduv5wYGk4B6lIEWCriO84fIUpPNEc?= =?us-ascii?Q?hjnTYZBxlHQD6fS5H8HgRxop7g4lcq300ymL7o5QdHXTZLC5P3D35KJq0dgp?= =?us-ascii?Q?pbb97VmEwA/lJv7g6MJAE7VuwDvgkwKEuHz+lGSDrZAtc/+Ovw2YIRXqRVmT?= =?us-ascii?Q?Ec5lu5D647akz2J4DzojdIWTLWdfDV2w41POASOg4n20rpAfCzyAeATEsiW9?= =?us-ascii?Q?u0P/R3lE0S/p5XwhaAtIvj+4VCzte2Cx2OhIHve9u4SPNrND/GjtPohiq7E8?= =?us-ascii?Q?GJZ6iyMEfAkiFcqw9JoSLS4d0HWp+z7Ns9UKmXusH5z+AtuNmEd4tnsvQxGp?= =?us-ascii?Q?LiFtch+ADGzMdHXGOpZeRF9cYkSb6xxLmRy7uUiBYxeOtAjo5jALgrqTGUS4?= =?us-ascii?Q?SpTmO/wtQp+oVypT7oF5C02Z3ouYz3cy2LAan7LnhR8QduY4G4oBXaeMiALb?= =?us-ascii?Q?biicCVjXzmnEUUzip7f4/XiK3/IeDgn97DSxMcS4qA40a8o6SqRmJULO4nYd?= =?us-ascii?Q?/Sf8NqCZDm+QS7dt+lRCnzEI70k47uu2PRHRf5PTWA6oODMlUN7F8vHIaLEC?= =?us-ascii?Q?o6I1m5/GIFWhVPNzMrZzq/LlIFbQtCcPsZGA1fK7eE/NdsajtiquiuTya57T?= =?us-ascii?Q?k8GX9SrGelEigvGEAvi8NBAZVyr4k7kFrVEXQM8rw6o23g61r9IwZmYEDdgV?= =?us-ascii?Q?l0WzeWG+yUFVvLgOtoQo25ize7TP0UWHVlbKrT/VDtp9pEQww9ZAd5AVwfe/?= =?us-ascii?Q?d37APikuii0E2fk5LWSHOCq9zPTo4kO1O/986IbIfFqeMzJ0tbVrtsUl9xGi?= =?us-ascii?Q?JhWCmLTO9YddCvK0pB6LJQZZwXYYtH/KM6fTXD2XGczChBz3tWDWhEkPEKLt?= =?us-ascii?Q?m6syOv64NEbKn+9FE+/jFSo5zzI49YY63MOpI/KU25HQNlFEgvPoRGVvw9GQ?= =?us-ascii?Q?ILqGR+vfry8NoYzVATGjIxBeEf82PRZ8/VnFxzgY9bQhBop6d3IuZb613VDv?= =?us-ascii?Q?ForlMBdc7K8JZfMHqD62nOI7lf4+11mc38bIopBCaQKWIUKdZxYOWvGsChMJ?= =?us-ascii?Q?6WRBDSb/cIj/4jQM8j8DmA62Qx5uI41MayDWKVXuSzT0BbbkbeWmyNxoY0zm?= =?us-ascii?Q?90sjKr5aKziFOWxxkgL82ntiUqb2rhmDk91RMGcFvDmcxRYsuZKQva5LbU7N?= =?us-ascii?Q?CjgrwNcn7fVLi6XyMgOng3c/LdG1U8FDpMJCUgU7vV8?= X-Microsoft-Antispam-Message-Info: BPfLGCIXHstrhyX8vwT9A6/1Q0OyoUtYzzKGBWjCS/qZdQXh/EELa4LycK2EyUEFSZjfyXDK7K82PK1pf0i6F2WYtY/sJ2PNDN0JN+sb9wdcMsGs6pkJwue7xzyd8XUJilTcJUzaxwH+8c4z11ENwXpcvlE/8MAgnwSZ+P3y2q8cZmMSKPYc1F3ejl011tob X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4562; 6:+l9HdrjI+GtlLYv+GbuMzBMIoHKSJao261pNe/cdAsxT37ec615hvLd6z3TzoV3SGFMDSl8ny7CDjC4oyqOV9pWvy4rL/7GpcNLPIJs8wH4trqB52mbxxZZGSRWi5Ut7f6xboEgSZfvco+jvZzxFCMaqcrx9lGZt228whDZ/vJliUTD2hnkzNSxMhN32iiOiuLH7s0qOKr4syU6Lr0tGyUvHx11J26WZnVcAfyhr9mBm+398t6GRvtlz2zqqj6++2pSrhVoyO3Z3kq/OMorwRgwUzSfoyT5WDS3K+L4ahZbSdh/CMi5uu5Y4IP1roht3AxzZ5KPkl4wwdQfcr1Aw4kAgLScrZ4+8pjrmYFl+Xzs4qqyI9q2npQqKJwQelKgnIq0HeR/SJPAMsrODqZ2i0/GG7wODL4zDjMpWGZEh9ULrTU/eGRpdzx4dcr6RZBPlfS7gtwxNEbn6dqFHArxxqA==; 5:3C31+iWGZ0qtefi+mv76foYQrL0Totmjd7/ATzbGL6ehdYCa10XrJj/63jm4f04rfTLIZzQhHh6JTt5uwLxA9OugegChakFekoXHaQTf9UV8LfXcupwQ3JyZfVHuMobo72UR1mBpbVI27aiswwoCE2JQP8wKOrV9apQIrg8NZZU=; 24:oDAuXkSsz9GpesxbkO4SKxQbZkibV0gdR8wthzPn7sim/NiZOVw1wR7wWCSR+hP/fPmmZcvb6BA3mqqlQmRz1zdl2XhAGVtzw2FIlYSrmMU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4562; 7:p9ip2M4qG7NrWRqWAPRZONF9NVz4qGcvlwfDXGvADJg5sXbsQvFLubi8QIJ6CsLUOzJyxdtvXYTDJYI0L0B8m7XWwXWXdjtlld4uQK43PVgyLGe9sPqC1ZcQS9iZCRe354fcop5MJuclNd4BQbA4TKKNjJiRG8zV2B1XuF9jXkOU9dDwWArGLpNFcktr/0uDyqHCTCiCxtoGG2CwyRrkb0waXbawQykDmaFoJnb1FOCkgaCAzATs2JE5qXrB/jsI X-MS-Office365-Filtering-Correlation-Id: 489648b1-bf6d-4c60-9c25-08d5b604234d X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2018 23:25:22.8081 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 489648b1-bf6d-4c60-9c25-08d5b604234d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR07MB4562 I was wondering if someone could look at my proposed getimeofday.c implementation for aarch64 and help me figure out what I am doing wrong.  I am trying to use the VDSO interface to speed it up and it looks like that should be supported starting with Linux 2.6.39 (according to sysdeps/unix/sysv/linux/aarch64/init-first.c) but when I include this gettimeofday.c in sysdeps/unix/sysv/linux/aarch64 I get a link failure with undefined references to __GI___gettimeofday. I think something is wrong with my use of the various symbol macros, probably with libc_ifunc_hidden or __hidden_ver1, but I can't seem to figure out what the right incantation is. Steve Ellcey sellcey@cavium.com diff --git a/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c b/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c index e69de29..7631322 100644 --- a/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c +++ b/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c @@ -0,0 +1,66 @@ +/* Copyright (C) 2018 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* Get the current time of day and timezone information, + putting it into *tv and *tz. If tz is null, *tz is not filled. + Returns 0 on success, -1 on errors. */ + +#ifdef SHARED + +# define __gettimeofday __redirect___gettimeofday +# include +# undef __gettimeofday +# include +static int +__gettimeofday_syscall (struct timeval *tv, struct timezone *tz) +{ + /* Should this be INLINE_SYSCALL or INLINE_VSYSCALL? */ + return INLINE_SYSCALL (gettimeofday, 2, tv, tz); +} +/* PREPARE_VERSION will need an __LP64__ ifdef when ILP32 support + goes in. See _libc_vdso_platform_setup in + sysdeps/unix/sysv/linux/aarch64/init-first.c. */ + +# undef INIT_ARCH +# define INIT_ARCH() \ + PREPARE_VERSION (linux_version, "LINUX_2.6.39", 123718537); \ + void *vdso_gettimeofday = \ + _dl_vdso_vsym ("__kernel_gettimeofday", &linux_version); + +libc_ifunc_hidden (__redirect___gettimeofday, __gettimeofday, + vdso_gettimeofday ?: (void *) __gettimeofday_syscall) +# undef libc_hidden_def +# define libc_hidden_def(name) \ + __hidden_ver1 (__gettimeofday_syscall, __GI___gettimeofday, \ + __gettimeofday_syscall); +weak_alias (__gettimeofday, gettimeofday) +libc_hidden_weak (gettimeofday) + +#else + +# include +# include +int +__gettimeofday (struct timeval *tv, struct timezone *tz) +{ + return INLINE_SYSCALL (gettimeofday, 2, tv, tz); +} +libc_hidden_def (__gettimeofday) +weak_alias (__gettimeofday, gettimeofday) +libc_hidden_weak (gettimeofday) +#endif