From patchwork Tue Nov 14 18:59:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Steve Ellcey X-Patchwork-Id: 837986 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-466766-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="q3Q5dxfg"; 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 3ybxdN0tGQz9s83 for ; Wed, 15 Nov 2017 05:59:35 +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:content-transfer-encoding; q=dns; s=default; b=kjF Wkewj6txiUCWhNp7eb85YAxbAYEmOJDUqGnUn3X8SCt3d2gOqPbSzZ+FIg8DMXXU iLNquoY28d8VBXAANhbJEIqqZ3IHdOFLhBitbhdv7ukcn7n1slNyYR+3KJVkYfN6 rGvqWKAWeINiWeGkF0uvdXOpjQKFrsprFFu7O1sE= 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:content-transfer-encoding; s=default; bh=n1pwZXG9E xOSmI4Stx4VkZ5XEMA=; b=q3Q5dxfgc0t4x5nAEQY61UjBW8p04/hzbDGE5ZYb+ PjNo/pjRutrhN3UvrXV5RkWEVNEgf4/BUWBomYWjvq2llB9HGMLjJdgCPkTLhpaA R7pbm7yZPelMZwjVFkIqv5kuNqiZrx0QjGtJKExhLNI8/XpfaDW1GaluRtbg0CJ3 no= Received: (qmail 69061 invoked by alias); 14 Nov 2017 18:59:26 -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 69048 invoked by uid 89); 14 Nov 2017 18:59:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.1 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KB_WAM_FROM_NAME_SINGLEWORD, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=RUNTESTFLAGS, runtestflags X-HELO: NAM03-DM3-obe.outbound.protection.outlook.com Received: from mail-dm3nam03on0086.outbound.protection.outlook.com (HELO NAM03-DM3-obe.outbound.protection.outlook.com) (104.47.41.86) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 14 Nov 2017 18:59:24 +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 CY4PR07MB3544.namprd07.prod.outlook.com (10.171.252.165) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.218.12; Tue, 14 Nov 2017 18:59:21 +0000 Message-ID: <1510685958.4087.4.camel@cavium.com> Subject: [Patch] Don't call linker when creating pre-compiled header just because you saw a linker option From: Steve Ellcey Reply-To: sellcey@cavium.com To: gcc-patches Date: Tue, 14 Nov 2017 10:59:18 -0800 Mime-Version: 1.0 X-ClientProxiedBy: MWHPR04CA0085.namprd04.prod.outlook.com (10.174.173.26) To CY4PR07MB3544.namprd07.prod.outlook.com (10.171.252.165) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f51af729-8ac0-4bc5-0ce0-08d52b91d0f8 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603258); SRVR:CY4PR07MB3544; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3544; 3:yKDKaPk+l5HCeBbsV/vx1VdCJBDnGDlMIOf9qx7JHJo/Fv660GXLZWU/3XZjvc3643Bbj3cvqKVvCNPi7KiJKiqNKDU+kRaHn4dEDad97U1cguOlYMZrkk7ZtW364a08DkIcuZTXUC2YlMqyOJj9jix8io931MN8mBaw0dtYs858FmWXlWOJevF57EXVZUJoHBStEKA1n98kygY5rJbmwNZrwSCzAAkZXj4IQf6zUJ3+LD/G2vZXOyC6Pn3Bv2As; 25:eQ0xK7YMbINYVYJ0/SoQPG+ZqpJ6a3NzidN9koL1mqo5y984B8yvK0kw1icfNRdNJf1LIWrWXhJbDf19mmCMiVeWWUSJjEyKxIsuRc7M14769VfgsL8V08/RzJdl0lYXY5LhDGsI6Y6oXnmdyGsA41FfYdJqR76B73rf6NDa1fhYvxreZ77DSRIhnyp5zFr7HBFWTHMyrULd0qKVt6xyv2laY2BH47uTfcygDfnoZ+gjZArvST9JvDl+JdwwlvBGKGxqQ0NOIJi7BP9+Jf6OxUBVVDgD+Ex8sUA9Bqc61HCU6rPuhXEg3c2gWbCp5CErXJqUqIMYMHwOZw4ne7TcWg==; 31:8qWi80EertR8FPLGZLoVwnPAV0F4lWwAOxYKhUGjmohj9hSZ7oLpaKpDEelF30YwLzPmOrCookNtrExrp8yoBsZruoxIhliciW1sKkjZCPy3/iNnqy4/2A09nBpThJFPAvW19g82GU8VKr3y+zQYQJm0ZXQPdr1Nsfz73C6S30iYjC9Ti9vSB2Sztn6jPxvNUdaIR82B1rHzI/bgv4CIn7cjW0DQv0tmF4bMflxOzO0= X-MS-TrafficTypeDiagnostic: CY4PR07MB3544: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3544; 20:WtYOYKJuesndAga2lq+phKBx+Eu9JL5ZMa119GNkqN5owyiNxYRu+pW6nwwOHWQv7eTiiHLmmmYh+o/5WaV4MEwYuH6VHPgGR5KDAovCRikxYg6Gr8wJuwXj+1vwcGzm+wVtbSsKjfmDkamB+zL+b3a/9GiRHHVvlX+TmNhUzSVk0ZTOnbwFdme0CGrTMhiXxqlsrrpjzJW1hi8KI/qejPvJpd2RWUXpNA3HowTvx2XchCFGnojxMEldgRccP3aenNmd6gDDFnkUgWfquqCUIj1mT09G3GlV1vZbZ+dFkAp9vkSH7yJ4tN9ttcmEw7rSEwTzsJsx31eWDSqo6PleSOyvynkDaC/EW+kWuJcMQrh2aaPK7+xV+bXY5y3Ac1OcDuKB3Ar0lIAedNiY6Kk/S6CdnX2pL5HYNwMXbBz57YyA5ObZEWf9bdGpExzzAwM496SuW5g3zZM/gEvhawL1vf0cw6uKNsqJobiNbKDaymz1pTQELmwx9BtA8I07uuBp; 4:vrxgQtQ1zJdXc9MA1rUvSuPKXE+GDvRhhfR26cU1FvmrleXuCPjEs911Sxtb9YBPUHFsvlmONxfGqkkTMxvZ/F8l3MUpbCngrIssD/WXbnfWOUwVTS6PQuROGOzkhKMnGZ6MDZvx6SQYzRI4qzDL4H5zkNAZhnEbNcn4ZfKjqrikOvfEdd5SFn/uDA3Tw3VdATQeEPMNj+yCkrjfQvuv5Z+ntbSawKUI7dwnAr5T6Omad+aSgEfIFx1hnE8MNGRyE/WqXjR9OpGwdulLUAZZsA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(3231022)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(6041248)(20161123562025)(20161123555025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY4PR07MB3544; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY4PR07MB3544; X-Forefront-PRVS: 04916EA04C X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(346002)(376002)(377424004)(199003)(189002)(36756003)(103116003)(3450700001)(2870700001)(6666003)(81166006)(316002)(8676002)(6486002)(8936002)(81156014)(106356001)(43066004)(101416001)(5660300001)(105586002)(53936002)(47776003)(23676003)(66066001)(478600001)(25786009)(6916009)(2906002)(72206003)(50226002)(69596002)(6116002)(33646002)(50986999)(50466002)(53416004)(6506006)(189998001)(3846002)(6512007)(305945005)(16526018)(68736007)(7736002)(5820100001)(97736004)(4001150100001)(99106002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3544; 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: =?utf-8?q?1=3BCY4PR07MB3544=3B23=3A7Wjx?= =?utf-8?q?Ih6yxEvH4FABUqr+lflJvBWgPJA99oSTIkWGOdSEDXncphnIC6xGaule?= =?utf-8?q?/zJzqF60rD3mzaF1sy8G/S544v0LmhevovpVpD4OM2whuX00KGVJxqp+?= =?utf-8?q?x99Sao+5iKd2erQmz3WfJZDG5neo3SD1rXtjhix/ucRmbHSBKIvr8ppV?= =?utf-8?q?l+0oGraQSARUlfFSB32mHtOLbiravNqct2DB+ab42jELWLEvme6JVDxa?= =?utf-8?q?8y6JwnqFTzkJnuzNvhnBJ/rJqUlOJSXJZVg0oBuTCrD4bZnNu3F6uEHl?= =?utf-8?q?bfkMycBsog7O7QxLjEDV2aH232rWSzu6Yipspogty/ueBtSMPsLnPRv0?= =?utf-8?q?kQuA3fvJyjVT4YwCBdrz/FVY0fh8+qr6gFcg0XA7Qpc8NxP7se+hKSgi?= =?utf-8?q?gLB8RiKLCfJ44YVseziVLl07fBbkQfdbPfUp51b4SPS3JCD37ezMewLs?= =?utf-8?q?/VwIpWyxxcSd2AwI85Wc6qqRhpyalGqnABG3d4lF7vzHDpixcKY/szf5?= =?utf-8?q?/GeythRdFQz+em8Xreaf+3odGCAkPI+52AvsoT5sR6sk4A5tJF/eKpy6?= =?utf-8?q?jqijsdlD9/Ximt42HWBNCNsOeXHdKRVCS7aSlJjsqKy/Fd+UmShx6YIK?= =?utf-8?q?Fc4ygAtw7fSPg+/Y9d9oSC2caTVtPN3aZghvquQYqHbFStCyGGvXkyVK?= =?utf-8?q?yV0bt497lhPHTCMBil7gjCBRX0GONyVT2eDGPbfzCetvCSUnMUDCUSJG?= =?utf-8?q?n71PBwxlQpS3Z8w6hRMZeL0EjB3r+BWGgl4y7WV3VUVg1ysZUTMeySwp?= =?utf-8?q?jhAbXYTa7FEd4zAAfc+W2UYgdu+HLiVU2BxMcKS3L6fgFo8WUIfezpgP?= =?utf-8?q?sTErRxGll8KTbAHhJUhi3gQJJYB7uQE4Io3GZrAHqI9EfYFrsfbrpgER?= =?utf-8?q?Mao/YSOe7ObJF5VSovUmF7Eyrue9ub3E1TRDSPX7JviCV9dMRsXaEWL1?= =?utf-8?q?D9cb7XiEDlCzLS8nQ4vUclpJha9mCMokT0DB7U5FoSrJH+oGp5nyMF2p?= =?utf-8?q?hPStIMnEl67YBF21vDQE7VS9KXwR1Ss50htvm9dgAfNZ3tB0C3Z4B/7N?= =?utf-8?q?wP+Zew7Rp8g6aOBKZlE+7QWJOiV1l0UpwWkjPug9UfpJMXFyZFcK3XPp?= =?utf-8?q?kOua56s0k/97KvG7Pn/Qp8hkRa7SoHCELJeEBIxMh8aX0yYww07sWdLP?= =?utf-8?q?mn+qgQQhFpw+rCc=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3544; 6:ggzjI60XiatZtrVdNuQzashDUAs3HQTIQAFje0TewmoH/NZOeZrCMX5XU53OLSCEFIXpG+GAlYO4qE6+P1x04oHnnipSJIEEZolHQgn4fWVJFmEMq1mpRs+msLdfdN6UQuo3i0LTbVCqHNLUU5pLH7dF3gnKyvZo06WVgQ8bMl3IJn7SNmbABG44pAEoF1O3yb8B96sm8iAM16hi+LXQ7hex4Qsbxht5DYiRwk8/6r97DnaB8mbbTU9668TzvnbivxrkUQH5SU8Y2Bf0C8OGYR/Kfy+AwTjVbC2zQwAM4qf/XeElNKpQIsN25qr76lbsh0WeGidVW233iO7frYfwbtFxLz6BKLcnk8WpHzdCSIM=; 5:n03iYyoPHl1X/HEm993CJ39dgElupJlcAlphlbfUF2LKIi5mObQ6p5yVVyMhoJiHXKvAOd1dYWJaourlRlw0zWY7qfbORhVSqbx7UTq071GVMnos9lO6srSG33dpy+JIdSAITNr1xxxUIARIZrDiuqg2VjDZFeH4ubBxfA4Tz6E=; 24:seoIURp1Ly+T9p3y05Xw2QwrmE7T2m82UzFOJDAbjSeOa6hNyBY9gAIGEaKZy/cbwCpoUzDIdJamQSmm9E798nBckUT9wWNdEgrIrYizPyk=; 7:MsuCeD7p2t1J3WTkVbT/KFzzParmDJxvV/qAIGt1IFtXSRW9bdcMvAwo2nBfJDryd5MatCbqaVG0JvzLpZAfS++sLnsvK+6UR5WctWXeEY1ltdKSCmU/tFHJJUsVje4bFC8y4ELi/sfOZ92k+QJUMmOMmu7aKRZ6256llbD84S5PK0PxpO3Q40VDnDl4FhpN3WEzbzRHcXZ7WCft8EiJKCHQbzbkNxpiuLqe5rlSlTyNA3oAT3JoBzu6PW8gA8tr SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2017 18:59:21.6931 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f51af729-8ac0-4bc5-0ce0-08d52b91d0f8 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3544 I am building GCC (and binutils) with --with-sysroot and I build glibc in that sysroot too.  I want to test GCC using the glibc libraries I just built, but by default GCC uses the dynamic linker that is in /lib and that is loading the "normal" libraries from /lib or /lib64 at runtime and not the ones from my sysroot.  To address this I ran the GCC testsuite with: make check RUNTESTFLAGS="CFLAGS_FOR_TARGET='-Wl,--dynamic-linker=/mylocation/lib/ld-linux-aarch64.so.1 -Wl,-rpath=/mylocation/lib64'" But when I do this, I noticed that a number of pch tests fail.  What I found is that when I run the pch testsuite, it executes: /home/sellcey/tot/obj/gcc/gcc/xgcc -B/home/sellcey/tot/obj/gcc/gcc/ ./common-1.h -fno-diagnostics-show-caret -fdiagnostics-color=never -O0 -g -Wl,--dynamic-linker=/mylocation/lib/ld-linux-aarch64.so.1 -Wl,-rpath=/mylocation/lib64 -o common-1.h.gch And this causes the linker to run and try to create an executable instead of  creating a pre-compiled header.  If I run the same command without the -Wl flags then GCC creates the pre-compiled header that I need for testing. I tracked this down to driver::maybe_run_linker where it sees the linker flags and increments num_linker_inputs, this causes the routine to call the linker.  I would like to have this function ignore linker options and only count linker input files.  This way the linker is only called when there is an actual file to link. I tested this with the GCC testsuite and got no regressions, OK to checkin? 2017-11-14  Steve Ellcey   * gcc.c (driver::maybe_run_linker): Ignore linker options when checking for linker inputs. diff --git a/gcc/gcc.c b/gcc/gcc.c index 43e6d59..61c7561 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -8289,11 +8289,14 @@ driver::maybe_run_linker (const char *argv0) const    int linker_was_run = 0;    int num_linker_inputs;   -  /* Determine if there are any linker input files.  */ +  /* Determine if there are any linker input files, but ignore +     linker options.  If we have options but no input files we +     do not want to call the linker.  */    num_linker_inputs = 0;    for (i = 0; (int) i < n_infiles; i++) -    if (explicit_link_files[i] || outfiles[i] != NULL) -      num_linker_inputs++; +    if ((explicit_link_files[i] || outfiles[i] != NULL) +        && (outfiles[i] == NULL || outfiles[i][0] != '-')) +        num_linker_inputs++;      /* Run ld to link all the compiler output files.  */