From patchwork Thu Dec 7 23:56:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Steve Ellcey X-Patchwork-Id: 845909 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-468731-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="RCdC7fkG"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3ytC8j2jJ7z9s74 for ; Fri, 8 Dec 2017 10:57:40 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:subject:from:reply-to:to:date:content-type :mime-version; q=dns; s=default; b=VlhCBdnFO4oXqcYdEa+cKeGyBNJzs 5PriuGmZt6KH2qNH4sgwFTBbo1e+ohoOofhcbRex632NuIWcJ0Ft5Z5V+OEYloxz ZcsM4JJcko5SQx6uDL9sQ5Wi+nqP7HqzG5H58jbarY9hcYEvpKzniPwcK/bDTdod 9TTYebpdEwg95w= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:subject:from:reply-to:to:date:content-type :mime-version; s=default; bh=MAfIMMqwppQPIsuzslmH7RIWyn8=; b=RCd C7fkGM8UsnGx+DkTGjmBAemTk0PM+2xKZ0k+MYt5+aLFKYfcs31R/8UuMP3+fCXi lDQe9oBZSp32on/KZy0MvmgwHvVPIvlbq29NMG1VHCyJ5gjRB4rEwboMusR5l+SY ktGAvo4zFRpaLcC8U9/e6QwDomOHyG+r931EHdG4= Received: (qmail 54246 invoked by alias); 7 Dec 2017 23:57:13 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 54191 invoked by uid 89); 7 Dec 2017 23:57:12 -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, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=s X-HELO: NAM03-CO1-obe.outbound.protection.outlook.com Received: from mail-co1nam03on0072.outbound.protection.outlook.com (HELO NAM03-CO1-obe.outbound.protection.outlook.com) (104.47.40.72) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 07 Dec 2017 23:57:02 +0000 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Steve.Ellcey@cavium.com; Received: from sellcey-dt.caveonetworks.com (50.233.148.156) by SN1PR0701MB2046.namprd07.prod.outlook.com (10.163.132.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.302.9; Thu, 7 Dec 2017 23:56:58 +0000 Message-ID: <1512691015.23303.21.camel@cavium.com> Subject: [Patch][Aarch64] Fix aarch64 libatomic build with older binutils From: Steve Ellcey Reply-To: sellcey@cavium.com To: gcc-patches , "james.greenhalgh" , Szabolcs Nagy , nd Date: Thu, 07 Dec 2017 15:56:55 -0800 Mime-Version: 1.0 X-ClientProxiedBy: MWHPR1301CA0034.namprd13.prod.outlook.com (10.174.164.175) To SN1PR0701MB2046.namprd07.prod.outlook.com (10.163.132.17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ef2be0dd-1b19-4d4b-208f-08d53dce3451 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(49563074); SRVR:SN1PR0701MB2046; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2046; 3:YXb9ZHo+5NcNS0tpdu7BtJ6rrjVaIPQFPcOWTjGEcsNi/+N3TLQiSIWyOL4dCMLg0acyt6UlNV5qF+oC0AKUYCxGFl1x43XgMcb1ig08cpwOBMrk39si+n+G0A40c+6EvQ7HOoj6CPLb/7BNPFqip14+XOh3Q1iK8BIoX8yS/GK1mv57TiRoNObDNuJE5xN54p1uy5webK79BW8zzK255Uy8dXD4ZdRN0YEfL5p/0YeI2PqSjWOM4Fnk/7CGvwec; 25:rN+BE4yu1fgbxL1bPKMSUUPFk4+/zt2+yXEG8sTod0imX7asdTRlHeLMue3QWtGqKuNgg0y7q9k2nsi1UozAMS3dQHy5h+W23IQBYCqB9H20Ed3d3jp7kNOrUG/yYmpmCvN/5vkwF63+Y6ruKv33Z/2E/almhHwLfJAhc0kZ/LXg7OKVJBrZwwlbeoz/lS0dD7yNKWOJIBFJvAuEj+ddTcTQGVFjXf/ZFyQJ3PXEHtam9nqGXEVMbI3BNi6ywwx2dZEqxO2XlbZDZJKUxsPOZ/opHZBtNU5DoGkNnDB23SvI81NvII4fu1qhaYyyXwItBh9Evq1SjSnKTaxdGzx+Iwpd9Ns0yF1tfSNFYulfr2w=; 31:qh8SvA2imALAP0KwV8P2IRFQxahYNUR/+YtuUuoNsRzeCfnyhYFpuupCMvVtItqTUjygye6ng7C5jAQ+rIpS7pK2TDcP74oHPmR3lx0NdGIKOa5dAnl/BtdR4jY9w73Jzsczra2JomoEyskQa0ydC5veyOkJxmG/Xe+eoE7c7Iu+PgmioPmheEBY6Jg5GDE+KXW7UsuO51zfCnmO15A2i/cPB3y14GDY+WV7Qm1f28E= X-MS-TrafficTypeDiagnostic: SN1PR0701MB2046: X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2046; 20:2ZFEMHR3/J9JQoc8arrBVj+FZkSdtCBY7KdZjrVQ6cp7H/F983ukP8QBip8qOvf6WlXYdyylUGukndiQ/e1gsUjuYxAK4qEPQFn8iknAgyidlJ0NPWi+A8ONyjQdgPp8zZckHviuoFgdw62+kxvTUlf+aYmDltVgXJBp48nkqkF7sYMIDbdSpnEGLfUg4FgnKVMyfdjCkS7HiPgKoJJDaUsf2fP7F/xgFpwlwDjz6uxYLZ3dnzxbqr9O7/88K5e8plhqxttKoAMYbm88JqCusYFx99BrWZ0rPS8but7xDUIGY5wHV9GsMsPASTN+SGnWXY13GvkYX7FXRGDfzhcbX49mKqC3mM5llvSiITw3dzlblqWHUxvRQhdBULxVs29oIL1Jp4p30HiyKgObY4tg617aX2pFCY79eWKlN2U3g7EpVr478ZBViLltd1CP3NR0J/zWPNvYVkK2gb37H0s3sPDv1TBK93aQbN1dLkgN9o9Em/xcqj1tEaJhXX51E885; 4:8po0jzGhXPAlYjIsofuArt82jGI6celgI4SgLwXUC7Ssvv3HKjw8/6uPMdvU/3T7+sqIcmuOt+nj6zmrHDY0Foh8eYPlgE2QhxZ5OwlrcIWgdd83s9HmN14gYPOdMcjEXifpYG6Z7nZOyVed9LUv7EyYp6nYPcMUbBjShmo/8y2JoWGJFdqsHLAF5szVLfmfav7Ux8cAuBnnUBRJDWRZCoBIYG8llRdSCrSKuifYvI5coc2hyvvb4U+Jo7UlraU1gFkHrFh+hgkmEz5KyVKSMQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(102415395)(6040450)(2401047)(5005006)(8121501046)(3002001)(3231022)(10201501046)(93006095)(93001095)(6041248)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(20161123555025)(6072148)(201708071742011); SRVR:SN1PR0701MB2046; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:SN1PR0701MB2046; X-Forefront-PRVS: 05143A8241 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(376002)(366004)(199004)(189003)(377424004)(52116002)(478600001)(69596002)(4610100001)(97736004)(72206003)(33646002)(3450700001)(84326002)(6506006)(68736007)(36756003)(66066001)(6486002)(33964004)(5000100001)(2906002)(5890100001)(106356001)(3846002)(50226002)(2476003)(53416004)(6116002)(6666003)(43066004)(8936002)(16526018)(8676002)(25786009)(512874002)(81156014)(316002)(81166006)(6512007)(7736002)(305945005)(5660300001)(110136005)(53936002)(568964002)(16586007)(103116003)(105586002)(99106002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR0701MB2046; H:sellcey-dt.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2046; 23:ko+0pA14hGM+Qe7BecNHRTDr69SQaFCegtxzim8+ODI1IJQNIDrJvt7+eGGqoarp2thGTCOfnkUuGNE9RHwOE6xVNgCt9vKO41IUu5Zd8dUJu6OcbvGG53TCNl5OzH6P6usvpj8M51XojME2YH0vU99rVixJAeTlO/QnO3vnM9sLE1cacBVfIx+o2njTSbEA2iqqS28mAOHPQsVpeiBS+rALYbaZLP9nylspu5dRymwmWk+GOPyyK8cq4d2vkMYudRFNmHKdCXDxxsJuo4ZSA8/29LXxNKTDSzpVg0fh5a4YGuXUXvp1cHOG/nyYTRPyV2qxUURdkx64uQeT0+SPZ2taeBXEvq/7tpoH4G5Q75+Ccqb3TtyupuaXxiqwF5uFUWrEaAMpexmZ6EZumpe4A4DHHoRxsN1fhAZxt09B+xmQIfdPshT5FCu/BAVauRqEFmSuuk+Lu4zrpHFPbWczEccnOzt2vEq+lTkk2k6mnmjUrgPrrg/AIyshCWe9fN+K4uI9KAbQ1DqlMyPyX2NTr7WaOHny2pgWgO1JecdUll7CgayV0UcJkHEaejfcKYm7DzXNkiuvCsUjv3Cuz9VV6IvwVvKB23FIlDzO9QIGZZ6b1YJTsADdWjaYrSA4jyeYNTCX9IHWRCg7RlUcekuJESjs6DhHgwN3eCITXM+9e8+MJHeCfKx1QCUkgYTI3d9gpVi0juL2krJR8sxeSiBdFLlP2GpFRncYAJYdljIY4+SknmlsEC4/Z2Bi/2U3oeO7jjhyKG52aeMhnIZ1HQl0qITZoNldk9YHAJAIgTNmPBko44lH8EamLzg8+LMY6XTL617GVGvqyI5K2gLHkwaOHe9wc3c2obX9e4eKW65pgvPgKnQ+wvN/XvxVou3ngw57jYDil5i72zMrkhTvqRNBFOvRmfBr3Jt7ProH03qNXiUNLDCcAGMa+A8TSYKZyy/TFhw4Z+lbul6eEdOQKDNk6DF5klyUbWUHan8Obyz8I/gGzGstcpqixpNmuFJo1KbDbFjjefRrzzQNj9Hoda18Im6Y+H0tleNOruX6BY/jtFdfbPYGeb8UgcKK/pGokeb/BB+HsszF4RR7qW9vCuL9dwj5BeBbrxgptEL5aBxhB98/f7EE8X5mzR06EJAtyDr/l3aUAsCDkhlqCG8au7Co4SCGS5Of5h12xkvro8CF+P566BRIzkbwrIOvYIxh9l1m X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2046; 6:CbHTko3M1n4iD1EcPj28A0S9jCkYAhaTYdCr40j4Ny3CJBoq89cRXElcP7tw3iSt4hOIk+/stpONqJooPdScc+F+Vxgy0Qb1ccyu4Pk8Yh1TTyVFi06N5JBl+kWZJhBjq3JPXbpLzJPHEd0urDky/qhEIv4Ksrr+V4DePJE98F++StlpI5sSL7tewK/pBNd3pL0spDtqXOLsgGGf1ExmpccSuW+I+d2o9Kx4mnOYOAmKp1UTEM9GlWlGpX92n1FVqLxY8MQ7xzWrCFegZhG+7pEvxOOnGPu+5fx7isent4RfehimC4JbpHrvYHqg3QC16kK0EdmPwEiwdwKdhLmSq1zRy5osEYpAbKPHTxFtKqQ=; 5:TmDBE9+kXmtUFOri8cgl3CJKwfFN0s76sxIlHBP5Aveeiq01U/6V6EcXoE13IVAlsuOCSiBrdD9XdFTXvQDvUQcleGn+jf/okgq7SB5fEuE4ACS4tlJh6j6GD4aXXZLKAaeYYXq19b41SmPS8kvelo/o1BbRJMUfQyRz0G0XwBI=; 24:NOQyZSsRBRME6tjIzlZuFc60cQ3GocF4eXb0LeSSK1M+XYCCTCqs4fwDuCxi0FCCIlFFRINCoBbwHoCBp/z08LCmY8ayELpAMmSSE8dkH7U=; 7:Kg2+XpFIN4sOA9i/T6qqQqiUpjt1wMVftcxI1XfCpz/I7SO5PdOwrA3N1754kRwHipSrswNUY4xXWkOa1FJNFLPHzP78O/LdyF9B8XU7IZy6u0x2X2Ag8CVY1xee4PGVZfx/GukRadMMGUbOGf1/aONjHLETDQTby1or26jm45MdGHJ5CNWb62Hrf6/OQoU8/R12qUblYyQPk95Mu6z2Sa3ucB5q/6F8k6CFeZ12XZExYkAN8e/6J2qaOYFwKg7l SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2017 23:56:58.8551 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ef2be0dd-1b19-4d4b-208f-08d53dce3451 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR0701MB2046 James, Here is a patch that will turn off the use of IFUNC and the LSE instructions in libatomic if the compiler/assembler toolchain do not understand the '-march=armv8-a+lse' option (changed from -march=armv8.1-a).  Rather than check the assembler directly, I used the existing ACX_PROG_CC_WARNING_OPTS macro to test this.  This will cause the GCC being built to send the option in question to the assembler and if the assembler complains that is enough to cause us to not set enable_aarch64_lse, and thus not set try_ifunc. Steve Ellcey sellcey@cavium.com 2017-12-07  Steve Ellcey   * Makefile.am (IFUNC_OPTIONS): Change aarch64 option from -march=armv8.1-a to -march=armv8-a+lse. * configure.ac (*aarch64*): Check to see if compiler understands -march=armv8-a+lse option. * configure.tgt (*aarch64*): Only set try_ifunc if compiler understands -march=armv8-a+lse option. * Makefile.in: Regenerate. * configure: Regenerate. * aclocal.m4: Regenerate. diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am index ec36c8e..21fd1be 100644 --- a/libatomic/Makefile.am +++ b/libatomic/Makefile.am @@ -123,7 +123,7 @@ libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix _$(s)_.lo,$(SIZEOBJS))) ## On a target-specific basis, include alternates to be selected by IFUNC. if HAVE_IFUNC if ARCH_AARCH64_LINUX -IFUNC_OPTIONS = -march=armv8.1-a +IFUNC_OPTIONS = -march=armv8-a+lse libatomic_la_LIBADD += $(foreach s,$(SIZES),$(addsuffix _$(s)_1_.lo,$(SIZEOBJS))) endif if ARCH_ARM_LINUX diff --git a/libatomic/configure.ac b/libatomic/configure.ac index 6b11f21..cee0198 100644 --- a/libatomic/configure.ac +++ b/libatomic/configure.ac @@ -157,6 +157,12 @@ AC_MSG_CHECKING([for thread model used by GCC]) target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` AC_MSG_RESULT([$target_thread_file]) +case "$target" in + *aarch64*) + ACX_PROG_CC_WARNING_OPTS([-march=armv8-a+lse],[enable_aarch64_lse]) + ;; +esac + # Get target configury. . ${srcdir}/configure.tgt if test -n "$UNSUPPORTED"; then diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt index 388ae95..2f3bcc9 100644 --- a/libatomic/configure.tgt +++ b/libatomic/configure.tgt @@ -44,7 +44,9 @@ case "${target_cpu}" in ARCH=aarch64 case "${target}" in aarch64*-*-linux*) - try_ifunc=yes + if test -n "$enable_aarch64_lse"; then + try_ifunc=yes + fi ;; esac ;;