From patchwork Fri Jun 7 09:46:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Evgeny Karpov X-Patchwork-Id: 1944993 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=microsoft.com header.i=@microsoft.com header.a=rsa-sha256 header.s=selector2 header.b=cRctaxDe; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Vwbvw45Bcz20Q5 for ; Fri, 7 Jun 2024 19:47:24 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BE22539B7DE5 for ; Fri, 7 Jun 2024 09:47:22 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on20720.outbound.protection.outlook.com [IPv6:2a01:111:f403:260f::720]) by sourceware.org (Postfix) with ESMTPS id 77D8D39B7DD5 for ; Fri, 7 Jun 2024 09:46:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 77D8D39B7DD5 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=microsoft.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=microsoft.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 77D8D39B7DD5 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:260f::720 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717753620; cv=pass; b=wAbv1rPNXNpnlaG+6+2kAU9v8ogXY0rDgHo82IxnBbP6JZOoBXr9SN/wt05tZjAstA/1BQZ04UmmvCXtWcQojz8Qo9CWkAMJqT0PGY6PP1VQ8wOw8SoCDTKrLNL6EFSJSrD+DZQbX7GFEX+XOqh7e1LlwZfksum2JRdU8vWz8Mc= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717753620; c=relaxed/simple; bh=AvrRwfgKs2WZ1WR2Vqx+Jh8fSpFbLmeJUhTlxL/JFUA=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=i6DdYg/chluL1PFrFoPaVlE1ovuspMTdHLToRN2laDq8cQsKtgv60iYNi2Mw7YUYoYpLuE99w+Bg4CvxY3HyY/kuOZpCcZPYc5pWSnCQyiUCQA6v4nS/BIpTl7qHNOLUXzI86dfmjT4fashljleAAP5sB3YzyZGDcNgEn/p85kE= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lw6/2Y+ldIeeOo6CiR9gGPIgEuyOFaLXGTLZMF92qyfSzoP9N0gbxuYHfH+CHXL2+2MBkA1XMBWAQQ6Q+HiUoOOWW7bI690Z46nQbbpoZYtiqiHng5r6xoh5lE0rB992hP+bL5U9tD0Mt7hX35eeJ2vBigDQBvXWSoy1EoS+DFwougnzgB5JRcAq2TYzlem02OyNldh0IdJPwNiwT1KMEO8UHzCNuFe0BhG6G3xojFcjG5dBpnryRhVS61z2Qlui7ZyoWHLkpRMJ/Q1OfZZxWfeW4oy6dTlwpIpP7GxrnMvPHrzq2guvtJOFceL62bzS3qgMZAUTDPXbiH4ArQkA7Q== 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=HHltdkT+3G2w/6gScNyDNGtsdkccJNbzCqivQD23QbY=; b=jlUnssCi8dfaKxRcREhhAlwUc397WZRmzrajpxmmQBj2oET4W1Kc4lCnRhUvkHjpZujj/KoGBR0bPZ/FthEQzRuBPU+Utttk7FeE69hwYjKMZ5wbnE6ftLLWRA80sA35GrdIJrN1c6KQaok2wV8k/jUboGSEw3wQbuFYWk/8Z/sBO0gsR9uNX6FZEqlFi1FqcPcrfCqpEanZ1cZD6KFs8ltjHnVO9hqFU4A9teURDyHoREhcl6wnqHUHzvHnIYZLZDGdqigNOmmv5GOOFa875Az2EEa7fIDVjfsifs/8cRKJ70pLnDcZ8uJlMBov2/z+MTxM7aNlKoLDf9wBWLIJNw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HHltdkT+3G2w/6gScNyDNGtsdkccJNbzCqivQD23QbY=; b=cRctaxDewLzBvzTCAigojexcyTehSLeeaH6dcxG7tjkOnxIkRA7wzvy7nZHopvdMIbqLGVcpf139Y+3C30V/kww5PJPLqFSEbAUGI51NZ4XvQ7AJcLLCwN2Yfi/E6+sq2aDoXmEwRJ0K8xbfW0b//VgVWLk05TnNkZBZDqOUw/8= Received: from DBBPR83MB0613.EURPRD83.prod.outlook.com (2603:10a6:10:533::21) by AS4PR83MB0521.EURPRD83.prod.outlook.com (2603:10a6:20b:4cf::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.10; Fri, 7 Jun 2024 09:46:55 +0000 Received: from DBBPR83MB0613.EURPRD83.prod.outlook.com ([fe80::399d:9bfc:1209:af10]) by DBBPR83MB0613.EURPRD83.prod.outlook.com ([fe80::399d:9bfc:1209:af10%7]) with mapi id 15.20.7677.009; Fri, 7 Jun 2024 09:46:55 +0000 From: Evgeny Karpov To: Evgeny Karpov , "gcc-patches@gcc.gnu.org" CC: "richard.sandiford@arm.com" , "Richard Earnshaw (lists)" , Radek Barton , Maxim Kuvyrkov , "ubizjak@gmail.com" , "10walls@gmail.com" <10walls@gmail.com> Subject: [PATCH v2 1/6] Move mingw_* declarations to the mingw folder Thread-Topic: [PATCH v2 1/6] Move mingw_* declarations to the mingw folder Thread-Index: AQHauL+hfa9qJKNMEESFv4swCmOOLw== Date: Fri, 7 Jun 2024 09:46:55 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=fc71c0da-0b04-4a90-84d3-756fb686144b; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2024-06-07T09:39:03Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DBBPR83MB0613:EE_|AS4PR83MB0521:EE_ x-ms-office365-filtering-correlation-id: 9951d03e-66b2-4728-68af-08dc86d6c41a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|1800799015|366007|38070700009; x-microsoft-antispam-message-info: o8CFG6pcE+tkizQL30cfAxMiNsEHHB9HPBz28lEtgGTSw1p9MoL57Bc6wl5IyIbLTZqe5w7Z+9XQIxhHrhPdFbWviyYf66J2TVayD8ze0O8ETtaQ1HHgp2DG/cUMxPUcAxFMMFm6GYCTGbcOEeHOAhDkbaFYiSHkoGP3Sb6WKkFf4OU2OGpqtr1trIaILkkAMnSQA5f4RTzxr2tgnDM2A2benqe0UGuiXXkxsMzm09kaxnU/mFxlyvvX+hChyPh+Cblt82hAnIi+JJKW8thBtTtLsRD1XrHm7KxDgfgQeZpP+NVx85jRTFgZC2tVfCkoEtXoIncWiv03mTqDsBntCw1JSmQuOj26tNvmuJVtNXvN81ks9tEEV60clu7QkXxdKRlnM2C295T7OCnrT0VACPv7kHDh5fR1oP7t+Fj7ydgGPGIKhoqnepugXzu8ECVofpjp8/lyP9bKDnq8h+2KtNFg8BlN2s1R2E7l9H+Z9iCly05qEnl+MmCskRK1mDqI5kGOzdmVXy2B0s2UqtWlihFsi5I/nOvsSNVaq1dmq/IR4GO1ca3KpgoI849sI2eD0peAME7eeF8EUetdoeEMHQimePUJWsGap2Gt7pdB0x9qYXWMhkjqi2s9A7npZ4Jjx9KV7Qq8GvTXalgSkgjexNDBvE6Tv37jgr2A3ifdAfCLwABjAGYibHYSTI46F2cDO1UOjx+NwPk+Z4pxv45+nrl99Ng8skivSRifMTdJmadqa0IQc1CTz9hozw5/JPeqwFjY15X4Yw8JPjSXUzSFL2qrBVKgYxHGpWhPkTeOS9nIBchtz+/JmeiOyD1t7UYZM1gQmdQBMFkzC3VtQDiSsANYjO7isOFNa/bo9LPYO1DsUC2Cz4gY1DzTHMSbs6LQ7lg1fxDR4q09NvsCGYJBk7CUb8Lz7Lv8h/fq9+a1HxH7xHrokrXU2KJU+XneTQyeG8JXTH4vb5EI1AmXyWUoaZ70eBXC8oS7BLP31QqHzE43+rHaoms4wbxR2F3UKU20bN7kBn0p46d71TIZxcmR3cEUYDOMXvEQO5Busu+PvTW6pKNqcpW6VWwO+zTNTdKk1HgpFL19Oee036beEQZY4NDJANmYWCnt4k3zx54Wf5rtY0nUo0mFH8D/h2uMhV4t4fuVHbitBYLtpWds4/VoPC5DTrEy6//CshT+Vsl33PhjPU/gacjzuQyLB0j6I6NK93FF2HxoN/eJwbNIbJu/W1XJ24gVj/8fgeozEaU7PJZHzb3J6BLKvJ11mQb0fAKqzkFYxQsz6L3bVWU18uFjR/40xBdGrovrV6PIxHTc2byfvrO7/sfXsT+Zys3Gh5UkVresCryPIgNtw4KkLMXj1fM6R7Gp9gHyONRq5+izMm4= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBBPR83MB0613.EURPRD83.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(376005)(1800799015)(366007)(38070700009); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: 01bsQEFAPUp4bWc7r/qyPBhCtgRszbb3TQy4izYk/YUM0Wl7yDszgJkosPvuPJFKzHTxm14Z/cxYO+RltsU/54mzqWqHdVQgWrKZH/y5Jv1Hzg4EVmSnhhfITWC1z7sOtZjYcYsynlYCw/hssx386Lo4iC08Kg2HSSw6vvwu2JMzl8OTxiRRK661uvA6L5jq6Lp7jd9ToeTyByGL3SRORxPv/qA5RWMPWYOrxgh9C34OM5+jYNXhcWzq0lTapufxa+0jkHhAOhlB8Y4hxZBv6xPDn+GrYskxbTQYUuScT0M/P2Ah5WMmvZaqXlZEBMnl4zANsDbU0JPj8QO+0V2Uh8Ry+7DcV2VZkGOucOyHRJeT+VebXKFNujueNxbgvwXjO5a8iVtqHKexTOnt4HEcna1zmASKrZMDPRy1DG+NYpsvYZ4iJ+0LRRZX7njr+v0bICv7VgczGFJUcSEa2610S/+srkwtB40jxa3PCX7qKtYVT5Co0OYfBfULPOZMBVZrcclvew51xI92zIxWR5Ln+vmA7tbvx+abxPeZnMj/WPqlHXAcq+S24cEXYW0UJYABPcfInrsNKTGwxzBT1mKoONpcx30K6lj5fm++TG4TqD/4G1ewSAk6RwvXts/XdZutmzNdwYQ9ORk5gCQaz6M3jyvh4SyYVHy5HgI6t7l+iivf4GayXjv7xuB7uVAONwDw5cD7XWG0ldLwMFfSDXMqfwKknRjnT8skBrFMdCaTGBHLd+HfJT6f5bGjUAJ80hTXx8xXBBTeMGgaGMAJrs20BE+hNbnzRpsK/Lg4uRiXMpOAxj50VDJlSeyJq+7ivwSHDkWBrkxlY5lo2LUqVSGWgo2/4Oe8G4egfmV4DivX6yAvgTY6KoD5x1R84jyrBpisSPrhK7R1t1A55mF56rLJHh856H5Uy/trN3lfA3vXfar0WIaw2GE9e7M57OEEgWvrWlGmLCTUZnFoofT2KwTO5JecRawJKqLtipyNI45Qc9Mtbasq45WWqihPuPXnuN5CuFQ+PLz7j3l7VsGKYbouZTNnmZnW7GX+jghMxwbpkoWqY3f7I/LZsS75olxauDKWtotSa42E63S0rjSsc8/je7Rn/qrKPZO7KaIPbcJ43lFXVvaJkx+5wwWpkDp/2tx1dfD8gOlZjV17H4cZkW1IZhYJm7Hokp5COiLZEGI6pRBySMrA+LCmLR7NF8AlrcyHjIJKVfVrIJ9jIuIVSYPWTdDCfET34tWCnQYO9I74QsSGx30l9/KGGCvCJcRDB0WjFn0NDzjo3ik+4DwITmtgCoZp1P/KjUnIfjXFROQ5Y+5CPan1+OxggtRZtKGIgmZqUdjNRy75OmHE7csQ6glYBDFs5u8Vri3r8OfwnhO8BBeYFzsAEB69Lebo5P30ClZXJUUTPy4NSH444pnTfq5v4tlJFLJHtqf2njHhz+JJFpj4Cmo1AS835qGHAXNr4+knEHh0NrXbkcAVV7n2puPUIzpc0jIbDADhsIGnpaOvp4olnGGd4wVEioWl82z4qJTmJWBAVsgcwv+KJhEllnoGEyQo7AN9gk/cwU8oJVbrVnmOS/RqkCYWHjhb6wF5Rztnfr7DXptaqPt832os6RR9slVFJFUwdaiQjvkezZ9m8msKNYkj/OY329tTXnx+a9nG MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DBBPR83MB0613.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9951d03e-66b2-4728-68af-08dc86d6c41a X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2024 09:46:55.0395 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: hZB2TlEy3bIPZjb2A3ojQ9ymd+l2IMsVwlACxzXbWGT3EmyT33cfHMEXpd0iGEjeI5dFYnagC2KBNF8gO7kROw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR83MB0521 X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_SHORT, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org This patch refactors recent changes to move mingw-related functionality to the mingw folder. More renamings to the mingw_ prefix will be done in follow-up commits. This is the first commit in the second patch series to add DLL import/export implementation to AArch64. Coauthors: Zac Walker , Mark Harmstone and Ron Riddle Refactored, prepared, and validated by Radek Barton and Evgeny Karpov gcc/ChangeLog: * config.gcc: Move mingw_* declations to mingw. * config/aarch64/aarch64-protos.h (mingw_pe_maybe_record_exported_symbol): Likewise. (mingw_pe_section_type_flags): Likewise. (mingw_pe_unique_section): Likewise. (mingw_pe_encode_section_info): Likewise. * config/aarch64/cygming.h (mingw_pe_asm_named_section): Likewise. (mingw_pe_declare_function_type): Likewise. * config/i386/i386-protos.h (mingw_pe_unique_section): Likewise. (mingw_pe_declare_function_type): Likewise. (mingw_pe_maybe_record_exported_symbol): Likewise. (mingw_pe_encode_section_info): Likewise. (mingw_pe_section_type_flags): Likewise. (mingw_pe_asm_named_section): Likewise. * config/mingw/winnt.h: New file. --- gcc/config.gcc | 4 ++++ gcc/config/aarch64/aarch64-protos.h | 5 ----- gcc/config/aarch64/cygming.h | 4 ---- gcc/config/i386/i386-protos.h | 6 ------ gcc/config/mingw/winnt.h | 33 +++++++++++++++++++++++++++++ 5 files changed, 37 insertions(+), 15 deletions(-) create mode 100644 gcc/config/mingw/winnt.h diff --git a/gcc/config.gcc b/gcc/config.gcc index e500ba63e32..553a310f4bd 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -1275,6 +1275,7 @@ aarch64-*-mingw*) tm_file="${tm_file} aarch64/cygming.h" tm_file="${tm_file} mingw/mingw32.h" tm_file="${tm_file} mingw/mingw-stdint.h" + tm_file="${tm_file} mingw/winnt.h" tmake_file="${tmake_file} aarch64/t-aarch64" target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc" extra_options="${extra_options} mingw/cygming.opt mingw/mingw.opt" @@ -2175,6 +2176,7 @@ i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*) ;; i[34567]86-*-cygwin*) tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h" + tm_file="${tm_file} mingw/winnt.h" xm_file=i386/xm-cygwin.h tmake_file="${tmake_file} mingw/t-cygming t-slibgcc" target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc" @@ -2193,6 +2195,7 @@ i[34567]86-*-cygwin*) x86_64-*-cygwin*) need_64bit_isa=yes tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-w64.h i386/cygwin-stdint.h" + tm_file="${tm_file} mingw/winnt.h" xm_file=i386/xm-cygwin.h tmake_file="${tmake_file} mingw/t-cygming t-slibgcc" target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc" @@ -2262,6 +2265,7 @@ i[34567]86-*-mingw* | x86_64-*-mingw*) ;; esac tm_file="${tm_file} mingw/mingw-stdint.h" + tm_file="${tm_file} mingw/winnt.h" tmake_file="${tmake_file} t-winnt mingw/t-cygming t-slibgcc" case ${target} in x86_64-w64-*) diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index 1d3f94c813e..42639e9efcf 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -1110,11 +1110,6 @@ extern void aarch64_output_patchable_area (unsigned int, bool); extern void aarch64_adjust_reg_alloc_order (); -extern void mingw_pe_maybe_record_exported_symbol (tree, const char *, int); -extern unsigned int mingw_pe_section_type_flags (tree, const char *, int); -extern void mingw_pe_unique_section (tree, int); -extern void mingw_pe_encode_section_info (tree, rtx, int); - bool aarch64_optimize_mode_switching (aarch64_mode_entity); void aarch64_restore_za (rtx); diff --git a/gcc/config/aarch64/cygming.h b/gcc/config/aarch64/cygming.h index 2e7b01feb76..0d048879311 100644 --- a/gcc/config/aarch64/cygming.h +++ b/gcc/config/aarch64/cygming.h @@ -51,10 +51,6 @@ still needed for compilation. */ #include #endif -extern void mingw_pe_asm_named_section (const char *, unsigned int, tree); -extern void mingw_pe_declare_function_type (FILE *file, const char *name, - int pub); - #define TARGET_ASM_NAMED_SECTION mingw_pe_asm_named_section /* Select attributes for named sections. */ diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h index aa50b897b2b..65ef3d77c3a 100644 --- a/gcc/config/i386/i386-protos.h +++ b/gcc/config/i386/i386-protos.h @@ -301,16 +301,10 @@ extern void ix86_target_macros (void); extern void ix86_register_pragmas (void); /* In winnt.cc */ -extern void mingw_pe_unique_section (tree, int); -extern void mingw_pe_declare_function_type (FILE *, const char *, int); extern void i386_pe_record_external_function (tree, const char *); -extern void mingw_pe_maybe_record_exported_symbol (tree, const char *, int); -extern void mingw_pe_encode_section_info (tree, rtx, int); extern bool i386_pe_binds_local_p (const_tree); extern const char *i386_pe_strip_name_encoding_full (const char *); extern bool i386_pe_valid_dllimport_attribute_p (const_tree); -extern unsigned int mingw_pe_section_type_flags (tree, const char *, int); -extern void mingw_pe_asm_named_section (const char *, unsigned int, tree); extern void i386_pe_asm_output_aligned_decl_common (FILE *, tree, const char *, HOST_WIDE_INT, diff --git a/gcc/config/mingw/winnt.h b/gcc/config/mingw/winnt.h new file mode 100644 index 00000000000..d6202816e8f --- /dev/null +++ b/gcc/config/mingw/winnt.h @@ -0,0 +1,33 @@ +/* Subroutines for targets on Windows. +Copyright (C) 2024 Free Software Foundation, Inc. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC 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 General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +http://www.gnu.org/licenses/. */ + +#ifndef GCC_MINGW_WINNT_H +#define GCC_MINGW_WINNT_H + +#ifndef USED_FOR_TARGET + +extern void mingw_pe_asm_named_section (const char *, unsigned int, tree); +extern void mingw_pe_declare_function_type (FILE *file, const char *name, + int pub); +extern void mingw_pe_encode_section_info (tree, rtx, int); +extern void mingw_pe_maybe_record_exported_symbol (tree, const char *, int); +extern unsigned int mingw_pe_section_type_flags (tree, const char *, int); +extern void mingw_pe_unique_section (tree, int); + +#endif /* not USED_FOR_TARGET. */ + +#endif /* GCC_MINGW_WINNT_H. */ From patchwork Fri Jun 7 09:48:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Evgeny Karpov X-Patchwork-Id: 1944997 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=microsoft.com header.i=@microsoft.com header.a=rsa-sha256 header.s=selector2 header.b=MVRe3dcm; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Vwby16Fv4z20Q5 for ; Fri, 7 Jun 2024 19:49:13 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0E4183A15877 for ; Fri, 7 Jun 2024 09:49:12 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2128.outbound.protection.outlook.com [40.107.21.128]) by sourceware.org (Postfix) with ESMTPS id 031B539CEBFC for ; Fri, 7 Jun 2024 09:48:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 031B539CEBFC Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=microsoft.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=microsoft.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 031B539CEBFC Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.21.128 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717753730; cv=pass; b=KpUpDk4r6oQyDyZzizbnJ0PwLKEeULeHtPiWX9PslGcvmQKuPRqfChIQSUPnKiEtWV0gZOpKSJV23X8+qHcv4idDo4e3x3p89szFR/bXh/a1MFDT3COahnUy0zGZ+ywxqx3sMl8S1iXK2GGKp62d/tOg3+gw1Q7hBpCyDOGQ894= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717753730; c=relaxed/simple; bh=zzfGHHkNPNq5hCMReWGcB0IQlkTRAwbnmAzpUVKVM2Q=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=gwvHgtYRS35WZuidHnBWy8UJR26PaXwoThVlhJJBmF7+Jx0hkBOb4A1arAFFLwbAyYcWQXecqhWzyl07urieYE7ibUHHdPIInMsUrF+BcLmcSlN1Fq5T6p52YOqIMGUc9GOqvO1IQvKJZZ2V3vvqhWL+12vRRGPZshofG3tw9mk= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Tz9BSrJYYQNvSHdZihVWBgCfqvVzdkIgNQqJykCC1BlsY4p3qHE6zpwzgc3HVXXIpzY/5Whzg83tAcDfTYj/n8DSGXLoJPHNncmLi341pyOXuHADYMR0K+EsXwyd2y+YGviWEu2tmTIBA/8ZqkMSDasyInbhk9/VxRsVN5GfePU6oXAO8xSineMcITiCzY3pXbm0Vw0o9I+sPv5miOKaRkmDG9qaPDNrWUYq6i6gBQ9AFy+/7HtAeNYT+nFclzIfiP21JfkZ8FN/AKggleJkfYX7cle5I8y/+EhAMJruiOeAWZjoLWc/3PfgUwr7ZSu5rTtc6272+ZktOjm9cz7a/A== 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=pVGVkp2lRLbzT/Wa3SRLv9/UySaIXWZrDmGlmYZf7NA=; b=g1e04CaU2T/p9vwe4mRCQhSIDpskkt29WuctBWPUsZY6rHu+KSEswqImgF8kk+EWT/Mgyj/TJCJVK6FDAGDfIhXA6ZCTii24hIovfCiF3vq+RZxCr4Y6EuAiHF5uSIBTTTxuPOSANiWDtlsGJon30lXjxYJbBAPK0a9OQgqCwqEjRpgBGwavUd865MBlCP3HrBRwmCckMJj4two8xEu7hH8458ju+bT0NdB+wzYIIsDoxXYSM4/0BY8jEHC9Lidht0eU3sAZbfzaMwf7swsvlSvvx4VnprhTfH4UgMOsY0hy2KzIG9zpagId1tPqqrVw/JXNZbXGyes6XHhbVO5gmw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pVGVkp2lRLbzT/Wa3SRLv9/UySaIXWZrDmGlmYZf7NA=; b=MVRe3dcmyMqSEuJyPur/G1hU9GkL36aVR1JdvJfvA8fgGwgGm5vG1rbcSLBCtEUn+mo4Ikhx9vzhe8v6MIrCPzMPj3rDRDZ9mJdY+NtOywhy0g/3e0FvYaenbL2LZUPKghJ7UVDi7WlQe+eTg3peNPVuCV33KcQKTuyaecbqfuA= Received: from DBBPR83MB0613.EURPRD83.prod.outlook.com (2603:10a6:10:533::21) by PAXPR83MB0560.EURPRD83.prod.outlook.com (2603:10a6:102:247::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.7; Fri, 7 Jun 2024 09:48:41 +0000 Received: from DBBPR83MB0613.EURPRD83.prod.outlook.com ([fe80::399d:9bfc:1209:af10]) by DBBPR83MB0613.EURPRD83.prod.outlook.com ([fe80::399d:9bfc:1209:af10%7]) with mapi id 15.20.7677.009; Fri, 7 Jun 2024 09:48:41 +0000 From: Evgeny Karpov To: Evgeny Karpov , "gcc-patches@gcc.gnu.org" CC: "richard.sandiford@arm.com" , "Richard Earnshaw (lists)" , Radek Barton , Maxim Kuvyrkov , "ubizjak@gmail.com" , "10walls@gmail.com" <10walls@gmail.com> Subject: [PATCH v2 2/6] Extract ix86 dllimport implementation to mingw Thread-Topic: [PATCH v2 2/6] Extract ix86 dllimport implementation to mingw Thread-Index: AQHauL/g46ZdOtO6GU2d3q1zRvb3Ag== Date: Fri, 7 Jun 2024 09:48:41 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=fc71c0da-0b04-4a90-84d3-756fb686144b; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2024-06-07T09:39:03Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DBBPR83MB0613:EE_|PAXPR83MB0560:EE_ x-ms-office365-filtering-correlation-id: 8d8e1a5d-4419-41ed-d737-08dc86d7034b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: 4hmzgVHcFub+VI8Lt/fxgYzjZQsy8Do7SnbG4acg+ZAkjg5kYoyVtZ2XitPHBxyYc1JJX7TEVFNQK85wX/3PvHuvpurJQ9O8odCajybQPGsRj2xlujVRLRbec/HfeO2K6aatJ6j2iWU+AzGfnRqIKsX2fOeWklP4XovTGu/uI3Lz3vRxX6mdn3QmmEnN7PqZcKiB/41wjpgp3nDPWnscf3x70car0Mloz6tInz4b/zHfHXo5vzP3Emc+YWUguW0G0TO4mFKUNPheMuaGLzPqM/rdkgp73yFT8UIQ3K9VcIEJnLff3uI+aDZL261x5lwaTBNmAra9wCVYdagKFPdIhA2X9lz+xUqIrLBGGSzG2UnZxpY7LO3ZQy0Nt5AEzSj8OuFVOKrAXA9GXRLAknCv0e3JbGyaUrW0d2DWssMMCrjevgMFNm9s3F6pRFZNkYuZUnyI+ak1XXbQJPjlCDaHLlYXVk/36DBwflBI7rf+5Trn54TFdAN1FilNukzfUthPq4BBQ36FQqffK3t0wt4KdXPFOq3kaYCTxBm9ginxUu2WIx9eEAZz5UwHnMmBF7j3nvD6Al7QCy+0Hw+51xt0/CPQWj/nbNgHAy4396xG8sNOw5hP8UCMCeQguAwokeS7t1++PUC7MCNnrIYuniQltXRlQcgARB8JlBqB6sQsE/Fgl3BpMFVPQloB+kzBH4/G9XADOynvcu7qxcqgPkdw24jZ49lsYQyTqpYet5X1cJQnVhI5FRA4Y/WQOrAqCD0YvoB3j8Wz4InRKO6+0NuIzR0Fj89AOh413XqBZtM4c7Ybq8be2eur8XBV2CXnaW0vb2GMLoB4iPEeKt69txlhXDdXCdg6Cyr1soGGS5K31wm933Sja+FaxMDuA7JilUPhOP4WNPHMIonHRiwILLBbj2T3wr8UbkGWVFiceiuBogu6KtDHoAEmwulv2HUUl83Cymqujvy8YRsvS1ayY6UKRjAOnEJRT34PSpJizA5+tDc4MAvsKovXoxJAXDbRYqEYi79U2CKPZH6LmBe4v4vtUkP/CNEEX2ay7hFSPAUPY5VyClEU65gW6g6nnm/DP4Pd/yPPPOPa0h4GVtK0tqOX8U8iXKmP7nCJdA6hHBSn53A4kDELUThxdtHhIVNRsfD9zB9ztLlZcZCYzPp54IEx2EMMkcf1QFyLhcoeedCb3Hd/lBThsx5WGq7Et1CE/IZY3j6FVvN63ekCvIzgBpUZK4nTepygrm93SfFKdRqOOmEqdYcYeV2G9n0SnUPBtM7D9ZUBOF4ivbC8qSocmuMlXCJUJToHzvMX3toQZCWnwvs8sQxh7waMgZJqCg043Dz5oVsC/T4K8DJCZfSMsJZk6uFSlQZBp48Yb5hr+QmEHxM= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBBPR83MB0613.EURPRD83.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: 1zNrdOuaNhoxacUphFBteqFhz3wpFVlnPS5JT/30pX6E6xKAKRiFkH13zTSkKiDJVqqwXbeVPlplvXKK8vshxGPs87/+GVmnsiSfUmALs5IknDJwg5Lp7Sx2Hs4fCEFFdhhwdfDHZR1/Y9DXqeL1p7tKp3zdwIN8DXTf7f+AEQ7igSW6favapA+Q74cjQldkQcVrwa4belv+hhTocMHxk5yxOukLIWj9bNKHyBBItU35qjf8J8CJYzLA53//dPs+N/udGBpPy5yZ0CJ2lWwdy549XG25Xde1wsO44kDCr4fFLmZ5GYBRi7Vn18DAge6XJ+lkVqh3rTnRTSBJmxOhBTDsqStb6pXLXsVF/boQBQKuV5bY/WCya57Secf2xZsinQewa2BvQA+KtOavwvL5RW4Uhgu5ba2TnnUFaMrxd6szMKcP5bOFlP7TB1onUxpfvQk3lup0bGLEKQ2+jVkIsGS3dmbzJ8AwL7AuNZvTG/AzSTVdxrI6gPGcC9/RZLCFLot2PSI3gCwg5k91p0lL4dXgY7uhmaWsWNm6rZdwB39UVPkgouMoXOb3tSgvBOOqPDZQnRnMSnmxkin//oyco+UErWO0YO7wJiAoYgqQcAqBBu81aaHxdUN8ZkO8wfDxMmVARoeeavUdpQKKpVgMRbjBb0zyJGnwA1I8Dtpr4/zjeff/YWjJnsy6vy8+RAxLRH2GYk1o+6W/wryjMSV3O0IuLMr2i2HvuXfPdfG7SBJuYLrdq4D7n2uA1BW162E7htd6mBypAMLewgw7W5g3v+r9XdZisRsy4Pti/r7k/HZbh22H32yZ+IK9hCO6fmMAnVzCrzL0ftFKmMm/WQlnf2tO+9u/8ZO+f2np2a1Eh60DN29mNcb/uaH2krMRKu2rXGdfE0VAiajDLI9pxnyubFyksYydkemKyaeX03X/4ZfwrP6E2dI2wsMENi8YRV0BMmRDnDXljjreN0XfVOiXaPBEY3e+b7yXOmynInYcKzAXGe2pTxCQedt4atUAEfrkb9Z9pIJOR6epQ/xElfxzCeT8OocDXOJTVA0Klw9GPsTpdi6J1ue9+2xEbPHZnl2kZCPXZdvNVimoMWW4fIaYydSN7QzRF96SbXPOUX2+nwsIhiP6449FR2PdjqQKxg/TgRgdyj69jTzrjvlZprRDoLv94kaSXZw/z6VmIJxTpLy6uJuoT7pJu81yG/maA+KgB3BiENfqBlYAu91JPo7GXyDrWBeltrZjT4VErHHhEEFdMUKC9yzxQ+nFxEY+aZKNz0TkF7A1iO8uI73quQrjTFz5klBnzSjtlq1342lWaLJSyUpny6EGbEcoSC1li4vxAIIn1FrwLCUV5dRwIAXftm8IPRwY+NVUeiDp+c3WUQosDA7jXW/6kGDmZ0mFjKeVYDvCGchRvb1hjdFOc/bABuxz7n+ImN3tF87TxMjnkg/4113VsVY/mbYqpYgwBGciThbzN2NTvki9ZlBHCRgmFw6ZerJ0EUp0sDiyQtgdtC1x2iTwKU6yjkh4QFsAIz/ZTx/dnzKU7gxG7xhsgMqXzRVV0gxYHhAPqhiNH5cgziSqfLwUvv2h+RSHURtREpPN/igaz7ypi1u9u2uti1uX2IizsTFOM25UzPW/uLm8auxO/LU3XgTuuXG0TvGk+JNY MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DBBPR83MB0613.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8d8e1a5d-4419-41ed-d737-08dc86d7034b X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2024 09:48:41.0977 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 2UOyVLMp6ABYepjD97djQ2RZybAvZkIrrUOrLnYO9i74MOxgGWWhEiWlqsZihZ6A34BYr130zxSWq2BaCUARSA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR83MB0560 X-Spam-Status: No, score=-9.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_SHORT, KAM_STOCKGEN, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org This patch extracts the ix86 implementation for expanding a SYMBOL into its corresponding dllimport, far-address, or refptr symbol. It will be reused in the aarch64-w64-mingw32 target. The implementation is copied as is from i386/i386.cc with minor changes to follow to the code style. Also this patch replaces the original DLL import/export implementation in ix86 with mingw. gcc/ChangeLog: * config.gcc: Add winnt-dll.o, which contains the DLL import/export implementation. * config/i386/cygming.h (SUB_TARGET_RECORD_STUB): Remove the old implementation. Rename the required function to MinGW. Use MinGW implementation for COFF and nothing otherwise. (GOT_ALIAS_SET): Likewise. * config/i386/i386-expand.cc (ix86_expand_move): Likewise. * config/i386/i386-expand.h (ix86_GOT_alias_set): Likewise. (legitimize_pe_coff_symbol): Likewise. * config/i386/i386-protos.h (i386_pe_record_stub): Likewise. * config/i386/i386.cc (is_imported_p): Likewise. (legitimate_pic_address_disp_p): Likewise. (ix86_GOT_alias_set): Likewise. (legitimize_pic_address): Likewise. (legitimize_tls_address): Likewise. (struct dllimport_hasher): Likewise. (GTY): Likewise. (get_dllimport_decl): Likewise. (legitimize_pe_coff_extern_decl): Likewise. (legitimize_dllimport_symbol): Likewise. (legitimize_pe_coff_symbol): Likewise. (ix86_legitimize_address): Likewise. * config/i386/i386.h (GOT_ALIAS_SET): Likewise. * config/mingw/winnt.cc (i386_pe_record_stub): Likewise. (mingw_pe_record_stub): Likewise. * config/mingw/winnt.h (mingw_pe_record_stub): Likewise. * config/mingw/t-cygming: Add the winnt-dll.o compilation. * config/mingw/winnt-dll.cc: New file. * config/mingw/winnt-dll.h: New file. --- gcc/config.gcc | 12 +- gcc/config/i386/cygming.h | 5 +- gcc/config/i386/i386-expand.cc | 4 +- gcc/config/i386/i386-expand.h | 2 - gcc/config/i386/i386-protos.h | 1 - gcc/config/i386/i386.cc | 205 ++--------------------------- gcc/config/i386/i386.h | 2 + gcc/config/mingw/t-cygming | 6 + gcc/config/mingw/winnt-dll.cc | 231 +++++++++++++++++++++++++++++++++ gcc/config/mingw/winnt-dll.h | 30 +++++ gcc/config/mingw/winnt.cc | 2 +- gcc/config/mingw/winnt.h | 1 + 12 files changed, 298 insertions(+), 203 deletions(-) create mode 100644 gcc/config/mingw/winnt-dll.cc create mode 100644 gcc/config/mingw/winnt-dll.h diff --git a/gcc/config.gcc b/gcc/config.gcc index 553a310f4bd..d053b98efa8 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -2177,11 +2177,13 @@ i[4567]86-wrs-vxworks*|x86_64-wrs-vxworks7*) i[34567]86-*-cygwin*) tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h" tm_file="${tm_file} mingw/winnt.h" + tm_file="${tm_file} mingw/winnt-dll.h" xm_file=i386/xm-cygwin.h tmake_file="${tmake_file} mingw/t-cygming t-slibgcc" target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc" + target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt-dll.cc" extra_options="${extra_options} mingw/cygming.opt i386/cygwin.opt" - extra_objs="${extra_objs} winnt.o winnt-stubs.o" + extra_objs="${extra_objs} winnt.o winnt-stubs.o winnt-dll.o" c_target_objs="${c_target_objs} msformat-c.o" cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o" d_target_objs="${d_target_objs} cygwin-d.o" @@ -2196,11 +2198,13 @@ x86_64-*-cygwin*) need_64bit_isa=yes tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/cygming.h i386/cygwin.h i386/cygwin-w64.h i386/cygwin-stdint.h" tm_file="${tm_file} mingw/winnt.h" + tm_file="${tm_file} mingw/winnt-dll.h" xm_file=i386/xm-cygwin.h tmake_file="${tmake_file} mingw/t-cygming t-slibgcc" target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc" + target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt-dll.cc" extra_options="${extra_options} mingw/cygming.opt i386/cygwin.opt" - extra_objs="${extra_objs} winnt.o winnt-stubs.o" + extra_objs="${extra_objs} winnt.o winnt-stubs.o winnt-dll.o" c_target_objs="${c_target_objs} msformat-c.o" cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o" d_target_objs="${d_target_objs} cygwin-d.o" @@ -2266,6 +2270,7 @@ i[34567]86-*-mingw* | x86_64-*-mingw*) esac tm_file="${tm_file} mingw/mingw-stdint.h" tm_file="${tm_file} mingw/winnt.h" + tm_file="${tm_file} mingw/winnt-dll.h" tmake_file="${tmake_file} t-winnt mingw/t-cygming t-slibgcc" case ${target} in x86_64-w64-*) @@ -2277,6 +2282,7 @@ i[34567]86-*-mingw* | x86_64-*-mingw*) esac native_system_header_dir=/mingw/include target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc" + target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt-dll.cc" extra_options="${extra_options} mingw/cygming.opt mingw/mingw.opt" case ${target} in *-w64-*) @@ -2285,7 +2291,7 @@ i[34567]86-*-mingw* | x86_64-*-mingw*) *) ;; esac - extra_objs="${extra_objs} winnt.o winnt-stubs.o" + extra_objs="${extra_objs} winnt.o winnt-stubs.o winnt-dll.o" c_target_objs="${c_target_objs} msformat-c.o" cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o" gas=yes diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index 98b375538e7..56945f00c11 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -461,7 +461,7 @@ do { \ #define TARGET_ASM_ASSEMBLE_VISIBILITY i386_pe_assemble_visibility #undef SUB_TARGET_RECORD_STUB -#define SUB_TARGET_RECORD_STUB i386_pe_record_stub +#define SUB_TARGET_RECORD_STUB mingw_pe_record_stub /* Static stack checking is supported by means of probes. */ #define STACK_CHECK_STATIC_BUILTIN 1 @@ -469,3 +469,6 @@ do { \ #ifndef HAVE_GAS_ALIGNED_COMM # define HAVE_GAS_ALIGNED_COMM 0 #endif + +#undef GOT_ALIAS_SET +#define GOT_ALIAS_SET mingw_GOT_alias_set () diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc index d1d396a8713..e09c97f1520 100644 --- a/gcc/config/i386/i386-expand.cc +++ b/gcc/config/i386/i386-expand.cc @@ -408,10 +408,11 @@ ix86_expand_move (machine_mode mode, rtx operands[]) : UNSPEC_GOT)); op1 = gen_rtx_CONST (Pmode, op1); op1 = gen_const_mem (Pmode, op1); - set_mem_alias_set (op1, ix86_GOT_alias_set ()); + set_mem_alias_set (op1, GOT_ALIAS_SET); } else { +#if TARGET_PECOFF tmp = legitimize_pe_coff_symbol (op1, addend != NULL_RTX); if (tmp) { @@ -424,6 +425,7 @@ ix86_expand_move (machine_mode mode, rtx operands[]) op1 = operands[1]; break; } +#endif } if (addend) diff --git a/gcc/config/i386/i386-expand.h b/gcc/config/i386/i386-expand.h index 65cb49c921c..5e02df1706d 100644 --- a/gcc/config/i386/i386-expand.h +++ b/gcc/config/i386/i386-expand.h @@ -34,9 +34,7 @@ struct expand_vec_perm_d }; rtx legitimize_tls_address (rtx x, enum tls_model model, bool for_mov); -alias_set_type ix86_GOT_alias_set (void); rtx legitimize_pic_address (rtx orig, rtx reg); -rtx legitimize_pe_coff_symbol (rtx addr, bool inreg); bool insn_defines_reg (unsigned int regno1, unsigned int regno2, rtx_insn *insn); diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h index 65ef3d77c3a..b2e9b9e0d3d 100644 --- a/gcc/config/i386/i386-protos.h +++ b/gcc/config/i386/i386-protos.h @@ -318,7 +318,6 @@ extern void i386_pe_end_cold_function (FILE *, const char *, tree); extern void i386_pe_assemble_visibility (tree, int); extern tree i386_pe_mangle_decl_assembler_name (tree, tree); extern tree i386_pe_mangle_assembler_name (const char *); -extern void i386_pe_record_stub (const char *); extern void i386_pe_seh_init (FILE *); extern void i386_pe_seh_end_prologue (FILE *); diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc index 4126ab24a79..cf998252340 100644 --- a/gcc/config/i386/i386.cc +++ b/gcc/config/i386/i386.cc @@ -11244,20 +11244,6 @@ ix86_cannot_force_const_mem (machine_mode mode, rtx x) return !ix86_legitimate_constant_p (mode, x); } -/* Nonzero if the symbol is marked as dllimport, or as stub-variable, - otherwise zero. */ - -static bool -is_imported_p (rtx x) -{ - if (!TARGET_DLLIMPORT_DECL_ATTRIBUTES - || GET_CODE (x) != SYMBOL_REF) - return false; - - return SYMBOL_REF_DLLIMPORT_P (x) || SYMBOL_REF_STUBVAR_P (x); -} - - /* Nonzero if the constant value X is a legitimate general operand when generating PIC code. It is given that flag_pic is on and that X satisfies CONSTANT_P. */ @@ -11359,8 +11345,10 @@ legitimate_pic_address_disp_p (rtx disp) if (TARGET_PECOFF) { +#if TARGET_PECOFF if (is_imported_p (op0)) return true; +#endif if (SYMBOL_REF_FAR_ADDR_P (op0) || !SYMBOL_REF_LOCAL_P (op0)) break; @@ -11836,16 +11824,6 @@ constant_address_p (rtx x) return CONSTANT_P (x) && ix86_legitimate_address_p (Pmode, x, 1); } -/* Return a unique alias set for the GOT. */ - -alias_set_type -ix86_GOT_alias_set (void) -{ - static alias_set_type set = -1; - if (set == -1) - set = new_alias_set (); - return set; -} /* Return a legitimate reference for ORIG (an address) using the register REG. If REG is 0, a new pseudo is generated. @@ -11883,9 +11861,11 @@ legitimize_pic_address (rtx orig, rtx reg) if (TARGET_64BIT && TARGET_DLLIMPORT_DECL_ATTRIBUTES) { +#if TARGET_PECOFF rtx tmp = legitimize_pe_coff_symbol (addr, true); if (tmp) return tmp; +#endif } if (TARGET_64BIT && legitimate_pic_address_disp_p (addr)) @@ -11928,9 +11908,11 @@ legitimize_pic_address (rtx orig, rtx reg) on VxWorks, see gotoff_operand. */ || (TARGET_VXWORKS_RTP && GET_CODE (addr) == LABEL_REF)) { +#if TARGET_PECOFF rtx tmp = legitimize_pe_coff_symbol (addr, true); if (tmp) return tmp; +#endif /* For x64 PE-COFF there is no GOT table, so we use address directly. */ @@ -11945,7 +11927,7 @@ legitimize_pic_address (rtx orig, rtx reg) UNSPEC_GOTPCREL); new_rtx = gen_rtx_CONST (Pmode, new_rtx); new_rtx = gen_const_mem (Pmode, new_rtx); - set_mem_alias_set (new_rtx, ix86_GOT_alias_set ()); + set_mem_alias_set (new_rtx, GOT_ALIAS_SET); } else { @@ -11967,7 +11949,7 @@ legitimize_pic_address (rtx orig, rtx reg) new_rtx = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, new_rtx); new_rtx = gen_const_mem (Pmode, new_rtx); - set_mem_alias_set (new_rtx, ix86_GOT_alias_set ()); + set_mem_alias_set (new_rtx, GOT_ALIAS_SET); } new_rtx = copy_to_suggested_reg (new_rtx, reg, Pmode); @@ -12344,7 +12326,7 @@ legitimize_tls_address (rtx x, enum tls_model model, bool for_mov) if (pic) off = gen_rtx_PLUS (tp_mode, pic, off); off = gen_const_mem (tp_mode, off); - set_mem_alias_set (off, ix86_GOT_alias_set ()); + set_mem_alias_set (off, GOT_ALIAS_SET); if (TARGET_64BIT || TARGET_ANY_GNU_TLS) { @@ -12503,173 +12485,6 @@ ix86_rewrite_tls_address (rtx pattern) return pattern; } -/* Create or return the unique __imp_DECL dllimport symbol corresponding - to symbol DECL if BEIMPORT is true. Otherwise create or return the - unique refptr-DECL symbol corresponding to symbol DECL. */ - -struct dllimport_hasher : ggc_cache_ptr_hash -{ - static inline hashval_t hash (tree_map *m) { return m->hash; } - static inline bool - equal (tree_map *a, tree_map *b) - { - return a->base.from == b->base.from; - } - - static int - keep_cache_entry (tree_map *&m) - { - return ggc_marked_p (m->base.from); - } -}; - -static GTY((cache)) hash_table *dllimport_map; - -static tree -get_dllimport_decl (tree decl, bool beimport) -{ - struct tree_map *h, in; - const char *name; - const char *prefix; - size_t namelen, prefixlen; - char *imp_name; - tree to; - rtx rtl; - - if (!dllimport_map) - dllimport_map = hash_table::create_ggc (512); - - in.hash = htab_hash_pointer (decl); - in.base.from = decl; - tree_map **loc = dllimport_map->find_slot_with_hash (&in, in.hash, INSERT); - h = *loc; - if (h) - return h->to; - - *loc = h = ggc_alloc (); - h->hash = in.hash; - h->base.from = decl; - h->to = to = build_decl (DECL_SOURCE_LOCATION (decl), - VAR_DECL, NULL, ptr_type_node); - DECL_ARTIFICIAL (to) = 1; - DECL_IGNORED_P (to) = 1; - DECL_EXTERNAL (to) = 1; - TREE_READONLY (to) = 1; - - name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)); - name = targetm.strip_name_encoding (name); - if (beimport) - prefix = name[0] == FASTCALL_PREFIX || user_label_prefix[0] == 0 - ? "*__imp_" : "*__imp__"; - else - prefix = user_label_prefix[0] == 0 ? "*.refptr." : "*refptr."; - namelen = strlen (name); - prefixlen = strlen (prefix); - imp_name = (char *) alloca (namelen + prefixlen + 1); - memcpy (imp_name, prefix, prefixlen); - memcpy (imp_name + prefixlen, name, namelen + 1); - - name = ggc_alloc_string (imp_name, namelen + prefixlen); - rtl = gen_rtx_SYMBOL_REF (Pmode, name); - SET_SYMBOL_REF_DECL (rtl, to); - SYMBOL_REF_FLAGS (rtl) = SYMBOL_FLAG_LOCAL | SYMBOL_FLAG_STUBVAR; - if (!beimport) - { - SYMBOL_REF_FLAGS (rtl) |= SYMBOL_FLAG_EXTERNAL; -#ifdef SUB_TARGET_RECORD_STUB - SUB_TARGET_RECORD_STUB (name); -#endif - } - - rtl = gen_const_mem (Pmode, rtl); - set_mem_alias_set (rtl, ix86_GOT_alias_set ()); - - SET_DECL_RTL (to, rtl); - SET_DECL_ASSEMBLER_NAME (to, get_identifier (name)); - - return to; -} - -/* Expand SYMBOL into its corresponding far-address symbol. - WANT_REG is true if we require the result be a register. */ - -static rtx -legitimize_pe_coff_extern_decl (rtx symbol, bool want_reg) -{ - tree imp_decl; - rtx x; - - gcc_assert (SYMBOL_REF_DECL (symbol)); - imp_decl = get_dllimport_decl (SYMBOL_REF_DECL (symbol), false); - - x = DECL_RTL (imp_decl); - if (want_reg) - x = force_reg (Pmode, x); - return x; -} - -/* Expand SYMBOL into its corresponding dllimport symbol. WANT_REG is - true if we require the result be a register. */ - -static rtx -legitimize_dllimport_symbol (rtx symbol, bool want_reg) -{ - tree imp_decl; - rtx x; - - gcc_assert (SYMBOL_REF_DECL (symbol)); - imp_decl = get_dllimport_decl (SYMBOL_REF_DECL (symbol), true); - - x = DECL_RTL (imp_decl); - if (want_reg) - x = force_reg (Pmode, x); - return x; -} - -/* Expand SYMBOL into its corresponding dllimport or refptr symbol. WANT_REG - is true if we require the result be a register. */ - -rtx -legitimize_pe_coff_symbol (rtx addr, bool inreg) -{ - if (!TARGET_PECOFF) - return NULL_RTX; - - if (TARGET_DLLIMPORT_DECL_ATTRIBUTES) - { - if (GET_CODE (addr) == SYMBOL_REF && SYMBOL_REF_DLLIMPORT_P (addr)) - return legitimize_dllimport_symbol (addr, inreg); - if (GET_CODE (addr) == CONST - && GET_CODE (XEXP (addr, 0)) == PLUS - && GET_CODE (XEXP (XEXP (addr, 0), 0)) == SYMBOL_REF - && SYMBOL_REF_DLLIMPORT_P (XEXP (XEXP (addr, 0), 0))) - { - rtx t = legitimize_dllimport_symbol (XEXP (XEXP (addr, 0), 0), inreg); - return gen_rtx_PLUS (Pmode, t, XEXP (XEXP (addr, 0), 1)); - } - } - - if (ix86_cmodel != CM_LARGE_PIC && ix86_cmodel != CM_MEDIUM_PIC) - return NULL_RTX; - if (GET_CODE (addr) == SYMBOL_REF - && !is_imported_p (addr) - && SYMBOL_REF_EXTERNAL_P (addr) - && SYMBOL_REF_DECL (addr)) - return legitimize_pe_coff_extern_decl (addr, inreg); - - if (GET_CODE (addr) == CONST - && GET_CODE (XEXP (addr, 0)) == PLUS - && GET_CODE (XEXP (XEXP (addr, 0), 0)) == SYMBOL_REF - && !is_imported_p (XEXP (XEXP (addr, 0), 0)) - && SYMBOL_REF_EXTERNAL_P (XEXP (XEXP (addr, 0), 0)) - && SYMBOL_REF_DECL (XEXP (XEXP (addr, 0), 0))) - { - rtx t = legitimize_pe_coff_extern_decl (XEXP (XEXP (addr, 0), 0), inreg); - return gen_rtx_PLUS (Pmode, t, XEXP (XEXP (addr, 0), 1)); - } - return NULL_RTX; -} - /* Try machine-dependent ways of modifying an illegitimate address to be legitimate. If we find one, return the new, valid address. This macro is used in only one place: `memory_address' in explow.cc. @@ -12709,9 +12524,11 @@ ix86_legitimize_address (rtx x, rtx, machine_mode mode) if (TARGET_DLLIMPORT_DECL_ATTRIBUTES) { +#if TARGET_PECOFF rtx tmp = legitimize_pe_coff_symbol (x, true); if (tmp) return tmp; +#endif } if (flag_pic && SYMBOLIC_CONST (x)) diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 7051c6c13e4..d9f02f66518 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -2262,6 +2262,8 @@ extern int const svr4_debugger_register_map[FIRST_PSEUDO_REGISTER]; /* Which processor to tune code generation for. These must be in sync with processor_cost_table in i386-options.cc. */ +#define GOT_ALIAS_SET -1 + enum processor_type { PROCESSOR_GENERIC = 0, diff --git a/gcc/config/mingw/t-cygming b/gcc/config/mingw/t-cygming index f5de941c8e5..3dd9116d92b 100644 --- a/gcc/config/mingw/t-cygming +++ b/gcc/config/mingw/t-cygming @@ -33,6 +33,12 @@ winnt-cxx.o: $(srcdir)/config/mingw/winnt-cxx.cc $(CONFIG_H) $(SYSTEM_H) \ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ $(srcdir)/config/mingw/winnt-cxx.cc +winnt-dll.o: $(srcdir)/config/mingw/winnt-dll.cc $(CONFIG_H) $(SYSTEM_H) \ + coretypes.h \ + $(TM_H) $(TREE_H) flags.h \ + $(TM_P_H) $(HASH_TABLE_H) $(GGC_H) + $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(srcdir)/config/mingw/winnt-dll.cc winnt-stubs.o: $(srcdir)/config/mingw/winnt-stubs.cc $(CONFIG_H) $(SYSTEM_H) \ coretypes.h \ diff --git a/gcc/config/mingw/winnt-dll.cc b/gcc/config/mingw/winnt-dll.cc new file mode 100644 index 00000000000..1354402a959 --- /dev/null +++ b/gcc/config/mingw/winnt-dll.cc @@ -0,0 +1,231 @@ +/* Expand a SYMBOL into its corresponding dllimport, far-address, +or refptr symbol. +Copyright (C) 1988-2024 Free Software Foundation, Inc. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC 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 General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +http://www.gnu.org/licenses/. */ + +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "backend.h" +#include "target.h" +#include "rtl.h" +#include "tree.h" +#include "memmodel.h" +#include "stringpool.h" +#include "emit-rtl.h" +#include "alias.h" +#include "varasm.h" +#include "output.h" +#include "explow.h" +#include "winnt.h" + +/* Create or return the unique __imp_DECL dllimport symbol corresponding + to symbol DECL if BEIMPORT is true. Otherwise create or return the + unique refptr-DECL symbol corresponding to symbol DECL. */ + +struct dllimport_hasher : ggc_cache_ptr_hash +{ + static inline hashval_t hash (tree_map *m) + { + return m->hash; + } + + static inline bool + equal (tree_map *a, tree_map *b) + { + return a->base.from == b->base.from; + } + + static int + keep_cache_entry (tree_map *&m) + { + return ggc_marked_p (m->base.from); + } +}; + +static GTY ((cache)) hash_table *dllimport_map; + +/* Nonzero if the symbol is marked as dllimport, or as stub-variable, + otherwise zero. */ + +bool +is_imported_p (rtx x) +{ + if (!TARGET_DLLIMPORT_DECL_ATTRIBUTES + || GET_CODE (x) != SYMBOL_REF) + return false; + + return SYMBOL_REF_DLLIMPORT_P (x) || SYMBOL_REF_STUBVAR_P (x); +} + +/* Return a unique alias set for the GOT. */ + +alias_set_type +mingw_GOT_alias_set (void) +{ + static alias_set_type set = -1; + if (set == -1) + set = new_alias_set (); + return set; +} + +static tree +get_dllimport_decl (tree decl, bool beimport) +{ + struct tree_map *h, in; + const char *name; + const char *prefix; + size_t namelen, prefixlen; + char *imp_name; + tree to; + rtx rtl; + + if (!dllimport_map) + dllimport_map = hash_table::create_ggc (512); + + in.hash = htab_hash_pointer (decl); + in.base.from = decl; + tree_map **loc = dllimport_map->find_slot_with_hash (&in, in.hash, INSERT); + h = *loc; + if (h) + return h->to; + + *loc = h = ggc_alloc (); + h->hash = in.hash; + h->base.from = decl; + h->to = to = build_decl (DECL_SOURCE_LOCATION (decl), + VAR_DECL, NULL, ptr_type_node); + DECL_ARTIFICIAL (to) = 1; + DECL_IGNORED_P (to) = 1; + DECL_EXTERNAL (to) = 1; + TREE_READONLY (to) = 1; + + name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)); + name = targetm.strip_name_encoding (name); + if (beimport) + prefix = name[0] == FASTCALL_PREFIX || user_label_prefix[0] == 0 + ? "*__imp_" : "*__imp__"; + else + prefix = user_label_prefix[0] == 0 ? "*.refptr." : "*refptr."; + namelen = strlen (name); + prefixlen = strlen (prefix); + imp_name = (char *) alloca (namelen + prefixlen + 1); + memcpy (imp_name, prefix, prefixlen); + memcpy (imp_name + prefixlen, name, namelen + 1); + + name = ggc_alloc_string (imp_name, namelen + prefixlen); + rtl = gen_rtx_SYMBOL_REF (Pmode, name); + SET_SYMBOL_REF_DECL (rtl, to); + SYMBOL_REF_FLAGS (rtl) = SYMBOL_FLAG_LOCAL | SYMBOL_FLAG_STUBVAR; + if (!beimport) + { + SYMBOL_REF_FLAGS (rtl) |= SYMBOL_FLAG_EXTERNAL; +#ifdef SUB_TARGET_RECORD_STUB + SUB_TARGET_RECORD_STUB (name); +#endif + } + + rtl = gen_const_mem (Pmode, rtl); + set_mem_alias_set (rtl, mingw_GOT_alias_set ()); + + SET_DECL_RTL (to, rtl); + SET_DECL_ASSEMBLER_NAME (to, get_identifier (name)); + + return to; +} + +/* Expand SYMBOL into its corresponding far-address symbol. + WANT_REG is true if we require the result be a register. */ + +static rtx +legitimize_pe_coff_extern_decl (rtx symbol, bool want_reg) +{ + tree imp_decl; + rtx x; + + gcc_assert (SYMBOL_REF_DECL (symbol)); + imp_decl = get_dllimport_decl (SYMBOL_REF_DECL (symbol), false); + + x = DECL_RTL (imp_decl); + if (want_reg) + x = force_reg (Pmode, x); + return x; +} + +/* Expand SYMBOL into its corresponding dllimport symbol. WANT_REG is + true if we require the result be a register. */ + +static rtx +legitimize_dllimport_symbol (rtx symbol, bool want_reg) +{ + tree imp_decl; + rtx x; + + gcc_assert (SYMBOL_REF_DECL (symbol)); + imp_decl = get_dllimport_decl (SYMBOL_REF_DECL (symbol), true); + + x = DECL_RTL (imp_decl); + if (want_reg) + x = force_reg (Pmode, x); + return x; +} + +/* Expand SYMBOL into its corresponding dllimport or refptr symbol. WANT_REG + is true if we require the result be a register. */ + +rtx +legitimize_pe_coff_symbol (rtx addr, bool inreg) +{ + if (!TARGET_PECOFF) + return NULL_RTX; + + if (TARGET_DLLIMPORT_DECL_ATTRIBUTES) + { + if (GET_CODE (addr) == SYMBOL_REF && SYMBOL_REF_DLLIMPORT_P (addr)) + return legitimize_dllimport_symbol (addr, inreg); + if (GET_CODE (addr) == CONST + && GET_CODE (XEXP (addr, 0)) == PLUS + && GET_CODE (XEXP (XEXP (addr, 0), 0)) == SYMBOL_REF + && SYMBOL_REF_DLLIMPORT_P (XEXP (XEXP (addr, 0), 0))) + { + rtx t = legitimize_dllimport_symbol (XEXP (XEXP (addr, 0), 0), inreg); + return gen_rtx_PLUS (Pmode, t, XEXP (XEXP (addr, 0), 1)); + } + } + + if (ix86_cmodel != CM_LARGE_PIC && ix86_cmodel != CM_MEDIUM_PIC) + return NULL_RTX; + + if (GET_CODE (addr) == SYMBOL_REF + && !is_imported_p (addr) + && SYMBOL_REF_EXTERNAL_P (addr) + && SYMBOL_REF_DECL (addr)) + return legitimize_pe_coff_extern_decl (addr, inreg); + + if (GET_CODE (addr) == CONST + && GET_CODE (XEXP (addr, 0)) == PLUS + && GET_CODE (XEXP (XEXP (addr, 0), 0)) == SYMBOL_REF + && !is_imported_p (XEXP (XEXP (addr, 0), 0)) + && SYMBOL_REF_EXTERNAL_P (XEXP (XEXP (addr, 0), 0)) + && SYMBOL_REF_DECL (XEXP (XEXP (addr, 0), 0))) + { + rtx t = legitimize_pe_coff_extern_decl (XEXP (XEXP (addr, 0), 0), inreg); + return gen_rtx_PLUS (Pmode, t, XEXP (XEXP (addr, 0), 1)); + } + return NULL_RTX; +} + +#include "gt-winnt-dll.h" \ No newline at end of file diff --git a/gcc/config/mingw/winnt-dll.h b/gcc/config/mingw/winnt-dll.h new file mode 100644 index 00000000000..14ca743b69f --- /dev/null +++ b/gcc/config/mingw/winnt-dll.h @@ -0,0 +1,30 @@ +/* Expand a SYMBOL into its corresponding dllimport, far-address, +or refptr symbol. +Copyright (C) 2024 Free Software Foundation, Inc. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC 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 General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +http://www.gnu.org/licenses/. */ + +#ifndef GCC_MINGW_WINNT_DLL_H +#define GCC_MINGW_WINNT_DLL_H + +#ifndef USED_FOR_TARGET + +extern bool is_imported_p (rtx x); +extern alias_set_type mingw_GOT_alias_set (void); +extern rtx legitimize_pe_coff_symbol (rtx addr, bool inreg); + +#endif /* not USED_FOR_TARGET. */ + +#endif /* GCC_MINGW_WINNT_DLL_H. */ diff --git a/gcc/config/mingw/winnt.cc b/gcc/config/mingw/winnt.cc index 2a4fc03fc56..9901576ade0 100644 --- a/gcc/config/mingw/winnt.cc +++ b/gcc/config/mingw/winnt.cc @@ -672,7 +672,7 @@ mingw_pe_maybe_record_exported_symbol (tree decl, const char *name, int is_data) } void -i386_pe_record_stub (const char *name) +mingw_pe_record_stub (const char *name) { struct stub_list *p; diff --git a/gcc/config/mingw/winnt.h b/gcc/config/mingw/winnt.h index d6202816e8f..74e454a13c8 100644 --- a/gcc/config/mingw/winnt.h +++ b/gcc/config/mingw/winnt.h @@ -25,6 +25,7 @@ extern void mingw_pe_declare_function_type (FILE *file, const char *name, int pub); extern void mingw_pe_encode_section_info (tree, rtx, int); extern void mingw_pe_maybe_record_exported_symbol (tree, const char *, int); +extern void mingw_pe_record_stub (const char *name); extern unsigned int mingw_pe_section_type_flags (tree, const char *, int); extern void mingw_pe_unique_section (tree, int); From patchwork Fri Jun 7 09:49:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Evgeny Karpov X-Patchwork-Id: 1944998 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=microsoft.com header.i=@microsoft.com header.a=rsa-sha256 header.s=selector2 header.b=HQeUOTtS; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VwbzZ0jknz20KL for ; Fri, 7 Jun 2024 19:50:34 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 47C083A1586E for ; Fri, 7 Jun 2024 09:50:32 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2112.outbound.protection.outlook.com [40.107.21.112]) by sourceware.org (Postfix) with ESMTPS id 0ACA03A15875 for ; Fri, 7 Jun 2024 09:49:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0ACA03A15875 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=microsoft.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=microsoft.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0ACA03A15875 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.21.112 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717753769; cv=pass; b=I6QZyZmCu4lqWNvKoRsPSGM5DVzB7IjP3BeWotUuySCSYXqn63cvBYnKfMocAmk7jD05tUFp7kKBby0Laq9oAHZL8Z+5Ke8/mpFEYnu7JpHp7qLNXOeNFoeEZyuNYaMp/jgmAfj90iYS7NCB+XpN1HXXIlQVK+DBBPG3KwFIOhM= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717753769; c=relaxed/simple; bh=bHWMA7RAx3aj79CrI76FbmrctBOZSEcpd0daIDGUZk8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=UscZ1DrMR+BK5m443YMTxCGXZ/x7At03q578JZgpsEesks+LLwNGPW3JQeC1Nsh+tMXC4csvcTWR9b27VyvymABpnpwW9VMWvMOPLwT0ObjAkavYcNJbInS2segAVQ8G/pmG9Ng4FfuTE/ZRg8dgqxEeIUta6rTATcR3FU429HM= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gXQ4sHWQ+bRwHrXK6ha01cvxbVJkzsASRnfz9csLN26GkyCPB7Z5QgAU9WqxE8swZ4AX4/91ATVidopEM8xRcW0CgxpsUfui/1EUxlMkuWiYMTNgH3LVBtAmBERQawFc6DIXdkx0Fvrh3AaYqTEWyHi5wv1PeSwgt+Uwd4OhZyUqVl0O6gy2RcSWMrxK5BQ4DNeCdTPpLQY87/1G+QzbKirWN14J8P2VxNFa2zzzpHm4ccW3w23cL1WTPcVV4mdCaptaAyFwX6P5N8INabHe/6zszj4HxE9Pfykrow7q9q7/JCwqPdgHWcMx4YJ1KOm4aenVLzArlMPh27fDclKUNw== 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=1ql/Vt9WOv2ik6sHQgeWiEmrENESfTzv1bWBe61f4cA=; b=X0NbkesCWMtPK773TORu19rynOGw/svM1IQvSXQivvZ+ryjlOfPRFdVgpkH6K0+d4hGRz0MtXPvs/qlugdBcmvTNfgI7rbQzVL1Hh3M3T8o/t+uSjdMDBxmK+GhWoaYcjQkmXgCW7iZppn2jrWZn9j1fQ1EUPn+ql+cq8G3/1LOBjuf8lNHG4czDxrXnK6n/bnjl6vkz70d4NKdsaYY96duguTUICn71FMEkjqSnQerN45sYxssTGcRNnqeZlsxxXf7DUEiONiXfu/jvJhpRwT6gCA2u0U4xDRjPDd4WnaP6RrD3/bbhmYmpTPGojRCZjk4xJEguHzKLxSWRxjkeZg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1ql/Vt9WOv2ik6sHQgeWiEmrENESfTzv1bWBe61f4cA=; b=HQeUOTtSnFQDHeEPnoMbnnMj2sfp0MkfQyXPOFnZvW+vQVV+1eHSbXt/ly5HVTI6P2t9mArLK0p1TS0Get0KwFrhorT63nMnln7QNWT81GwBiAjAmIs46InK/lgW61v/xkgTt1+SPXe/gudeKKAYhnvr4QqEIVM6BDyZZ4a18q0= Received: from DBBPR83MB0613.EURPRD83.prod.outlook.com (2603:10a6:10:533::21) by PAXPR83MB0560.EURPRD83.prod.outlook.com (2603:10a6:102:247::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.7; Fri, 7 Jun 2024 09:49:23 +0000 Received: from DBBPR83MB0613.EURPRD83.prod.outlook.com ([fe80::399d:9bfc:1209:af10]) by DBBPR83MB0613.EURPRD83.prod.outlook.com ([fe80::399d:9bfc:1209:af10%7]) with mapi id 15.20.7677.009; Fri, 7 Jun 2024 09:49:22 +0000 From: Evgeny Karpov To: Evgeny Karpov , "gcc-patches@gcc.gnu.org" CC: "richard.sandiford@arm.com" , "Richard Earnshaw (lists)" , Radek Barton , Maxim Kuvyrkov , "ubizjak@gmail.com" , "10walls@gmail.com" <10walls@gmail.com> Subject: [PATCH v2 3/6] Rename functions for reuse in AArch64 Thread-Topic: [PATCH v2 3/6] Rename functions for reuse in AArch64 Thread-Index: AQHauL/59lWs4HTRq0qQxLw6KBmYTw== Date: Fri, 7 Jun 2024 09:49:22 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=fc71c0da-0b04-4a90-84d3-756fb686144b; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2024-06-07T09:39:03Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DBBPR83MB0613:EE_|PAXPR83MB0560:EE_ x-ms-office365-filtering-correlation-id: 34ca6368-e9f2-4679-5996-08dc86d71c2c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: klfPStucgEQTLc/52T7xXcopNSsVMmmdHp2ge4djJKNv/2TjG3IiBA5WqTNk1BWAhDBXovG0yj1dKHGODxAVjFg+RjeGlBPIwdqugsUdQL2PEnhC7YTMlVe5aYgEyICykY/g/DRjKBU3gKdFS8igdaA/qp4SzNUvcvP0I2wt5nEYmFxZTe8VsFPhcqPCdfd0xG25/Aynu6jVJrSkHw2es13mz+82NeTGFM67xSKeRtLYDzXhOrjx78sXWzWWs94m8Ql2hAMRVkGXs9eB7ylTpLo9q4ybQWhv2zEr24bB8rU5Slj8p8TLsokDYkO6umgAitQvrD1tkEfhzxYsCTx9yxY+9kJOG4aq2AQ49m4MDmX5iTaPCwLTHLHtweyRTHmCcNIaArxCBspwAZETtjPSLbD0zqir0EO/B4zpxgRW5i80vhNzlAwGwn+UP+XHnJoodsZnyGX9FA+H1wkq1KF5E6P1L6JxPPKvE5Hm3h/drkRI1Wc0C1dD8BSdhPzzfg/E3bOZLq+ef/2O8JYrNfaq8ndBrESFtVlQ24EggkTNID8gTCjmdwmJdKswFSVuXKW46z75TAwKGv/nbXmKaqDoSzpof9ivOTLPFwk9nu9R14uDLvUzKQ4UyhEuiaFctMbnvUTJrV5ah4ydHsLCxA/lLJOlZRVGYHBjE6y5i3YARNpx1YTUuSHPKgUfqmlBb0jgrr0vS2iaYGxMa8jhWG+bssNhC/uHXRPIXPy77AFsMBWUB3LpgKAyvKvLZwAWUs8keLk/TNWa+c7C3ScbYo4z9JLOafoWvau08AJVu33MEVrJjo03xn6SXzRnNNE4MuTlpq9yCb/lveP7ZHQVzB7RJsthERDauBXUWYHsVKxXSdFHlT7bthBq3UdQb62DRbKYs92UuQj/ChOM789C8la6nBOxEfwkvmv5+QOOOdmxfUHnBaIdShdCSCZUSwLrIEBY1yiDCzzNjywN5XfjL3oyFAIqJbbhvR0RhLO5NryPbUa1xbwf+YRyLvpVth2ALXJKcEVFtrSIsfJmRxYGiFM4WJU8oNKo5S4Dr4DCxWd7X3O+UblNeUP+1DvyULQ+xGN2aGZXd9ZvgvYXNJp8ToUsp/xCreCCbGsxRHhklD/iYTWv24iJZO88OzUFAA9PV2bMVuelma1H677e728IAiBix0twlyucyJfYZluyFDdP8zjVquZpDhuV4+nM0vcMnKArNuexnJ2raVHayEBZEm4R8JBIpeJW6ddsHFbEVSqG1QJQ+syhFO/4xvihGbolv+OO5aByonMDckjBTO+/ivlsjFMqAyOhwLx/ozGVa1FDVhS6Tm/EhRnIJzCZgMdK+uwDf6GmQC2DwB2aUeyzpZkd8hPb05LVtIvChuYi2WDTBhg= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBBPR83MB0613.EURPRD83.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: 3NOHjGsnhXpkysp8gxiCT+6m3k1/7CypfEdL/y+68GDqDF3qilfDzxUrdMCZ3i/FzSa3yJPFSbBvPRUWFwBoV1StRa+gL9oQUYeb5ch4OM1N1dafkNIHLoWc7gglINXb9JQcStk9vLgZWGwU/sC9/n5mN+XPY6MwsiAE4NWl7/uytxNMSk7SigOlBUr1V8qobKmA7+MswRqhZzR+OXs1u7fXcWhO/ktF2/LQDmkJW4+DeSocMvxkd9oIjq3lUJdPk1pBLP7P4ziUCe/uHTbXu2hTxuCHbkCaa+djIBRl8lobkcLtheqxjjYisHN6QVmkqIIyMxzKCNobDrFjYZFi8XTCAbt14VG6tQmx6Rkx23huoTNO+93Fx/bScmiVdUkZlfq5qtWnh2Ki1tQMKui3ToCVwFGEt+WoaGXq6CMF/V+Q0W8HLMBQLiUPnbQ8oGfJcokWaOh88X4h3KjBOqOMJX5dCxP8Ko7LzcwXwfCGU/UxJgMoEZwOqLW1sydM3t/D3Rq4JV2kS58kcLa5V10va6LRjfjdDccw4l5xWQVoFgp6gs+G9TD1/TAG5PCW08TiJZ9vnTWhS99iIs63tCsSOVClrYJmwYezhaxur9dVE9jGtwwb0i0VqfSXI4TSA6r9TvFHv2HrgZcbNWzbNxAfWieLyDX95vaf/rD4szIbr5OyONOtz+W4FNd3Pt9dQVzvvw3hBoCCmfSSgXycDyD9za6Fe72pEFMfYMbsBxnrplnskKi8qCHd6CCNGWsBp0c2J4uYjwRICcz32qMxgcq5iwPYiG9Mt1bLhSKDSP3ORpU+osOc/upHQqybGnpuFkAMsx0RV+ibxStTVKILMtNCMn9xwLOE56ngPXR0v1/xs4H0sC27PToeyonkeddQ9ApQ9o01Da8XfLYjJeeC9M1KwCmpzD746AlIBMTOB/EZ0buah+SeMaZxt9oTP0F85x4UrLM8QouJGgWRUgDl1u2jRp3O9IzAn0lxkB89JoUiYSLLyzH0V9OkVF3YJRQEtjCPLI6ISBufiug8hZb5Z/vVHpOF0fah8L0ZbvG7whAHr9ur1j8uB0BTjgZFALx/CrxMeovDs0F2mJJ4pTfhKybc4+jkiFCW/CgbCip6NGGieEt7z3wmRnyTfdW7+wDB4pX0NxVdZfXxZglhR2fLFK6R9bARx9ly7t3MOiaMouUMhhn9aTM35IDDqkCsbW4OztMcTPTGm3gIJtDEpNDyuwvf3ROe8/U19+o0VP89+f7HlT4/87oIF7pLORW/vQIcfITocMw0pLDRE91Br3ZI37Y6Vx3NQFXV+dFBo++KXb1+qJyiepGpIyuDKVqsLdhiI0p2ZYCV38NrMS6Sf+CYkGIBam7s5k4lrY20YhUWCiNJp8g+lta+MoCcJSTwDr85zN5iUX7pUKnZnP1XYOIzj/bRPmjh+UvSyfJY/oSvGtuzJBi7CVk2cFt7WtHiYqJgfo7XNhVXG9HqAMUOmlNF3H6NHgp6IYbfC17UB/4yzitC2KrSKQLn2CkLNNtYy0VYhTurvIZfSS15NaoFRCoZP+iYVYUH0jEoITV4rNafpe1RjqzaP22hiE3YsTariWVI1K9ICUCPBadpEYIec6FWlKS5yzhxucj9tOmXIPybFaghKga6Og7p94uieCG47m3mKkGt MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DBBPR83MB0613.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 34ca6368-e9f2-4679-5996-08dc86d71c2c X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2024 09:49:22.8145 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: YPWp+TaNb9m8QhyKe+dm/XzE8LVOPiXKZfgHfHf1NkeUsPMVLtR3qgkiC7LlOS1KzCoNDQQUF2UsJ6/CcxwVEw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR83MB0560 X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_NUMSUBJECT, KAM_SHORT, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org This patch renames functions related to dllimport/dllexport and selectany functionality. These functions will be reused in the aarch64-w64-mingw32 target. gcc/ChangeLog: * config/i386/cygming.h (mingw_pe_record_stub): Rename functions in mingw folder which will be reused for aarch64. (TARGET_ASM_FILE_END): Update to new target-independent name. (SUBTARGET_ATTRIBUTE_TABLE): Likewise. (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): Likewise. (SUB_TARGET_RECORD_STUB): Likewise. * config/i386/i386-protos.h (ix86_handle_selectany_attribute): Likewise. (mingw_handle_selectany_attribute): Likewise. (i386_pe_valid_dllimport_attribute_p): Likewise. (mingw_pe_valid_dllimport_attribute_p): Likewise. (i386_pe_file_end): Likewise. (mingw_pe_file_end): Likewise. (i386_pe_record_stub): Likewise. (mingw_pe_record_stub): Likewise. * config/mingw/winnt.cc (ix86_handle_selectany_attribute): Likewise. (mingw_handle_selectany_attribute): Likewise. (i386_pe_valid_dllimport_attribute_p): Likewise. (mingw_pe_valid_dllimport_attribute_p): Likewise. (i386_pe_record_stub): Likewise. (mingw_pe_record_stub): Likewise. (i386_pe_file_end): Likewise. (mingw_pe_file_end): Likewise. * config/mingw/winnt.h (mingw_handle_selectany_attribute): Declate functionality that will be reused by multiple targets. (mingw_pe_file_end): Likewise. (mingw_pe_record_stub): Likewise. (mingw_pe_valid_dllimport_attribute_p): Likewise. --- gcc/config/i386/cygming.h | 6 +++--- gcc/config/i386/i386-protos.h | 3 --- gcc/config/mingw/winnt.cc | 8 ++++---- gcc/config/mingw/winnt.h | 6 +++++- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index 56945f00c11..4bb8d7f920c 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -344,7 +344,7 @@ do { \ /* Output function declarations at the end of the file. */ #undef TARGET_ASM_FILE_END -#define TARGET_ASM_FILE_END i386_pe_file_end +#define TARGET_ASM_FILE_END mingw_pe_file_end /* Kludge because of missing PE-COFF support for early LTO debug. */ #undef TARGET_ASM_LTO_START @@ -445,7 +445,7 @@ do { \ #define SUBTARGET_ATTRIBUTE_TABLE \ { "selectany", 0, 0, true, false, false, false, \ - ix86_handle_selectany_attribute, NULL } + mingw_handle_selectany_attribute, NULL } /* { name, min_len, max_len, decl_req, type_req, fn_type_req, affects_type_identity, handler, exclude } */ @@ -453,7 +453,7 @@ do { \ #undef NO_PROFILE_COUNTERS #define NO_PROFILE_COUNTERS 1 -#define TARGET_VALID_DLLIMPORT_ATTRIBUTE_P i386_pe_valid_dllimport_attribute_p +#define TARGET_VALID_DLLIMPORT_ATTRIBUTE_P mingw_pe_valid_dllimport_attribute_p #define TARGET_CXX_ADJUST_CLASS_AT_DEFINITION i386_pe_adjust_class_at_definition #define SUBTARGET_MANGLE_DECL_ASSEMBLER_NAME i386_pe_mangle_decl_assembler_name diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h index b2e9b9e0d3d..08c69abb45f 100644 --- a/gcc/config/i386/i386-protos.h +++ b/gcc/config/i386/i386-protos.h @@ -264,7 +264,6 @@ extern unsigned int ix86_local_alignment (tree, machine_mode, extern unsigned int ix86_minimum_alignment (tree, machine_mode, unsigned int); extern tree ix86_handle_shared_attribute (tree *, tree, tree, int, bool *); -extern tree ix86_handle_selectany_attribute (tree *, tree, tree, int, bool *); extern int x86_field_alignment (tree, int); extern tree ix86_valid_target_attribute_tree (tree, tree, struct gcc_options *, @@ -304,12 +303,10 @@ extern void ix86_register_pragmas (void); extern void i386_pe_record_external_function (tree, const char *); extern bool i386_pe_binds_local_p (const_tree); extern const char *i386_pe_strip_name_encoding_full (const char *); -extern bool i386_pe_valid_dllimport_attribute_p (const_tree); extern void i386_pe_asm_output_aligned_decl_common (FILE *, tree, const char *, HOST_WIDE_INT, HOST_WIDE_INT); -extern void i386_pe_file_end (void); extern void i386_pe_asm_lto_start (void); extern void i386_pe_asm_lto_end (void); extern void i386_pe_start_function (FILE *, const char *, tree); diff --git a/gcc/config/mingw/winnt.cc b/gcc/config/mingw/winnt.cc index 9901576ade0..803e5f5ec85 100644 --- a/gcc/config/mingw/winnt.cc +++ b/gcc/config/mingw/winnt.cc @@ -71,8 +71,8 @@ ix86_handle_shared_attribute (tree *node, tree name, tree, int, /* Handle a "selectany" attribute; arguments as in struct attribute_spec.handler. */ tree -ix86_handle_selectany_attribute (tree *node, tree name, tree, int, - bool *no_add_attrs) +mingw_handle_selectany_attribute (tree *node, tree name, tree, int, + bool *no_add_attrs) { tree decl = *node; /* The attribute applies only to objects that are initialized and have @@ -162,7 +162,7 @@ i386_pe_determine_dllimport_p (tree decl) /* Handle the -mno-fun-dllimport target switch. */ bool -i386_pe_valid_dllimport_attribute_p (const_tree decl) +mingw_pe_valid_dllimport_attribute_p (const_tree decl) { if (TARGET_NOP_FUN_DLLIMPORT && TREE_CODE (decl) == FUNCTION_DECL) return false; @@ -749,7 +749,7 @@ i386_find_on_wrapper_list (const char *target) output the .drectve section. */ void -i386_pe_file_end (void) +mingw_pe_file_end (void) { struct extern_list *p; diff --git a/gcc/config/mingw/winnt.h b/gcc/config/mingw/winnt.h index 74e454a13c8..97fefbcebca 100644 --- a/gcc/config/mingw/winnt.h +++ b/gcc/config/mingw/winnt.h @@ -20,14 +20,18 @@ http://www.gnu.org/licenses/. */ #ifndef USED_FOR_TARGET +extern tree mingw_handle_selectany_attribute (tree *, tree, tree, int, bool *); + extern void mingw_pe_asm_named_section (const char *, unsigned int, tree); extern void mingw_pe_declare_function_type (FILE *file, const char *name, int pub); extern void mingw_pe_encode_section_info (tree, rtx, int); +extern void mingw_pe_file_end (void); extern void mingw_pe_maybe_record_exported_symbol (tree, const char *, int); -extern void mingw_pe_record_stub (const char *name); +extern void mingw_pe_record_stub (const char *); extern unsigned int mingw_pe_section_type_flags (tree, const char *, int); extern void mingw_pe_unique_section (tree, int); +extern bool mingw_pe_valid_dllimport_attribute_p (const_tree); #endif /* not USED_FOR_TARGET. */ From patchwork Fri Jun 7 09:50:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Evgeny Karpov X-Patchwork-Id: 1944999 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=microsoft.com header.i=@microsoft.com header.a=rsa-sha256 header.s=selector2 header.b=T698YmkS; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Vwc0632wmz20KL for ; Fri, 7 Jun 2024 19:51:02 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9AA8B3A1587F for ; Fri, 7 Jun 2024 09:51:00 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on20702.outbound.protection.outlook.com [IPv6:2a01:111:f403:2612::702]) by sourceware.org (Postfix) with ESMTPS id 109A83A1587E for ; Fri, 7 Jun 2024 09:50:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 109A83A1587E Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=microsoft.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=microsoft.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 109A83A1587E Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:2612::702 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717753835; cv=pass; b=YJenVqcrtwIekJrOju0mb6aFtqSZEHa2LXXB4Ih2QjfFR8no3TsQ9pXYaZrI5l6LEs8VXlBd5SRBf9gU1vHae5FmyVJXAE5kZz0Y4VAKB9URMT9vDslKHwB5y2Nc5nj/B8UaSegFgQzHP5aKWZJOe5szABsZdhi1Qr3+sBItrX8= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717753835; c=relaxed/simple; bh=K2E1FEb73RzCVm1fP3fbyD2UzBBF/p8whw7f6bX3lms=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Dwma9nEAJM1kVRycN1HDRvgCJodcPhXssLmGWbyxliLaM58uB17hhhPn6AEM7WKO1mmev9DbuVPv6q8zjwtu3RBvuiYj45k+iXds3D71SH1P4FE82oEXbVfh0mqHCervnooVhjkL4kYaLaUkrqfn5r/1CFNMXIZ2yULRuyT7HE0= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=As5qX0uYIoQgjdGU65pW04ikyw/KiqBkAV4ZlckFePVfWO+NvVAHnI31r5wwum6CgG9ZqW5UtegTYxE871FL780NMBBeXuxS5dCTnJUv+HaxQ/qM+pxe+uC8/oM2UTlTlGIETgVNLnoST0fypYne07s3BxIAjsBRSACdZJoir1mmfSSuShSHrDcxaoAMOkSQuQQEz6d2X03EGMV8tr7FvJpjMggf4VIZQs8WiWGucH199qmPXa98dpxfYxrOe92AUgqJQHOWO0bhAwsyBh8ngMiCz6t9zJvLwgG8xQveJ5FUzkK+9vetTwbNWKURmmUdijzBacoIWskD0tsrbmiP+g== 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=v957DOYri1FFf315e6QU2SK+vo7kXBC+KSIh+tqXUyE=; b=aqaGTQPgJEZi++SaISiwmwMz1+cVYUoB3y1j8Un17EMDPfRKAKprsyOyiOMt5AMG+3dSKghciNtzPMw7Xt9Xz5pltSUwnqyxcvfGCH2CANZD6pKMD8thjCLveCG6EHhucbNTMSvqOm2wZaARVrXBpGsIRSv7C4eUg3BenNbZgjZTAOL/gqav61nqui28YXZcBYiIdXIWh+ajfUbmMzWV2mSfndoC66HKWG88IuuU1oJqadf3iBiEHgtNziYEEeF9KQ5y6cpMSloQdffc4Nfd34NlFw1dhZuI/PCVO4aFwvhGw0c/RP7mXTs6UW7jgYjT0aF2GiM4xIlUl5kXUWm/1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=v957DOYri1FFf315e6QU2SK+vo7kXBC+KSIh+tqXUyE=; b=T698YmkS3lpek980kmusH1eIpw/EZhY33ZC3ZHftWCVpVyE3cB7U9eL0mnu7lvrr8D3kyhnVycGi6PZoj2Xq9EblVaE+yCteKwwoT31/e/IFcNJv8QmMgdjBXekejMng9Ot6C96aUhyipbCWm+V6mDe1x2QdJORebNMpxB/yZiM= Received: from DBBPR83MB0613.EURPRD83.prod.outlook.com (2603:10a6:10:533::21) by PAXPR83MB0560.EURPRD83.prod.outlook.com (2603:10a6:102:247::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.7; Fri, 7 Jun 2024 09:50:29 +0000 Received: from DBBPR83MB0613.EURPRD83.prod.outlook.com ([fe80::399d:9bfc:1209:af10]) by DBBPR83MB0613.EURPRD83.prod.outlook.com ([fe80::399d:9bfc:1209:af10%7]) with mapi id 15.20.7677.009; Fri, 7 Jun 2024 09:50:23 +0000 From: Evgeny Karpov To: Evgeny Karpov , "gcc-patches@gcc.gnu.org" CC: "richard.sandiford@arm.com" , "Richard Earnshaw (lists)" , Radek Barton , Maxim Kuvyrkov , "ubizjak@gmail.com" , "10walls@gmail.com" <10walls@gmail.com> Subject: [PATCH v2 4/6] aarch64: Add selectany attribute handling Thread-Topic: [PATCH v2 4/6] aarch64: Add selectany attribute handling Thread-Index: AQHauMAdSFx+pLIme0+aRivOVncNJQ== Date: Fri, 7 Jun 2024 09:50:23 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=fc71c0da-0b04-4a90-84d3-756fb686144b; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2024-06-07T09:39:03Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DBBPR83MB0613:EE_|PAXPR83MB0560:EE_ x-ms-office365-filtering-correlation-id: 4c1f3871-513d-4f16-a9c7-08dc86d74018 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: P2+Mh1DDy2wPIAT/fv28MnJEpt48giSnPZnRQ2Iw9aNRhFXUwdLvNlGFFXsiiRlLhWd2uct/M4qU6Pr1qIZMS85zNXDho9Tkg/dqyHyhq/ji9EQQlbEmNRJuq2XX8G4FsDZyW1+7o7IYCcJ2gObYqYg/KO0DENqO0yxAE3bO9ZZ6ox2Rv1dvJOmaPJYpOyi3cNc2d/nTpgcKG3fcvLdZLXCiw6/wVzFHwozFnzq6Gz+hCtDO+nYoP5AsHfRvl0NkplIIZSmszKq2RRvwVhTzJbQglj5b8+kfRBzeT+FUv+ZHgAE/XwLQrKEaYD5yf0BB5+ZORMR3MOhimujzFFcZn6Tv3yAB8No876eUtpciHHmZaf9Xzs2th8+7X1TC0vRmifO508vHeHV62K4rDWtac8avDLh4u0hNHJuKgikckl06ttTjI0EGEIpIYWchsqx7f3+sSuV5gwLoYZNZyMJse3VFFl4+LgVzA8qAu786hAaJdaZ0FCknn01X28jg5eLySoobbxOnVGQ5duqVxy0zreHnx+EUdpAwEiTMhQ+faMa5+SEImlXfffEcRH4+Pta4SsGQeokFjPmY65bJL3vqCnIR8CEhjXZqYJCoXtlDfv+CaRsME+hCE0OPTGsBOiChVHRMbztxlNIU3rn4bQ0UeoXdcL1d3wE4R1VNiVlOvjVQuz90meTSyFGWUpq5bZMW69uGKfTb2VBwHqy5aXj+QoKpqeiru8t6cCK9XPG2qUq5RtQpMzHlNePaCyzNjMi7SHegA0nt6bBxxt0cVzU/CyLQLNxM9ldg1UeWY9k9xt4wNhvTQvxV/ZMUQ9Nk0p1IP6M7gYACrHx7D1skR6kUjTFI2yLCujYIU73Ze5Fg0MViyG5BSUU5Z0WUD19lFTFSCKiATcVCc6KOFAUsqY5GVX5ji5YyJGskrLwr9pZ2EUDziytMyLymF1U9Rdx22XPhCCLaQmhNFueMahPyjWRIh6ov34k0urV9VjQQX2wut2TBQigdPxa/UPNaLswHmRiXaoymHcKRRpA6UAXyK56+lIjoljMpWLeOw9PeMKLPH2mrtoaCDqdprJjkwLrqEkjuXR80Jri3m6DRATDXiJj0n0o9cdfEyp+GHLhGfxsaAYDB4StwN3mP6qGoySvMhNn4jhXivOfM5uGqfLUeqG1vd93wRNJj69kVnB0BDuDzUuiYq8IWOitjArzA9rlYrS++SOpM5YqXjDzVw+O41MHX/VakjC9+CQsubI4+mIt7dWFfil90MZh2r7S7T38Ss9n3FJJh6hGDGVQ+bc2zAkX7GcBtPtoP/Ulj8ldARIvbyrAW/sd/f9sLR2DzoXlN0x1F6qciQmJUUoaZ5KYVxlKlZItmvPylJ1u4zlWs30+lv5g= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBBPR83MB0613.EURPRD83.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: mOT2onQDgecnLJwFxaFX5jKq5REIb1U9PfmTy4bhlt8/njmZkzr63rCp9pha+2sh4gFVNaH1w2OK0xJQSgmGIyqAw6CUIyUiIQTKtGkWdPrk1QLy6beEzlnr1iQWdQnF5xunLWwnMrN786owbIV/en6oXnb4IeqBwH4MJhtMmnAHvNU2yfAJF4WqR1TpSTg0u68Y/kGiWneLYk8GfGMbApVBTvxNgKtoRTAsAmMiIDMsm9vdy2PilmXa9CoDbnjw5IeA0lj87kmTXh74Us3CILhQUkSEd7LQ6XE8IhMXCELskdyE0AW9T9E7rSEbf8U3GGZREAkrQ/LhAFT5fvPdS1llJFNCs0+GpQjD389u67dp7QT+kzV1YaOLW7DvIBunr57MxkORb8JjPv8Kkj+3gZ4jGyWPTrztHfMRAaveUBCsEpzg6e3VOnEcEhVuMnR+R2D2nbBlhCoSewLxutdcOJ+tiIdxK9myERazbdeEqJjDW1NrUwTnBvkSvwINIWIB9I9R5kJTZlg0WjHCQinW2aFiQS5lTxVJs23Kj2XzpMo3u/WJ9fxzVvqRnWfQ/ZPSjCLQ6qrbg0LHxYIi87UnIEWDsszK6AuBQJHVuKWP7Wm62Az6lDtb1c2RlUcl8J+1grc3jMqPtxfTHnU5Uh3PQWAxYJ2hHcaPwz5C5DaCcu7h50LogSJiOF2kb3cXB19PxcEOzVDSvuPGEfIIvRGEstp9wziQdYVohY0sq469cb7LTR0+gHo9BbqTGY8nFneTRfSb5CWV0WG6PTE7bPHhTdVj75rZ8Fn6XM891+1EyppPqwj3DicrI7qowA7k+RPZix8g2jkHuJ1rk4D+Er+eJB/f0fXRWoA1WBKTEXpE4eyn1iHoV0AhjFxSgtfqHaBsTT1MQOw8NfoogAQUICgOgSNXCzwCSQqaOX2NaPCVHz3v0MkB9Sx2mq0lzDhDJx7ej1g0Z/z49JYFJcKwbWFKnU8m6XoeYKCkFmEUVOSigM3zUnKOsTW7/T5p8L9nk8ibkR1p+lqBHcKYGUAF1+vkKFyN9nWQwGxpxocvDWxJXJfh+RnFGw8+d3z59rkyrJJutkjVloJuj3AKBSiJb57dSzcQLcmW6yWLqAKgPP61wMSJ90Jq8AQ3Ya7Vr0LVbJqSazn1hLFtAbGiDUDY8+v2xsMnWosmCQ4td7I0QkL1n0eLUQVe2ueyKlh26dm3yAcxZu9O4EBwIA97RHENXGSSR+e5DQcbdG5iyQhiMT1VhrUMNGYeJS7f3OG0FN6Wc7+m35tIXS7dPz5KwsIaxnGvz1txpxJb0SM4MMPGPsshddmXVML/moi367hHhYOPtFQ5i5lIKdHba151ruz6mLpStVwb5VuCkonfEMTZOoYLZpKgmXY4oMsd02Z+YWHeQFbHOQRoK1T+YhlF68vmsmvUGgilDZz9iW8aJyaFRtP4nXNGoU4AnmeZ8hUGaGKJHkQVxTmnRB+mm85igX1bDL84FHEVhTm4oMDs8P1yGXnGSeheRSMfmVhIU11RDQuVvkLolQSwHsuW7XYDTR/ByVGB8l+gkT8nsXJ39O4cWM53YapUQpi4BmUKRDplTdZpCnuvkXMOYBQJ9yH/W7N0NR4l6HgBHw/nWizPVqHWu/2feKmobTiiXhCAdXVpAex9unvY MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DBBPR83MB0613.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4c1f3871-513d-4f16-a9c7-08dc86d74018 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2024 09:50:23.0952 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: WWjC3vDzrOOZbLrnG4ME60WBRVCfCg9Eyr8/yt0xllSBFRAUJYbxk60p0RjF2RNEsjTVo8J21hlhJ23CVruOYQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR83MB0560 X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org This patch extends the aarch64 attributes list with the selectany attribute for the aarch64-w64-mingw32 target and reuses the mingw implementation to handle it. * config/aarch64/aarch64.cc: Extend the aarch64 attributes list. * config/aarch64/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Define the selectany attribute. --- gcc/config/aarch64/aarch64.cc | 5 ++++- gcc/config/aarch64/cygming.h | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index 13191ec8e34..3418e57218f 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -859,7 +859,10 @@ static const attribute_spec aarch64_gnu_attributes[] = NULL }, { "Advanced SIMD type", 1, 1, false, true, false, true, NULL, NULL }, { "SVE type", 3, 3, false, true, false, true, NULL, NULL }, - { "SVE sizeless type", 0, 0, false, true, false, true, NULL, NULL } + { "SVE sizeless type", 0, 0, false, true, false, true, NULL, NULL }, +#ifdef SUBTARGET_ATTRIBUTE_TABLE + SUBTARGET_ATTRIBUTE_TABLE +#endif }; static const scoped_attribute_specs aarch64_gnu_attribute_table = diff --git a/gcc/config/aarch64/cygming.h b/gcc/config/aarch64/cygming.h index 0d048879311..76623153080 100644 --- a/gcc/config/aarch64/cygming.h +++ b/gcc/config/aarch64/cygming.h @@ -154,6 +154,9 @@ still needed for compilation. */ flag_stack_check = STATIC_BUILTIN_STACK_CHECK; \ } while (0) +#define SUBTARGET_ATTRIBUTE_TABLE \ + { "selectany", 0, 0, true, false, false, false, \ + mingw_handle_selectany_attribute, NULL } #define SUPPORTS_ONE_ONLY 1 From patchwork Fri Jun 7 09:51:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Evgeny Karpov X-Patchwork-Id: 1945000 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=microsoft.com header.i=@microsoft.com header.a=rsa-sha256 header.s=selector2 header.b=C7kPXA4l; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Vwc1K5BtNz20KL for ; Fri, 7 Jun 2024 19:52:05 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A6E293A15870 for ; Fri, 7 Jun 2024 09:52:03 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2070a.outbound.protection.outlook.com [IPv6:2a01:111:f403:2612::70a]) by sourceware.org (Postfix) with ESMTPS id 0693A3A1586B for ; Fri, 7 Jun 2024 09:51:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0693A3A1586B Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=microsoft.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=microsoft.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0693A3A1586B Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:2612::70a ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717753875; cv=pass; b=PPmyMJLiKThT7l0Ns1o5UwlAd4vI6Yf38AUgaTETjz0s5CYLUCM8FEcCI4lq9shxka1Pi2To26ouYluOEnGO81TRLoKT8Tz9glmRqq4hoD57uMeetx0urSlGE/rGyvA5n+VFM+uDFSHWe0aIyo/h7EX6/6J/QJ8SIsbwa5fgrIU= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717753875; c=relaxed/simple; bh=B6SZcAONdVfO289Y1GFCpTm7823RaN6DBV/MFA2gZhs=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=O9nvVp4snI687uIhZP+7V5fLBxLx1DLF/VVTu904T9apKZiUSAkqARM7VSBn6M4FSphZklJohIH/9PEKMf+ih7O7ICgtZRpulZcBeMZYkgG+nUYPljFNDS794pKdbIJe+WLhC/+9FCHsEene+9WeKbrx9rgZhAyHXGojLwbT+dw= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FhYaedcOqzJZ3kLjcud84f/BzOYaL0PaPpUP+FK86AUIJn4RuQp0e1brbdvaz74yTclwcQaAObI4hWZ22nVHS/HrTbcfdrL4/Ke/ShQ609ufSMpDb5dfgIMmS3FmFN6tJa56XWmaHhlSegya7B44mTGv7+MHXcGLYH14nyyBjgybcDAfdZl/5kDkJTDp4MnDll+5qs3hMWgh7p3R8xUxADkVrgBEOwJu8qxrIIJFHCuf3eIpS0644rNV1yoTTzb83rtWkF0aiYo/el9VGfMAfLhvnX4LvcCnIR2hvi4G81i1tuz9aXY+9FVKWcXGzkX1DmGy7Xh0mlimQFId82+dpQ== 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=ImOi2F7s/1NUHMO2BoRkrcA2mUXmQVDiYQ1ccCfvPCg=; b=oI/1rRyc8R7PxW1/f10Z0eN5aZqt4um8kQ48qZi8sTKn9DaggI48DDv0djef72pcHtDcyWW1aFtmOV31CqehxpbX9TsAmU4rnM6BJSLPBJ0CkMh8i0hnDH4flEUU3/7ES9UL12v5zV8ziueZzEaggc2Gr+fLSermsGhEx5lJbKmdqDUPykymROj/xy5J/2d92qGtLcw4ei67D8YmG7x1NFchKM9Jzo0W/TwpMJBpAZC5oz5/g+8Lm0X7Dl6bdR0LDQA7zt9iEjlW5eWOHGM35EOQ3/mWZ0BseMKtVcN9GDLVBGt1nMdQKCi+Oi8Ikg4p1vEkOeXi73titUTRGhEpuQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ImOi2F7s/1NUHMO2BoRkrcA2mUXmQVDiYQ1ccCfvPCg=; b=C7kPXA4lWVykDhhtiUZ3/4pIX+NMXlZ0D37GD2qJS7Riy6STtjH7KzlLjayVC0+UOe0KEfTZWzof5s44EF7NqEVKHT8FJjALcuI7CgCWg+aLxEsbFXSHSAuWdFSNsuJfA7jnluOKkQsU7WStXdGpmmx5kz3ihlOlnZjEn6M95G8= Received: from DBBPR83MB0613.EURPRD83.prod.outlook.com (2603:10a6:10:533::21) by PAXPR83MB0560.EURPRD83.prod.outlook.com (2603:10a6:102:247::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.7; Fri, 7 Jun 2024 09:51:10 +0000 Received: from DBBPR83MB0613.EURPRD83.prod.outlook.com ([fe80::399d:9bfc:1209:af10]) by DBBPR83MB0613.EURPRD83.prod.outlook.com ([fe80::399d:9bfc:1209:af10%7]) with mapi id 15.20.7677.009; Fri, 7 Jun 2024 09:51:10 +0000 From: Evgeny Karpov To: Evgeny Karpov , "gcc-patches@gcc.gnu.org" CC: "richard.sandiford@arm.com" , "Richard Earnshaw (lists)" , Radek Barton , Maxim Kuvyrkov , "ubizjak@gmail.com" , "10walls@gmail.com" <10walls@gmail.com> Subject: [PATCH v2 5/6] Adjust DLL import/export implementation for AArch64 Thread-Topic: [PATCH v2 5/6] Adjust DLL import/export implementation for AArch64 Thread-Index: AQHauMA5HBa8RbvYkUC5HyxeeD147w== Date: Fri, 7 Jun 2024 09:51:10 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=fc71c0da-0b04-4a90-84d3-756fb686144b; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2024-06-07T09:39:03Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DBBPR83MB0613:EE_|PAXPR83MB0560:EE_ x-ms-office365-filtering-correlation-id: 5c6107f7-c9cb-4495-aa9a-08dc86d75c1c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: O/IpOTgDl7lA8AEhjXvEq0kHRIru/vlKCXA0koxLoggYue6y050OLFzxW8FD+vpgzOC7l6bkKDcX0RapxaTPJjlJDDvDnI+tfimc+9Bz/iRubLxWohdmyw61Iy+NsCcv8S/rqpYc/gupuPkqyLrz9QylppHue9vXAVWWUgv7lmxAlUs+FhH8KLBhLDSi3j2WuvDchom9fmUTXYSZc6fo6ZFme9NlC0a/xjKJZJ2otrEGJxa9U8kL7LHT6FAAi5x3B542Q03pa08SA6Kdp90H7Sznm8ppcubG6a6xixviH6/EU1xRk50xpuGb4bpD3K64yC5ojtIxoaORpRe+GYdHEsmnlv4ezX6ILEVLePGXs3qjf3+7hhPgPpw0hC1h8Ud1b5SUjK5nR98Fw9jIbOHTfqW5ciWKmUOuzcrKmwQ5K9ttzxxFtuvOkSBGW6y1EumrSFKmOYqIfZ/FzZU3/kCGWH8FMX3r8ouv1IOQ7RFawyQXVTrQ60oV8DXULW6LjUKDdBkzVA2EBn8dnL+pLK35ZKbcq8gZ8kqZLhckJq0vdZE026jJA7cZ3Ab6Z6cvrb7MxMfulSIbArhTE6vMCXVBQZ/AC+nt+AmVaKgHY9z6RlDxdKXmHlfLDZdBFguQY6WZG0R/CRJyHbEROSbWbBv/dxVS4BnE+Fz1MWE9aphDzNnVBRQxKnydj+N//a4ULuZ4s4FeJyBrGqcB6uth3PAKfgLpsKWX1Jz/Jg3fji8GEwyRnWVszCaqDaoOosSTFfIHxkMnBY3e7iyWiOFVUZbzARhnwmUMnappzye06HfbVSEjz9TNVm0VBxOVjlsxz2jGFrEDvd/M/ORJrm3p/pQGfn+jeVYg8zaIMl4MTxiVAeu9ck76F7bcJe9cwTOeVa5Xjl38woXrrVScOu4nsTxiVPBEEQ+cGsbIPBXX1TOj8GUH2WxuWOkwcVxHa2kbHmlW/HYt0T8+mVhUWZxLL2HzMoN7xotCG8QPe5DipsoRxppq4sYFoczFX7SWEuoP9BB/lZSGfzvcNFd9osq1gI5l4HJre7zRXifdJOkkVzjJdaFByI68EYP5rSZNZHfN7rgtPNbvHb592n0EvqRfoRXTenjtFXeqIlJ5zX6qquYZS5nj9y0iY+kUytpR9tz2btyqLA5NkjTBWqy5tWj1NUaRqSFvyr+47Cgt79weecwMG7nIQ5XfM2AYIbawl/+f5kx1hzcWedMBbJwJeHni3XLznFuLElPCzt27mA2XQH7kHiAjILVdAmTm2hzN6T4n5wjSlX1JSvbK5bfjDWfJ02xOcFke3QRFP3VFa5qFNFw1Lem3dePoLV3xBn4FKwtezGUB5DyeG7NM7dN8IbFBVsHvdqiHr1UGjF3MzTAay1xIgM4= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBBPR83MB0613.EURPRD83.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: wgfSHtYwZWOURlVnreWGzMU9rwACLBGdof203kyhg62sc0U6tUnniTtCeJtLXyCY19fMgygLmCEs7r4PC4mPUbzFkK7INR+U5zZuX513cCGLUgA7Kr5iCTUqRkxUq7XR17vY58u6srikEwGveoYdwwod/Snvj3jbpuUCPZukDThFMbTNjq+g+Izw1OArMRcbLi9tEBr5Gm3qwQSJ38rX9tnMpsKJmXrMY+bmvs/RBN4aJqrj40KK7N6IkFtzzyD5W3jBjsmwgfKUjgQo6qxmccm5Xms+pfUsy2u9MmVUaVurCSwphglDCnyD4IVR1f7IsxQ/lGfGXEWNubGRCGhp73RDJRJMwA+2akkU7CQ597Zc/GvggsWMlRZHa3SprJ4Dz6UCkXftU5NAhly/UHEzGsmn5wofPs/oghJkBL/fHIM212YRCzYig6uAG86FFdgXl4pagsbLZV/VroBzlN89PQpmDmyrJw3RLxvvs8HYUF+L5N5nqAzQZJcwhA4SOQw+nHvudyKQTFKi0OVG8c8LD7vAjYtiLtlhbr3xOgm52uq65YxPT89N2ldVqfR/NfKUqun6lg/M4EUppgEcLIb5pUe4jyLM65P4IaRmL1r2GH8HU+ZtxSE1xRK3yZH2ykquCo1rQyYgKh/QQsNzsF12k7haV0Cdk+UdEP0LA7Zy5EurWSVllIHB/64kZbc8/yn1ut70RLSSmhdVArDjyQdatso7/j5WZwGINxmjiXjUqPjnOGQQ9/axv4J9e7YiTj83re1kSgc5aHvL1LSHg1zMP27bkymqfz5/nSzElSFpWzEXiabae9t/3OSqZ26QvEbtgW4BE8jR1YYX6h3c+MF1apsaago8u+meF/QWYrxFmhIe/frQryix5B+EtbmASl46jipWubM23aekxxjFesfor5p5JxxVtxGonXWFCBcwMIECCJmmlmjaUobA2yDn/JFy+tZJGYXmabFp1cuZt5fzsQmXqhvKKFl38bxfLI71ESr3eUUcXse1/tFFwxAgB1UQAv25wygjs08M+TFruS4BFIKg1WP0SSF1FJkYd1ULiyEggbE8dt4hI/uWaejenaY1YHJRc4GC5+51xJsfJAB1zq1Lu2mF49Ftl5C+2/sZ7wBzVteO+qMs6pC0M07uuc1xcC9c+vCWI4hFMyA1nV6Bha61cJS/DhlrwAeJWPKcp2IkAMZ/DCo1thDjdn732Y1C4M2zoOBfOlVVZKKwQHvvrBclS+QkGTUEU/Js8YR8ocffCCU/VXaSddjHVFfg+1vaLQsfPxZhJ1bBRGHZjhYDCwnFbrExdwDvhrdm1+CPs2xPswKLD0X9ySSLPgUSbYfyjBbZ5N7RDWs7Nmcs5D9GpmW0cZ90JyG5AxK/EPVxH1NVTFfjVhP0tPN2CtvIi9d0hoWsIi87I5Ui90L9ucz9JGya6G179m7D+Z5wibRwT4pg9hvBNM5bidjCHFhh/uR7DaPdikJmPDDIRr0nrPxGsrxL2CWCAVhWUlW5a0oonxmsibXR0eUxNWgdnn9kMTqkX0NV3E20lCpedk7UeOlggjjlIT1zmSo6upDoz7DdLo7Q31CSHDllMTf5UZ1z9HP59+yBvYkPOTSCQrReRT2iuf0R5ES7pSmjxLEdrtLoQDpnn2nx265p2YWGoLbYbSgY MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DBBPR83MB0613.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c6107f7-c9cb-4495-aa9a-08dc86d75c1c X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2024 09:51:10.0898 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 3odPT2h/wO8xfBpbNmmVb/lLiti1XNYWVcJPkmSpKu+dBw8CwKtjU2WW7xYwWgAJ3hLUWPWDEzke7fAjaiWqUg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR83MB0560 X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_NUMSUBJECT, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org The DLL import/export mingw implementation, originally from ix86, requires minor adjustments to be compatible with AArch64. gcc/ChangeLog: * config/i386/cygming.h (PE_COFF_EXTERN_DECL_SHOULD_BE_LEGITIMIZED): Declare whether an external declaration should be legitimized. (HAVE_64BIT_POINTERS): Define whether the target supports 64-bit pointers. * config/mingw/mingw32.h (defined): Use the correct DllMainCRTStartup entry function. * config/mingw/winnt-dll.cc (defined): Exclude ix86-related code. --- gcc/config/i386/cygming.h | 5 +++++ gcc/config/mingw/mingw32.h | 2 +- gcc/config/mingw/winnt-dll.cc | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index 4bb8d7f920c..0493b3be875 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -472,3 +472,8 @@ do { \ #undef GOT_ALIAS_SET #define GOT_ALIAS_SET mingw_GOT_alias_set () + +#define PE_COFF_EXTERN_DECL_SHOULD_BE_LEGITIMIZED \ + ix86_cmodel == CM_LARGE_PIC || ix86_cmodel == CM_MEDIUM_PIC + +#define HAVE_64BIT_POINTERS TARGET_64BIT_DEFAULT diff --git a/gcc/config/mingw/mingw32.h b/gcc/config/mingw/mingw32.h index fa6e307476c..0c9d5424942 100644 --- a/gcc/config/mingw/mingw32.h +++ b/gcc/config/mingw/mingw32.h @@ -82,7 +82,7 @@ along with GCC; see the file COPYING3. If not see #endif #undef SUB_LINK_ENTRY -#if TARGET_64BIT_DEFAULT +#if HAVE_64BIT_POINTERS #define SUB_LINK_ENTRY SUB_LINK_ENTRY64 #else #define SUB_LINK_ENTRY SUB_LINK_ENTRY32 diff --git a/gcc/config/mingw/winnt-dll.cc b/gcc/config/mingw/winnt-dll.cc index 1354402a959..66c445cba77 100644 --- a/gcc/config/mingw/winnt-dll.cc +++ b/gcc/config/mingw/winnt-dll.cc @@ -206,7 +206,7 @@ legitimize_pe_coff_symbol (rtx addr, bool inreg) } } - if (ix86_cmodel != CM_LARGE_PIC && ix86_cmodel != CM_MEDIUM_PIC) + if (!PE_COFF_EXTERN_DECL_SHOULD_BE_LEGITIMIZED) return NULL_RTX; if (GET_CODE (addr) == SYMBOL_REF From patchwork Fri Jun 7 09:52:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Evgeny Karpov X-Patchwork-Id: 1945001 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=microsoft.com header.i=@microsoft.com header.a=rsa-sha256 header.s=selector2 header.b=b5gKbgeL; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Vwc1w3Zxtz20KL for ; Fri, 7 Jun 2024 19:52:34 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0E4DE3A1AFC9 for ; Fri, 7 Jun 2024 09:52:33 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2072f.outbound.protection.outlook.com [IPv6:2a01:111:f403:2612::72f]) by sourceware.org (Postfix) with ESMTPS id BDB173A1AFC6 for ; Fri, 7 Jun 2024 09:52:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BDB173A1AFC6 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=microsoft.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=microsoft.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org BDB173A1AFC6 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:2612::72f ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717753927; cv=pass; b=YBFVYdsEr2CyZpZZdMQvWvxg8Y1J2rAll0K0cAMWpV5kRPPV6HBRjyJj+cgjarADX//+4o0a7gHVR4GLLPSLiHO6MP9sjhOrQ8UDkNUQQl2jvYe4BgpdPzVl/wtv8Snx9RqenqrooMjQYdNy97OJdUgSyd6oCFkZfoEYc2I5HbM= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717753927; c=relaxed/simple; bh=4fHy+bIF6PekcXiltl/Y+nzzbK/T4dAl7EFcgRT05Rc=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=q6BcpjkIu21mx/XTq28l+9vWemg4RavHBya1upjBq5GSQuLviL3bNGXT5DUn6HMzj4iGxJ4ZaP4WYj2inkJg16R145kYGNVSKpVnVy0hxiKCSwBvnaaZZpZq5UBjIKKYka4zn/+JoV3eHRBmcBbHViqi1Ye8sNCfKZhG6rv9kGE= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B8rYjsdFINfTsbJ/5SCCxabf185RlEgd7AO2sObVLrIi+h19zBbE4Itvq/5iGrlBXCPmz6i1P9G70gX3DQw6+OVJj4sgOObJNhpv0RRNctZKUsfAUGLYLG06tcChfga4/yot4+MeFkigEATt5x6s7uHZRuX1Ak8eJkWLCsmcPsQeMwNdiHZ+3cjnu6QSRQi0Ev08P8HEGPlMJDd0NklXiojCAXcg7YzCwWOBfA6df+VIruRgTd4IXQTLfzYBfyGxiWshwuwFO+tESpTv+sxn1V/f4o8p4loY9vqmL2PiB62eNG/jtVkF6neKzRS3CWhPTP1TrZJHoSRkwEOMQGznJg== 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=O1SsnLn9m+Di0++EOKWkRzUiwxVb1p++pnEW7Um41yA=; b=h1nkl5vAfJso4eE8kMTH7J2bYitnuubq7aVzrLHc6ZmjHi+KuihwgzYGysRxBXRT24sNgEXmupu4HFBh6XcMiVECMJS14k2czM2xfrOa1Qv/SGH8xVqec8chP3VKxYfezDZu9OEJZ6NMK2d1B0y7aje6CEO6tSgv7FhLCiKSW7RC9IOqzFqw9eEfwj/J2ZkmkWTX/BHx5fdIDNaSF5WSSiyVs2UyeXcTEndRyU2kif811fQlBFsziM93IxBb4Lb8Kj8m/WTmURlsGj9ZYpVUAE+lhMPjBEBckv8DC+C4/jq6B7vR1UokLvWJ8LsO/gpUs6vlL5NL8fC5hv4SLTmz+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O1SsnLn9m+Di0++EOKWkRzUiwxVb1p++pnEW7Um41yA=; b=b5gKbgeLaWcmtEzrkj5MHLbucs7XMEy5gjxTyiMaD9ctHhuOUOFyrdCTmpQwlMGwiY0hc1w0SFq9RvTrLyHdIoS27uGEN9GpT5JKC28uh5jPZ2ZvklcEZfGD+BLl0Uw+DWm/YjxT7nxZ2iynPBmpNQR/OuJx7ksqXHrC+1D5dP0= Received: from DBBPR83MB0613.EURPRD83.prod.outlook.com (2603:10a6:10:533::21) by PAXPR83MB0560.EURPRD83.prod.outlook.com (2603:10a6:102:247::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.7; Fri, 7 Jun 2024 09:52:02 +0000 Received: from DBBPR83MB0613.EURPRD83.prod.outlook.com ([fe80::399d:9bfc:1209:af10]) by DBBPR83MB0613.EURPRD83.prod.outlook.com ([fe80::399d:9bfc:1209:af10%7]) with mapi id 15.20.7677.009; Fri, 7 Jun 2024 09:52:02 +0000 From: Evgeny Karpov To: Evgeny Karpov , "gcc-patches@gcc.gnu.org" CC: "richard.sandiford@arm.com" , "Richard Earnshaw (lists)" , Radek Barton , Maxim Kuvyrkov , "ubizjak@gmail.com" , "10walls@gmail.com" <10walls@gmail.com> Subject: [PATCH v2 6/6] aarch64: Add DLL import/export to AArch64 target Thread-Topic: [PATCH v2 6/6] aarch64: Add DLL import/export to AArch64 target Thread-Index: AQHauMBYfEa+9LLu40mX2vcSxVm2kA== Date: Fri, 7 Jun 2024 09:52:01 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=fc71c0da-0b04-4a90-84d3-756fb686144b; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2024-06-07T09:39:03Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DBBPR83MB0613:EE_|PAXPR83MB0560:EE_ x-ms-office365-filtering-correlation-id: 8e57498b-e18f-468a-701c-08dc86d77b01 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: UDTXbJ7o5Rma8Xc1XDFH4PhnWGVFXKnsJ9K7ytju8iBB9SgiQbjEbjWLOnVO2nZtfpcr3jupo8GmO3dvfMcEws7Lx4Y7X1kaDo7QyePAqxizsYLENEPUC5s5ClIkX5/LD+tErGobDMLqwSgCpILB0V7/brjB3jN4jxrforpHWNU6mko8/hW3KpU09deocTvcp2ylKDQUNAON0jAjk5koz4pMxRD3t+0fVzzHtRZ7DFxTmqL64qG66UQCM7s2jomn1DkSGrafqxXII3idOd0/7kvguixNx13ZcWfViV7qXuo5XBUgOnzP2hDh+moXIJpiMDXlgsfNOASX6IMPXxuTLqA2l+H/4lbJ0830PPZWaTO89OMoyqjT77IQLpOz1/F1D47E43kOcbwbVkQ7YbH6w1dCv1jgO0nlPaEFvNUioKtHGZfXmk+JDwe9QfpWfgRTrxDLmxnUW81z0mUWPq+s9mn3FxiDC1wWHX2s2gRnYebH1mZcwHpW+JlQTGY8G+T2qx+d2QlDNW3TnGIeSnF1YpfpY2UYjbshKYJ+AmcZwHWT0+FMqq+lNwVw14xf32uQv8PGm50+mcIuedLcAdFVJNFZ3V+1hWHDB2v6oALV61WbFMG7y/K2DJZ/Df7lT//ibIwy5Umab7ft0xFv4GjQCx387rnvs9wNAyrTPSNWmtXHFK/BycAmvs9lXmPDtVNpoVgu4kzQPISD6pRNdxKO6vtP3oX3Q6DEIGnEh6w8FDyuLS9tXnZxV0Q6YDd2PL53U8hi7aYy+Bqb8VQ/mCWxCR6jKN5uYwg3k9yIrQk1rWJHXgMdrS2MDo2GdpcArxOerJFSeAXphestCIWoCn4mcMMd0PsBe6pfi4vcEwgsAccAJbIOsdYVWVDUDd4Pcipg0Qm9F2mXR/RZtfqH9RGSPPhxaSxIlMt6UU9KSUo7Y4kLAc7ptRcu0g5io6q31pjZUHAavEnt4SRjm4zuIdv78SXbIYme90XW93Ijw1Cx11kcFi7Ex46DUQeanKDUxHDoXlI+8boO+uoyL8b0907yrSRRhGWxKi4tylxNiP4PCTUYAM1BFTZ4tC9JMkRQJsxYVqHn3rp8IV49FuZACv/lYj+hHISXJF2/RYDNxQDiSyVsCRDP23UrgkTJVxOEw65Ag5BqcXcjnxI45rW6/B17WQ7CFuE0D+Px4/G+yg01BilfaZWxWFMLRJbqJ6L9uadnoOJM5lVkgEtEd40pkQwwKvFME3FuUxR31Eoc84VBEigNxdVMc/BRh15camErTODvXoNqg4mOT980kx/iXXY4KgnWxo1ALc0pAv4LGAyVjBAJg9IgOgkM6QbEMYS9osSpH5HN4kz1q4tY5l5xrqXM/uI3YHCF3u4IMFVFtZhHK04= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBBPR83MB0613.EURPRD83.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: Q7++bzfvegryJTfZmU3V7DYKN/22Va7Gj5j9Xm49ujLp1w5VZg3B2Jg3TiTBYf2p695KVa4S2a3jtCRELqdYz06ksJwzjvpSgDxqJhNYix3B7PboH9GZkajt8iVhUb4dF6s9ySW9n20lLqNUukwPslbTapDKoOhnd7yXqz9NBW6CaHAkQNLB+2LbLgRwLK5JjC6jQZqmK/BOCe1/vvL3tLpU6tmdED2pTMlW5Q8LCqYZXRkY/os5EX0b1LZlZYnyR8EF1+WeRxzj+SbeC7KRlKRNpN4ZFdArG1OWgwaoXcBHKdaezkvAuJJ5A+j+Q/HblgJrBh0JrmzUUL9GYT+KrYki7PEMsBZfRWvrFEEVEVPCLZOhyA6YiRyJjUc51kPJtjEXTI8A8Jy04P06LHccpNusLOwPBYTe8Z+7dVAKOjEpEJqx5O0u0O+Y7MdciipuVEPSdeeyUwPY2mR4UNFRtBqYy6s7OXzQFYGkmjSX8Gw1dETdJNBMT18OY0CjDDSYOVUthFU8NppVFaWhZA+OHlgtO2vSNuKVXoySKD2YgubP8JIEnyo7gi1HACAdar08jeIcrQMAWdvxkRrG9OxyGPWXBoZ71TvgdV16MK0V4LelyiRHSZa4M/TvyuaoygwRrEK3QujeBe6zHJIxArHagJ26Gt7L+/z6slnIdrA7JhOHJA/RG5ONoBn5QC6a0f2LtBlieZL98Oi1wfDjQqXeagAVfSSpQydsTbBPs5/kFRCfZ+0tdfLPPwWq4NZp2khKBcqkmAi5SwIhUSYj/DdU1ZkmtGzTeMENEFloSk1V1xKnhtwfEaiqtDnWigV3/ZIgEzyc+wrjkcYRW04QBFv08FASZ1GCq/npx63XgRl3JXkRtVHIV+c4ZN59fXW0LkTYGanqlw59fq//kbngWxcwrasO5DJ6VjwlBQxNnL7KPRb1fPUm2IHh+ofxnjnz4RA5cGCjg9vzsI6CYpsn3F98eOGjYUpk3AkrwyKPOK7JrFK07o9xSXxgntGFCSMmvmDBQwVokSTwXtMMUTrz4ZODIlCXhMSvx4gWg7Q0Z15YMpTCb82OPzBiVH4VhA1wiieoDPJCcdHY6HY6/6XMxzSPlA1Kxv6bz2oJVsrI3EKog+Kra7AxAA0fDKOTp18HXYkw+NS/fhoYqfpWtRwetMJgpVTYQIEDhWhIvXhVSfO5t0nzRPFaMrNKygYHFFYyq0E4UNeY8LVwLRSyXd6nIz0F1G2+uh7lKNuJOMNd2Fx6PcZc2o72EXJ94elRLRFM5GPTFRxPwVSf1ilwi274pe/C59BsydEXnr89hy70SxyYEGoD3Pj5Ny+eyyxPhJGMu+mGhRGXe/DB2z6HKnm6KUxbz43vJKJTD8l2/sLkMc7oOahtBxzJChYWD2/luVLMg1NFYDrI6wYcyxdvVzV1Z2ZY9gRvsOTb/VmPWrbMhdHJG9AaUkYhBRdWgDE3SPYLp3nmuBaPnU1eIvZH+x2JEIcapvxlEGXoAlv/7XIuqM4B7rnGuRofNynz3A/6bxXUfjumcXY0zHd59bM7j7SEHwwixCFigXrk9UeBJxfq0nrJsyrna1WhgvkzMbOtqdLr6sOWOU7Y0StHa9UnCWnWbl2+k+PQaemn6Om6qZMgkJBAMHQrIv+g6vF4U5W3e+t0Ln2O MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DBBPR83MB0613.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8e57498b-e18f-468a-701c-08dc86d77b01 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2024 09:52:01.9003 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vfgo/vO6gYD0y7F2jzgVfPuKcUDelyr4un98wezFia4K3/vH5ofeonBhwvRCQtPdWMdKm3T+s6f3Pav6KBlQRw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR83MB0560 X-Spam-Status: No, score=-9.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_STOCKGEN, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org This patch reuses the MinGW implementation to enable DLL import/export functionality for the aarch64-w64-mingw32 target. It also modifies environment configurations for MinGW. gcc/ChangeLog: * config.gcc: Add winnt-dll.o, which contains the DLL import/export implementation. * config/aarch64/aarch64.cc (aarch64_legitimize_pe_coff_symbol): Add a conditional function that reuses the MinGW implementation for COFF and does nothing otherwise. (aarch64_load_symref_appropriately): Add dllimport implementation. (aarch64_expand_call): Likewise. (aarch64_legitimize_address): Likewise. * config/aarch64/cygming.h (SYMBOL_FLAG_DLLIMPORT): Modify MinGW environment to support DLL import/export. (SYMBOL_FLAG_DLLEXPORT): Likewise. (SYMBOL_REF_DLLIMPORT_P): Likewise. (SYMBOL_FLAG_STUBVAR): Likewise. (SYMBOL_REF_STUBVAR_P): Likewise. (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): Likewise. (TARGET_ASM_FILE_END): Likewise. (SUB_TARGET_RECORD_STUB): Likewise. (GOT_ALIAS_SET): Likewise. (PE_COFF_EXTERN_DECL_SHOULD_BE_LEGITIMIZED): Likewise. (HAVE_64BIT_POINTERS): Likewise. --- gcc/config.gcc | 4 +++- gcc/config/aarch64/aarch64.cc | 37 +++++++++++++++++++++++++++++++++++ gcc/config/aarch64/cygming.h | 26 ++++++++++++++++++++++-- 3 files changed, 64 insertions(+), 3 deletions(-) diff --git a/gcc/config.gcc b/gcc/config.gcc index d053b98efa8..331285b7b6d 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -1276,10 +1276,12 @@ aarch64-*-mingw*) tm_file="${tm_file} mingw/mingw32.h" tm_file="${tm_file} mingw/mingw-stdint.h" tm_file="${tm_file} mingw/winnt.h" + tm_file="${tm_file} mingw/winnt-dll.h" tmake_file="${tmake_file} aarch64/t-aarch64" target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc" + target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt-dll.cc" extra_options="${extra_options} mingw/cygming.opt mingw/mingw.opt" - extra_objs="${extra_objs} winnt.o" + extra_objs="${extra_objs} winnt.o winnt-dll.o" c_target_objs="${c_target_objs} msformat-c.o" d_target_objs="${d_target_objs} winnt-d.o" tmake_file="${tmake_file} mingw/t-cygming" diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index 3418e57218f..5706b9aeb6b 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -860,6 +860,10 @@ static const attribute_spec aarch64_gnu_attributes[] = { "Advanced SIMD type", 1, 1, false, true, false, true, NULL, NULL }, { "SVE type", 3, 3, false, true, false, true, NULL, NULL }, { "SVE sizeless type", 0, 0, false, true, false, true, NULL, NULL }, +#if TARGET_DLLIMPORT_DECL_ATTRIBUTES + { "dllimport", 0, 0, false, false, false, false, handle_dll_attribute, NULL }, + { "dllexport", 0, 0, false, false, false, false, handle_dll_attribute, NULL }, +#endif #ifdef SUBTARGET_ATTRIBUTE_TABLE SUBTARGET_ATTRIBUTE_TABLE #endif @@ -2819,6 +2823,15 @@ tls_symbolic_operand_type (rtx addr) return tls_kind; } +rtx aarch64_legitimize_pe_coff_symbol (rtx addr, bool inreg) +{ +#if TARGET_PECOFF + return legitimize_pe_coff_symbol (addr, inreg); +#else + return NULL_RTX; +#endif +} + /* We'll allow lo_sum's in addresses in our legitimate addresses so that combine would take care of combining addresses where necessary, but for generation purposes, we'll generate the address @@ -2865,6 +2878,17 @@ static void aarch64_load_symref_appropriately (rtx dest, rtx imm, enum aarch64_symbol_type type) { + /* If legitimize returns a value + copy it directly to the destination and return. */ + + rtx tmp = aarch64_legitimize_pe_coff_symbol (imm, true); + + if (tmp) + { + emit_insn (gen_rtx_SET (dest, tmp)); + return; + } + switch (type) { case SYMBOL_SMALL_ABSOLUTE: @@ -11233,6 +11257,12 @@ aarch64_expand_call (rtx result, rtx mem, rtx cookie, bool sibcall) gcc_assert (MEM_P (mem)); callee = XEXP (mem, 0); + + tmp = aarch64_legitimize_pe_coff_symbol (callee, false); + + if (tmp) + callee = tmp; + mode = GET_MODE (callee); gcc_assert (mode == Pmode); @@ -12709,6 +12739,13 @@ aarch64_anchor_offset (HOST_WIDE_INT offset, HOST_WIDE_INT size, static rtx aarch64_legitimize_address (rtx x, rtx /* orig_x */, machine_mode mode) { + if (TARGET_DLLIMPORT_DECL_ATTRIBUTES) + { + rtx tmp = aarch64_legitimize_pe_coff_symbol (x, true); + if (tmp) + return tmp; + } + /* Try to split X+CONST into Y=X+(CONST & ~mask), Y+(CONST&mask), where mask is selected by alignment and size of the offset. We try to pick as large a range for the offset as possible to diff --git a/gcc/config/aarch64/cygming.h b/gcc/config/aarch64/cygming.h index 76623153080..e26488735db 100644 --- a/gcc/config/aarch64/cygming.h +++ b/gcc/config/aarch64/cygming.h @@ -28,12 +28,18 @@ along with GCC; see the file COPYING3. If not see #define print_reg(rtx, code, file) (gcc_unreachable ()) -#define SYMBOL_FLAG_DLLIMPORT 0 -#define SYMBOL_FLAG_DLLEXPORT 0 +#define SYMBOL_FLAG_DLLIMPORT (SYMBOL_FLAG_MACH_DEP << 0) +#define SYMBOL_REF_DLLIMPORT_P(X) \ + ((SYMBOL_REF_FLAGS (X) & SYMBOL_FLAG_DLLIMPORT) != 0) +#define SYMBOL_FLAG_DLLEXPORT (SYMBOL_FLAG_MACH_DEP << 1) #define SYMBOL_REF_DLLEXPORT_P(X) \ ((SYMBOL_REF_FLAGS (X) & SYMBOL_FLAG_DLLEXPORT) != 0) +#define SYMBOL_FLAG_STUBVAR (SYMBOL_FLAG_MACH_DEP << 2) +#define SYMBOL_REF_STUBVAR_P(X) \ + ((SYMBOL_REF_FLAGS (X) & SYMBOL_FLAG_STUBVAR) != 0) + /* Disable SEH and declare the required SEH-related macros that are still needed for compilation. */ #undef TARGET_SEH @@ -59,6 +65,12 @@ still needed for compilation. */ #define TARGET_ASM_UNIQUE_SECTION mingw_pe_unique_section #define TARGET_ENCODE_SECTION_INFO mingw_pe_encode_section_info +#define TARGET_VALID_DLLIMPORT_ATTRIBUTE_P mingw_pe_valid_dllimport_attribute_p + +/* Output function declarations at the end of the file. */ +#undef TARGET_ASM_FILE_END +#define TARGET_ASM_FILE_END mingw_pe_file_end + /* Declare the type properly for any external libcall. */ #define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \ mingw_pe_declare_function_type (FILE, XSTR (FUN, 0), 1) @@ -158,6 +170,9 @@ still needed for compilation. */ { "selectany", 0, 0, true, false, false, false, \ mingw_handle_selectany_attribute, NULL } +#undef SUB_TARGET_RECORD_STUB +#define SUB_TARGET_RECORD_STUB mingw_pe_record_stub + #define SUPPORTS_ONE_ONLY 1 /* Define this to be nonzero if static stack checking is supported. */ @@ -168,4 +183,11 @@ still needed for compilation. */ #undef MAX_OFILE_ALIGNMENT #define MAX_OFILE_ALIGNMENT (8192 * 8) +#undef GOT_ALIAS_SET +#define GOT_ALIAS_SET mingw_GOT_alias_set () + +#define PE_COFF_EXTERN_DECL_SHOULD_BE_LEGITIMIZED 1 + +#define HAVE_64BIT_POINTERS 1 + #endif