From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80070.outbound.protection.outlook.com [40.107.8.70]) by sourceware.org (Postfix) with ESMTPS id 3DE933858C2F for ; Thu, 25 Aug 2022 10:48:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3DE933858C2F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=WbYAoPBshfdm2dobmfMVIWwsqOwTX+IHrEktmD7dBSajtdSxM3xcOe/oXRs54hjZiPxVGl2VGioTsb9bqC99cYz0JJWTBYGIFC+tajrwxYkgL9cCvGegZuxWue1mDICfraEaHkeI+u7nXRn+ZOg11Nja2R/ejjMsK5Dbn5xVxyjd4mc/H6W+/yaxuyAiyZZ4KU3jZ66aETXl4/bzq1IeUGfuSVU3aSC9Qpgpc70zVVCplKZDVP10XKP9hpAwQobE6yiKGQu1KIaJOnf7mUCR53km7dxaNUe8PZDm+HeJSWf912wSZrHGa7XqA1BTJBOIf4WWzkEkLs5u8gFyiGTF4A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XZSz+S/nOip0AupIYcOqSkBIdzuZbwQpHl9kJhrx6DY=; b=dF4iziniYg5p9hFYwbhckzkaXlNE47U5UFNE7eTW69R0A5Ai2IIAwQf0HoTTVsJqtP8GdVBesNC/DrpOe0XO0AP/Z60i9eQqeGFY7Rb7yeiIxEjhuRlp7fiTgSWVMQEYHAJZnrOvva3BkNSTYczDGPnUBWoLB5FEoU2xMtii3f85HAZHrtl4u5CkE/5wRyy0Lvcrf9PyWXIkDTt5Xqblvdc88KXSMfl887qz8xTtzsX9cuB/MS1f81O90gNfHBnweX0MBWP+34oBOcM8h5JrtWgkiaX91+qgrKqwSmlBW4eEYcRY+PWFvVDdn1RPDOO1YAvADH0YkpXOWQoViU1vkA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XZSz+S/nOip0AupIYcOqSkBIdzuZbwQpHl9kJhrx6DY=; b=3BEO9pdlryD6/NLipLPAqEHoRMfXO27MwRNu7O5zRFzUhtt/0icHKiA1jykqFa/Ty00B4it4vlpO0kXl/WMKxDDZVUkrhozdMe+QE7nBN1e+kERnF+OSpiWAelYGcY+iLffkcpzvc0o79uvrvxz/pl52sLZUM2uyctTNXHUmQqw= Received: from DB7PR05CA0058.eurprd05.prod.outlook.com (2603:10a6:10:2e::35) by AS8PR08MB9096.eurprd08.prod.outlook.com (2603:10a6:20b:5c0::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5546.21; Thu, 25 Aug 2022 10:48:11 +0000 Received: from DBAEUR03FT039.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:2e:cafe::1d) by DB7PR05CA0058.outlook.office365.com (2603:10a6:10:2e::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15 via Frontend Transport; Thu, 25 Aug 2022 10:48:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT039.mail.protection.outlook.com (100.127.142.225) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15 via Frontend Transport; Thu, 25 Aug 2022 10:48:11 +0000 Received: ("Tessian outbound 2af316122c7a:v123"); Thu, 25 Aug 2022 10:48:11 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 2df4f1c7722c622b X-CR-MTA-TID: 64aa7808 Received: from dfbf115d5466.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 79DF5A81-99FB-4A8F-BE41-E6E84605E04D.1; Thu, 25 Aug 2022 10:48:05 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id dfbf115d5466.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 25 Aug 2022 10:48:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jf6VX+JjKr36zrckSjbcLsK+wNAUKyLI9aDK27ODrNCLKHBnTin+7UnOdlzG+TQk4i7b1TebCufhDUw40As+WGneCoTW6/SzEkiOugtavaiHGvhvZvgvOHCqbfoR8JUZDqudlrAdzHsZ1dDJuc8d44AlSZW6daG5gF/byXtM17HIOuBeQ5VIlM+N5Oz6z3BF++YEyKlYhxBrK3/VMQ/pXHzizVW9cqv+GeSBH5bJ6BTeZ07tlOZGbqv7Wirr6V2WbuJVZLhhTy+OZecySvu4u3jSTFnH++YEmR9UXb5iL9CwrZo8RXLyA2bzAQILTpF5n+2es2UcNVK6PiZc7JI/TA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XZSz+S/nOip0AupIYcOqSkBIdzuZbwQpHl9kJhrx6DY=; b=ggJtD2UwkBb5cRjTpMCFjJdSZjKAAbZ99b8O9fK2354rHTyIvu8QGJsYbAqs4I3iVeNCNTpvy1PO2FCCxOwTyEIHlvgo09L+zb2mw4XR3NZEJhVbexehS2ReyjQJpEFDPX4wNOfqVCxEG86Pmt/cUuyzpXL2e4BQv736TT0UKVX3Y1sMVbmfhKO8h+HYp48cf+Xs5GAQ66tUKqTevd4Zhdi5icDOMmrKHsqtefvPwFmBnMbvzVEMvUOVHOovcJAb4ShDVtkuLUU7plSC28qAiERuIys2ZlsZEDTRqVWhSEjyacQgiEFIV/jiSZtDhoKsHL+yL8DAweudifya9Zo0Uw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XZSz+S/nOip0AupIYcOqSkBIdzuZbwQpHl9kJhrx6DY=; b=3BEO9pdlryD6/NLipLPAqEHoRMfXO27MwRNu7O5zRFzUhtt/0icHKiA1jykqFa/Ty00B4it4vlpO0kXl/WMKxDDZVUkrhozdMe+QE7nBN1e+kERnF+OSpiWAelYGcY+iLffkcpzvc0o79uvrvxz/pl52sLZUM2uyctTNXHUmQqw= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) by DBBPR08MB4727.eurprd08.prod.outlook.com (2603:10a6:10:f2::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Thu, 25 Aug 2022 10:48:00 +0000 Received: from DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::9435:9f0a:a7ed:d71f]) by DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::9435:9f0a:a7ed:d71f%7]) with mapi id 15.20.5566.015; Thu, 25 Aug 2022 10:47:59 +0000 Date: Thu, 25 Aug 2022 11:47:45 +0100 From: Szabolcs Nagy To: Stefan Liebler Cc: GNU C Library Subject: Re: Questions regarding manipulation of IFUNC selection and tunables like glibc.cpu.hwcap_mask Message-ID: References: <90fa41e3-8d9b-d5c2-916a-3d54fc047e27@linux.ibm.com> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <90fa41e3-8d9b-d5c2-916a-3d54fc047e27@linux.ibm.com> X-ClientProxiedBy: LO4P265CA0201.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:318::10) To DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 20692a3a-55b5-40f8-12d1-08da86874e23 X-MS-TrafficTypeDiagnostic: DBBPR08MB4727:EE_|DBAEUR03FT039:EE_|AS8PR08MB9096:EE_ x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: kNYgHChlafJA0eFQitO3haasnfIK4gILsArIrpYEljhUo6bjIpwBRaRbQorGehQ0XAogBhYQ7w7oguzlxBXi9lgDEtDr5GXIeqfe+zfHlwtua9NYDR/bIybBRy9ZzXTLvcDKsYOlbR/sX84jBOrTy9VF2ZxcTQD5JZqXLCYkDwoGnWkMLEc7Xbd8wmNuoFqRjeTE0V9GZnp3Cck9e1crwAfQMkO6EjThQllQJPlE0JTlyEQEERoatFPasYscWHa+OSv5gvZ+FwPQKxYT81RMYnSWsszDPxCrSpvCA+vkT2m5WzZgvtLGCSwY3nbQyIXxQfRdm8EiSBcCb2sg5ZV/P2tCfz7zUTXsSzNuD/3JMTHN8N2YQCPYZOPJ3gemEGIxPDr149JywDHcmSR6NPUklv5LHZ3T22DMIKEk4lS43JW/mGfarlx5rXCmhx4cWfG6EDU80sAusX7Zx6a83WKvnGyQgM9LFJLbabxVxcMcEuH4exNSMPKZtP9LqxiNSOe90dQF+OtDB1/3FsqKQGQRjVtRtWfiLoKwy/2IFzQ6ZKQ8yaM6eMT3necHZ/yy+KMBUYAZksdZ2JnyLWmCKshXK1F6ahkKCUgY7QR3dpbQTaAmKQj0b9dixAKJHOly5dgRUYcqzWanevFb2D++ZuszddPoEH7r0zfjqEUEirAR3xn+8MZyCW4dxr8bOJfqZeiJti92EDdRBnDt6PkU3UcFdQkB8hLlMJLhOFBmxlSq7YiQgKGXqxKrXBQacpE6RWJEMhhqrsyKMe0rNduCSMwIhvAIPZEi+AoQ9Pfk4QNyY/R64yYHWLvP6IIxL6nmeFFR X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB7179.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(346002)(396003)(366004)(376002)(39860400002)(136003)(6486002)(83380400001)(478600001)(44832011)(5660300002)(966005)(86362001)(2906002)(8936002)(66946007)(36756003)(6666004)(4326008)(66556008)(316002)(8676002)(66476007)(6506007)(26005)(38100700002)(6512007)(6916009)(2616005)(41300700001)(186003)(67856001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB4727 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT039.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 62561265-3bf1-49f0-9646-08da86874707 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: enBAZgcE4RaBSplgybeZwPMzyGW0fmttUxNk/tEzgvLge+VQxBtOhMHwUxfOPCOBdwgVcuJZVCFV+3YMYk3cCT/RyIGdqZuqQmeM1+P1Qmky5yH0lk+SDT2UuOphxOHSqZNA3rpAqhDkCrl9m7RuzyYkO8AAGWrOHMxXGxniSdVT4nvDdXEffw0LHkONyZGOLreYMufemIrMbSoxZhk7M6D/bamTxivTJSY9wDr2x6zskW3G0eKFA/iE3zg6VpXDP/hDErjAmm/uIY8nAPnVuqstxsn7/odB0i15HeGUjsTkJQrFpw/CFliMzhrtyNIBjTdmeewqCy4rrWD2aJzlszBkyVvhIOrUhak+DiqCEQdGNlgXD3BdY3xnK1fym0AuX3imwi+ka8jQ/Mh/juF0t4tWY6jJITBeV2fjiEAKOia6hie7MtLJ+fkQGu5fLWFvCPaR51FF/7FIea4++45xSAT+I6qnjFXf15d6A4A7SV5R5oYuviyZsqei2K7deQVZYUxZj9Q7Z6aBuPTrvm0QdHsmTRfIIeBfuASBLOs6/hnlkhPoTWtaFh3lOwBQzU21zk52UiQrjvpp2YPxzA2PxvrineJnaMVs/SKe59JI506s4shnRnZdGo1VMPSVxUrvsS3zd/e7vFNLt6pAySktajmsKiS/7xRF0/e578m/+++e4Yt8hGGdgSbEttouiJ49thoNZvn2kXkdBMCGf+xH3dnxsLPyeQ0mlVqFnN6HhywdBBSpWK22RGEfNqpoml5iyWRjpG5rCvVx6wvkFCpto+x+bxSU9VAEefD1tAX/hxPFDdh169vUI8UME5jcGojGRW+NXmcelkU1Rp+SrpSZS1q8Gr4/jHHhseCW73z30BA= X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230016)(4636009)(346002)(396003)(39860400002)(136003)(376002)(40470700004)(46966006)(36840700001)(186003)(83380400001)(2616005)(336012)(47076005)(356005)(36860700001)(40460700003)(81166007)(82740400003)(4326008)(2906002)(70586007)(6512007)(316002)(70206006)(82310400005)(44832011)(36756003)(40480700001)(86362001)(478600001)(6862004)(6486002)(26005)(8676002)(966005)(41300700001)(8936002)(6666004)(6506007)(5660300002)(67856001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2022 10:48:11.5818 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 20692a3a-55b5-40f8-12d1-08da86874e23 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT039.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9096 X-Spam-Status: No, score=-6.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,KAM_DMARC_NONE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: The 08/25/2022 11:54, Stefan Liebler via Libc-alpha wrote: > on s390x, the IFUNC'ed functions or other hw-dependent code-paths are > usually selected by either the HWCAPs or the facility-list retrieved via > stfle-instruction. > > Now we need a possibility to manipulate the IFUNC selection. As the > current IFUNC-resolvers always select the functions for the newest > features, we only need a possibility to disable features. > > According to /manual/tunables.texi: > @deftp Tunable glibc.cpu.hwcap_mask > This tunable supersedes the @env{LD_HWCAP_MASK} environment variable and is > identical in features. > > The @code{AT_HWCAP} key in the Auxiliary Vector specifies instruction set > extensions available in the processor at runtime for some architectures. > The > @code{glibc.cpu.hwcap_mask} tunable allows the user to mask out those > capabilities at runtime, thus disabling use of those extensions. > @end deftp iirc LD_HWCAP_MASK was purely for the old hwcap based lib path lookup. > But a small testprogram (see attached tst-ifunc-manipulation.c) shows > that neither setting the environment variable > GLIBC_TUNABLES="glibc.cpu.hwcap_mask=0" nor LD_HWCAP_MASK="0x0 > influences the HWCAPs. > > On s390x, the IFUNC-resolvers get the HWCAPs as argument (the most other > architectures don't have this argument). Other code-paths can get the > HWCAPs via getauxval(AT_HWCAP). In both cases the HWCAPs are loaded from > "GLRO(dl_hwcap)". See: i think hwcap_mask was not for completely hiding hwcaps like that. maybe we need a mechanism for hiding too (can be useful for testing), however since it is in userspace, the kernel and hw will behave as if HWCAP is present which may be observable even if the libc tries to hide it. also if this is useful then we need hwcap2 mask too, and allow using hwcap names like "glibc.cpu.hwcaps" does on x86. > - > https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/s390/dl-irel.h;h=20e4887467d80a1b3f95da00bb98386e3eadfe47;hb=HEAD#l33 > - > https://sourceware.org/git/?p=glibc.git;a=blob;f=misc/getauxval.c;h=714ce5bd62ec33c38356b187e6ec067b72b77afb;hb=HEAD#l32 > > > Is it a bug or the intention that the HWCAP values are not influenced by > glibc.cpu.hwcap_mask tunable? > > If it is a bug, would it be possible to apply the mask after > __tunables_init() like this: > GLRO(dl_hwcap) &= GET_HWCAP_MASK(); > This would affect the IFUNC-resolver, getauxval(AT_HWCAP) and more (e.g. > if lock-elision is available or not) on all architectures. This would > also change the behavior of programs/libraries using getauxval(AT_HWCAP). > > As alternative, we could also introduce a new s390-specific tunable > like: glibc.cpu.s390.hwcap_mask which influences only the s390-IFUNCS / > s390-code-pathes within glibc. The behaviour of programs/libraries using > getauxval(AT_HWCAP) is not changed. > > Independent of the HWCAPs, we need to introduce a new s390-specific > tunable like glibc.cpu.s390.stfle_mask in order to influence the > s390-IFUNCs within glibc which are dependent on the facility-list. > > Are there other hints? > > Thanks in advance, > Stefan > #include > #include > #include > > /* Run with/without environment variables does not influence HWCAPs: > > GLIBC_TUNABLES="" > LD_HWCAP_MASK="" > HWCAPs passed as argument to ifunc-resolver: 0x67ffff > HWCAPs from getauxval (AT_HWCAP): 0x67ffff > > GLIBC_TUNABLES="glibc.cpu.hwcap_mask=0" > LD_HWCAP_MASK="" > HWCAPs passed as argument to ifunc-resolver: 0x67ffff > HWCAPs from getauxval (AT_HWCAP): 0x67ffff > > GLIBC_TUNABLES="" > LD_HWCAP_MASK="0x0" > HWCAPs passed as argument to ifunc-resolver: 0x67ffff > HWCAPs from getauxval (AT_HWCAP): 0x67ffff > */ > > static unsigned long global_hwcaps = 0; > > static int impl(void) > { > printf ("HWCAPs passed as argument to ifunc-resolver: 0x%lx\n", > global_hwcaps); > return 42; > } > static void *resolver(unsigned long hwcap) > { > global_hwcaps = hwcap; > return impl; > } > int ifunc(void) __attribute__((ifunc("resolver"))); > > int > main (void) > { > printf ("GLIBC_TUNABLES=\"%s\"\n", getenv ("GLIBC_TUNABLES") ? : ""); > printf ("LD_HWCAP_MASK=\"%s\"\n", getenv ("LD_HWCAP_MASK") ? : ""); > > ifunc (); > printf ("HWCAPs from getauxval (AT_HWCAP): 0x%lx\n", getauxval (AT_HWCAP)); > > return EXIT_SUCCESS; > }